From 3d4c3c3dbda5e7b7603fb3e579e3ac929a6b2e5c Mon Sep 17 00:00:00 2001 From: Kushagra Gupta Date: Sun, 3 Aug 2025 14:15:03 -0500 Subject: [PATCH 1/3] working on adding stonr --- Project.toml | 3 +- experiments/PE Game/pegame.jl | 24 + experiments/PE Game/pegame_fixed.jl | 27 + experiments/PE Game/pegame_utils.jl | 348 ++++ experiments/Rebuttal/GrimmerExample.jl | 23 + external/StayOnTheRidge.jl/LICENSE | 21 + external/StayOnTheRidge.jl/Project.toml | 13 + external/StayOnTheRidge.jl/README.md | 52 + .../StayOnTheRidge.jl/examples/Manifest.toml | 1800 +++++++++++++++++ .../StayOnTheRidge.jl/examples/Project.toml | 10 + .../StayOnTheRidge.jl/examples/examples.jl | 552 +++++ .../StayOnTheRidge.jl/examples/multilinear.jl | 29 + .../imgs/example5_contour.png | Bin 0 -> 129053 bytes .../imgs/example5_surface.png | Bin 0 -> 34260 bytes .../imgs/example5_trajectory.png | Bin 0 -> 13782 bytes .../StayOnTheRidge.jl/src/StayOnTheRidge.jl | 10 + external/StayOnTheRidge.jl/src/algorithm.jl | 258 +++ external/StayOnTheRidge.jl/src/config.jl | 129 ++ external/StayOnTheRidge.jl/src/domain.jl | 26 + external/StayOnTheRidge.jl/src/utils.jl | 78 + external/StayOnTheRidge.jl/test/Manifest.toml | 892 ++++++++ external/StayOnTheRidge.jl/test/Project.toml | 3 + external/StayOnTheRidge.jl/test/runtests.jl | 92 + src/ObjectiveFunctions.jl | 12 + src/Regularization.jl | 2 +- src/TwoPlayer.jl | 7 + 26 files changed, 4409 insertions(+), 2 deletions(-) create mode 100644 experiments/PE Game/pegame.jl create mode 100644 experiments/PE Game/pegame_fixed.jl create mode 100644 experiments/PE Game/pegame_utils.jl create mode 100644 experiments/Rebuttal/GrimmerExample.jl create mode 100644 external/StayOnTheRidge.jl/LICENSE create mode 100644 external/StayOnTheRidge.jl/Project.toml create mode 100644 external/StayOnTheRidge.jl/README.md create mode 100644 external/StayOnTheRidge.jl/examples/Manifest.toml create mode 100644 external/StayOnTheRidge.jl/examples/Project.toml create mode 100644 external/StayOnTheRidge.jl/examples/examples.jl create mode 100644 external/StayOnTheRidge.jl/examples/multilinear.jl create mode 100644 external/StayOnTheRidge.jl/imgs/example5_contour.png create mode 100644 external/StayOnTheRidge.jl/imgs/example5_surface.png create mode 100644 external/StayOnTheRidge.jl/imgs/example5_trajectory.png create mode 100644 external/StayOnTheRidge.jl/src/StayOnTheRidge.jl create mode 100644 external/StayOnTheRidge.jl/src/algorithm.jl create mode 100644 external/StayOnTheRidge.jl/src/config.jl create mode 100644 external/StayOnTheRidge.jl/src/domain.jl create mode 100644 external/StayOnTheRidge.jl/src/utils.jl create mode 100644 external/StayOnTheRidge.jl/test/Manifest.toml create mode 100644 external/StayOnTheRidge.jl/test/Project.toml create mode 100644 external/StayOnTheRidge.jl/test/runtests.jl diff --git a/Project.toml b/Project.toml index 728af29..63556b5 100644 --- a/Project.toml +++ b/Project.toml @@ -1,4 +1,4 @@ - name = "ZeroSumGameSolve" +name = "ZeroSumGameSolve" uuid = "acbac2c1-af1f-4c5c-8072-533d2c216f7a" authors = ["Anonymized for submission"] version = "0.1.0" @@ -23,6 +23,7 @@ Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [compat] +Revise = "3.7.2" julia = "1" [extras] diff --git a/experiments/PE Game/pegame.jl b/experiments/PE Game/pegame.jl new file mode 100644 index 0000000..c1a6c34 --- /dev/null +++ b/experiments/PE Game/pegame.jl @@ -0,0 +1,24 @@ +using ZeroSumGameSolve, LinearAlgebra, StaticArrays, ReverseDiff, Zygote +include("pegame_utils.jl") + +delta = 1.0 +dt = 1.0 +v_amax=0.8 +T = 5 +tol = 1e-5 +max_iters = Int(1e4) +α = 0.1 + +pegame = makePEGame(dt, delta, v_amax, T, tol, max_iters, α) + +guess = zeros(pegame.prob_dim) +guess[1] = 0.5 +guess[2:pegame.n_x] .= 1/(pegame.n_x - 1) +guess[pegame.n_x+1:end] .= pegame.v_amax-0.1 +println("Initial guess: ", guess) +func = x -> PEObjective(x, pegame.delta, pegame.dt, pegame.T, pegame.v_amax, pegame.i_iter_start, pegame.num_possible_x0s, pegame.n_x) +println("function", func) +sol, func_val, iters, path = solver_PE(guess, func, pegame.n_x, pegame.tol, pegame.max_iters, pegame.α, pegame.v_amax) +println("Solution: ", sol) +println("Function Value: ", func_val) +println("Iterations: ", iters) diff --git a/experiments/PE Game/pegame_fixed.jl b/experiments/PE Game/pegame_fixed.jl new file mode 100644 index 0000000..d5b34e3 --- /dev/null +++ b/experiments/PE Game/pegame_fixed.jl @@ -0,0 +1,27 @@ +using ZeroSumGameSolve, LinearAlgebra, StaticArrays, ReverseDiff, Zygote, Plots +include("pegame_utils.jl") + +delta = 1.0 +dt = 1.0 +v_amax=0.8 +T = 5 +tol = 1e-5 +max_iters = Int(1e4) +α = 0.1 +radius = 1 + +pegamefixed = makePEGamefixed(dt, delta, v_amax, T, tol, max_iters, α) + +guess = zeros(pegamefixed.prob_dim) +guess[1] = 0.5 +println("Initial guess: ", guess) +guess[pegamefixed.n_x+1:end] .= 0.75 +println("Initial guess: ", guess) +func = x -> PEObjectivefixed(x, pegamefixed.delta, pegamefixed.dt, pegamefixed.T, pegamefixed.v_amax, pegamefixed.x0, pegamefixed.n_x, radius) +println("function", func) +sol, func_val, iters, path = solver_PE_fixed(guess, func, pegamefixed.n_x, pegamefixed.tol, pegamefixed.max_iters, pegamefixed.α, pegamefixed.v_amax) +println("Solution: ", sol) +println("Function Value: ", func_val) +println("Iterations: ", iters) + +plot_traj(sol[2:end], pegamefixed.v_amax, pegamefixed.x0, pegamefixed.delta, sol[1]) diff --git a/experiments/PE Game/pegame_utils.jl b/experiments/PE Game/pegame_utils.jl new file mode 100644 index 0000000..72d5a3d --- /dev/null +++ b/experiments/PE Game/pegame_utils.jl @@ -0,0 +1,348 @@ +using ZeroSumGameSolve + +struct PEGame + n_x::Int + dt::Float64 + delta::Float64 + v_amax::Float64 + i_iter_start::Int + prob_dim:: Int + T::Int + num_possible_x0s::Int + tol::Float64 + α::Float64 + max_iters::Int + +end + +function makePEGame(dt::Float64, delta::Float64, v_amax::Float64, T::Int, tol::Float64, max_iters::Int, α::Float64) + i_iter_start = Int(round(delta / dt)) + num_possible_x0s = T - 2*i_iter_start + n_x = 1 + num_possible_x0s + prob_dim = n_x + T + return PEGame(n_x, dt, delta, v_amax, i_iter_start, prob_dim, T, num_possible_x0s, tol, α, max_iters) +end + + + +struct PEGamefixed + n_x::Int + dt::Float64 + delta::Float64 + v_amax::Float64 + prob_dim:: Int + T::Int + x0::Int + tol::Float64 + α::Float64 + max_iters::Int +end + +function makePEGamefixed(dt::Float64, delta::Float64, v_amax::Float64, T::Int, tol::Float64, max_iters::Int, α::Float64) + n_x = 1 + prob_dim = n_x + T + x0 = T*dt-delta + return PEGamefixed(n_x, dt, delta, v_amax, prob_dim, T, x0, tol, α, max_iters) +end + + +# export PEgradient +# function PEgradient(point, func) +# a = SVector{size(point)...}(point) +# return ReverseDiff.gradient(x->func(x), a) +# end + + +# ## Gives out +# ## J = [∇_xx, ∇_xy] +# ## [∇_yx, ∇_yy] +# export PEhessian +# function PEhessian(point, func) +# a = SVector{size(point)...}(point) +# return ReverseDiff.hessian(x->func(x), a) +# end + + +# ## Takes the form +# ## w = [∇_x; -∇_y] +# export PEzero_sum_gradient +# function PEzero_sum_gradient(point, func, n_x) +# grad = PEgradient(point, func) +# update_step_grad = [grad[1:n_x], -1.0*grad[n_x+1:end]] +# update_step_grad = SVector{size(update_step_grad)...}(update_step_grad) +# return update_step_grad +# end + + +# ## Fundamental matrix of the paper. +# ## J = [∇_xx, ∇_xy] +# ## [-∇_yx, -∇_yy] +# export PEzero_sum_true_hessian +# function PEzero_sum_true_hessian(point, func, n_x) +# hess = PEhessian(point, func) +# ∇_xx = hess[1:n_x, 1:n_x] +# ∇_xy = hess[1:n_x, n_x+1:end] +# ∇_yx = -1.0*hess[n_x+1:end, 1:n_x] +# ∇_yy = -1.0*hess[n_x+1:end, n_x+1:end] +# update_step_hess = [∇_xx ∇_xy; ∇_yx ∇_yy] +# update_step_hess = SMatrix{size(update_step_hess)...}(update_step_hess) +# end +## ∇f(x) +export PEgradient +function PEgradient(point::AbstractVector, func::Function) + grad = Zygote.gradient(func, point)[1] + return SVector{length(grad)}(grad) +end + +## ∇²f(x) +export PEhessian +function PEhessian(point::AbstractVector, func::Function) + hess = Zygote.hessian(func, point) + return SMatrix{length(point), length(point)}(hess) +end + +## w = [∇_x; -∇_y] +export PEzero_sum_gradient +function PEzero_sum_gradient(point::AbstractVector, func::Function, n_x::Int) + grad = PEgradient(point, func) + update_step_grad = vcat(grad[1:n_x], -grad[n_x+1:end]) + return SVector{length(update_step_grad)}(update_step_grad) +end + +## J = [∇_xx, ∇_xy; +## -∇_yx, -∇_yy] +export PEzero_sum_true_hessian +function PEzero_sum_true_hessian(point::AbstractVector, func::Function, n_x::Int) + hess = PEhessian(point, func) + ∇_xx = hess[1:n_x, 1:n_x] + ∇_xy = hess[1:n_x, n_x+1:end] + ∇_yx = -hess[n_x+1:end, 1:n_x] + ∇_yy = -hess[n_x+1:end, n_x+1:end] + update_step_hess = [∇_xx ∇_xy; ∇_yx ∇_yy] + return SMatrix{size(update_step_hess)...}(update_step_hess) +end + + +export solver_PE +function solver_PE(guess, func, n_x, tol, max_iters, α, v_amax) + x = guess + prob_dim = length(guess) + k = 0 + error = tol+1.0 + path = [x] + while ktol + # println("k = ", k) + update_step_grad = PEzero_sum_gradient(x, func, n_x) + println("update_step_grad: ", update_step_grad) + update_step_hess = PEzero_sum_true_hessian(x, func, n_x) + static_array_update = PE_regularization_g_d(update_step_grad, update_step_hess, n_x, prob_dim) + # update = zeros(size(static_array_update)) for i in 1:size(static_array_update)[1] + # update[i] = static_array_update[i][1] + # end + update = Vector(static_array_update) + w = Vector(update_step_grad) + m = (transpose(update)*w/norm(w))*w + m = m / norm(w) + x_new = enforce_PE_constraints(x-α*m, n_x, v_amax) + push!(path, x_new) + error = norm(x_new - x) + # println(x) + x = x_new + k += 1 + end + println("iters: ", k) + if k==max_iters + println("constrained g_d did not converge!") + println("Error: ", error) + end + return x, func(x), k, path +end + +function project_to_simplex(x::AbstractVector{<:Real}) + n = length(x) + u = sort(x, rev=true) + cssv = cumsum(u) .- 1 + rho = findlast(i -> u[i] > cssv[i] / i, 1:n) + theta = cssv[rho] / rho + return max.(x .- theta, 0) +end + +function enforce_PE_constraints(x, n_x, v_amax) + #clip x[1] to be in [0, 1] + x[1] = clamp(x[1], 0.0, 1.0) + # project x[2:n_x] to simplex + x[2:n_x] = project_to_simplex(x[2:n_x]) + x[n_x+1:end] = clamp.(x[n_x+1:end], -v_amax, v_amax) + return x +end + +export PEObjective +function PEObjective(x, delta, dt, T, v_amax, i_iter_start, num_possible_x0s, n_x) + return sum(x[i-i_iter_start+1]*(x[1]*(norm(sum(x[n_x+1:n_x+ i - i_iter_start])*dt - i*dt + delta)^2 + norm(sum(sqrt.(v_amax^2 .- x[n_x+1:n_x + i - i_iter_start].^2))*dt)^2 ) + (1-x[1])*(norm(sum(x[n_x+1:n_x+ i + i_iter_start])*dt - i*dt - delta)^2 + norm(sum(sqrt.(v_amax^2 .- x[n_x+1:n_x + i + i_iter_start].^2))*dt)^2)) for i in 1+i_iter_start:T-i_iter_start) + # total = zero(eltype(x)) + # for i in (1+i_iter_start):(T - i_iter_start) + # xi = x[i - i_iter_start + 1] + # p = x[1] + + # # Left side + # left_vels = x[n_x+1 : n_x + i - i_iter_start] + # left_pos = dt * sum(left_vels) + # left_term1 = norm(left_pos - i*dt + delta)^2 + # left_term2 = norm(sum(sqrt.(v_amax^2 .- left_vels.^2)) * dt)^2 + # left_cost = left_term1 + left_term2 + + # # Right side + # right_vels = x[n_x+1 : n_x + i + i_iter_start] + # right_pos = dt * sum(right_vels) + # right_term1 = norm(right_pos - i*dt - delta)^2 + # right_term2 = norm(sum(sqrt.(v_amax^2 .- right_vels.^2)) * dt)^2 + # right_cost = right_term1 + right_term2 + + # # Weighted average cost + # total += xi * (p * left_cost + (1 - p) * right_cost) + # end + # return total + # vel = x[n_x+1:end] + # weight = x[1] + # total = 0.0 + + # for i in (1 + i_iter_start):(T - i_iter_start) + # idx = i - i_iter_start + # xi = x[idx + 1] + + # # Velocity ranges + # v_range1 = vel[1:idx] + # v_range2 = vel[idx+1:2idx] + + # # Sum terms + # sum_v1 = sum(v_range1) * dt + # sum_v2 = sum(v_range2) * dt + + # sqrt_term1 = sqrt.(v_amax^2 .- v_range1.^2) .* dt + # sqrt_term2 = sqrt.(v_amax^2 .- v_range2.^2) .* dt + + # # Avoid norm^2: use sum of squares + # loss1 = sum((sum_v1 - i*dt + delta).^2) + sum(sqrt_term1.^2) + # loss2 = sum((sum_v2 - i*dt - delta).^2) + sum(sqrt_term2.^2) + + # total += xi * (weight * loss1 + (1 - weight) * loss2) + # end + + # return total +end + + +function PE_regularization_g_d(update_step_grad, update_step_hess, n_x, problem_dim) + beta = zeros(problem_dim, problem_dim) + if isposdef(update_step_hess[1:n_x, 1:n_x]) + beta[1:n_x, 1:n_x] = LinearAlgebra.I(n_x) + end + if isposdef(update_step_hess[n_x+1:end, n_x+1:end]) + beta[n_x+1:end, n_x+1:end] = -LinearAlgebra.I(problem_dim - n_x) + end + return inv(circle_theorem_regularize(transpose(update_step_hess)*update_step_hess*(update_step_hess+transpose(update_step_hess)))+ beta) * transpose(update_step_hess)* update_step_grad +end + +#x is now [p, vel_1, ..., vel_T] +export PEObjectivefixed +function PEObjectivefixed(x, delta, dt, T, v_amax, x0, n_x, radius) + t1 = Int((x0-delta)/dt) + t2 = T + return x[1]*(norm(x0-delta + sum(x[2:end-2*Int(delta/dt)]) - dt*t1)^2 + norm(sum(sqrt.(v_amax^2 .- x[2:end-2*Int(delta/dt)].^2))*dt)^2 + sum(norm(x0-delta +sum(x[2:1+i])*dt - i*dt)^2 + norm(sum(sqrt.(v_amax^2 .- x[2:1+i].^2))*dt)^2 - radius^2 for i in 1:T)) + (1-x[1])*(x0+delta + norm(sum(x[2:end]) - dt*t2)^2 + norm(sum(sqrt.(v_amax^2 .- x[2:end].^2))*dt)^2 + sum(norm(x0 + delta + sum(x[2:1+i])*dt - i*dt)^2 + norm(sum(sqrt.(v_amax^2 .- x[2:1+i].^2))*dt)^2 - radius^2 for i in 1:T)) +end + +export solver_PE_fixed +function solver_PE_fixed(guess, func, n_x, tol, max_iters, α, v_amax) + x = guess + prob_dim = length(guess) + k = 0 + error = tol+1.0 + path = [x] + while ktol + # println("k = ", k) + update_step_grad = PEzero_sum_gradient(x, func, n_x) + # println("update_step_grad: ", update_step_grad) + update_step_hess = PEzero_sum_true_hessian(x, func, n_x) + static_array_update = PE_regularization_g_d(update_step_grad, update_step_hess, n_x, prob_dim) + # update = zeros(size(static_array_update)) for i in 1:size(static_array_update)[1] + # update[i] = static_array_update[i][1] + # end + update = Vector(static_array_update) + w = Vector(update_step_grad) + if norm(w) > tol + if check_if_fixed_active(x, n_x, v_amax, tol) + m = (transpose(update)*w/norm(w))*w + m = m / norm(w) + x_new = enforce_fixed_PE_constraints(x-α*m, n_x, v_amax) + else + x_new = enforce_fixed_PE_constraints(x-α*update, n_x, v_amax) + end + push!(path, x_new) + error = norm(x_new - x) + # println("x_new: ", x_new) + x = x_new + else + println("Gradient norm is below tolerance, stopping.") + break + end + k += 1 + end + println("iters: ", k) + if k==max_iters + println("constrained g_d did not converge!") + println("Error: ", error) + end + return x, func(x), k, path +end + +function enforce_fixed_PE_constraints(x, n_x, v_amax) + #clip x[1] to be in [0, 1] + x[1] = clamp(x[1], 0.0, 1.0) + # project x[2:n_x] to simplex + # x[2:n_x] = project_to_simplex(x[2:n_x]) + x[n_x+1:end] = clamp.(x[n_x+1:end], -v_amax, v_amax) + return x +end + +function check_if_fixed_active(x, n_x, v_amax, tol_active) + # Check if the first element is in [0, 1] + result = false + if x[1] < 0.0 + tol_active || x[1] > 1.0 - tol_active + result = true + end + # Check if the velocities are within bounds + result = result || any(abs.(x[n_x+1:end]) .> v_amax - tol_active) + return result +end + + +function get_traj(x_vels, v_max) + T = length(x_vels) + traj = zeros(T, 2) + for i in 1:T + traj[i, 1] = sum(x_vels[1:i]) + traj[i, 2] = sum(sqrt.(v_max^2 .- x_vels[1:i].^2)) + end + return traj +end + +export plot_traj + +function plot_traj(x_vels, v_max, x0, delta, p) + traj = get_traj(x_vels, v_max) + + # Base trajectory plot + plt = plot(traj[:, 1], traj[:, 2], + xlabel="Position_x", + ylabel="Velocity", + title="Trajectory", + label="Trajectory", + linewidth=3) + + # Barograph: vertical bars at x0 - delta and x0 + delta + bar_xs = [x0 - delta, x0 + delta] + bar_ys = [p, 1 - p] + bar!(bar_xs, bar_ys, label="Barograph", bar_width=1e-3, legend=:topright) + + return plt +end diff --git a/experiments/Rebuttal/GrimmerExample.jl b/experiments/Rebuttal/GrimmerExample.jl new file mode 100644 index 0000000..eedb41d --- /dev/null +++ b/experiments/Rebuttal/GrimmerExample.jl @@ -0,0 +1,23 @@ +using ZeroSumGameSolve +using Plots +guess = [4.0, 4.0] +tol = 10e-11 +ball_tol = 1e-2 +max_iters = 500000 +# α = 0.001 +α = 0.01 +n_x = 1 +func = grimmer +sol2, value2, iters_taken2, path2 = g_d(guess, func, n_x, tol, max_iters, α) +println("g_d done") +println("Solution: ", sol2) +println("Value: ", value2) +println("Iterations: ", iters_taken2) +xlims = [-4, 4] +ylims = [-4, 4] +xs = range(xlims...; length = 1000) +ys = range(ylims...; length = 1000) +plt = contourf(xs, ys, grimmer; color = :viridis) +nashpt = [0, 0] +plot!([x[1] for x in path2], [x[2] for x in path2], label="\$\\texttt{DND}\$", show=true) +scatter!([nashpt[1]], [nashpt[2]], color=:green, label="Local Nash Equilibrium", markershape=:star5, markersize=12) diff --git a/external/StayOnTheRidge.jl/LICENSE b/external/StayOnTheRidge.jl/LICENSE new file mode 100644 index 0000000..193bb89 --- /dev/null +++ b/external/StayOnTheRidge.jl/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Marika Kosohorska + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/StayOnTheRidge.jl/Project.toml b/external/StayOnTheRidge.jl/Project.toml new file mode 100644 index 0000000..425eeb3 --- /dev/null +++ b/external/StayOnTheRidge.jl/Project.toml @@ -0,0 +1,13 @@ +name = "StayOnTheRidge" +uuid = "250d2a78-eb8c-4fdb-8c50-61bd39400985" +authors = ["Marika Kosohorska "] +version = "1.0.0-DEV" + +[deps] +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + +[compat] +julia = "1" \ No newline at end of file diff --git a/external/StayOnTheRidge.jl/README.md b/external/StayOnTheRidge.jl/README.md new file mode 100644 index 0000000..be38e59 --- /dev/null +++ b/external/StayOnTheRidge.jl/README.md @@ -0,0 +1,52 @@ +# StayOnTheRidge.jl +[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://gitlab.fel.cvut.cz/kosohmar/StayOnTheRidge.jl/-/blob/main/LICENSE) + +This package implements the STay-ON-the-Ridge algorithm (STON'R), designed to find min-max critical points of possibly nonconvex-nonconcave functions. The concepts of min-max critical points and the STON'R algorithm were proposed in https://proceedings.mlr.press/v195/daskalakis23b.html. + +This project was developed as part of a Bachelor's thesis at the Faculty of Electrical Engineering, Czech Technical University in Prague. + +## Instalation +The package is not registered and this can be installed in the following way. + +```julia +(@v1.9) pkg> add git@gitlab.fel.cvut.cz:kosohmar/StayOnTheRidge.jl.git +``` + +## Description +The STON'R algorithm involves the computation of the gradient and hessian of the function. This implementation is able to switch between symbolic computation (using Symbolics.jl) and automatic differentiation (using ForwardDiff.jl). + +The algorithm operates on the unit hypercube $[0,1]^n$. The domain can be extended to a general convex set $K$ by defining a mapping $H$ from $[0,1]^n$ to $K$. +The current implementation can operate on $[0,1]^n$ or on a general hyperrectangle. + +## Example +### Function $2x_1x_2^2 - x_1^2 - x_2$ on the square $[-1,1]^2$ +To execute dynamics with the `run_dynamics` function, define configuration object first. Two configuration types are `Config_FD` and `Config_sym`. See help for Config_FD and Config_sym for more information. + +Execution using ForwardDiff differentiation: +```julia +using StayOnTheRidge + +f(x) = 2*x[1]*x[2]^2-x[1]^2-x[2] +n = 2 +min_coords = [2] +γ = 1e-3 +ϵ = 1e-1 +domain = Hyperrectangle([[-1,1],[-1,1]]) + +config = Config_FD(f, n, min_coords, γ, ϵ, domain) +elapsed = @elapsed min_max, trajectory, m, k = run_dynamics(config) +pretty_print(min_max, elapsed, m, k) +plot_trajectory2D(min_max, trajectory, config.domain) +plot_contour2D(min_max, config.f, config.domain) +plot_surface(min_max, config.f, config.domain) +``` + +

+ +

+

+ +

+ +For more examples see examples/examples.jl + diff --git a/external/StayOnTheRidge.jl/examples/Manifest.toml b/external/StayOnTheRidge.jl/examples/Manifest.toml new file mode 100644 index 0000000..9ba2737 --- /dev/null +++ b/external/StayOnTheRidge.jl/examples/Manifest.toml @@ -0,0 +1,1800 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.2" +manifest_format = "2.0" +project_hash = "c05dfa5df900a6715a70cd52a66abf6d8f2519dc" + +[[deps.ADTypes]] +git-tree-sha1 = "5d2e21d7b0d8c22f67483ef95ebdc39c0e6b6003" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "0.2.4" + +[[deps.AMD]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] +git-tree-sha1 = "45a1272e3f809d36431e57ab22703c6896b8908f" +uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" +version = "0.5.3" + +[[deps.ASL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6252039f98492252f9e47c312c8ffda0e3b9e78d" +uuid = "ae81ac8f-d209-56e5-92de-9978fef736f9" +version = "0.1.3+0" + +[[deps.AbstractAlgebra]] +deps = ["GroupsCore", "InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] +git-tree-sha1 = "c3c29bf6363b3ac3e421dc8b2ba8e33bdacbd245" +uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" +version = "0.32.5" + +[[deps.AbstractTrees]] +git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.4" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Test"] +git-tree-sha1 = "a7055b939deae2455aa8a67491e034f735dd08d3" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.33" + + [deps.Accessors.extensions] + AccessorsAxisKeysExt = "AxisKeys" + AccessorsIntervalSetsExt = "IntervalSets" + AccessorsStaticArraysExt = "StaticArrays" + AccessorsStructArraysExt = "StructArrays" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + Requires = "ae029012-a4dd-5104-9daa-d747884805df" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "02f731463748db57cc2ebfbd9fbc9ce8280d3433" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "3.7.1" +weakdeps = ["StaticArrays"] + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "16267cf279190ca7c1b30d020758ced95db89cd0" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.5.1" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BenchmarkTools]] +deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "d9a9701b899b30332bbcb3e1679c41cce81fb0e8" +uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +version = "1.3.2" + +[[deps.Bijections]] +git-tree-sha1 = "c9b163bd832e023571e86d0b90d9de92a9879088" +uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" +version = "0.1.6" + +[[deps.BitFlags]] +git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.7" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.8+0" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.1+1" + +[[deps.Calculus]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.5.1" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "e0af648f0692ec1691b5d094b8724ba1346281cf" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.18.0" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.CodeTracking]] +deps = ["InteractiveUtils", "UUIDs"] +git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "1.3.5" + +[[deps.CodecBzip2]] +deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] +git-tree-sha1 = "9b1ca1aa6ce3f71b3d1840c538a8210a043625eb" +uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" +version = "0.8.2" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.3" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.24.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.10.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.10" + +[[deps.Combinatorics]] +git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.2" + +[[deps.CommonSolve]] +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.0" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.CompositeTypes]] +git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638" +uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" +version = "0.1.3" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConcreteStructs]] +git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" +uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" +version = "0.2.3" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.3.0" + +[[deps.ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.4" +weakdeps = ["IntervalSets", "StaticArrays"] + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" + +[[deps.Contour]] +git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.2" + +[[deps.ConvexHulls2d]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "cd7759cfeaf855fed46ec26a26fb323ac3a5501e" +uuid = "438b5665-92b0-42e6-bc36-e4ac8449fa2d" +version = "0.1.1" + + [deps.ConvexHulls2d.extensions] + ConvexHulls2dMakieExt = "Makie" + + [deps.ConvexHulls2d.weakdeps] + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.15" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.Distributions]] +deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "a6c00f894f24460379cb7136633cef54ac9f6f4a" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.103" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.DomainSets]] +deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays", "Statistics"] +git-tree-sha1 = "51b4b84d33ec5e0955b55ff4b748b99ce2c3faa9" +uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" +version = "0.6.7" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.DualNumbers]] +deps = ["Calculus", "NaNMath", "SpecialFunctions"] +git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" +uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" +version = "0.6.8" + +[[deps.DynamicPolynomials]] +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] +git-tree-sha1 = "fea68c84ba262b121754539e6ea0546146515d4f" +uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" +version = "0.5.3" + +[[deps.EarCut_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" +uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +version = "2.2.4+0" + +[[deps.EnumX]] +git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.4" + +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+0" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.9" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.5.0+0" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + +[[deps.Extents]] +git-tree-sha1 = "2140cd04483da90b2da7f99b2add0750504fc39c" +uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" +version = "0.1.2" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.1" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.4.4+1" + +[[deps.FastClosures]] +git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" +uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" +version = "0.3.2" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FillArrays]] +deps = ["LinearAlgebra", "Random"] +git-tree-sha1 = "35f0c0f345bff2c6d636f95fdb136323b5a796ef" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.7.0" +weakdeps = ["SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.13.93+0" + +[[deps.Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.36" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.13.1+0" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.10+0" + +[[deps.FunctionWrappers]] +git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" +uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" +version = "1.1.3" + +[[deps.FunctionWrappersWrappers]] +deps = ["FunctionWrappers"] +git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "0.1.3" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] +git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.3.8+0" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.1.5" + +[[deps.GR]] +deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] +git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.72.10" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.72.10+0" + +[[deps.GeoInterface]] +deps = ["Extents"] +git-tree-sha1 = "d4f85701f569584f2cff7ba67a137d03f0cfb7d0" +uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" +version = "1.3.3" + +[[deps.GeometryBasics]] +deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] +git-tree-sha1 = "5694b56ccf9d15addedc35e9a4ba9c317721b788" +uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +version = "0.4.10" + +[[deps.Gettext_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.21.0+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.76.5+0" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.14+0" + +[[deps.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[deps.Groebner]] +deps = ["AbstractAlgebra", "Combinatorics", "ExprTools", "Logging", "MultivariatePolynomials", "Primes", "Random", "SIMD", "SnoopPrecompile"] +git-tree-sha1 = "44f595de4f6485ab5ba71fe257b5eadaa3cf161e" +uuid = "0b43b601-686d-58a3-8a1c-6623616c7cd4" +version = "0.4.4" + +[[deps.GroupsCore]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9e1a5e9f3b81ad6a5c613d181664a0efc6fe6dd7" +uuid = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120" +version = "0.4.0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.0" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] +git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "2.8.1+1" + +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.10.0+0" + +[[deps.HypergeometricFunctions]] +deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.23" + +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + +[[deps.IntegerMathUtils]] +git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.2" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IntervalSets]] +deps = ["Dates", "Random"] +git-tree-sha1 = "3d8866c029dd6b16e69e0d4a939c4dfcb98fac47" +uuid = "8197267c-284f-5f27-9208-e0e47529a953" +version = "0.7.8" +weakdeps = ["Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsStatisticsExt = "Statistics" + +[[deps.InverseFunctions]] +deps = ["Test"] +git-tree-sha1 = "68772f49f54b479fa88ace904f6127f0a3bb2e46" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.12" + +[[deps.Ipopt]] +deps = ["Ipopt_jll", "LinearAlgebra", "MathOptInterface", "OpenBLAS32_jll", "PrecompileTools"] +git-tree-sha1 = "6600353576cee7e7388e57e94115f6aee034fb1c" +uuid = "b6b21f68-93f8-5de0-b562-5493be1d77c9" +version = "1.6.1" + +[[deps.Ipopt_jll]] +deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "SPRAL_jll", "libblastrampoline_jll"] +git-tree-sha1 = "546c40fd3718c65d48296dd6cec98af9904e3ca4" +uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" +version = "300.1400.1400+0" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IterTools]] +git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.10.0" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLFzf]] +deps = ["Pipe", "REPL", "Random", "fzf_jll"] +git-tree-sha1 = "9fb0b890adab1c0a4a475d4210d51f228bfc250d" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.6" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "2.1.91+0" + +[[deps.JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "0592b1810613d1c95eeebcd22dc11fba186c2a57" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.9.26" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.1+0" + +[[deps.LDLFactorizations]] +deps = ["AMD", "LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "70f582b446a1c3ad82cf87e62b878668beef9d13" +uuid = "40e66cde-538c-5869-a4ad-c39174c6795b" +version = "0.10.1" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "3.0.0+1" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "15.0.4+0" + +[[deps.LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.1+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.LabelledArrays]] +deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] +git-tree-sha1 = "cd04158424635efd05ff38d5f55843397b7416a9" +uuid = "2ee39098-c373-598a-b85f-a56591580800" +version = "1.14.0" + +[[deps.LambertW]] +git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" +uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9" +version = "0.4.6" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LatticeRules]] +deps = ["Random"] +git-tree-sha1 = "7f5b02258a3ca0221a6a9710b0a0a2e8fb4957fe" +uuid = "73f95e8e-ec14-4e6a-8b18-0d2e271c4e55" +version = "0.0.1" + +[[deps.Lazy]] +deps = ["MacroTools"] +git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" +uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" +version = "0.15.1" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.3" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "7.84.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.10.2+0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.2+1" + +[[deps.Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.7+0" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.6.0+0" + +[[deps.Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.42.0+0" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.17.0+0" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.35.0+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.5.1+1" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.36.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LinearOperators]] +deps = ["FastClosures", "LDLFactorizations", "LinearAlgebra", "Printf", "Requires", "SparseArrays", "TimerOutputs"] +git-tree-sha1 = "58e2ca62646a62e18f86253b9c2a2d821c2d934b" +uuid = "5c8ed15e-5a4c-59e4-a42b-c7e8811fb125" +version = "2.6.0" +weakdeps = ["ChainRulesCore"] + + [deps.LinearOperators.extensions] + LinearOperatorsChainRulesCoreExt = "ChainRulesCore" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.3" + +[[deps.LoweredCodeUtils]] +deps = ["JuliaInterpreter"] +git-tree-sha1 = "60168780555f3e663c536500aa790b6368adc02a" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "2.3.0" + +[[deps.METIS_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1fd0a97409e418b78c53fac671cf4622efdf0f21" +uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" +version = "5.1.2+0" + +[[deps.MUMPS_seq_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] +git-tree-sha1 = "840b83c65b27e308095c139a457373850b2f5977" +uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" +version = "500.600.201+0" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MathOptInterface]] +deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] +git-tree-sha1 = "569a003f93d7c64068d3afaab908d21f67a22cd5" +uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" +version = "1.25.3" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "f512dc13e64e96f703fd92ce617755ee6b5adf0f" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.8" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.1.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.MultivariatePolynomials]] +deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] +git-tree-sha1 = "6c2e970692b6f4fed2508865c43a0f67f3820cf4" +uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" +version = "0.5.2" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "6985021d02ab8c509c841bb8b2becd3145a7b490" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.3.3" + +[[deps.NLPModels]] +deps = ["FastClosures", "LinearAlgebra", "LinearOperators", "Printf", "SparseArrays"] +git-tree-sha1 = "51b458add76a938917772ee661ffb9d59b4c7e5d" +uuid = "a4795742-8479-5a88-8948-cc11e1c8c1a6" +version = "0.20.0" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+1" + +[[deps.OpenBLAS32_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "2fb9ee2dc14d555a6df2a714b86b7125178344c2" +uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" +version = "0.3.21+0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.12+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.2+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.2" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+0" + +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "f6f85a2edb9c356b829934ad3caed2ad0ebbfc99" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.29" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.0" + +[[deps.Pipe]] +git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" +uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" +version = "1.3.0" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.42.2+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.1.0" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] +git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.3.5" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.39.0" + + [deps.Plots.extensions] + FileIOExt = "FileIO" + GeometryBasicsExt = "GeometryBasics" + IJuliaExt = "IJulia" + ImageInTerminalExt = "ImageInTerminal" + UnitfulExt = "Unitful" + + [deps.Plots.weakdeps] + FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.PreallocationTools]] +deps = ["Adapt", "ArrayInterface", "ForwardDiff", "Requires"] +git-tree-sha1 = "f739b1b3cc7b9949af3b35089931f2b58c289163" +uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" +version = "0.4.12" + + [deps.PreallocationTools.extensions] + PreallocationToolsReverseDiffExt = "ReverseDiff" + + [deps.PreallocationTools.weakdeps] + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Primes]] +deps = ["IntegerMathUtils"] +git-tree-sha1 = "4c9f306e5d6603ae203c2000dd460d81a5251489" +uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" +version = "0.5.4" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.Profile]] +deps = ["Printf"] +uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" + +[[deps.Qt6Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.5.3+1" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.9.1" + +[[deps.QuasiMonteCarlo]] +deps = ["Accessors", "ConcreteStructs", "Distributions", "LatticeRules", "LinearAlgebra", "Primes", "Random", "Sobol", "StatsBase"] +git-tree-sha1 = "5654ee2631b0b291c639b2e6c81bbf06128bce85" +uuid = "8a4e6c94-4038-4cdc-81c3-7e6ffdb2a71b" +version = "0.3.2" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.RandomExtensions]] +deps = ["Random", "SparseArrays"] +git-tree-sha1 = "b8a399e95663485820000f26b6a43c794e166a49" +uuid = "fb686558-2515-59ef-acaa-46db3789a887" +version = "0.4.4" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] +git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.12" + +[[deps.RecursiveArrayTools]] +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "d7087c013e8a496ff396bae843b1e16d9a30ede8" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "2.38.10" + + [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" + RecursiveArrayToolsTrackerExt = "Tracker" + RecursiveArrayToolsZygoteExt = "Zygote" + + [deps.RecursiveArrayTools.weakdeps] + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Revise]] +deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] +git-tree-sha1 = "62fbfbbed77a20e9390c4f02219cb3b11d21708d" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.5.8" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.7.1" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.4.0+0" + +[[deps.RuntimeGeneratedFunctions]] +deps = ["ExprTools", "SHA", "Serialization"] +git-tree-sha1 = "6aacc5eefe8415f47b3e34214c1d79d2674a0ba2" +uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" +version = "0.5.12" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.SIMD]] +deps = ["PrecompileTools"] +git-tree-sha1 = "d8911cc125da009051fb35322415641d02d9e37f" +uuid = "fdea26ae-647d-5447-a871-4b548cad5224" +version = "3.4.6" + +[[deps.SPRAL_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] +git-tree-sha1 = "34b9dacd687cace8aa4d550e3e9bb8615f1a61e9" +uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab" +version = "2024.1.18+0" + +[[deps.SciMLBase]] +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "QuasiMonteCarlo", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] +git-tree-sha1 = "dd2d18b981d09a2376ba49c5fab480f497992c88" +uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +version = "2.8.0" + + [deps.SciMLBase.extensions] + SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBasePartialFunctionsExt = "PartialFunctions" + SciMLBasePyCallExt = "PyCall" + SciMLBasePythonCallExt = "PythonCall" + SciMLBaseRCallExt = "RCall" + SciMLBaseZygoteExt = "Zygote" + + [deps.SciMLBase.weakdeps] + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" + PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLOperators]] +deps = ["ArrayInterface", "DocStringExtensions", "Lazy", "LinearAlgebra", "Setfield", "SparseArrays", "StaticArraysCore", "Tricks"] +git-tree-sha1 = "51ae235ff058a64815e0a2c34b1db7578a06813d" +uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" +version = "0.3.7" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.1" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[deps.SnoopPrecompile]] +deps = ["Preferences"] +git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" +uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" +version = "1.0.3" + +[[deps.Sobol]] +deps = ["DelimitedFiles", "Random"] +git-tree-sha1 = "5a74ac22a9daef23705f010f72c81d6925b19df8" +uuid = "ed01d8cd-4d21-5b2a-85b4-cc3bdc58bad4" +version = "1.5.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.3.1" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "Random", "StaticArraysCore"] +git-tree-sha1 = "0adf069a2a490c47273727e029371b31d44b72b2" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.6.5" +weakdeps = ["Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.2" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.2" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.3.0" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.StayOnTheRidge]] +deps = ["ForwardDiff", "LinearAlgebra", "Plots", "Symbolics"] +path = ".." +uuid = "250d2a78-eb8c-4fdb-8c50-61bd39400985" +version = "1.0.0-DEV" + +[[deps.StructArrays]] +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.6.18" +weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] + + [deps.StructArrays.extensions] + StructArraysAdaptExt = "Adapt" + StructArraysGPUArraysCoreExt = "GPUArraysCore" + StructArraysSparseArraysExt = "SparseArrays" + StructArraysStaticArraysExt = "StaticArrays" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.SymNLPModels]] +deps = ["LinearAlgebra", "NLPModels", "SparseArrays", "Symbolics"] +git-tree-sha1 = "33dd5b192fb5995a404fd6012a56e3d467625b1c" +repo-rev = "main" +repo-url = "https://github.com/votroto/SymNLPModels.jl.git" +uuid = "65174464-c9ac-4440-a6eb-f28a17d93ce8" +version = "0.1.2" + +[[deps.SymbolicIndexingInterface]] +deps = ["DocStringExtensions"] +git-tree-sha1 = "f8ab052bfcbdb9b48fad2c80c873aa0d0344dfe5" +uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +version = "0.2.2" + +[[deps.SymbolicUtils]] +deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TimerOutputs", "Unityper"] +git-tree-sha1 = "2f3fa844bcd33e40d8c29de5ee8dded7a0a70422" +uuid = "d1185830-fcd6-423d-90d6-eec64667417b" +version = "1.4.0" + +[[deps.Symbolics]] +deps = ["ArrayInterface", "Bijections", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "Groebner", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils", "TreeViews"] +git-tree-sha1 = "4d4e922e160827388c003a9a088a4c63f339f6c0" +uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" +version = "5.10.0" + + [deps.Symbolics.extensions] + SymbolicsSymPyExt = "SymPy" + + [deps.Symbolics.weakdeps] + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TimerOutputs]] +deps = ["ExprTools", "Printf"] +git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7" +uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" +version = "0.5.23" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.2" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.TreeViews]] +deps = ["Test"] +git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" +uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" +version = "0.3.0" + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.TruncatedStacktraces]] +deps = ["InteractiveUtils", "MacroTools", "Preferences"] +git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" +uuid = "781d530d-4396-4725-bb49-402e4bee1e77" +version = "1.4.0" + +[[deps.URIs]] +git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.17.0" +weakdeps = ["ConstructionBase", "InverseFunctions"] + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + InverseFunctionsUnitfulExt = "InverseFunctions" + +[[deps.UnitfulLatexify]] +deps = ["LaTeXStrings", "Latexify", "Unitful"] +git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" +uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" +version = "1.6.3" + +[[deps.Unityper]] +deps = ["ConstructionBase"] +git-tree-sha1 = "21c8fc7cd598ef49f11bc9e94871f5d7740e34b9" +uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" +version = "0.1.5" + +[[deps.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + +[[deps.Wayland_jll]] +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.21.0+1" + +[[deps.Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.25.0+0" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "24b81b59bd35b3c42ab84fa589086e19be919916" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.11.5+0" + +[[deps.XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] +git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.34+0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.4.5+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.0.10+1" + +[[deps.Xorg_libSM_jll]] +deps = ["Libdl", "Pkg", "Xorg_libICE_jll"] +git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.3+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.6+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.11+0" + +[[deps.Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.0+4" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.4+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "5.0.3+4" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.7.10+4" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.4+4" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[deps.Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.1+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.15.0+0" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.2+0" + +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.4+0" + +[[deps.Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[deps.Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[deps.Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.6+0" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.39.0+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.5.0+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.5+0" + +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] +git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.9+0" + +[[deps.fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "47cf33e62e138b920039e8ff9f9841aafe1b733e" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.35.1+0" + +[[deps.gperf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" +uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" +version = "3.1.1+0" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.4.0+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.15.1+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.11.0+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.2+0" + +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.18.0+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.38+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+1" + +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.6+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.48.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2021.5.5+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.5.0+0" + +[[deps.xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.4.1+1" diff --git a/external/StayOnTheRidge.jl/examples/Project.toml b/external/StayOnTheRidge.jl/examples/Project.toml new file mode 100644 index 0000000..b55a057 --- /dev/null +++ b/external/StayOnTheRidge.jl/examples/Project.toml @@ -0,0 +1,10 @@ +[deps] +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +ConvexHulls2d = "438b5665-92b0-42e6-bc36-e4ac8449fa2d" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +Ipopt = "b6b21f68-93f8-5de0-b562-5493be1d77c9" +Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" +StayOnTheRidge = "250d2a78-eb8c-4fdb-8c50-61bd39400985" +SymNLPModels = "65174464-c9ac-4440-a6eb-f28a17d93ce8" +Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" diff --git a/external/StayOnTheRidge.jl/examples/examples.jl b/external/StayOnTheRidge.jl/examples/examples.jl new file mode 100644 index 0000000..54f78d3 --- /dev/null +++ b/external/StayOnTheRidge.jl/examples/examples.jl @@ -0,0 +1,552 @@ +using Revise +using StayOnTheRidge +using Symbolics +using BenchmarkTools + +# Example 1 - example from https://proceedings.mlr.press/v195/daskalakis23b/daskalakis23b.pdf (Appendix D) +# domain: [0,1]² +# solution given by this implementation: (0.51, 0.49) +# solution presented in the paper: (0.5, 0.5) +# characterization at [0,1]²: convex-concave (bilinear) +function example1(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-2 + ϵ = 1e-2 + domain = Default() + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = (x[1]-1/2)*(x[2]-1/2) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = (x[1]-1/2)*(x[2]-1/2) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 2 - normal form game expected utility function (2 players, 2 strategies) +# domain: [0,1]² +# solution given by this implementation: (0.921, 0.921) +# solution computed by linear programming: (0.92105, 0.92105) +# characterization at [0,1]²: convex-concave (bilinear) +function example2(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-2 + A = [4 -5; -5 100] + domain = Default() + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = A[1,1]*x[1]*x[2]+A[1,2]*x[1]*(1-x[2])+A[2,1]*(1-x[1])*x[2]+A[2,2]*(1-x[1])*(1-x[2]) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = A[1,1]*x[1]*x[2]+A[1,2]*x[1]*(1-x[2])+A[2,1]*(1-x[1])*x[2]+A[2,2]*(1-x[1])*(1-x[2]) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 3 - function f2 from https://proceedings.mlr.press/v195/daskalakis23b/daskalakis23b.pdf (Appendix E) +# domain: [-1,1]² +# solution given by this implementation: (-0.004, -0.002) +# solution presented in the paper: (0,0) +# characterization at [-1,1]²: nonconvex-nonconcave +function example3(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-2 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = ifelse((x[1]^2 + x[2]^2)/2 <= 0, -x[1]*x[2] - 1/20*x[2]^2, + ifelse((x[1]^2 + x[2]^2)/2 < 1, -x[1]*x[2] - 1/20*x[2]^2 + 2/20*(3*((x[1]^2 + x[2]^2)/2)^2 - 2*((x[1]^2 + x[2]^2)/2)^3)*x[2]^2, + -x[1]*x[2] - 1/20*x[2]^2 + 2/20*x[2]^2)) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + function f_fd(x) + term1 = -x[1] * x[2] - 1/20 * x[2]^2 + term2 = -x[1] * x[2] - 1/20 * x[2]^2 + 2/20 * (3 * ((x[1]^2 + x[2]^2)/2)^2 - 2 * ((x[1]^2 + x[2]^2)/2)^3) * x[2]^2 + term3 = -x[1] * x[2] - 1/20 * x[2]^2 + 2/20 * x[2]^2 + if (x[1]^2 + x[2]^2)/2 <= 0 + return term1 + elseif (x[1]^2 + x[2]^2)/2 < 1 + return term2 + else + return term3 + end + end + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 4 - https://link.springer.com/article/10.1007/s10589-019-00141-6 example 5.3 i) +# solution given by this implementation: (0,0,0,0) +# solution presented in the paper: (0.2540,0.2097,0.2487,0.2944)*10^(-4) +function example4(sym::Bool) + n = 4 + min_coords = [1,2] + γ = 1e-3 + ϵ = 1e-2 + domain = Default() + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + p = x[1]^2+x[2]^2-x[3]^2-x[4]^2 + q = x[1]+x[4]+1 + f = p/q + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + p_fd(x) = x[1]^2+x[2]^2-x[3]^2-x[4]^2 + q_fd(x) = x[1]+x[4]+1 + f_fd(x) = p_fd(x)/q_fd(x) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 5 - https://arxiv.org/pdf/2109.04178.pdf example 1 +# domain: [-1,1]² +# solution given by this implementation: (0.3967,0.6302) +# solution presented in the paper: (0.4,0.6) +# characterization at [-1,1]²: convex-nonconcave +function example5(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-2 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = -2*x[1]*x[2]^2+x[1]^2+x[2] + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = -2*x[1]*x[2]^2+x[1]^2+x[2] + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 6 - f1 from https://proceedings.mlr.press/v195/daskalakis23b/daskalakis23b.pdf (Appendix E) +# solution given by this implementation: (-1,-1) +# solution presented in the paper: (0,0) +# characterization at [-1,1]²: nonconvex-nonconcave +function example6(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-4 + ϵ = 1e-1 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x, i) for i in 1:n] + f = (4*x[1]^2-(x[2]-3*x[1]+x[1]^3/20)^2-x[2]^4/10) * exp(-(x[1]^2+x[2]^2)/100) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = (4*x[1]^2-(x[2]-3*x[1]+x[1]^3/20)^2-x[2]^4/10) * exp(-(x[1]^2+x[2]^2)/100) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 7 - example 6.3 i) from https://arxiv.org/pdf/1809.01218.pdf +# domain: [-1,1]⁶ +# solution given by this implementation: (-1,-1,1,1,1,1) +# solution presented in the paper: (-1,-1,1,1,1,1) +# characterization at [-1,1]⁶: nonconvex-nonconcave +function example7(sym::Bool) + n = 6 + min_coords = [1,2,3] + γ = 1e-4 + ϵ = 1e-1 + domain = Hyperrectangle([fill([-1,1], 6)...]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = sum(x[i]+x[3+i] for i in 1:3) - prod((x[i] - x[3+i]) for i in 1:3) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = sum(x[i]+x[3+i] for i in 1:3) - prod((x[i] - x[3+i]) for i in 1:3) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 8 - example 6.3 ii) from https://arxiv.org/pdf/1809.01218.pdf +# domain: [-1,1]⁶ +# solution given by this implementation: (-0.0, -0.0014, -0.0013, -0.001, -0.0017, -0.0031) +# solution presented in the paper: (-1,1,-1,-1,1,-1) +# characterization at [-1,1]⁶: nonconvex-nonconcave +function example8(sym::Bool) + n = 6 + min_coords = [1,2,3] + γ = 1e-4 + ϵ = 1e-2 + domain = Hyperrectangle([fill([-1,1], 6)...]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = x[1]^2 + x[2]^2 + x[3]^2 - x[4]^2 - x[5]^2 - x[6]^2 + x[1]*x[5] - x[2]*x[4] + x[1]*x[6] - x[3]*x[4] + x[2]*x[6] - x[3]*x[5] + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = x[1]^2 + x[2]^2 + x[3]^2 - x[4]^2 - x[5]^2 - x[6]^2 + x[1]*x[5] - x[2]*x[4] + x[1]*x[6] - x[3]*x[4] + x[2]*x[6] - x[3]*x[5] + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 9 - function x₁² - x₂² +# domain: [-1,1]² +# solution given by this implementation: (-0.024, -0.024) +# well known solution: (0,0) +# characterization at [-1,1]²: convex-concave +function example9(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-1 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = x[1]^2 - x[2]^2 + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = x[1]^2 - x[2]^2 + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 10 - monkey saddle +# domain: [-1,1]² +# solution given by this implementation: (-1,-1) +# well known solution: (0,0) +# characterization at [-1,1]²: nonconvex-nonconcave +function example10(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-1 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = x[1]^3 - 3*x[1]*x[2]^2 + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = x[1]^3 - 3*x[1]*x[2]^2 + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 11 - example 1 from https://arxiv.org/pdf/2006.08141.pdf +# domain: [-1,1]x[-2π,2π] +# solution given by this implementation: (0,0) +# solutions presented in the paper: (0,-π), (0,π) +# characterization at [-1,1]x[-2π,2π]: convex-nonconcave +function example11(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-4 + ϵ = 1e-4 + domain = Hyperrectangle([[-1,1],[-2*pi,2*pi]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = 0.2*x[1]*x[2]-cos(x[2]) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = 0.2*x[1]*x[2]-cos(x[2]) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 12 - example 3 from https://arxiv.org/pdf/2006.08141.pdf +# domain: [-1,1]² +# solution given by this implementation: (-1,-1) +# solutions presented in the paper: (0,0), (-1,-1) +# characterization at [-1,1]²: nonconvex-concave +function example12(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-4 + ϵ = 1e-4 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = x[1]^3+2*x[1]*x[2]-x[2]^2 + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = x[1]^3+2*x[1]*x[2]-x[2]^2 + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 13 - figure 1 from https://arxiv.org/pdf/1807.02629.pdf +# domain: [0,1]² +# solution given by this implementation: (0.4189, 0.607) +# solutions presented in the paper: (0.4,0.6) +# characterization at [0,1]²: nonconvex-nonconcave +function example13(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-2 + domain = Default() + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = (x[1]-0.5)*(x[2]-0.5)+1/3*exp(-(x[1]-1/4)^2-(x[2]-3/4)^2) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = (x[1]-0.5)*(x[2]-0.5)+1/3*exp(-(x[1]-1/4)^2-(x[2]-3/4)^2) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 14 - example 2.2 from https://arxiv.org/pdf/1807.02629.pdf +# domain: [-1,1]² +# solution given by this implementation: (-0.002,-0.002) +# solutions presented in the paper: (0,0) +# characterization at [-1,1]²: convex-nonconcave +function example14(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-2 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = (x[1]^4*x[2]^2+x[1]^2+1)*(x[1]^2*x[2]^4-x[2]^2+1) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = (x[1]^4*x[2]^2+x[1]^2+1)*(x[1]^2*x[2]^4-x[2]^2+1) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 15 - Bilinearly-coupled Minimax” - example 3 from https://proceedings.neurips.cc/paper_files/paper/2023/file/a961dea42c23c3c0d01b79918701fb6e-Paper-Conference.pdf +# domain: [-4,4]² +# solution given by this implementation: (-0.0005,0.0001) +# solutions presented in the paper: (0,0) +# characterization at [-4,4]²: nonconvex-nonconcave +function example15(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-4 + ϵ = 1e-1 + domain = Hyperrectangle([[-4,4],[-4,4]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = (x[1]+1)*(x[1]-1)*(x[1]+3)*(x[1]-3) + 11*x[1]*x[2] - (x[2]+1)*(x[2]-1)*(x[2]+3)*(x[2]-3) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = (x[1]+1)*(x[1]-1)*(x[1]+3)*(x[1]-3) + 11*x[1]*x[2] - (x[2]+1)*(x[2]-1)*(x[2]+3)*(x[2]-3) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 16 - example 2 from https://proceedings.neurips.cc/paper_files/paper/2023/file/a961dea42c23c3c0d01b79918701fb6e-Paper-Conference.pdf +# domain: [-1,1]² +# solution given by this implementation: (0,0) +# solutions presented in the paper: (0,0) +# characterization at [-1,1]²: nonconvex-nonconcave +function example16(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-2 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = x[1]^2+3*sin(x[1])^2*sin(x[2])^2-4*x[2]^2-10*sin(x[2])^2 + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = x[1]^2+3*sin(x[1])^2*sin(x[2])^2-4*x[2]^2-10*sin(x[2])^2 + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 17 - example 17 from http://proceedings.mlr.press/v89/adolphs19a/adolphs19a.pdf +# domain: [-1,1]² +# solution given by this implementation: (0,0) +# solutions presented in the paper: (0,0) +# characterization at [-1,1]²: convex-nonconcave +function example17(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-2 + domain = Hyperrectangle([[-1,1],[-1,1]]) + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = 2*x[1]^2+x[2]^2+4*x[1]*x[2]+4*x[2]^3/3-x[2]^4/4 + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = 2*x[1]^2+x[2]^2+4*x[1]*x[2]+4*x[2]^3/3-x[2]^4/4 + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 18 - example 5.2 from https://proceedings.mlr.press/v139/hsieh21a.html +# domain: [0,1]² +# solution given by this implementation: (0.0787,0.4102) +# solutions presented in the paper: (0.08,0.4) +# characterization at [0,1]²: +function example18(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-4 + domain = Default() + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = x[1]*(x[2]-0.45)+1/4*x[1]^2-1/2*x[1]^4+1/6*x[1]^6-(1/4*x[2]^2-1/2*x[2]^4+1/6*x[2]^6) + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = x[1]*(x[2]-0.45)+1/4*x[1]^2-1/2*x[1]^4+1/6*x[1]^6-(1/4*x[2]^2-1/2*x[2]^4+1/6*x[2]^6) + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +# Example 19 - classical example with no NE: (x₁-x₂)² +# domain: [0,1]² +# solution given by this implementation: (0,0) +# characterization at [0,1]²: +function example19(sym::Bool) + n = 2 + min_coords = [1] + γ = 1e-3 + ϵ = 1e-4 + domain = Default() + if sym + x = [Symbolics.variable(:x,i) for i in 1:n] + f = (x[1]-x[2])^2 + return Config_sym(f, x, n, min_coords, γ, ϵ, domain) + else + f_fd(x) = (x[1]-x[2])^2 + return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) + end +end + +config1 = example1(false); +elapsed1 = @elapsed min_max1, trajectory1, m1, k1 = run_dynamics(config1) +pretty_print(min_max1, elapsed1, m1, k1) +is_solution_VI(min_max1, config1, config1.domain) +plot_trajectory2D(min_max1, trajectory1, config1.domain) +plot_contour2D(min_max1, config1.f, config1.domain) +plot_surface(min_max1, config1.f, config1.domain) + +config2 = example2(true); +elapsed2 = @elapsed min_max2, trajectory2, m2, k2 = run_dynamics(config2) +pretty_print(min_max2, elapsed2, m2, k2) +is_solution_VI(min_max2, config2, config2.domain) +plot_trajectory2D(min_max2, trajectory2, config2.domain) +plot_contour2D(min_max2, config2.f, config2.domain) +plot_surface(min_max2, config2.f, config2.domain) + +config3 = example3(false); +elapsed3 = @elapsed min_max3, trajectory3, m3, k3 = run_dynamics(config3) +pretty_print(min_max3, elapsed3, m3, k3) +is_solution_VI(min_max3, config3, config3.domain) +plot_trajectory2D(min_max3, trajectory3, config3.domain) +plot_contour2D(min_max3, config3.f, config3.domain) +plot_surface(min_max3, config3.f, config3.domain) + +config4 = example4(false); +elapsed4 = @elapsed min_max4, trajectory4, m4, k4 = run_dynamics(config4) +pretty_print(min_max4, elapsed4, m4, k4) +is_solution_VI(min_max4, config4, config4.domain) + +config5 = example5(false); +elapsed5 = @elapsed min_max5, trajectory5, m5, k5 = run_dynamics(config5) +pretty_print(min_max5, elapsed5, m5, k5) +is_solution_VI(min_max5, config5, config5.domain) +plot_trajectory2D(min_max5, trajectory5, config5.domain) +plot_contour2D(min_max5, config5.f, config5.domain) +plot_surface(min_max5, config5.f, config5.domain) + +config6 = example6(false); +elapsed6 = @elapsed min_max6, trajectory6, m6, k6 = run_dynamics(config6) +pretty_print(min_max6, elapsed6, m6, k6) +is_solution_VI(min_max6, config6, config6.domain) +plot_trajectory2D(min_max6, trajectory6, config6.domain) +plot_contour2D(min_max6, config6.f, config6.domain) +plot_surface(min_max6, config6.f, config6.domain) + +config7 = example7(false); +elapsed7 = @elapsed min_max7, trajectory7, m7, k7 = run_dynamics(config7) +pretty_print(min_max7, elapsed7, m7, k7) +is_solution_VI(min_max7, config7, config7.domain) + +config8 = example8(false); +elapsed8 = @elapsed min_max8, trajectory8, m8, k8 = run_dynamics(config8) +pretty_print(min_max8, elapsed8, m8, k8) +is_solution_VI(min_max8, config8, config8.domain) + +config9 = example9(false); +elapsed9 = @elapsed min_max9, trajectory9, m9, k9 = run_dynamics(config9) +pretty_print(min_max9, elapsed9, m9, k9) +is_solution_VI(min_max9, config9, config9.domain) +plot_trajectory2D(min_max9, trajectory9, config9.domain) +plot_contour2D(min_max9, config9.f, config9.domain) +plot_surface(min_max9, config9.f, config9.domain) + +config10 = example10(false); +elapsed10 = @elapsed min_max10, trajectory10, m10, k10 = run_dynamics(config10) +pretty_print(min_max10, elapsed10, m10, k10) +is_solution_VI(min_max10, config10, config10.domain) +plot_trajectory2D(min_max10, trajectory10, config10.domain) +plot_contour2D(min_max10, config10.f, config10.domain) +plot_surface(min_max10, config10.f, config10.domain) + +config11 = example11(false); +elapsed11 = @elapsed min_max11, trajectory11, m11, k11 = run_dynamics(config11) +pretty_print(min_max11, elapsed11, m11, k11) +is_solution_VI(min_max11, config11, config11.domain) +plot_trajectory2D(min_max11, trajectory11, config11.domain) +plot_contour2D(min_max11, config11.f, config11.domain) +plot_surface(min_max11, config11.f, config11.domain) + +config12 = example12(false); +elapsed12 = @elapsed min_max12, trajectory12, m12, k12 = run_dynamics(config12) +pretty_print(min_max12, elapsed12, m12, k12) +is_solution_VI(min_max12, config12, config12.domain) +plot_trajectory2D(min_max12, trajectory12, config12.domain) +plot_contour2D(min_max12, config12.f, config12.domain) +plot_surface(min_max12, config12.f, config12.domain) + +config13 = example13(false); +elapsed13 = @elapsed min_max13, trajectory13, m13, k13 = run_dynamics(config13) +pretty_print(min_max13, elapsed13, m13, k13) +is_solution_VI(min_max13, config13, config13.domain) +plot_trajectory2D(min_max13, trajectory13, config13.domain) +plot_contour2D(min_max13, config13.f, config13.domain) +plot_surface(min_max13, config13.f, config13.domain) + +config14 = example14(false); +elapsed14 = @elapsed min_max14, trajectory14, m14, k14 = run_dynamics(config14) +pretty_print(min_max14, elapsed14, m14, k14) +is_solution_VI(min_max14, config14, config14.domain) +plot_trajectory2D(min_max14, trajectory14, config14.domain) +plot_contour2D(min_max14, config14.f, config14.domain) +plot_surface(min_max14, config14.f, config14.domain) + +config15 = example15(false); +elapsed15 = @elapsed min_max15, trajectory15, m15, k15 = run_dynamics(config15) +pretty_print(min_max15, elapsed15, m15, k15) +is_solution_VI(min_max15, config15, config15.domain) +plot_trajectory2D(min_max15, trajectory15, config15.domain) +plot_contour2D(min_max15, config15.f, config15.domain) +plot_surface(min_max15, config15.f, config15.domain) + +config16 = example16(false); +elapsed16 = @elapsed min_max16, trajectory16, m16, k16 = run_dynamics(config16) +pretty_print(min_max16, elapsed16, m16, k16) +is_solution_VI(min_max16, config16, config16.domain) +plot_trajectory2D(min_max16, trajectory16, config16.domain) +plot_contour2D(min_max16, config16.f, config16.domain) +plot_surface(min_max16, config16.f, config16.domain) + +config18 = example18(true); +elapsed18 = @elapsed min_max18, trajectory18, m18, k18 = run_dynamics(config18) +pretty_print(min_max18, elapsed18, m18, k18) +is_solution_VI(min_max18, config18, config18.domain) +plot_trajectory2D(min_max18, trajectory18, config18.domain) +plot_contour2D(min_max18, config18.f, config18.domain) +plot_surface(min_max18, config18.f, config18.domain) + +config19 = example19(true); +elapsed19 = @elapsed min_max19, trajectory19, m19, k19 = run_dynamics(config19) +pretty_print(min_max19, elapsed19, m19, k19) +is_solution_VI(min_max19, config19, config19.domain) +plot_trajectory2D(min_max19, trajectory19, config19.domain) +plot_contour2D(min_max19, config19.f, config19.domain) +plot_surface(min_max19, config19.f, config19.domain) \ No newline at end of file diff --git a/external/StayOnTheRidge.jl/examples/multilinear.jl b/external/StayOnTheRidge.jl/examples/multilinear.jl new file mode 100644 index 0000000..4fc7cb0 --- /dev/null +++ b/external/StayOnTheRidge.jl/examples/multilinear.jl @@ -0,0 +1,29 @@ +using Revise +using StayOnTheRidge +using Symbolics +using LinearAlgebra + +eval_expr(expr, dict) = Symbolics.substitute(expr, dict) + +function generate_example(dim1, dim2) + n = dim1+dim2 + min_coords = collect(1:dim1-1) + γ = 1e-5 + ϵ = 1e-3 + domain = Default() + x = [Symbolics.variable(:x,i) for i in 1:n] + A = 5 .+ 2 .* randn(dim1, dim2) + A = round.(A, digits=2) + # display(A) + f = x[1:dim1]' * A * x[dim1+1:n] + f = eval_expr(f,Dict(x[dim1] => 1-sum(x[1:dim1-1]), x[n] => 1-sum(x[dim1+1:n-1]))) + for i = dim1+1:n-1 + f = eval_expr(f, Dict(x[i] => x[i-1])) + end + n = n-2 + x = [Symbolics.variable(:x,i) for i in 1:n] + return Config_FD(eval(build_function(f, x)), n, min_coords, γ, ϵ, domain) +end + +config = generate_example(3,3); +elapsed = @elapsed min_max, trajectory, m, k = run_dynamics(config) diff --git a/external/StayOnTheRidge.jl/imgs/example5_contour.png b/external/StayOnTheRidge.jl/imgs/example5_contour.png new file mode 100644 index 0000000000000000000000000000000000000000..e58836b7adebe043de90dbe22b53ff13bdcbe279 GIT binary patch literal 129053 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

6LmYb;YySE)miyORPmz#32p*v}+E*+qPL-?d3Jc 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%0Aj$wkMiPe-M{8 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 z%0D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 literal 0 HcmV?d00001 diff --git a/external/StayOnTheRidge.jl/imgs/example5_trajectory.png b/external/StayOnTheRidge.jl/imgs/example5_trajectory.png new file mode 100644 index 0000000000000000000000000000000000000000..049b7868ce1875aa01376e11a7c6ed5146828572 GIT binary patch literal 13782 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 -conf.ϵ), zs +end + +function bad_exit(point, i, S, direction) + tr_coords = vcat(S, [i]) + point_tr = point[tr_coords] + direction_tr = direction[tr_coords] + + for (j, (pt, dt)) in enumerate(zip(point_tr, direction_tr)) + if (pt == 0 && dt < 0) || (pt == 1 && dt > 0) + return tr_coords[j] + end + end + + return 0 +end + +function middling_exit(point, i, S, direction, conf::Config) + new_point = point + conf.γ*direction + tr_coords = setdiff(1:i-1, S) + point_tr = point[tr_coords] + V_tr = get_V_tr(conf, new_point, tr_coords) + for (j, (pt, Vt)) in enumerate(zip(point_tr, V_tr)) + if (pt == 0 && Vt > 0) || (pt == 1 && Vt < 0) + return tr_coords[j] + end + end + + return 0 +end + +function Vx_wrst_case_y(dom::Hyperrectangle, conf::Config, point) + Vx = get_V_origin(conf, point) + y_worst = [] + for i in eachindex(Vx) + if Vx[i] < 0 + push!(y_worst, dom.sides[i][1]) + else + push!(y_worst, dom.sides[i][2]) + end + end + return Vx, y_worst +end + +function Vx_wrst_case_y(dom::Default, conf::Config, point) + Vx = get_V_origin(conf, point) + return Vx, ifelse.(Vx .<= 0, 0, 1) +end + +# check if point satisfies the variational inequality +function is_solution_VI(point, conf::Config; α = 0.1) + Vx = get_V(conf, point) + y_worst = ifelse.(Vx .<= 0, 0, 1) + dot1 = dot(Vx, point) + dot2 = dot(Vx, y_worst) + VI_val = dot1 - dot2 + return VI_val >= -α +end + +function is_solution_VI(point, conf::Config, dom::Domain; α = 0.1) + Vx, y_worst = Vx_wrst_case_y(dom, conf, point) + dot1 = dot(Vx, point) + dot2 = dot(Vx, y_worst) + VI_val = dot1 - dot2 + if VI_val >= -α + display("$α-VI satisfied at $point with value $VI_val") + else + @warn "$α-VI not satisfied at $point with value $VI_val" + end + return VI_val >= -α +end + +function assumption_2_violated(i, S, point) + coords = point[vcat(S,[i])] + count_zeros = count(x -> x == 0, coords) + count_ones = count(x -> x == 1, coords) + if (count_ones+count_zeros > 1) + @warn "Assumption 2 violated at i = $i, S = $S, x = $point" + end +end + +""" +run_dynamics(conf::Config) + +Executes STON'R dynamics with a given configuration conf. + +# Arguments +- `conf::Config` : See `config_FD`, `Config_sym`. + +# Output +- `point`: The min-max critical point. +- `pts`: A vector of trajectory points explored during the dynamics. +- `m`: The number of epochs (outer iterations) performed. +- `k`: The number of iterations within each epoch. + +# Example + +```julia-repl +julia> n = 2 +julia> min_coords = [1] +julia> γ = 1e-3 +julia> ϵ = 1e-2 +julia> f_fd(x) = -2*x[1]*x[2]^2+x[1]^2+x[2] +julia> domain = Hyperrectangle([[-1,1],[-1,1]]) +julia> conf = Config_FD(f_fd, n, min_coords, γ, ϵ, domain) +julia> min_max, trajectory, m, k = run_dynamics(conf) +``` +""" +function run_dynamics(conf::Config) + point = fill(0, conf.n) + i = 1 + S = Vector{Int}() + pts = Vector{Vector{Float64}}() + m = 0 + k = 0 + + while i <= conf.n # && !is_solution_VI(point, conf) + k = 0 + println("starting epoch ($i, $S) at $point") + + while true + assumption_2_violated(i, S, point) + is_good_exit, is_zs = good_exit(point, i, conf) + if is_good_exit + println("good exit at $point") + if is_zs + S = vcat(S,[i]) + end + i += 1 + break + end + + direction = compute_direction(point, i, S, conf) + j = bad_exit(point, i, S, direction) + if j != 0 + println("bad exit at $point for j = $j") + if j == i + S = setdiff(S, [i-1]) + i -= 1 + else + S = setdiff(S, [j]) + end + break + end + + j = middling_exit(point, i, S, direction, conf) + if j != 0 + println("middling exit at $point for j = $j") + S = vcat(S, [j]) + break + end + + point += conf.γ*direction + point = P(point) + + k += 1 + push!(pts, point) + end + + m += 1 + end + return conf.domain isa Default ? (point, pts, m, k) : + (H(conf.domain)(point), map(x->H(conf.domain)(x),pts), m, k) +end \ No newline at end of file diff --git a/external/StayOnTheRidge.jl/src/config.jl b/external/StayOnTheRidge.jl/src/config.jl new file mode 100644 index 0000000..cc1826c --- /dev/null +++ b/external/StayOnTheRidge.jl/src/config.jl @@ -0,0 +1,129 @@ +abstract type Config end + +""" +Config_FD + +Configuration structure to store data for STON'R execution. +Using ForwardDiff.jl for differentiation. + +# Arguments +- `f::Function` : Function on domain [0,1]ⁿ. +- `n::Int` : Number of variables. +- `min_coords::Vector{Int}` : Vector of minimizing coordinates. +- `γ::Real` : Step size. +- `ϵ::Real` : Precision parameter of min-max critical point. +- `domain::Domain` : Specifies the domain of the function (see Default or Hyperrectangle). +# Example +```julia-repl +julia> f_fd(x) = -2*x[1]*x[2]^2+x[1]^2+x[2] +julia> n = 2 +julia> min_coords = [1] +julia> γ = 1e-2 +julia> ϵ = 1e-2 +julia> domain = Default() +julia> conf = Config_FD(f_fd, n, min_coords, γ, ϵ, domain); +``` +""" +struct Config_FD <: Config + f::Function + f_obj::Function + n::Int + min_coords::Vector{Int} + γ::Real + ϵ::Real + domain::Domain + + function Config_FD(f::Function, n::Int, min_coords::Vector{Int}, + γ::Real, ϵ::Real, domain::Domain) + @assert n > 0 + @assert all(x -> x > 0, min_coords) + @assert γ > 0 + @assert ϵ > 0 + @assert length(min_coords) <= n + if domain isa Default # default [0,1]ⁿ + f_obj = f + else + inner = H(domain) # closure to gain performance + f_obj = x -> f(inner(x)) + end + return new(f, f_obj, n, min_coords, γ, ϵ, domain) + end +end + +""" +Config_sym + +Configuration structure to store data for STON'R execution. +Using Symbolics.jl for differentiation. + +# Arguments +- `f_expr::Num` : Symbolic function on domain [0,1]ⁿ. +- `x::Num` : Vector of symbolic variables. +- `n::Int` : Number of variables. +- `min_coords::Vector{Int}` : Vector of minimizing coordinates. +- `γ::Real` : Step size. +- `ϵ::Real` : Precision parameter of min-max critical point. +- `domain::Domain` : Specifies the domain of the function (see Default or Hyperrectangle). +# Example +```julia-repl +julia> n = 2 +julia> x = [Symbolics.variable(:x,i) for i in 1:n] +julia> f = (x[1]-1/2)*(x[2]-1/2) +julia> min_coords = [1] +julia> γ = 1e-2 +julia> ϵ = 1e-2 +julia> domain = Default() +julia> conf = Config_sym(f, x, n, min_coords, γ, ϵ, domain); +``` +""" +struct Config_sym <: Config + f::Function + V::Vector{Function} # modified gradient of f + V_origin::Vector{Function} # modified gradient of f on the [0,1]ⁿ + J::Matrix{Function} # modified Jacobian matrix of V + x::Vector{Num} + n::Int + min_coords::Vector{Int} + γ::Real + ϵ::Real + domain::Domain + + # for testing + grad_f::Vector{Function} + hess_mat_f::Matrix{Function} + + function Config_sym(f_expr::Num, x::Vector{Num}, n::Int, min_coords::Vector{Int}, + γ::Real, ϵ::Real, domain::Domain) + @assert n > 0 + @assert all(x -> x > 0, min_coords) + @assert γ > 0 + @assert ϵ > 0 + @assert length(x) == n + @assert length(min_coords) <= n + f = eval(build_function(f_expr, x)) + V_expr = prepare_V(f_expr, x, min_coords, domain) + V = [eval(build_function(V_expr[i], x)) for i in 1:n] + V_origin_expr = prepare_V(f_expr, x, min_coords, Default()) + V_origin = [eval(build_function(V_origin_expr[i], x)) for i in 1:n] + J_expr = Symbolics.jacobian(V_expr, x) + J = [eval(build_function(J_expr[i,j], x)) for i in 1:n, j in 1:n] + grad_f_expr = Symbolics.gradient(f_expr, x) + grad_f = [eval(build_function(grad_f_expr[i], x)) for i in 1:n] + hess_mat_f_expr = Symbolics.jacobian(grad_f_expr, x) + hess_mat_f = [eval(build_function(hess_mat_f_expr[i,j], x)) for i in 1:n, j in 1:n] + return new(f, V, V_origin, J, x, n, min_coords, γ, ϵ, domain, grad_f, hess_mat_f) + end +end + +eval_expr(expr, dict) = Symbolics.value.(Symbolics.substitute(expr, dict)) + +function prepare_V(f, x, min_coords, domain) + if domain isa Default + f_obj = f + else + f_obj = eval_expr(f, Dict(x .=> H(domain)(x))) + end + V = Symbolics.gradient(f_obj, x) + V[min_coords] .*= -1 + return V +end \ No newline at end of file diff --git a/external/StayOnTheRidge.jl/src/domain.jl b/external/StayOnTheRidge.jl/src/domain.jl new file mode 100644 index 0000000..04f3edf --- /dev/null +++ b/external/StayOnTheRidge.jl/src/domain.jl @@ -0,0 +1,26 @@ +abstract type Domain end + +""" +Default domain [0,1]ⁿ. +""" +struct Default <: Domain end # unit hypercube [0,1]ⁿ + +""" +Hyperrectangle + +# Arguments +- `sides::Vector{Vector{Real}}` : Define the hyperrectangle, e.g. sides = [[-1,1],[0,1]] define the rectangle [-1,1]×[0,1]. +""" +struct Hyperrectangle <: Domain + sides::Vector{Vector{T}} where T <: Real + function Hyperrectangle(sides::Vector{Vector{T}} where T <: Real) + @assert all(subvec -> length(subvec) >= 2 && subvec[1] < subvec[2], sides) + return new(sides) + end +end + +# general hyperrectangle mapping +function H(domain::Hyperrectangle) + sides = domain.sides + return x -> getindex.(sides,1) .+ (getindex.(sides,2) .- getindex.(sides,1)) .* x +end \ No newline at end of file diff --git a/external/StayOnTheRidge.jl/src/utils.jl b/external/StayOnTheRidge.jl/src/utils.jl new file mode 100644 index 0000000..9917df8 --- /dev/null +++ b/external/StayOnTheRidge.jl/src/utils.jl @@ -0,0 +1,78 @@ +using Plots + +function get_bounds(domain::Hyperrectangle) + p11 = domain.sides[1][1] + p12 = domain.sides[1][2] + p21 = domain.sides[2][1] + p22 = domain.sides[2][2] + x1_min_bound = p11 - abs(p11-p12)/20 + x1_max_bound = p12 + abs(p11-p12)/20 + x2_min_bound = p21 - abs(p21-p22)/20 + x2_max_bound = p22 + abs(p21-p22)/20 + return [x1_min_bound, x1_max_bound, x2_min_bound, x2_max_bound] +end + +function get_bounds(domain::Default) + return [-1/20,21/20,-1/20,21/20] +end + +function get_ranges(domain::Hyperrectangle) + return [range(domain.sides[1][1], domain.sides[1][2], length=300), + range(domain.sides[2][1], domain.sides[2][2], length=300)] +end + +function get_ranges(domain::Default) + return [range(0, 1, length=300), + range(0, 1, length=300)] +end + +function plot_trajectory2D(min_max, trajectory, domain::Domain) + x1_coords = [pt[1] for pt in trajectory] + x2_coords = [pt[2] for pt in trajectory] + bounds = get_bounds(domain) + scatter(x1_coords, x2_coords; color=:blue, legend = false, markersize = 1, + markershape=:auto, xlims = [bounds[1], bounds[2]], ylims = [bounds[3], bounds[4]]) + scatter!([min_max[1]], [min_max[2]], markershape=:star, markersize=10, color=:blue) + title!("Trajectory") +end + +function plot_contour2D(min_max, f, domain::Domain) + f_plot(x,y) = f([x,y]) + rs = get_ranges(domain) + bounds = get_bounds(domain) + contourf(rs[1], rs[2], f_plot, levels=20, xlims = [bounds[1], bounds[2]], ylims = [bounds[3], bounds[4]]) # size=(800, 600), dpi=300 + scatter!([min_max[1]], [min_max[2]], markershape=:star, markersize=10, legend=false, color=:blue) + title!("Contour plot of the function") + # xlabel!("θ") + # ylabel!("ω") +end + +function plot_surface(min_max, f, domain::Domain) + f_plot(x,y) = f([x,y]) + rs = get_ranges(domain) + zs = [f_plot(x,y) for y in rs[2], x in rs[1]] + surface(rs[1], rs[2], zs, legend=false) # size=(800, 600), dpi=300 + # zticks!(0.25:0.25:1) + # xlabel!("θ") + # ylabel!("ω") + scatter!([min_max[1]], [min_max[2]], [f(min_max)], markershape=:star, markersize=10, legend=false, color=:blue) + title!("3D plot of the function") +end + +function pretty_print(point, time, m, k) + str_point = "($(join(round.(point, digits=4), ", ")))" + str_time = format_elapsed(time) + display("Min max critical point: $str_point, elapsed time: $str_time, outer cycles: $m, inner cycles: $k") +end + +function format_elapsed(elapsed_seconds) + if elapsed_seconds < 1e-6 + return string(round(elapsed_seconds * 1e9, digits=3), " ns") + elseif elapsed_seconds < 1e-3 + return string(round(elapsed_seconds * 1e6, digits=3), " μs") + elseif elapsed_seconds < 1 + return string(round(elapsed_seconds * 1e3, digits=3), " ms") + else + return string(round(elapsed_seconds, digits=3), " s") + end +end \ No newline at end of file diff --git a/external/StayOnTheRidge.jl/test/Manifest.toml b/external/StayOnTheRidge.jl/test/Manifest.toml new file mode 100644 index 0000000..5e098e4 --- /dev/null +++ b/external/StayOnTheRidge.jl/test/Manifest.toml @@ -0,0 +1,892 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.9.2" +manifest_format = "2.0" +project_hash = "9a7178dc95dbdc7743ccc2fc854597db70fed5c3" + +[[deps.ADTypes]] +git-tree-sha1 = "332e5d7baeff8497b923b730b994fa480601efc7" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "0.2.5" + +[[deps.AbstractAlgebra]] +deps = ["GroupsCore", "InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] +git-tree-sha1 = "ce0cb2804273e9147a765501c719038247d7ccd9" +uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" +version = "0.33.0" + +[[deps.AbstractTrees]] +git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.4" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Test"] +git-tree-sha1 = "a7055b939deae2455aa8a67491e034f735dd08d3" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.33" + + [deps.Accessors.extensions] + AccessorsAxisKeysExt = "AxisKeys" + AccessorsIntervalSetsExt = "IntervalSets" + AccessorsStaticArraysExt = "StaticArrays" + AccessorsStructArraysExt = "StructArrays" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + Requires = "ae029012-a4dd-5104-9daa-d747884805df" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "cde29ddf7e5726c9fb511f340244ea3481267608" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "3.7.2" +weakdeps = ["StaticArrays"] + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "247efbccf92448be332d154d6ca56b9fcdd93c31" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.6.1" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.Bijections]] +git-tree-sha1 = "c9b163bd832e023571e86d0b90d9de92a9879088" +uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" +version = "0.1.6" + +[[deps.Calculus]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.5.1" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "e0af648f0692ec1691b5d094b8724ba1346281cf" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.18.0" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.Combinatorics]] +git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.2" + +[[deps.CommonSolve]] +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.0" + +[[deps.Compat]] +deps = ["UUIDs"] +git-tree-sha1 = "886826d76ea9e72b35fcd000e535588f7b60f21d" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.10.1" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+0" + +[[deps.CompositeTypes]] +git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638" +uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" +version = "0.1.3" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConcreteStructs]] +git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" +uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" +version = "0.2.3" + +[[deps.ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.4" +weakdeps = ["IntervalSets", "StaticArrays"] + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" + +[[deps.DataAPI]] +git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.15.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.15" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.Distributions]] +deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "9242eec9b7e2e14f9952e8ea1c7e31a50501d587" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.104" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.DomainSets]] +deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays", "Statistics"] +git-tree-sha1 = "51b4b84d33ec5e0955b55ff4b748b99ce2c3faa9" +uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" +version = "0.6.7" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.DualNumbers]] +deps = ["Calculus", "NaNMath", "SpecialFunctions"] +git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" +uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" +version = "0.6.8" + +[[deps.DynamicPolynomials]] +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] +git-tree-sha1 = "fea68c84ba262b121754539e6ea0546146515d4f" +uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" +version = "0.5.3" + +[[deps.EnumX]] +git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.4" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.FillArrays]] +deps = ["LinearAlgebra", "Random"] +git-tree-sha1 = "25a10f2b86118664293062705fd9c7e2eda881a2" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.9.2" +weakdeps = ["PDMats", "SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.36" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.FunctionWrappers]] +git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" +uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" +version = "1.1.3" + +[[deps.FunctionWrappersWrappers]] +deps = ["FunctionWrappers"] +git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "0.1.3" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.1.5" + +[[deps.Groebner]] +deps = ["AbstractAlgebra", "Combinatorics", "ExprTools", "Logging", "MultivariatePolynomials", "PrecompileTools", "Primes", "Printf", "Random", "SIMD", "TimerOutputs"] +git-tree-sha1 = "909ce267252dde0d10cccad539021c245fcfa20f" +uuid = "0b43b601-686d-58a3-8a1c-6623616c7cd4" +version = "0.5.0" + +[[deps.GroupsCore]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "6df9cd6ee79fc59feab33f63a1b3c9e95e2461d5" +uuid = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120" +version = "0.4.2" + +[[deps.HypergeometricFunctions]] +deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.23" + +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + +[[deps.IntegerMathUtils]] +git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.2" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IntervalSets]] +deps = ["Dates", "Random"] +git-tree-sha1 = "3d8866c029dd6b16e69e0d4a939c4dfcb98fac47" +uuid = "8197267c-284f-5f27-9208-e0e47529a953" +version = "0.7.8" +weakdeps = ["Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsStatisticsExt = "Statistics" + +[[deps.InverseFunctions]] +deps = ["Test"] +git-tree-sha1 = "68772f49f54b479fa88ace904f6127f0a3bb2e46" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.12" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.LabelledArrays]] +deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] +git-tree-sha1 = "cd04158424635efd05ff38d5f55843397b7416a9" +uuid = "2ee39098-c373-598a-b85f-a56591580800" +version = "1.14.0" + +[[deps.LambertW]] +git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" +uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9" +version = "0.4.6" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.1" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LatticeRules]] +deps = ["Random"] +git-tree-sha1 = "7f5b02258a3ca0221a6a9710b0a0a2e8fb4957fe" +uuid = "73f95e8e-ec14-4e6a-8b18-0d2e271c4e55" +version = "0.0.1" + +[[deps.Lazy]] +deps = ["MacroTools"] +git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" +uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" +version = "0.15.1" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.3" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "7.84.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.10.2+0" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.11" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.1.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[deps.MultivariatePolynomials]] +deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] +git-tree-sha1 = "6ffb234d6d7c866a75c1879d2099049d3a35a83a" +uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" +version = "0.5.3" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "806eea990fb41f9b36f1253e5697aa645bf6a9f8" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.4.0" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.21+4" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.31" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.9.2" + +[[deps.PreallocationTools]] +deps = ["Adapt", "ArrayInterface", "ForwardDiff", "Requires"] +git-tree-sha1 = "f739b1b3cc7b9949af3b35089931f2b58c289163" +uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" +version = "0.4.12" + + [deps.PreallocationTools.extensions] + PreallocationToolsReverseDiffExt = "ReverseDiff" + + [deps.PreallocationTools.weakdeps] + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.Primes]] +deps = ["IntegerMathUtils"] +git-tree-sha1 = "1d05623b5952aed1307bf8b43bec8b8d1ef94b6e" +uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" +version = "0.5.5" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.9.1" + +[[deps.QuasiMonteCarlo]] +deps = ["Accessors", "ConcreteStructs", "LatticeRules", "LinearAlgebra", "Primes", "Random", "Requires", "Sobol", "StatsBase"] +git-tree-sha1 = "cc086f8485bce77b6187141e1413c3b55f9a4341" +uuid = "8a4e6c94-4038-4cdc-81c3-7e6ffdb2a71b" +version = "0.3.3" +weakdeps = ["Distributions"] + + [deps.QuasiMonteCarlo.extensions] + QuasiMonteCarloDistributionsExt = "Distributions" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.RandomExtensions]] +deps = ["Random", "SparseArrays"] +git-tree-sha1 = "b8a399e95663485820000f26b6a43c794e166a49" +uuid = "fb686558-2515-59ef-acaa-46db3789a887" +version = "0.4.4" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecursiveArrayTools]] +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "d7087c013e8a496ff396bae843b1e16d9a30ede8" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "2.38.10" + + [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" + RecursiveArrayToolsTrackerExt = "Tracker" + RecursiveArrayToolsZygoteExt = "Zygote" + + [deps.RecursiveArrayTools.weakdeps] + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.7.1" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.4.0+0" + +[[deps.RuntimeGeneratedFunctions]] +deps = ["ExprTools", "SHA", "Serialization"] +git-tree-sha1 = "6aacc5eefe8415f47b3e34214c1d79d2674a0ba2" +uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" +version = "0.5.12" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.SIMD]] +deps = ["PrecompileTools"] +git-tree-sha1 = "d8911cc125da009051fb35322415641d02d9e37f" +uuid = "fdea26ae-647d-5447-a871-4b548cad5224" +version = "3.4.6" + +[[deps.SciMLBase]] +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "QuasiMonteCarlo", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] +git-tree-sha1 = "32ea825941f7b58a6f48268f4b76971ae8eb9eec" +uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +version = "2.10.0" + + [deps.SciMLBase.extensions] + SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBasePartialFunctionsExt = "PartialFunctions" + SciMLBasePyCallExt = "PyCall" + SciMLBasePythonCallExt = "PythonCall" + SciMLBaseRCallExt = "RCall" + SciMLBaseZygoteExt = "Zygote" + + [deps.SciMLBase.weakdeps] + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" + PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLOperators]] +deps = ["ArrayInterface", "DocStringExtensions", "Lazy", "LinearAlgebra", "Setfield", "SparseArrays", "StaticArraysCore", "Tricks"] +git-tree-sha1 = "51ae235ff058a64815e0a2c34b1db7578a06813d" +uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" +version = "0.3.7" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.1" + +[[deps.Sobol]] +deps = ["DelimitedFiles", "Random"] +git-tree-sha1 = "5a74ac22a9daef23705f010f72c81d6925b19df8" +uuid = "ed01d8cd-4d21-5b2a-85b4-cc3bdc58bad4" +version = "1.5.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.3.1" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "5ef59aea6f18c25168842bded46b16662141ab87" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.7.0" +weakdeps = ["Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.2" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.9.0" + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.2" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.3.0" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "5.10.1+6" + +[[deps.SymbolicIndexingInterface]] +deps = ["DocStringExtensions"] +git-tree-sha1 = "f8ab052bfcbdb9b48fad2c80c873aa0d0344dfe5" +uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +version = "0.2.2" + +[[deps.SymbolicUtils]] +deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TimerOutputs", "Unityper"] +git-tree-sha1 = "2f3fa844bcd33e40d8c29de5ee8dded7a0a70422" +uuid = "d1185830-fcd6-423d-90d6-eec64667417b" +version = "1.4.0" + +[[deps.Symbolics]] +deps = ["ArrayInterface", "Bijections", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "Groebner", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils"] +git-tree-sha1 = "28f55dcd865e4a97f262fc476306cee14e8d4651" +uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" +version = "5.11.0" + + [deps.Symbolics.extensions] + SymbolicsSymPyExt = "SymPy" + + [deps.Symbolics.weakdeps] + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TimerOutputs]] +deps = ["ExprTools", "Printf"] +git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7" +uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" +version = "0.5.23" + +[[deps.Tricks]] +git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.8" + +[[deps.TruncatedStacktraces]] +deps = ["InteractiveUtils", "MacroTools", "Preferences"] +git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" +uuid = "781d530d-4396-4725-bb49-402e4bee1e77" +version = "1.4.0" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.Unityper]] +deps = ["ConstructionBase"] +git-tree-sha1 = "21c8fc7cd598ef49f11bc9e94871f5d7740e34b9" +uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" +version = "0.1.5" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.48.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" diff --git a/external/StayOnTheRidge.jl/test/Project.toml b/external/StayOnTheRidge.jl/test/Project.toml new file mode 100644 index 0000000..a149713 --- /dev/null +++ b/external/StayOnTheRidge.jl/test/Project.toml @@ -0,0 +1,3 @@ +[deps] +Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/external/StayOnTheRidge.jl/test/runtests.jl b/external/StayOnTheRidge.jl/test/runtests.jl new file mode 100644 index 0000000..844565c --- /dev/null +++ b/external/StayOnTheRidge.jl/test/runtests.jl @@ -0,0 +1,92 @@ +using StayOnTheRidge +using Test +using Symbolics + +function conf1() + n = 2 + min_coords = [1] + γ = 1e-2 + ϵ = 1e-2 + x = [Symbolics.variable(:x,i) for i in 1:n] + f = (x[1]-1/2)*(x[2]-1/2) + return Config_sym(f, x, n, min_coords, γ, ϵ, Default()) +end + +function conf2() + n = 4 + min_coords = [1,2] + γ = 1e-3 + ϵ = 1e-2 + x = [Symbolics.variable(:x,i) for i in 1:n] + f = (x[1]+x[2]+x[3]+x[4]+1)^2-4*(x[1]*x[2]+x[2]*x[3]+x[3]*x[4]+x[1]) + return Config_sym(f, x, n, min_coords, γ, ϵ, Default()) +end + +function conf3() + n = 6 + min_coords = [1,2,3] + γ = 1e-4 + ϵ = 1e-1 + f(x) = sum(x[i]+x[3+i] for i in 1:3) - prod((x[i] - x[3+i]) for i in 1:3) + return Config_FD(f, n, min_coords, γ, ϵ, Hyperrectangle([fill([-1,1], 6)...])) +end + +@testset "StayOnTheRidge.jl" begin + c1 = conf1() + c2 = conf2() + c3 = conf3() + @testset "Direction" begin + @test StayOnTheRidge.compute_direction([0,0], 1, [], c1) == [1,0] + @test StayOnTheRidge.compute_direction([0,0.5], 1, [], c1) == [1,0] + @test StayOnTheRidge.compute_direction([1,0], 2, [], c1) == [0,1] + @test StayOnTheRidge.compute_direction([1,0.5], 2, [], c1) == [0,1] + @test StayOnTheRidge.compute_direction([1,0.5], 2, [1], c1) == [-1,0] + @test_throws ErrorException StayOnTheRidge.compute_direction([1,0,0,0], 3, [1,2], c2) + end + @testset "Exit points" begin + is_good_exit,zs = StayOnTheRidge.good_exit([1,0], 1, c1) + @test is_good_exit && !zs + j = StayOnTheRidge.middling_exit([1,0.5],2,[],[0,1], c1) + @test j == 1 + is_good_exit,zs = StayOnTheRidge.good_exit([0.5,0.5], 2, c1) + @test is_good_exit && zs + end + @testset "VI solution" begin + @test StayOnTheRidge.is_solution_VI([-1,-1,1,1,1,1], c3) + @test StayOnTheRidge.is_solution_VI([-1,1,-1,1,1,1], c3) + @test StayOnTheRidge.is_solution_VI([1,-1,-1,1,1,1], c3) + @test !StayOnTheRidge.is_solution_VI([0,0,0,0,0,0], c3) + end + @testset "Domain hyperrectangle" begin + @test_throws AssertionError Hyperrectangle([[2,1],[-1,1]]) + @test_throws MethodError Hyperrectangle([[1.2,2],[6.3,7]]) + end + @testset "Config_FD" begin + f_fd(x) = (x[1]-1/2)*(x[2]-1/2) + domain = Default() + # AssertionError + @test_throws AssertionError Config_FD(f_fd, 2, [1], 1e-2, -10, domain) # ϵ > 0 + @test_throws AssertionError Config_FD(f_fd, 2, [2,-3], 1e-2, 1e-2, domain) # each min_coord > 0 + @test_throws AssertionError Config_FD(f_fd, 2, [1,2,3], 1e-2, 1e-2, domain) # no of min_coords <= n + # MethodError + @test_throws MethodError Config_FD(f_fd, 2, 2, 1e-2, 1e-2, domain) + @test_throws MethodError Config_FD(f_fd, 2.2, [1], 1e-2, 1e-2, domain) + @test_throws MethodError Config_FD("function", 2, [1], 1e-2, 1e-2, domain) + end + @testset "Config_sym" begin + x = [Symbolics.variable(:x,i) for i in 1:2] + f = (x[1]-1/2)*(x[2]-1/2) + domain = Default() + # AssertionError + @test_throws AssertionError Config_sym(f, x, 2, [1], 1e-2, -10, domain) # ϵ > 0 + @test_throws AssertionError Config_sym(f, x, 2, [0,2], 1e-2, 1e-2, domain) # each min_coord > 0 + @test_throws AssertionError Config_sym(f, x, 2, [1,2,3], 1e-2, 1e-2, domain) # no of min_coords <= n + x = [Symbolics.variable(:x,i) for i in 1:3] + @test_throws AssertionError Config_sym(f, x, 2, [1], 1e-2, 1e-2, domain) # length(x) == n + # MethodError + x = [Symbolics.variable(:x,i) for i in 1:2] + @test_throws MethodError Config_sym(f, x, 2, 2, 1e-2, 1e-2, domain) + @test_throws MethodError Config_sym(f, x, 2.2, [1], 1e-2, 1e-2, domain) + @test_throws MethodError Config_sym("function", x, 2, [1], 1e-2, 1e-2, domain) + end +end diff --git a/src/ObjectiveFunctions.jl b/src/ObjectiveFunctions.jl index 607ed27..6c16540 100644 --- a/src/ObjectiveFunctions.jl +++ b/src/ObjectiveFunctions.jl @@ -8,4 +8,16 @@ end export entropy_regularized_bilinear function entropy_regularized_bilinear(x, y) return x*y + x*log(x) - y*log(y) +end + +export grimmer +function grimmer(x, y) + return x^4 - 10*(x^2) + 10*x*y -y^4 + 10*(y^2) +end + +export norm_grad_grimmer +function norm_grad_grimmer(x, y) + w1 = 4*x^3 - 20*x + 10*y + w2 = 4*y^3 - 20*y-10*x + return sqrt(w1^2 + w2^2) end \ No newline at end of file diff --git a/src/Regularization.jl b/src/Regularization.jl index b7d79b8..db939df 100644 --- a/src/Regularization.jl +++ b/src/Regularization.jl @@ -39,7 +39,7 @@ function regularization_g_d(update_step_grad, update_step_hess) if update_step_hess[1, 1] > 0 b1 = 1.0 end - if update_step_hess[2, 2] < 0 + if update_step_hess[2, 2] > 0 b2 = -1.0 end beta = [b1 0.0; 0.0 b2] diff --git a/src/TwoPlayer.jl b/src/TwoPlayer.jl index 8a30bc4..a805263 100644 --- a/src/TwoPlayer.jl +++ b/src/TwoPlayer.jl @@ -266,6 +266,9 @@ function g_d(guess, func, n_x, tol, max_iters, α) k = 0 error = tol+1.0 path = [x] + update_step_grad = zeros(2) + update_step_hess = zeros(2, 2) + update = zeros(2) while ktol update_step_grad = zero_sum_gradient(x, func, n_x) update_step_hess = zero_sum_true_hessian(x, func, n_x) @@ -285,6 +288,10 @@ function g_d(guess, func, n_x, tol, max_iters, α) println("g_d did not converge!") println("Error: ", error) end + println("update_step_grad: ", update_step_grad) + println("update_step_hess: ", update_step_hess) + println("update: ", update) + println("assumption", transpose(update_step_hess)*update_step_grad) return x, func(x[1], x[2]), k, path end From ae1b12ff6e01a3d4419a5333f70d6240313d6c4b Mon Sep 17 00:00:00 2001 From: Kushagra Gupta Date: Sun, 3 Aug 2025 14:48:29 -0500 Subject: [PATCH 2/3] restructuring stonr and other experiments to optimize deps --- Project.toml | 6 - experiments/GANExample/Project.toml | 3 + experiments/MinMaxComparison/Manifest.toml | 1863 ++++++++++ .../MinMaxComparison/MinMaxComparison.jl | 17 + .../MinMaxComparison}/Project.toml | 11 +- experiments/MinMaxComparison/Project.toml~ | 9 + .../MinMaxComparison}/algorithm.jl | 0 .../MinMaxComparison}/config.jl | 0 .../MinMaxComparison}/domain.jl | 0 .../MinMaxComparison}/utils.jl | 0 experiments/ToyExample/Manifest.toml | 3164 +++++++++++++++++ experiments/ToyExample/Project.toml | 9 + external/StayOnTheRidge.jl/LICENSE | 21 - external/StayOnTheRidge.jl/README.md | 52 - .../StayOnTheRidge.jl/examples/Manifest.toml | 1800 ---------- .../StayOnTheRidge.jl/examples/Project.toml | 10 - .../StayOnTheRidge.jl/examples/examples.jl | 552 --- .../StayOnTheRidge.jl/examples/multilinear.jl | 29 - .../imgs/example5_contour.png | Bin 129053 -> 0 bytes .../imgs/example5_surface.png | Bin 34260 -> 0 bytes .../imgs/example5_trajectory.png | Bin 13782 -> 0 bytes .../StayOnTheRidge.jl/src/StayOnTheRidge.jl | 10 - external/StayOnTheRidge.jl/test/Manifest.toml | 892 ----- external/StayOnTheRidge.jl/test/Project.toml | 3 - external/StayOnTheRidge.jl/test/runtests.jl | 92 - src/ZeroSumGameSolve.jl | 5 + 26 files changed, 5073 insertions(+), 3475 deletions(-) create mode 100644 experiments/MinMaxComparison/Manifest.toml create mode 100644 experiments/MinMaxComparison/MinMaxComparison.jl rename {external/StayOnTheRidge.jl => experiments/MinMaxComparison}/Project.toml (55%) create mode 100644 experiments/MinMaxComparison/Project.toml~ rename {external/StayOnTheRidge.jl/src => experiments/MinMaxComparison}/algorithm.jl (100%) rename {external/StayOnTheRidge.jl/src => experiments/MinMaxComparison}/config.jl (100%) rename {external/StayOnTheRidge.jl/src => experiments/MinMaxComparison}/domain.jl (100%) rename {external/StayOnTheRidge.jl/src => experiments/MinMaxComparison}/utils.jl (100%) create mode 100644 experiments/ToyExample/Manifest.toml create mode 100644 experiments/ToyExample/Project.toml delete mode 100644 external/StayOnTheRidge.jl/LICENSE delete mode 100644 external/StayOnTheRidge.jl/README.md delete mode 100644 external/StayOnTheRidge.jl/examples/Manifest.toml delete mode 100644 external/StayOnTheRidge.jl/examples/Project.toml delete mode 100644 external/StayOnTheRidge.jl/examples/examples.jl delete mode 100644 external/StayOnTheRidge.jl/examples/multilinear.jl delete mode 100644 external/StayOnTheRidge.jl/imgs/example5_contour.png delete mode 100644 external/StayOnTheRidge.jl/imgs/example5_surface.png delete mode 100644 external/StayOnTheRidge.jl/imgs/example5_trajectory.png delete mode 100644 external/StayOnTheRidge.jl/src/StayOnTheRidge.jl delete mode 100644 external/StayOnTheRidge.jl/test/Manifest.toml delete mode 100644 external/StayOnTheRidge.jl/test/Project.toml delete mode 100644 external/StayOnTheRidge.jl/test/runtests.jl diff --git a/Project.toml b/Project.toml index 63556b5..3b2acaa 100644 --- a/Project.toml +++ b/Project.toml @@ -5,8 +5,6 @@ version = "0.1.0" [deps] Arpack = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" -CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" -Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" LineSearches = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" @@ -14,16 +12,12 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Optim = "429524aa-4258-5aef-a3af-852621145aeb" Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2" OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" -Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" -StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [compat] -Revise = "3.7.2" julia = "1" [extras] diff --git a/experiments/GANExample/Project.toml b/experiments/GANExample/Project.toml index da174a4..ea505c5 100644 --- a/experiments/GANExample/Project.toml +++ b/experiments/GANExample/Project.toml @@ -16,3 +16,6 @@ Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" ZeroSumGameSolve = "acbac2c1-af1f-4c5c-8072-533d2c216f7a" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" + +[sources] +ZeroSumGameSolve = {path = "../.."} \ No newline at end of file diff --git a/experiments/MinMaxComparison/Manifest.toml b/experiments/MinMaxComparison/Manifest.toml new file mode 100644 index 0000000..422c5b5 --- /dev/null +++ b/experiments/MinMaxComparison/Manifest.toml @@ -0,0 +1,1863 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.11.4" +manifest_format = "2.0" +project_hash = "fbaf4dff355926f5d12f27826f01e94214044bca" + +[[deps.ADTypes]] +git-tree-sha1 = "7927b9af540ee964cc5d1b73293f1eb0b761a3a1" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "1.16.0" + + [deps.ADTypes.extensions] + ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" + ADTypesEnzymeCoreExt = "EnzymeCore" + + [deps.ADTypes.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" +weakdeps = ["ChainRulesCore", "Test"] + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + +[[deps.AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "3b86719127f50670efe356bc11073d84b4ed7a5d" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.42" + + [deps.Accessors.extensions] + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "f7817e2e585aa6d924fd714df1e2a84be7896c60" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.3.0" +weakdeps = ["SparseArrays", "StaticArrays"] + + [deps.Adapt.extensions] + AdaptSparseArraysExt = "SparseArrays" + AdaptStaticArraysExt = "StaticArrays" + +[[deps.AliasTables]] +deps = ["PtrArrays", "Random"] +git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" +uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" +version = "1.1.3" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.2" + +[[deps.Arpack]] +deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] +git-tree-sha1 = "9b9b347613394885fd1c8c7729bfc60528faa436" +uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" +version = "0.5.4" + +[[deps.Arpack_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"] +git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e" +uuid = "68821587-b530-5797-8361-c406ea357684" +version = "3.5.1+1" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra"] +git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.19.0" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceSparseArraysExt = "SparseArrays" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" + +[[deps.AxisAlgorithms]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] +git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" +uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" +version = "1.1.0" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.Bijections]] +git-tree-sha1 = "a2d308fcd4c2fb90e943cf9cd2fbfa9c32b69733" +uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" +version = "0.2.2" + +[[deps.BitFlags]] +git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.9" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.9+0" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "fde3bf89aead2e723284a8ff9cdf5b551ed700e8" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.18.5+0" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "06ee8d1aa558d2833aa799f6f0b31b30cada405f" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.25.2" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.Clustering]] +deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"] +git-tree-sha1 = "3e22db924e2945282e70c33b75d4dde8bfa44c94" +uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" +version = "0.15.8" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.8" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "a656525c8b46aa6a1c76891552ed5381bb32ae7b" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.30.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.12.1" +weakdeps = ["StyledStrings"] + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.11.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.13.1" + +[[deps.Combinatorics]] +git-tree-sha1 = "8010b6bb3388abe68d95743dcbea77650bb2eddf" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.3" + +[[deps.CommonSolve]] +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.1" + +[[deps.CommonWorldInvalidations]] +git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" +uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" +version = "1.0.0" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "0037835448781bb46feb39866934e243886d756a" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.18.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.1.1+0" + +[[deps.CompositeTypes]] +git-tree-sha1 = "bce26c3dab336582805503bed209faab1c279768" +uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" +version = "0.1.4" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "d9d26935a0bcffc87d2613ce14c527c99fc543fd" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.5.0" + +[[deps.ConstructionBase]] +git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.6.0" +weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + +[[deps.Contour]] +git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.3" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.22" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" + +[[deps.Dbus_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "473e9afc9cf30814eb67ffa5f2db7df82c3ad9fd" +uuid = "ee1fde0b-3d02-5ea6-8484-8dfef6360eab" +version = "1.16.2+0" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.12" +weakdeps = ["ChainRulesCore", "SparseArrays"] + + [deps.Distances.extensions] + DistancesChainRulesCoreExt = "ChainRulesCore" + DistancesSparseArraysExt = "SparseArrays" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" + +[[deps.Distributions]] +deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "3e6d038b77f22791b8e3472b7c633acea1ecac06" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.120" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.5" + +[[deps.DomainSets]] +deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "c249d86e97a7e8398ce2068dce4c078a1c3464de" +uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" +version = "0.7.16" + + [deps.DomainSets.extensions] + DomainSetsMakieExt = "Makie" + DomainSetsRandomExt = "Random" + + [deps.DomainSets.weakdeps] + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.DynamicPolynomials]] +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Reexport", "Test"] +git-tree-sha1 = "98c4bb95af37e5d980129261fdd6dab0392c6607" +uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" +version = "0.6.2" + +[[deps.EnumX]] +git-tree-sha1 = "bddad79635af6aec424f53ed8aad5d7555dc6f00" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.5" + +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a4be429317c42cfae6a7fc03c31bad1970c310d" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+1" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.11" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d55dffd9ae73ff72f1c0482454dcf2ec6c6c4a63" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.6.5+0" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + +[[deps.ExproniconLite]] +git-tree-sha1 = "c13f0b150373771b0fdc1713c97860f8df12e6c2" +uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" +version = "0.10.14" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "83dc665d0312b41367b7263e8a4d172eac1897f4" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.4" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "3a948313e7a41eb1db7a1e733e6335f17b4ab3c4" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "7.1.1+0" + +[[deps.FFTW]] +deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] +git-tree-sha1 = "797762812ed063b9b94f6cc7742bc8883bb5e69e" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.9.0" + +[[deps.FFTW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6d6219a004b8cf1e0b4dbe27a2860b8e04eba0be" +uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" +version = "3.3.11+0" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" + +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.13.0" +weakdeps = ["PDMats", "SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.5" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] +git-tree-sha1 = "301b5d5d731a0654825f1f2e906990f7141a106b" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.16.0+0" + +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "910febccb28d493032495b7009dce7d7f7aee554" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "1.0.1" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "2c5512e11c791d1baed2049c5652441b28fc6a31" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.13.4+0" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7a214fdac5ed5f59a22c2d9a885a16da1c74bbc7" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.17+0" + +[[deps.FunctionWrappers]] +git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" +uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" +version = "1.1.3" + +[[deps.FunctionWrappersWrappers]] +deps = ["FunctionWrappers"] +git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "0.1.3" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" + +[[deps.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "libdecor_jll", "xkbcommon_jll"] +git-tree-sha1 = "fcb0584ff34e25155876418979d4c8971243bb89" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.4.0+2" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.2.0" + +[[deps.GR]] +deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] +git-tree-sha1 = "1828eb7275491981fa5f1752a5e126e8f26f8741" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.73.17" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "27299071cc29e409488ada41ec7643e0ab19091f" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.73.17+0" + +[[deps.GettextRuntime_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll"] +git-tree-sha1 = "45288942190db7c5f760f59c04495064eedf9340" +uuid = "b0724c58-0f36-5564-988d-3bb0596ebc4a" +version = "0.22.4+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "35fbd0cefb04a516104b8e183ce0df11b70a3f1a" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.84.3+0" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.15+0" + +[[deps.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "ed5e9c58612c4e081aecdb6e1a479e18462e041e" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.17" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "f923f9a774fcf3f5cb761bfa43aeadd689714813" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "8.5.1+0" + +[[deps.HypergeometricFunctions]] +deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "68c173f4f449de5b438ee67ed0c9c748dc31a2ec" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.28" + +[[deps.IntegerMathUtils]] +git-tree-sha1 = "4c1acff2dc6b6967e7e750633c50bc3b8d83e617" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.3" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "ec1debd61c300961f98064cfb21287613ad7f303" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2025.2.0+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" + +[[deps.Interpolations]] +deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0" +uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" +version = "0.15.1" +weakdeps = ["Unitful"] + + [deps.Interpolations.extensions] + InterpolationsUnitfulExt = "Unitful" + +[[deps.IntervalSets]] +git-tree-sha1 = "5fbb102dcb8b1a858111ae81d56682376130517d" +uuid = "8197267c-284f-5f27-9208-e0e47529a953" +version = "0.7.11" +weakdeps = ["Random", "RecipesBase", "Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" + IntervalSetsStatisticsExt = "Statistics" + +[[deps.InverseFunctions]] +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.17" +weakdeps = ["Dates", "Test"] + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.4" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLFzf]] +deps = ["REPL", "Random", "fzf_jll"] +git-tree-sha1 = "82f7acdc599b65e0f8ccd270ffa1467c21cb647b" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.11" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.7.1" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.Jieko]] +deps = ["ExproniconLite"] +git-tree-sha1 = "2f05ed29618da60c06a87e9c033982d4f71d0b6c" +uuid = "ae98c720-c025-4a4a-838c-29b094483192" +version = "0.2.1" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "eac1206917768cb54957c65a615460d87b455fc1" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.1.1+0" + +[[deps.KernelDensity]] +deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] +git-tree-sha1 = "ba51324b894edaf1df3ab16e2cc6bc3280a2f1a7" +uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" +version = "0.6.10" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "059aabebaa7c82ccb853dd4a0ee9d17796f7e1bc" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.3+0" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "aaafe88dccbd957a8d82f7d05be9b69172e0cee3" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "4.0.1+0" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "eb62a3deb62fc6d8822c0c4bef73e4412419c5d8" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "18.1.8+0" + +[[deps.LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1c602b1127f4751facb671441ca72715cc95938a" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.3+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.0" + +[[deps.Latexify]] +deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] +git-tree-sha1 = "4f34eaabe49ecb3fb0d58d6015e32fd31a733199" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.8" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SparseArraysExt = "SparseArrays" + SymEngineExt = "SymEngine" + TectonicExt = "tectonic_jll" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + tectonic_jll = "d7dd28d6-a5e6-559c-9131-7eb760cdacc5" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.6.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.7.2+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c8da7e6a91781c41a863611c7e966098d783c57a" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.4.7+0" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "d36c21b9e7c172a44a10484125024495e2625ac0" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.7.1+1" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.18.0+0" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a31572773ac1b745e0343fe5e2c8ddda7a37e997" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.41.0+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "4ab7581296671007fc33f07a721631b8855f4b1d" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.7.1+0" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "321ccef73a96ba828cd51f2ab5b9f917fa73945a" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.41.0+0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.29" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.1.0" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "282cadc186e7b2ae0eeadbd7a4dffed4196ae2aa" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2025.2.0+0" + +[[deps.MacroTools]] +git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.16" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.6+0" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.2.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" + +[[deps.Moshi]] +deps = ["ExproniconLite", "Jieko"] +git-tree-sha1 = "53f817d3e84537d84545e0ad749e483412dd6b2a" +uuid = "2e0e35c7-a2e4-4343-998d-7ef72827ed2d" +version = "0.3.7" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.12.12" + +[[deps.MultivariatePolynomials]] +deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] +git-tree-sha1 = "fade91fe9bee7b142d332fc6ab3f0deea29f637b" +uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" +version = "0.5.9" + +[[deps.MultivariateStats]] +deps = ["Arpack", "Distributions", "LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI", "StatsBase"] +git-tree-sha1 = "816620e3aac93e5b5359e4fdaf23ca4525b00ddf" +uuid = "6f286f6a-111f-5878-ab1e-185364afe411" +version = "0.10.3" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "491bdcdc943fcbc4c005900d7463c9f216aabf4c" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.6.4" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.1.3" + +[[deps.NearestNeighbors]] +deps = ["Distances", "StaticArrays"] +git-tree-sha1 = "ca7e18198a166a1f3eb92a3650d53d94ed8ca8a1" +uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" +version = "0.4.22" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.Observables]] +git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" +uuid = "510215fc-4207-5dde-b226-833fc4488ee2" +version = "0.5.5" + +[[deps.OffsetArrays]] +git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.17.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b6aa4566bb7ae78498a5e68943863fa8b5231b59" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.6+0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.27+1" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+4" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "f1a7e086c677df53e064e0fdd2c9d0b0833e3f6e" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.5.0" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "87510f7292a2b21aeff97912b0898f9553cc5c2c" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.1+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.6+0" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c392fc5dd032381919e3b22dd32d6443760ce7ea" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.5.2+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.8.1" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+1" + +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "f07c06228a1c670ae4c87d1276b92c7c597fdda0" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.35" + +[[deps.Pango_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "275a9a6d85dc86c24d03d1837a0010226a96f540" +uuid = "36c8627f-9965-5494-a995-c6b170f724f3" +version = "1.56.3+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "7d2f8f21da5db6a806faf7b9b292296da42b2810" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.3" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "db76b1ecd5e9715f3d043cec13b2ec93ce015d53" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.44.2+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.11.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "41031ef3a1be6f5bbbf3e8073f210556daeae5ca" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.3.0" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"] +git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.4.3" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "3db9167c618b290a05d4345ca70de6d95304a32a" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.40.17" + + [deps.Plots.extensions] + FileIOExt = "FileIO" + GeometryBasicsExt = "GeometryBasics" + IJuliaExt = "IJulia" + ImageInTerminalExt = "ImageInTerminal" + UnitfulExt = "Unitful" + + [deps.Plots.weakdeps] + FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.1" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.3" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.4.0" + +[[deps.Primes]] +deps = ["IntegerMathUtils"] +git-tree-sha1 = "25cdd1d20cd005b52fc12cb6be3f75faaf59bb9b" +uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" +version = "0.5.7" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" + +[[deps.PtrArrays]] +git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.3.0" + +[[deps.Qt6Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "eb38d376097f47316fe089fc62cb7c6d85383a52" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.8.2+1" + +[[deps.Qt6Declarative_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll"] +git-tree-sha1 = "da7adf145cce0d44e892626e647f9dcbe9cb3e10" +uuid = "629bc702-f1f5-5709-abd5-49b8460ea067" +version = "6.8.2+1" + +[[deps.Qt6ShaderTools_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] +git-tree-sha1 = "9eca9fc3fe515d619ce004c83c31ffd3f85c7ccf" +uuid = "ce943373-25bb-56aa-8eca-768745ed7b5a" +version = "6.8.2+1" + +[[deps.Qt6Wayland_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] +git-tree-sha1 = "e1d5e16d0f65762396f9ca4644a5f4ddab8d452b" +uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" +version = "6.8.2+1" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "9da16da70037ba9d701192e27befedefb91ec284" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.11.2" + + [deps.QuadGK.extensions] + QuadGKEnzymeExt = "Enzyme" + + [deps.QuadGK.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" + +[[deps.Ratios]] +deps = ["Requires"] +git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" +uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" +version = "0.4.5" +weakdeps = ["FixedPointNumbers"] + + [deps.Ratios.extensions] + RatiosFixedPointNumbersExt = "FixedPointNumbers" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] +git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.12" + +[[deps.RecursiveArrayTools]] +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "f8726bd5a8b7f5f5d3f6c0ce4793454a599b5243" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "3.36.0" + + [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" + RecursiveArrayToolsForwardDiffExt = "ForwardDiff" + RecursiveArrayToolsKernelAbstractionsExt = "KernelAbstractions" + RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" + RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] + RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] + RecursiveArrayToolsStructArraysExt = "StructArrays" + RecursiveArrayToolsTrackerExt = "Tracker" + RecursiveArrayToolsZygoteExt = "Zygote" + + [deps.RecursiveArrayTools.weakdeps] + FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.1" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.8.0" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.5.1+0" + +[[deps.RuntimeGeneratedFunctions]] +deps = ["ExprTools", "SHA", "Serialization"] +git-tree-sha1 = "86a8a8b783481e1ea6b9c91dd949cb32191f8ab4" +uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" +version = "0.5.15" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.SciMLBase]] +deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] +git-tree-sha1 = "1c7fd50df465f0684f04f3a63736eac01999c659" +uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +version = "2.107.0" + + [deps.SciMLBase.extensions] + SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBaseMLStyleExt = "MLStyle" + SciMLBaseMakieExt = "Makie" + SciMLBasePartialFunctionsExt = "PartialFunctions" + SciMLBasePyCallExt = "PyCall" + SciMLBasePythonCallExt = "PythonCall" + SciMLBaseRCallExt = "RCall" + SciMLBaseZygoteExt = ["Zygote", "ChainRulesCore"] + + [deps.SciMLBase.weakdeps] + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + MLStyle = "d8e11817-5142-5d16-987a-aa16d5891078" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" + PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLOperators]] +deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "7d3a1519dc4d433a6b20035eaff20bde8be77c66" +uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" +version = "1.4.0" +weakdeps = ["SparseArrays", "StaticArraysCore"] + + [deps.SciMLOperators.extensions] + SciMLOperatorsSparseArraysExt = "SparseArrays" + SciMLOperatorsStaticArraysCoreExt = "StaticArraysCore" + +[[deps.SciMLStructures]] +deps = ["ArrayInterface"] +git-tree-sha1 = "566c4ed301ccb2a44cbd5a27da5f885e0ed1d5df" +uuid = "53ae85a6-f571-4167-b2af-e1d143709226" +version = "1.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.3.0" + +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "712fb0231ee6f9120e005ccd56297abbc053e7e0" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.8" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "c5391c6ace3bc430ca630251d02ea9687169ca68" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.2" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.2.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.1" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.11.0" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.5.1" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.StableRNGs]] +deps = ["Random"] +git-tree-sha1 = "95af145932c2ed859b63329952ce8d633719f091" +uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" +version = "1.0.3" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "cbea8a6bd7bed51b1619658dec70035e07b8502f" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.14" +weakdeps = ["ChainRulesCore", "Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.3" + +[[deps.Statistics]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ff" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.1" + +[[deps.StatsBase]] +deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "b81c5035922cc89c2d9523afc6c54be512411466" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.5" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "8e45cecc66f3b42633b8ce14d431e8e57a3e242e" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.5.0" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.StatsPlots]] +deps = ["AbstractFFTs", "Clustering", "DataStructures", "Distributions", "Interpolations", "KernelDensity", "LinearAlgebra", "MultivariateStats", "NaNMath", "Observables", "Plots", "RecipesBase", "RecipesPipeline", "Reexport", "StatsBase", "TableOperations", "Tables", "Widgets"] +git-tree-sha1 = "3b1dcbf62e469a67f6733ae493401e53d92ff543" +uuid = "f3b207a7-027a-5e70-b257-86293d7955fd" +version = "0.15.7" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "725421ae8e530ec29bcbdddbe91ff8053421d023" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.4.1" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.7.0+0" + +[[deps.SymbolicIndexingInterface]] +deps = ["Accessors", "ArrayInterface", "PrettyTables", "RuntimeGeneratedFunctions", "StaticArraysCore"] +git-tree-sha1 = "59ca6eddaaa9849e7de9fd1153b6faf0b1db7b80" +uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +version = "0.3.42" + +[[deps.SymbolicLimits]] +deps = ["SymbolicUtils"] +git-tree-sha1 = "fabf4650afe966a2ba646cabd924c3fd43577fc3" +uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" +version = "0.2.2" + +[[deps.SymbolicUtils]] +deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "ExproniconLite", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TaskLocalValues", "TermInterface", "TimerOutputs", "Unityper", "WeakValueDicts"] +git-tree-sha1 = "fa63e8f55e99aee528951ba26544403b09645979" +uuid = "d1185830-fcd6-423d-90d6-eec64667417b" +version = "3.29.0" + + [deps.SymbolicUtils.extensions] + SymbolicUtilsLabelledArraysExt = "LabelledArrays" + SymbolicUtilsReverseDiffExt = "ReverseDiff" + + [deps.SymbolicUtils.weakdeps] + LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + +[[deps.Symbolics]] +deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "OffsetArrays", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] +git-tree-sha1 = "6eac6fe46d0e0f21baebc87d97dc118827737e05" +uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" +version = "6.48.1" + + [deps.Symbolics.extensions] + SymbolicsD3TreesExt = "D3Trees" + SymbolicsForwardDiffExt = "ForwardDiff" + SymbolicsGroebnerExt = "Groebner" + SymbolicsLuxExt = "Lux" + SymbolicsNemoExt = "Nemo" + SymbolicsPreallocationToolsExt = ["PreallocationTools", "ForwardDiff"] + SymbolicsSymPyExt = "SymPy" + SymbolicsSymPyPythonCallExt = "SymPyPythonCall" + + [deps.Symbolics.weakdeps] + D3Trees = "e3df1716-f71e-5df9-9e2d-98e193103c45" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" + Lux = "b2108857-7c20-44ae-9111-449ecde12c47" + Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" + PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableOperations]] +deps = ["SentinelArrays", "Tables", "Test"] +git-tree-sha1 = "e383c87cf2a1dc41fa30c093b2a19877c83e1bc1" +uuid = "ab02a1b2-a7df-11e8-156e-fb1833f50b87" +version = "1.2.0" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.12.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TaskLocalValues]] +git-tree-sha1 = "67e469338d9ce74fc578f7db1736a74d93a49eb8" +uuid = "ed4db957-447d-4319-bfb6-7fa9ae7ecf34" +version = "0.1.3" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.TermInterface]] +git-tree-sha1 = "d673e0aca9e46a2f63720201f55cc7b3e7169b16" +uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c" +version = "2.0.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" + +[[deps.TimerOutputs]] +deps = ["ExprTools", "Printf"] +git-tree-sha1 = "3748bd928e68c7c346b52125cf41fff0de6937d0" +uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" +version = "0.5.29" + + [deps.TimerOutputs.extensions] + FlameGraphsExt = "FlameGraphs" + + [deps.TimerOutputs.weakdeps] + FlameGraphs = "08572546-2f56-4bcf-ba4e-bab62c3a3f89" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.3" + +[[deps.URIs]] +git-tree-sha1 = "bef26fb046d031353ef97a82e3fdb6afe7f21b1a" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.6.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "6258d453843c466d84c17a58732dda5deeb8d3af" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.24.0" +weakdeps = ["ConstructionBase", "ForwardDiff", "InverseFunctions", "Printf"] + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + ForwardDiffExt = "ForwardDiff" + InverseFunctionsUnitfulExt = "InverseFunctions" + PrintfExt = "Printf" + +[[deps.UnitfulLatexify]] +deps = ["LaTeXStrings", "Latexify", "Unitful"] +git-tree-sha1 = "af305cc62419f9bd61b6644d19170a4d258c7967" +uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" +version = "1.7.0" + +[[deps.Unityper]] +deps = ["ConstructionBase"] +git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0" +uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" +version = "0.1.6" + +[[deps.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + +[[deps.Wayland_jll]] +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "96478df35bbc2f3e1e791bc7a3d0eeee559e60e9" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.24.0+0" + +[[deps.WeakValueDicts]] +git-tree-sha1 = "98528c2610a5479f091d470967a25becfd83edd0" +uuid = "897b6980-f191-5a31-bcb0-bf3c4585e0c1" +version = "0.1.0" + +[[deps.Widgets]] +deps = ["Colors", "Dates", "Observables", "OrderedCollections"] +git-tree-sha1 = "e9aeb174f95385de31e70bd15fa066a505ea82b9" +uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" +version = "0.6.7" + +[[deps.WoodburyMatrices]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" +uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" +version = "1.0.0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.8.1+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a3ea76ee3f4facd7a64684f9af25310825ee3668" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.1.2+0" + +[[deps.Xorg_libSM_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] +git-tree-sha1 = "9c7ad99c629a44f81e7799eb05ec2746abb5d588" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.6+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "b5899b25d17bf1889d25906fb9deed5da0c15b3b" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.12+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.13+0" + +[[deps.Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "6c74ca84bbabc18c4547014765d194ff0b4dc9da" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.4+0" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.6+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.7+0" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "9caba99d38404b285db8801d5c45ef4f4f425a6d" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "6.0.1+0" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "a376af5c7ae60d29825164db40787f15c80c7c54" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.8.3+0" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll"] +git-tree-sha1 = "a5bc75478d323358a90dc36766f3c99ba7feb024" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.6+0" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "aff463c82a773cb86061bce8d53a0d976854923e" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.5+0" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.12+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] +git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.17.1+0" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "e3150c7400c41e207012b41659591f083f3ef795" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.3+0" + +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "c5bf2dad6a03dfef57ea0a170a1fe493601603f2" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.5+0" + +[[deps.Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "f4fc02e384b74418679983a97385644b67e1263b" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.1+0" + +[[deps.Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll"] +git-tree-sha1 = "68da27247e7d8d8dafd1fcf0c3654ad6506f5f97" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.1+0" + +[[deps.Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "44ec54b0e2acd408b0fb361e1e9244c60c9c3dd4" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.1+0" + +[[deps.Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "5b0263b6d080716a02544c55fdff2c8d7f9a16a0" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.10+0" + +[[deps.Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "f233c83cad1fa0e70b7771e0e21b061a116f2763" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.2+0" + +[[deps.Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "801a858fc9fb90c11ffddee1801bb06a738bda9b" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.7+0" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "00af7ebdc563c9217ecc67776d1bbf037dbcebf4" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.44.0+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.6.0+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+1" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.7+1" + +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c3b0e6196d50eab0c5ed34021aaa0bb463489510" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.14+0" + +[[deps.fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b6a34e0e0960190ac2a4363a1bd003504772d631" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.61.1+0" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4bba74fa59ab0755167ad24f98800fe5d727175b" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.12.1+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "125eedcb0a4a0bba65b657251ce1d27c8714e9d6" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.17.4+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.11.0+0" + +[[deps.libdecor_jll]] +deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"] +git-tree-sha1 = "9bf7903af251d2050b467f76bdbe57ce541f7f4f" +uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" +version = "0.2.2+0" + +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "56d643b57b188d30cccc25e331d416d3d358e557" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.13.4+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "646634dd19587a56ee2f1199563ec056c5f228df" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.4+0" + +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "91d05d7f4a9f67205bd6cf395e488009fe85b499" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.28.1+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "07b6a107d926093898e82b3b1db657ebe33134ec" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.50+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll"] +git-tree-sha1 = "11e1772e7f3cc987e9d3de991dd4f6b2602663a5" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.8+0" + +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b4d631fd51f2e9cdd93724ae25b2efc198b059b1" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.7+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.59.0+0" + +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2022.0.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "14cc7083fc6dff3cc44f2bc435ee96d06ed79aa7" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "10164.0.1+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e7b67590c14d487e734dcb925924c5dc43ec85f3" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "4.1.0+0" + +[[deps.xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "fbf139bce07a534df0e699dbb5f5cc9346f95cc1" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.9.2+0" diff --git a/experiments/MinMaxComparison/MinMaxComparison.jl b/experiments/MinMaxComparison/MinMaxComparison.jl new file mode 100644 index 0000000..fa8c6e8 --- /dev/null +++ b/experiments/MinMaxComparison/MinMaxComparison.jl @@ -0,0 +1,17 @@ +module MinMaxComparison + +using Plots, Symbolics, ForwardDiff, LinearAlgebra + +include("algorithm.jl") +include("utils.jl") +include("domain.jl") +include("config.jl") + + +# TODO: @kushy write code here +function foo() + println("hello") +end + + +end # module diff --git a/external/StayOnTheRidge.jl/Project.toml b/experiments/MinMaxComparison/Project.toml similarity index 55% rename from external/StayOnTheRidge.jl/Project.toml rename to experiments/MinMaxComparison/Project.toml index 425eeb3..7cdd724 100644 --- a/external/StayOnTheRidge.jl/Project.toml +++ b/experiments/MinMaxComparison/Project.toml @@ -1,13 +1,8 @@ -name = "StayOnTheRidge" -uuid = "250d2a78-eb8c-4fdb-8c50-61bd39400985" -authors = ["Marika Kosohorska "] -version = "1.0.0-DEV" - [deps] +Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" - -[compat] -julia = "1" \ No newline at end of file diff --git a/experiments/MinMaxComparison/Project.toml~ b/experiments/MinMaxComparison/Project.toml~ new file mode 100644 index 0000000..7ac5162 --- /dev/null +++ b/experiments/MinMaxComparison/Project.toml~ @@ -0,0 +1,9 @@ +[deps] +Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" +StayOnTheRidge = "250d2a78-eb8c-4fdb-8c50-61bd39400985" + +[sources] +StayOnTheRidge = {path = "../../external/"} diff --git a/external/StayOnTheRidge.jl/src/algorithm.jl b/experiments/MinMaxComparison/algorithm.jl similarity index 100% rename from external/StayOnTheRidge.jl/src/algorithm.jl rename to experiments/MinMaxComparison/algorithm.jl diff --git a/external/StayOnTheRidge.jl/src/config.jl b/experiments/MinMaxComparison/config.jl similarity index 100% rename from external/StayOnTheRidge.jl/src/config.jl rename to experiments/MinMaxComparison/config.jl diff --git a/external/StayOnTheRidge.jl/src/domain.jl b/experiments/MinMaxComparison/domain.jl similarity index 100% rename from external/StayOnTheRidge.jl/src/domain.jl rename to experiments/MinMaxComparison/domain.jl diff --git a/external/StayOnTheRidge.jl/src/utils.jl b/experiments/MinMaxComparison/utils.jl similarity index 100% rename from external/StayOnTheRidge.jl/src/utils.jl rename to experiments/MinMaxComparison/utils.jl diff --git a/experiments/ToyExample/Manifest.toml b/experiments/ToyExample/Manifest.toml new file mode 100644 index 0000000..65f1214 --- /dev/null +++ b/experiments/ToyExample/Manifest.toml @@ -0,0 +1,3164 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.11.4" +manifest_format = "2.0" +project_hash = "f5f977180f52cab6a1be186288f39fb57e4155ec" + +[[deps.ADTypes]] +git-tree-sha1 = "7927b9af540ee964cc5d1b73293f1eb0b761a3a1" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "1.16.0" +weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] + + [deps.ADTypes.extensions] + ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" + ADTypesEnzymeCoreExt = "EnzymeCore" + +[[deps.AbstractFFTs]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "1.5.0" +weakdeps = ["ChainRulesCore", "Test"] + + [deps.AbstractFFTs.extensions] + AbstractFFTsChainRulesCoreExt = "ChainRulesCore" + AbstractFFTsTestExt = "Test" + +[[deps.AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "3b86719127f50670efe356bc11073d84b4ed7a5d" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.42" + + [deps.Accessors.extensions] + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "f7817e2e585aa6d924fd714df1e2a84be7896c60" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.3.0" +weakdeps = ["SparseArrays", "StaticArrays"] + + [deps.Adapt.extensions] + AdaptSparseArraysExt = "SparseArrays" + AdaptStaticArraysExt = "StaticArrays" + +[[deps.AliasTables]] +deps = ["PtrArrays", "Random"] +git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" +uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" +version = "1.1.3" + +[[deps.AlmostBlockDiagonals]] +deps = ["ConcreteStructs"] +git-tree-sha1 = "743abe5e5fe8cff96dad4123f263c0d8eee281c0" +uuid = "a95523ee-d6da-40b5-98cc-27bc505739d5" +version = "0.1.10" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.2" + +[[deps.ArnoldiMethod]] +deps = ["LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" +uuid = "ec485272-7323-5ecc-a04f-4719b315124d" +version = "0.4.0" + +[[deps.Arpack]] +deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] +git-tree-sha1 = "9b9b347613394885fd1c8c7729bfc60528faa436" +uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" +version = "0.5.4" + +[[deps.Arpack_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"] +git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e" +uuid = "68821587-b530-5797-8361-c406ea357684" +version = "3.5.1+1" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra"] +git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.19.0" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceSparseArraysExt = "SparseArrays" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.ArrayLayouts]] +deps = ["FillArrays", "LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "120e392af69350960b1d3b89d41dcc1d66543858" +uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" +version = "1.11.2" +weakdeps = ["SparseArrays"] + + [deps.ArrayLayouts.extensions] + ArrayLayoutsSparseArraysExt = "SparseArrays" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" + +[[deps.Atomix]] +deps = ["UnsafeAtomics"] +git-tree-sha1 = "b5bb4dc6248fde467be2a863eb8452993e74d402" +uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" +version = "1.1.1" + + [deps.Atomix.extensions] + AtomixCUDAExt = "CUDA" + AtomixMetalExt = "Metal" + AtomixOpenCLExt = "OpenCL" + AtomixoneAPIExt = "oneAPI" + + [deps.Atomix.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + OpenCL = "08131aa3-fb12-5dee-8b74-c09406e224a2" + oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" + +[[deps.AxisAlgorithms]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] +git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" +uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" +version = "1.1.0" + +[[deps.BFloat16s]] +deps = ["LinearAlgebra", "Printf", "Random"] +git-tree-sha1 = "3b642331600250f592719140c60cf12372b82d66" +uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" +version = "0.5.1" + +[[deps.BandedMatrices]] +deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "PrecompileTools"] +git-tree-sha1 = "e35c672b239c5105f597963c33e740eeb46cf0ab" +uuid = "aae01518-5342-5314-be14-df237901396f" +version = "1.9.4" + + [deps.BandedMatrices.extensions] + BandedMatricesSparseArraysExt = "SparseArrays" + CliqueTreesExt = "CliqueTrees" + + [deps.BandedMatrices.weakdeps] + CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.Bijections]] +git-tree-sha1 = "a2d308fcd4c2fb90e943cf9cd2fbfa9c32b69733" +uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" +version = "0.2.2" + +[[deps.BitFlags]] +git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.9" + +[[deps.BitTwiddlingConvenienceFunctions]] +deps = ["Static"] +git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" +uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" +version = "0.1.6" + +[[deps.BoundaryValueDiffEq]] +deps = ["ADTypes", "BoundaryValueDiffEqAscher", "BoundaryValueDiffEqCore", "BoundaryValueDiffEqFIRK", "BoundaryValueDiffEqMIRK", "BoundaryValueDiffEqMIRKN", "BoundaryValueDiffEqShooting", "DiffEqBase", "FastClosures", "ForwardDiff", "LinearAlgebra", "Reexport", "SciMLBase"] +git-tree-sha1 = "d6ec33e4516b2e790a64128afdb54f3b536667a7" +uuid = "764a87c0-6b3e-53db-9096-fe964310641d" +version = "5.18.0" + + [deps.BoundaryValueDiffEq.extensions] + BoundaryValueDiffEqODEInterfaceExt = "ODEInterface" + + [deps.BoundaryValueDiffEq.weakdeps] + ODEInterface = "54ca160b-1b9f-5127-a996-1867f4bc2a2c" + +[[deps.BoundaryValueDiffEqAscher]] +deps = ["ADTypes", "AlmostBlockDiagonals", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield"] +git-tree-sha1 = "47c833c459738a3f27c5b458ecf7832a4731ef4d" +uuid = "7227322d-7511-4e07-9247-ad6ff830280e" +version = "1.8.0" + +[[deps.BoundaryValueDiffEqCore]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "ConcreteStructs", "DiffEqBase", "ForwardDiff", "LineSearch", "LinearAlgebra", "Logging", "NonlinearSolveFirstOrder", "PreallocationTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays", "SparseConnectivityTracer", "SparseMatrixColorings"] +git-tree-sha1 = "b7b4d8cc80f116eab2eb6124dba58ea7aef31b85" +uuid = "56b672f2-a5fe-4263-ab2d-da677488eb3a" +version = "1.11.1" + +[[deps.BoundaryValueDiffEqFIRK]] +deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] +git-tree-sha1 = "325e6981a414cfa5181218936c23f0e16dee8f08" +uuid = "85d9eb09-370e-4000-bb32-543851f73618" +version = "1.9.0" + +[[deps.BoundaryValueDiffEqMIRK]] +deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] +git-tree-sha1 = "da6ae5e564ad06ced4d7504929c58130558007dd" +uuid = "1a22d4ce-7765-49ea-b6f2-13c8438986a6" +version = "1.9.0" + +[[deps.BoundaryValueDiffEqMIRKN]] +deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] +git-tree-sha1 = "609c2d03ea024df0d475fee483b93cf0e87c29d6" +uuid = "9255f1d6-53bf-473e-b6bd-23f1ff009da4" +version = "1.8.0" + +[[deps.BoundaryValueDiffEqShooting]] +deps = ["ADTypes", "ArrayInterface", "BandedMatrices", "BoundaryValueDiffEqCore", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastAlmostBandedMatrices", "FastClosures", "ForwardDiff", "LinearAlgebra", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "SparseArrays"] +git-tree-sha1 = "ba9bd1f31b58bfd5e48a56da0a426bcbd3462546" +uuid = "ed55bfe0-3725-4db6-871e-a1dc9f42a757" +version = "1.9.0" + +[[deps.BracketingNonlinearSolve]] +deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "a9014924595b7a2c1dd14aac516e38fa10ada656" +uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e" +version = "1.3.0" +weakdeps = ["ChainRulesCore", "ForwardDiff"] + + [deps.BracketingNonlinearSolve.extensions] + BracketingNonlinearSolveChainRulesCoreExt = ["ChainRulesCore", "ForwardDiff"] + BracketingNonlinearSolveForwardDiffExt = "ForwardDiff" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.9+0" + +[[deps.CEnum]] +git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.5.0" + +[[deps.CPUSummary]] +deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] +git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" +uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" +version = "0.2.6" + +[[deps.CUDA]] +deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "GPUToolbox", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics", "demumble_jll"] +git-tree-sha1 = "b8ae59258f3d96ce75a00f9229e719356eb929d6" +uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" +version = "5.8.2" + + [deps.CUDA.extensions] + ChainRulesCoreExt = "ChainRulesCore" + EnzymeCoreExt = "EnzymeCore" + SparseMatricesCSRExt = "SparseMatricesCSR" + SpecialFunctionsExt = "SpecialFunctions" + + [deps.CUDA.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.CUDA_Driver_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "18afa851ed10552e6df25dfaa7ef450104ae73d4" +uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" +version = "0.13.1+0" + +[[deps.CUDA_Runtime_Discovery]] +deps = ["Libdl"] +git-tree-sha1 = "33576c7c1b2500f8e7e6baa082e04563203b3a45" +uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" +version = "0.3.5" + +[[deps.CUDA_Runtime_jll]] +deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] +git-tree-sha1 = "b5c173a64f9f4224a82fdc26fda8614cb2ecfa27" +uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" +version = "0.17.1+0" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "fde3bf89aead2e723284a8ff9cdf5b551ed700e8" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.18.5+0" + +[[deps.ChainRules]] +deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] +git-tree-sha1 = "224f9dc510986549c8139def08e06f78c562514d" +uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" +version = "1.72.5" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "06ee8d1aa558d2833aa799f6f0b31b30cada405f" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.25.2" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.CloseOpenIntervals]] +deps = ["Static", "StaticArrayInterface"] +git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" +uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" +version = "0.1.13" + +[[deps.Clustering]] +deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"] +git-tree-sha1 = "3e22db924e2945282e70c33b75d4dde8bfa44c94" +uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" +version = "0.15.8" + +[[deps.CodeTracking]] +deps = ["InteractiveUtils", "UUIDs"] +git-tree-sha1 = "5ac098a7c8660e217ffac31dc2af0964a8c3182a" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "2.0.0" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.8" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "a656525c8b46aa6a1c76891552ed5381bb32ae7b" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.30.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.12.1" +weakdeps = ["StyledStrings"] + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.11.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "37ea44092930b1811e666c3bc38065d7d87fcc74" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.13.1" + +[[deps.Combinatorics]] +git-tree-sha1 = "8010b6bb3388abe68d95743dcbea77650bb2eddf" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.3" + +[[deps.CommonSolve]] +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.1" + +[[deps.CommonWorldInvalidations]] +git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" +uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" +version = "1.0.0" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "0037835448781bb46feb39866934e243886d756a" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.18.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.Compiler]] +git-tree-sha1 = "382d79bfe72a406294faca39ef0c3cef6e6ce1f1" +uuid = "807dbc54-b67e-4c79-8afb-eafe4df6f2e1" +version = "0.1.1" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.1.1+0" + +[[deps.CompositeTypes]] +git-tree-sha1 = "bce26c3dab336582805503bed209faab1c279768" +uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" +version = "0.1.4" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConcreteStructs]] +git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" +uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" +version = "0.2.3" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "d9d26935a0bcffc87d2613ce14c527c99fc543fd" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.5.0" + +[[deps.ConstructionBase]] +git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.6.0" +weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + +[[deps.Contour]] +git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.3" + +[[deps.CpuId]] +deps = ["Markdown"] +git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" +uuid = "adafc99b-e345-5852-983c-f28acb93d879" +version = "0.3.1" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataFrames]] +deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "1.7.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.22" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" + +[[deps.Dbus_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "473e9afc9cf30814eb67ffa5f2db7df82c3ad9fd" +uuid = "ee1fde0b-3d02-5ea6-8484-8dfef6360eab" +version = "1.16.2+0" + +[[deps.DelayDiffEq]] +deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "FastBroadcast", "ForwardDiff", "LinearAlgebra", "Logging", "OrdinaryDiffEq", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqFunctionMap", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqRosenbrock", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SimpleUnPack", "SymbolicIndexingInterface"] +git-tree-sha1 = "484cceb16c5ed95f4a2a405f3579f480ec0dff9a" +uuid = "bcd4f6db-9728-5f36-b5f7-82caef46ccdb" +version = "5.55.0" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.DiffEqBase]] +deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "9782d43bd23a405f7ab06e2cbb4cec267b37d12f" +uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" +version = "6.181.0" + + [deps.DiffEqBase.extensions] + DiffEqBaseCUDAExt = "CUDA" + DiffEqBaseChainRulesCoreExt = "ChainRulesCore" + DiffEqBaseDistributionsExt = "Distributions" + DiffEqBaseEnzymeExt = ["ChainRulesCore", "Enzyme"] + DiffEqBaseForwardDiffExt = ["ForwardDiff"] + DiffEqBaseGTPSAExt = "GTPSA" + DiffEqBaseGeneralizedGeneratedExt = "GeneralizedGenerated" + DiffEqBaseMPIExt = "MPI" + DiffEqBaseMeasurementsExt = "Measurements" + DiffEqBaseMonteCarloMeasurementsExt = "MonteCarloMeasurements" + DiffEqBaseMooncakeExt = "Mooncake" + DiffEqBaseReverseDiffExt = "ReverseDiff" + DiffEqBaseSparseArraysExt = "SparseArrays" + DiffEqBaseTrackerExt = "Tracker" + DiffEqBaseUnitfulExt = "Unitful" + + [deps.DiffEqBase.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" + GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" + MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.DiffEqCallbacks]] +deps = ["ConcreteStructs", "DataStructures", "DiffEqBase", "DifferentiationInterface", "Functors", "LinearAlgebra", "Markdown", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] +git-tree-sha1 = "80a782f3e65d4900dcf5f2cb71f5e19d9459c04a" +uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" +version = "4.8.0" + +[[deps.DiffEqNoiseProcess]] +deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] +git-tree-sha1 = "516d553f5deee7c55b2945b5edf05b6542837887" +uuid = "77a26b50-5914-5dd7-bc55-306e6241c503" +version = "5.24.1" +weakdeps = ["ReverseDiff"] + + [deps.DiffEqNoiseProcess.extensions] + DiffEqNoiseProcessReverseDiffExt = "ReverseDiff" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.DifferentialEquations]] +deps = ["BoundaryValueDiffEq", "DelayDiffEq", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "JumpProcesses", "LinearAlgebra", "LinearSolve", "NonlinearSolve", "OrdinaryDiffEq", "Random", "RecursiveArrayTools", "Reexport", "SciMLBase", "SteadyStateDiffEq", "StochasticDiffEq", "Sundials"] +git-tree-sha1 = "afdc7dfee475828b4f0286d63ffe66b97d7a3fa7" +uuid = "0c46a032-eb83-5123-abaf-570d42b7fbaa" +version = "7.16.1" + +[[deps.DifferentiationInterface]] +deps = ["ADTypes", "LinearAlgebra"] +git-tree-sha1 = "54d7b8c74408048aea9c055ac8573b2b5c5ec11f" +uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +version = "0.7.4" + + [deps.DifferentiationInterface.extensions] + DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" + DifferentiationInterfaceDiffractorExt = "Diffractor" + DifferentiationInterfaceEnzymeExt = ["EnzymeCore", "Enzyme"] + DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" + DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" + DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" + DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] + DifferentiationInterfaceGPUArraysCoreExt = "GPUArraysCore" + DifferentiationInterfaceGTPSAExt = "GTPSA" + DifferentiationInterfaceMooncakeExt = "Mooncake" + DifferentiationInterfacePolyesterForwardDiffExt = ["PolyesterForwardDiff", "ForwardDiff", "DiffResults"] + DifferentiationInterfaceReverseDiffExt = ["ReverseDiff", "DiffResults"] + DifferentiationInterfaceSparseArraysExt = "SparseArrays" + DifferentiationInterfaceSparseConnectivityTracerExt = "SparseConnectivityTracer" + DifferentiationInterfaceSparseMatrixColoringsExt = "SparseMatrixColorings" + DifferentiationInterfaceStaticArraysExt = "StaticArrays" + DifferentiationInterfaceSymbolicsExt = "Symbolics" + DifferentiationInterfaceTrackerExt = "Tracker" + DifferentiationInterfaceZygoteExt = ["Zygote", "ForwardDiff"] + + [deps.DifferentiationInterface.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" + Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" + FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" + FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" + SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.12" +weakdeps = ["ChainRulesCore", "SparseArrays"] + + [deps.Distances.extensions] + DistancesChainRulesCoreExt = "ChainRulesCore" + DistancesSparseArraysExt = "SparseArrays" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" + +[[deps.Distributions]] +deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "3e6d038b77f22791b8e3472b7c633acea1ecac06" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.120" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.5" + +[[deps.DomainSets]] +deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "c249d86e97a7e8398ce2068dce4c078a1c3464de" +uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" +version = "0.7.16" + + [deps.DomainSets.extensions] + DomainSetsMakieExt = "Makie" + DomainSetsRandomExt = "Random" + + [deps.DomainSets.weakdeps] + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.DynamicPolynomials]] +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Reexport", "Test"] +git-tree-sha1 = "98c4bb95af37e5d980129261fdd6dab0392c6607" +uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" +version = "0.6.2" + +[[deps.EnumX]] +git-tree-sha1 = "bddad79635af6aec424f53ed8aad5d7555dc6f00" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.5" + +[[deps.EnzymeCore]] +git-tree-sha1 = "8272a687bca7b5c601c0c24fc0c71bff10aafdfd" +uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" +version = "0.8.12" +weakdeps = ["Adapt"] + + [deps.EnzymeCore.extensions] + AdaptExt = "Adapt" + +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a4be429317c42cfae6a7fc03c31bad1970c310d" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+1" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.11" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d55dffd9ae73ff72f1c0482454dcf2ec6c6c4a63" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.6.5+0" + +[[deps.ExponentialUtilities]] +deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] +git-tree-sha1 = "cae251c76f353e32d32d76fae2fea655eab652af" +uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" +version = "1.27.0" +weakdeps = ["StaticArrays"] + + [deps.ExponentialUtilities.extensions] + ExponentialUtilitiesStaticArraysExt = "StaticArrays" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + +[[deps.ExproniconLite]] +git-tree-sha1 = "c13f0b150373771b0fdc1713c97860f8df12e6c2" +uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" +version = "0.10.14" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "83dc665d0312b41367b7263e8a4d172eac1897f4" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.4" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "3a948313e7a41eb1db7a1e733e6335f17b4ab3c4" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "7.1.1+0" + +[[deps.FFTW]] +deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] +git-tree-sha1 = "797762812ed063b9b94f6cc7742bc8883bb5e69e" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "1.9.0" + +[[deps.FFTW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6d6219a004b8cf1e0b4dbe27a2860b8e04eba0be" +uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" +version = "3.3.11+0" + +[[deps.FastAlmostBandedMatrices]] +deps = ["ArrayInterface", "ArrayLayouts", "BandedMatrices", "ConcreteStructs", "LazyArrays", "LinearAlgebra", "MatrixFactorizations", "PrecompileTools", "Reexport"] +git-tree-sha1 = "9482a2b4face8ade73792c23a54796c79ed1bcbf" +uuid = "9d29842c-ecb8-4973-b1e9-a27b1157504e" +version = "0.1.5" + +[[deps.FastBroadcast]] +deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] +git-tree-sha1 = "ab1b34570bcdf272899062e1a56285a53ecaae08" +uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898" +version = "0.3.5" + +[[deps.FastClosures]] +git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" +uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" +version = "0.3.2" + +[[deps.FastGaussQuadrature]] +deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] +git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92" +uuid = "442a2c76-b920-505d-bb47-c5924d526838" +version = "1.0.2" + +[[deps.FastPower]] +git-tree-sha1 = "5f7afd4b1a3969dc34d692da2ed856047325b06e" +uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" +version = "1.1.3" + + [deps.FastPower.extensions] + FastPowerEnzymeExt = "Enzyme" + FastPowerForwardDiffExt = "ForwardDiff" + FastPowerMeasurementsExt = "Measurements" + FastPowerMonteCarloMeasurementsExt = "MonteCarloMeasurements" + FastPowerMooncakeExt = "Mooncake" + FastPowerReverseDiffExt = "ReverseDiff" + FastPowerTrackerExt = "Tracker" + + [deps.FastPower.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" + +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.13.0" +weakdeps = ["PDMats", "SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] +git-tree-sha1 = "f089ab1f834470c525562030c8cfde4025d5e915" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.27.0" + + [deps.FiniteDiff.extensions] + FiniteDiffBandedMatricesExt = "BandedMatrices" + FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" + FiniteDiffSparseArraysExt = "SparseArrays" + FiniteDiffStaticArraysExt = "StaticArrays" + + [deps.FiniteDiff.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.5" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] +git-tree-sha1 = "301b5d5d731a0654825f1f2e906990f7141a106b" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.16.0+0" + +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "910febccb28d493032495b7009dce7d7f7aee554" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "1.0.1" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "2c5512e11c791d1baed2049c5652441b28fc6a31" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.13.4+0" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7a214fdac5ed5f59a22c2d9a885a16da1c74bbc7" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.17+0" + +[[deps.FunctionWrappers]] +git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" +uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" +version = "1.1.3" + +[[deps.FunctionWrappersWrappers]] +deps = ["FunctionWrappers"] +git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "0.1.3" + +[[deps.Functors]] +deps = ["Compat", "ConstructionBase", "LinearAlgebra", "Random"] +git-tree-sha1 = "60a0339f28a233601cb74468032b5c302d5067de" +uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" +version = "0.5.2" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" + +[[deps.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "libdecor_jll", "xkbcommon_jll"] +git-tree-sha1 = "fcb0584ff34e25155876418979d4c8971243bb89" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.4.0+2" + +[[deps.GPUArrays]] +deps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "ScopedValues", "Serialization", "Statistics"] +git-tree-sha1 = "be941842a40b6daac98496994ea69054ba4c5144" +uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" +version = "11.2.3" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.2.0" + +[[deps.GPUCompiler]] +deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"] +git-tree-sha1 = "eb1e212e12cc058fa16712082d44be499d23638c" +uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" +version = "1.6.1" + +[[deps.GPUToolbox]] +git-tree-sha1 = "15d8b0f5a6dca9bf8c02eeaf6687660dafa638d0" +uuid = "096a3bc2-3ced-46d0-87f4-dd12716f4bfc" +version = "0.2.0" + +[[deps.GR]] +deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] +git-tree-sha1 = "1828eb7275491981fa5f1752a5e126e8f26f8741" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.73.17" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "27299071cc29e409488ada41ec7643e0ab19091f" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.73.17+0" + +[[deps.GenericSchur]] +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "f88e0ba1f6b42121a7c1dfe93a9687d8e164c91b" +uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" +version = "0.5.5" + +[[deps.GettextRuntime_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll"] +git-tree-sha1 = "45288942190db7c5f760f59c04495064eedf9340" +uuid = "b0724c58-0f36-5564-988d-3bb0596ebc4a" +version = "0.22.4+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "35fbd0cefb04a516104b8e183ce0df11b70a3f1a" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.84.3+0" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.15+0" + +[[deps.Graphs]] +deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "c5abfa0ae0aaee162a3fbb053c13ecda39be545b" +uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" +version = "1.13.0" + +[[deps.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "ed5e9c58612c4e081aecdb6e1a479e18462e041e" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.17" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "f923f9a774fcf3f5cb761bfa43aeadd689714813" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "8.5.1+0" + +[[deps.HashArrayMappedTries]] +git-tree-sha1 = "2eaa69a7cab70a52b9687c8bf950a5a93ec895ae" +uuid = "076d061b-32b6-4027-95e0-9a2c6f6d7e74" +version = "0.2.0" + +[[deps.HypergeometricFunctions]] +deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "68c173f4f449de5b438ee67ed0c9c748dc31a2ec" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.28" + +[[deps.IRTools]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "57e9ce6cf68d0abf5cb6b3b4abf9bedf05c939c0" +uuid = "7869d1d1-7146-5819-86e3-90919afe41df" +version = "0.4.15" + +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + +[[deps.Inflate]] +git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" +uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" +version = "0.1.5" + +[[deps.InlineStrings]] +git-tree-sha1 = "8594fac023c5ce1ef78260f24d1ad18b4327b420" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.4" + + [deps.InlineStrings.extensions] + ArrowTypesExt = "ArrowTypes" + ParsersExt = "Parsers" + + [deps.InlineStrings.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" + +[[deps.IntegerMathUtils]] +git-tree-sha1 = "4c1acff2dc6b6967e7e750633c50bc3b8d83e617" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.3" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "ec1debd61c300961f98064cfb21287613ad7f303" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2025.2.0+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" + +[[deps.Interpolations]] +deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0" +uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" +version = "0.15.1" +weakdeps = ["Unitful"] + + [deps.Interpolations.extensions] + InterpolationsUnitfulExt = "Unitful" + +[[deps.IntervalSets]] +git-tree-sha1 = "5fbb102dcb8b1a858111ae81d56682376130517d" +uuid = "8197267c-284f-5f27-9208-e0e47529a953" +version = "0.7.11" +weakdeps = ["Random", "RecipesBase", "Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" + IntervalSetsStatisticsExt = "Statistics" + +[[deps.InverseFunctions]] +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.17" +weakdeps = ["Dates", "Test"] + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + +[[deps.InvertedIndices]] +git-tree-sha1 = "6da3c4316095de0f5ee2ebd875df8721e7e0bdbe" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.3.1" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.4" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLFzf]] +deps = ["REPL", "Random", "fzf_jll"] +git-tree-sha1 = "82f7acdc599b65e0f8ccd270ffa1467c21cb647b" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.11" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.7.1" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.Jieko]] +deps = ["ExproniconLite"] +git-tree-sha1 = "2f05ed29618da60c06a87e9c033982d4f71d0b6c" +uuid = "ae98c720-c025-4a4a-838c-29b094483192" +version = "0.2.1" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "eac1206917768cb54957c65a615460d87b455fc1" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.1.1+0" + +[[deps.JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "e09121f4c523d8d8d9226acbed9cb66df515fcf2" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.10.4" + +[[deps.JuliaNVTXCallbacks_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "af433a10f3942e882d3c671aacb203e006a5808f" +uuid = "9c1d0b0a-7046-5b2e-a33f-ea22f176ac7e" +version = "0.2.1+0" + +[[deps.JumpProcesses]] +deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] +git-tree-sha1 = "f8da88993c914357031daf0023f18748ff473924" +uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" +version = "9.16.1" +weakdeps = ["FastBroadcast"] + +[[deps.KernelAbstractions]] +deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs"] +git-tree-sha1 = "83c617e9e9b02306a7acab79e05ec10253db7c87" +uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" +version = "0.9.38" +weakdeps = ["EnzymeCore", "LinearAlgebra", "SparseArrays"] + + [deps.KernelAbstractions.extensions] + EnzymeExt = "EnzymeCore" + LinearAlgebraExt = "LinearAlgebra" + SparseArraysExt = "SparseArrays" + +[[deps.KernelDensity]] +deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] +git-tree-sha1 = "ba51324b894edaf1df3ab16e2cc6bc3280a2f1a7" +uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" +version = "0.6.10" + +[[deps.Krylov]] +deps = ["LinearAlgebra", "Printf", "SparseArrays"] +git-tree-sha1 = "b94257a1a8737099ca40bc7271a8b374033473ed" +uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" +version = "0.10.1" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "059aabebaa7c82ccb853dd4a0ee9d17796f7e1bc" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.3+0" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "aaafe88dccbd957a8d82f7d05be9b69172e0cee3" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "4.0.1+0" + +[[deps.LLVM]] +deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] +git-tree-sha1 = "9c7c721cfd800d87d48c745d8bfb65144f0a91df" +uuid = "929cbde3-209d-540e-8aea-75f648917ca0" +version = "9.4.2" +weakdeps = ["BFloat16s"] + + [deps.LLVM.extensions] + BFloat16sExt = "BFloat16s" + +[[deps.LLVMExtra_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] +git-tree-sha1 = "2ea068aac1e7f0337d381b0eae3110581e3f3216" +uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" +version = "0.0.37+2" + +[[deps.LLVMLoopInfo]] +git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" +uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" +version = "1.0.0" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "eb62a3deb62fc6d8822c0c4bef73e4412419c5d8" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "18.1.8+0" + +[[deps.LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1c602b1127f4751facb671441ca72715cc95938a" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.3+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.0" + +[[deps.Latexify]] +deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] +git-tree-sha1 = "4f34eaabe49ecb3fb0d58d6015e32fd31a733199" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.8" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SparseArraysExt = "SparseArrays" + SymEngineExt = "SymEngine" + TectonicExt = "tectonic_jll" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + tectonic_jll = "d7dd28d6-a5e6-559c-9131-7eb760cdacc5" + +[[deps.LayoutPointers]] +deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] +git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" +uuid = "10f19ff3-798f-405d-979b-55457f8fc047" +version = "0.1.17" + +[[deps.LazyArrays]] +deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] +git-tree-sha1 = "76627adb8c542c6b73f68d4bfd0aa71c9893a079" +uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" +version = "2.6.2" + + [deps.LazyArrays.extensions] + LazyArraysBandedMatricesExt = "BandedMatrices" + LazyArraysBlockArraysExt = "BlockArrays" + LazyArraysBlockBandedMatricesExt = "BlockBandedMatrices" + LazyArraysStaticArraysExt = "StaticArrays" + + [deps.LazyArrays.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" + +[[deps.LevyArea]] +deps = ["LinearAlgebra", "Random", "SpecialFunctions"] +git-tree-sha1 = "56513a09b8e0ae6485f34401ea9e2f31357958ec" +uuid = "2d8b4e74-eb68-11e8-0fb9-d5eb67b50637" +version = "1.0.0" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.6.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.7.2+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.LibTracyClient_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d2bc4e1034b2d43076b50f0e34ea094c2cb0a717" +uuid = "ad6e5548-8b26-5c9f-8ef3-ef0ad883f3a5" +version = "0.9.1+6" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c8da7e6a91781c41a863611c7e966098d783c57a" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.4.7+0" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "d36c21b9e7c172a44a10484125024495e2625ac0" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.7.1+1" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.18.0+0" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a31572773ac1b745e0343fe5e2c8ddda7a37e997" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.41.0+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "4ab7581296671007fc33f07a721631b8855f4b1d" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.7.1+0" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "321ccef73a96ba828cd51f2ab5b9f917fa73945a" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.41.0+0" + +[[deps.LineSearch]] +deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] +git-tree-sha1 = "97d502765cc5cf3a722120f50da03c2474efce04" +uuid = "87fe0de2-c867-4266-b59a-2f0a94fc965b" +version = "0.1.4" +weakdeps = ["LineSearches"] + + [deps.LineSearch.extensions] + LineSearchLineSearchesExt = "LineSearches" + +[[deps.LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] +git-tree-sha1 = "4adee99b7262ad2a1a4bbbc59d993d24e55ea96f" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.4.0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" + +[[deps.LinearSolve]] +deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"] +git-tree-sha1 = "d768ff40cc3fe42581708696b24ee65dccc9c6ba" +uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" +version = "3.24.0" + + [deps.LinearSolve.extensions] + LinearSolveBandedMatricesExt = "BandedMatrices" + LinearSolveBlockDiagonalsExt = "BlockDiagonals" + LinearSolveCUDAExt = "CUDA" + LinearSolveCUDSSExt = "CUDSS" + LinearSolveEnzymeExt = "EnzymeCore" + LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" + LinearSolveFastLapackInterfaceExt = "FastLapackInterface" + LinearSolveForwardDiffExt = "ForwardDiff" + LinearSolveHYPREExt = "HYPRE" + LinearSolveIterativeSolversExt = "IterativeSolvers" + LinearSolveKernelAbstractionsExt = "KernelAbstractions" + LinearSolveKrylovKitExt = "KrylovKit" + LinearSolveMetalExt = "Metal" + LinearSolvePardisoExt = ["Pardiso", "SparseArrays"] + LinearSolveRecursiveFactorizationExt = "RecursiveFactorization" + LinearSolveSparseArraysExt = "SparseArrays" + LinearSolveSparspakExt = ["SparseArrays", "Sparspak"] + + [deps.LinearSolve.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" + FastLapackInterface = "29a986be-02c6-4525-aec4-84b980013641" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" + IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" + RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Sparspak = "e56a9233-b9d6-4f03-8d0f-1825330902ac" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.29" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.1.0" + +[[deps.LoweredCodeUtils]] +deps = ["CodeTracking", "Compiler", "JuliaInterpreter"] +git-tree-sha1 = "73b98709ad811a6f81d84e105f4f695c229385ba" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "3.4.3" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "282cadc186e7b2ae0eeadbd7a4dffed4196ae2aa" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2025.2.0+0" + +[[deps.MacroTools]] +git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.16" + +[[deps.ManualMemory]] +git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" +uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" +version = "0.1.8" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" + +[[deps.MatrixFactorizations]] +deps = ["ArrayLayouts", "LinearAlgebra", "Printf", "Random"] +git-tree-sha1 = "16a726dba99685d9e94c8d0a8f655383121fc608" +uuid = "a3b82374-2e81-5b9e-98ce-41277c0e4c87" +version = "3.0.1" +weakdeps = ["BandedMatrices"] + + [deps.MatrixFactorizations.extensions] + MatrixFactorizationsBandedMatricesExt = "BandedMatrices" + +[[deps.MaybeInplace]] +deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "54e2fdc38130c05b42be423e90da3bade29b74bd" +uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb" +version = "0.1.4" +weakdeps = ["SparseArrays"] + + [deps.MaybeInplace.extensions] + MaybeInplaceSparseArraysExt = "SparseArrays" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.6+0" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.2.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" + +[[deps.Moshi]] +deps = ["ExproniconLite", "Jieko"] +git-tree-sha1 = "53f817d3e84537d84545e0ad749e483412dd6b2a" +uuid = "2e0e35c7-a2e4-4343-998d-7ef72827ed2d" +version = "0.3.7" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.12.12" + +[[deps.MuladdMacro]] +git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" +uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" +version = "0.2.4" + +[[deps.MultivariatePolynomials]] +deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] +git-tree-sha1 = "fade91fe9bee7b142d332fc6ab3f0deea29f637b" +uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" +version = "0.5.9" + +[[deps.MultivariateStats]] +deps = ["Arpack", "Distributions", "LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI", "StatsBase"] +git-tree-sha1 = "816620e3aac93e5b5359e4fdaf23ca4525b00ddf" +uuid = "6f286f6a-111f-5878-ab1e-185364afe411" +version = "0.10.3" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "491bdcdc943fcbc4c005900d7463c9f216aabf4c" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.6.4" + +[[deps.NLSolversBase]] +deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"] +git-tree-sha1 = "25a6638571a902ecfb1ae2a18fc1575f86b1d4df" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "7.10.0" + +[[deps.NLsolve]] +deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] +git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" +uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" +version = "4.5.1" + +[[deps.NVTX]] +deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] +git-tree-sha1 = "6b573a3e66decc7fc747afd1edbf083ff78c813a" +uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" +version = "1.0.1" + +[[deps.NVTX_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "cd475b587ff77910789a18e68da789fc446a2a05" +uuid = "e98f9f5b-d649-5603-91fd-7774390e6439" +version = "3.2.1+0" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.1.3" + +[[deps.NearestNeighbors]] +deps = ["Distances", "StaticArrays"] +git-tree-sha1 = "ca7e18198a166a1f3eb92a3650d53d94ed8ca8a1" +uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" +version = "0.4.22" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.NonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] +git-tree-sha1 = "d2ec18c1e4eccbb70b64be2435fc3b06fbcdc0a1" +uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" +version = "4.10.0" + + [deps.NonlinearSolve.extensions] + NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" + NonlinearSolveFixedPointAccelerationExt = "FixedPointAcceleration" + NonlinearSolveLeastSquaresOptimExt = "LeastSquaresOptim" + NonlinearSolveMINPACKExt = "MINPACK" + NonlinearSolveNLSolversExt = "NLSolvers" + NonlinearSolveNLsolveExt = ["NLsolve", "LineSearches"] + NonlinearSolvePETScExt = ["PETSc", "MPI"] + NonlinearSolveSIAMFANLEquationsExt = "SIAMFANLEquations" + NonlinearSolveSpeedMappingExt = "SpeedMapping" + NonlinearSolveSundialsExt = "Sundials" + + [deps.NonlinearSolve.weakdeps] + FastLevenbergMarquardt = "7a0df574-e128-4d35-8cbd-3d84502bf7ce" + FixedPointAcceleration = "817d07cb-a79a-5c30-9a31-890123675176" + LeastSquaresOptim = "0fc2ff8b-aaa3-5acd-a817-1944a5e08891" + LineSearches = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" + MINPACK = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" + MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" + NLSolvers = "337daf1e-9722-11e9-073e-8b9effe078ba" + NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" + PETSc = "ace2c81b-2b5f-4b1e-a30d-d662738edfe0" + SIAMFANLEquations = "084e46ad-d928-497d-ad5e-07fa361a48c4" + SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" + Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" + +[[deps.NonlinearSolveBase]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] +git-tree-sha1 = "ee395563ae6ffaecbdf86d430440fddc779253a4" +uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" +version = "1.13.0" +weakdeps = ["BandedMatrices", "DiffEqBase", "ForwardDiff", "LineSearch", "LinearSolve", "SparseArrays", "SparseMatrixColorings"] + + [deps.NonlinearSolveBase.extensions] + NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" + NonlinearSolveBaseDiffEqBaseExt = "DiffEqBase" + NonlinearSolveBaseForwardDiffExt = "ForwardDiff" + NonlinearSolveBaseLineSearchExt = "LineSearch" + NonlinearSolveBaseLinearSolveExt = "LinearSolve" + NonlinearSolveBaseSparseArraysExt = "SparseArrays" + NonlinearSolveBaseSparseMatrixColoringsExt = "SparseMatrixColorings" + +[[deps.NonlinearSolveFirstOrder]] +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "65101a20b135616a13625ae6f84b052ef5780363" +uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" +version = "1.6.0" + +[[deps.NonlinearSolveQuasiNewton]] +deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] +git-tree-sha1 = "3e04c917d4e3cd48b2a5091b6f76c720bb3f7362" +uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" +version = "1.7.0" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveQuasiNewton.extensions] + NonlinearSolveQuasiNewtonForwardDiffExt = "ForwardDiff" + +[[deps.NonlinearSolveSpectralMethods]] +deps = ["CommonSolve", "ConcreteStructs", "DiffEqBase", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "3398222199e4b9ca0b5840907fb509f28f1a2fdc" +uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" +version = "1.2.0" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveSpectralMethods.extensions] + NonlinearSolveSpectralMethodsForwardDiffExt = "ForwardDiff" + +[[deps.Observables]] +git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" +uuid = "510215fc-4207-5dde-b226-833fc4488ee2" +version = "0.5.5" + +[[deps.OffsetArrays]] +git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.17.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b6aa4566bb7ae78498a5e68943863fa8b5231b59" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.6+0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.27+1" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+4" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "f1a7e086c677df53e064e0fdd2c9d0b0833e3f6e" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.5.0" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "87510f7292a2b21aeff97912b0898f9553cc5c2c" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.1+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.6+0" + +[[deps.Optim]] +deps = ["Compat", "EnumX", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] +git-tree-sha1 = "61942645c38dd2b5b78e2082c9b51ab315315d10" +uuid = "429524aa-4258-5aef-a3af-852621145aeb" +version = "1.13.2" + + [deps.Optim.extensions] + OptimMOIExt = "MathOptInterface" + + [deps.Optim.weakdeps] + MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" + +[[deps.Optimisers]] +deps = ["ChainRulesCore", "ConstructionBase", "Functors", "LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "131dc319e7c58317e8c6d5170440f6bdaee0a959" +uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" +version = "0.4.6" + + [deps.Optimisers.extensions] + OptimisersAdaptExt = ["Adapt"] + OptimisersEnzymeCoreExt = "EnzymeCore" + OptimisersReactantExt = "Reactant" + + [deps.Optimisers.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c392fc5dd032381919e3b22dd32d6443760ce7ea" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.5.2+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.8.1" + +[[deps.OrdinaryDiffEq]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FillArrays", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "MacroTools", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqAdamsBashforthMoulton", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqExplicitRK", "OrdinaryDiffEqExponentialRK", "OrdinaryDiffEqExtrapolation", "OrdinaryDiffEqFIRK", "OrdinaryDiffEqFeagin", "OrdinaryDiffEqFunctionMap", "OrdinaryDiffEqHighOrderRK", "OrdinaryDiffEqIMEXMultistep", "OrdinaryDiffEqLinear", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqLowStorageRK", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqNordsieck", "OrdinaryDiffEqPDIRK", "OrdinaryDiffEqPRK", "OrdinaryDiffEqQPRK", "OrdinaryDiffEqRKN", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqSSPRK", "OrdinaryDiffEqStabilizedIRK", "OrdinaryDiffEqStabilizedRK", "OrdinaryDiffEqSymplecticRK", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "55c21fdb4626037cdbcb04fec3afa192345a24de" +uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +version = "6.101.0" + +[[deps.OrdinaryDiffEqAdamsBashforthMoulton]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqLowOrderRK", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "82f78099ecf4e0fa53545811318520d87e7fe0b8" +uuid = "89bda076-bce5-4f1c-845f-551c83cdda9a" +version = "1.2.0" + +[[deps.OrdinaryDiffEqBDF]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqSDIRK", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "b0bbc6541ea4a27974bd67e0a10b26211cb95e58" +uuid = "6ad6398a-0878-4a85-9266-38940aa047c8" +version = "1.7.0" + +[[deps.OrdinaryDiffEqCore]] +deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "FastBroadcast", "FastClosures", "FastPower", "FillArrays", "FunctionWrappersWrappers", "InteractiveUtils", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleUnPack", "Static", "StaticArrayInterface", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "1bd20b621e8dee5f2d170ae31631bf573ab77eec" +uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" +version = "1.26.2" + + [deps.OrdinaryDiffEqCore.extensions] + OrdinaryDiffEqCoreEnzymeCoreExt = "EnzymeCore" + OrdinaryDiffEqCoreMooncakeExt = "Mooncake" + + [deps.OrdinaryDiffEqCore.weakdeps] + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + +[[deps.OrdinaryDiffEqDefault]] +deps = ["ADTypes", "DiffEqBase", "EnumX", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "PrecompileTools", "Preferences", "Reexport"] +git-tree-sha1 = "7e2f4ec76ebac709401064fd2cf73ad993d1e694" +uuid = "50262376-6c5a-4cf5-baba-aaf4f84d72d7" +version = "1.5.0" + +[[deps.OrdinaryDiffEqDifferentiation]] +deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseMatrixColorings", "StaticArrayInterface", "StaticArrays"] +git-tree-sha1 = "382a4bf7795eee0298221c37099db770be524bab" +uuid = "4302a76b-040a-498a-8c04-15b101fed76b" +version = "1.10.1" + +[[deps.OrdinaryDiffEqExplicitRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "TruncatedStacktraces"] +git-tree-sha1 = "4dbce3f9e6974567082ce5176e21aab0224a69e9" +uuid = "9286f039-9fbf-40e8-bf65-aa933bdc4db0" +version = "1.1.0" + +[[deps.OrdinaryDiffEqExponentialRK]] +deps = ["ADTypes", "DiffEqBase", "ExponentialUtilities", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "585f73f10a1b444654d739853a9328d1bb7fce6b" +uuid = "e0540318-69ee-4070-8777-9e2de6de23de" +version = "1.5.0" + +[[deps.OrdinaryDiffEqExtrapolation]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastPower", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "80a636aac325c546b04e3bf20f0c80eaa0173dd4" +uuid = "becaefa8-8ca2-5cf9-886d-c06f3d2bd2c4" +version = "1.5.0" + +[[deps.OrdinaryDiffEqFIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastGaussQuadrature", "FastPower", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "d7cbd84ba96a91e765fc20d2c3b3b1702c15eeed" +uuid = "5960d6e9-dd7a-4743-88e7-cf307b64f125" +version = "1.13.0" + +[[deps.OrdinaryDiffEqFeagin]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "a7cc74d3433db98e59dc3d58bc28174c6c290adf" +uuid = "101fe9f7-ebb6-4678-b671-3a81e7194747" +version = "1.1.0" + +[[deps.OrdinaryDiffEqFunctionMap]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "a4cb67794464352b69331c903cfa91a40e9a79ac" +uuid = "d3585ca7-f5d3-4ba6-8057-292ed1abd90f" +version = "1.2.0" + +[[deps.OrdinaryDiffEqHighOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "3466ac9ba5121c700a17e1d5ba42757405d636d4" +uuid = "d28bc4f8-55e1-4f49-af69-84c1a99f0f58" +version = "1.2.0" + +[[deps.OrdinaryDiffEqIMEXMultistep]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Reexport"] +git-tree-sha1 = "f2e7decd8b8b92a13e9d48f87780fdfecbc85708" +uuid = "9f002381-b378-40b7-97a6-27a27c83f129" +version = "1.4.0" + +[[deps.OrdinaryDiffEqLinear]] +deps = ["DiffEqBase", "ExponentialUtilities", "LinearAlgebra", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "940cef72ec8799d869ff1ba3dcf47cf7758e51cf" +uuid = "521117fe-8c41-49f8-b3b6-30780b3f0fb5" +version = "1.3.0" + +[[deps.OrdinaryDiffEqLowOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "2b7a3ef765c5e3e9d8eee6031da143a0b1c0805c" +uuid = "1344f307-1e59-4825-a18e-ace9aa3fa4c6" +version = "1.3.0" + +[[deps.OrdinaryDiffEqLowStorageRK]] +deps = ["Adapt", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "StaticArrays"] +git-tree-sha1 = "52ec7081e65291fa5c19749312df0818db2fa1bc" +uuid = "b0944070-b475-4768-8dec-fb6eb410534d" +version = "1.3.0" + +[[deps.OrdinaryDiffEqNonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "PreallocationTools", "RecursiveArrayTools", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "StaticArrays"] +git-tree-sha1 = "e98aa2f8da8386bc26daeb7c9b161bc351ea6a77" +uuid = "127b3ac7-2247-4354-8eb6-78cf4e7c58e8" +version = "1.11.0" + +[[deps.OrdinaryDiffEqNordsieck]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "ef44754f10e0dfb9bb55ded382afed44cd94ab57" +uuid = "c9986a66-5c92-4813-8696-a7ec84c806c8" +version = "1.1.0" + +[[deps.OrdinaryDiffEqPDIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "Reexport", "StaticArrays"] +git-tree-sha1 = "ab9897e4bc8e3cf8e15f1cf61dbdd15d6a2341d7" +uuid = "5dd0a6cf-3d4b-4314-aa06-06d4e299bc89" +version = "1.3.1" + +[[deps.OrdinaryDiffEqPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "Reexport"] +git-tree-sha1 = "da525d277962a1b76102c79f30cb0c31e13fe5b9" +uuid = "5b33eab2-c0f1-4480-b2c3-94bc1e80bda1" +version = "1.1.0" + +[[deps.OrdinaryDiffEqQPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "332f9d17d0229218f66a73492162267359ba85e9" +uuid = "04162be5-8125-4266-98ed-640baecc6514" +version = "1.1.0" + +[[deps.OrdinaryDiffEqRKN]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "6548bff67665b13a60abfb33e95fcf7ae08d186d" +uuid = "af6ede74-add8-4cfd-b1df-9a4dbb109d7a" +version = "1.2.0" + +[[deps.OrdinaryDiffEqRosenbrock]] +deps = ["ADTypes", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "a2f83c9b6e977c8dc5f37e0b448ad64f17c3a9c1" +uuid = "43230ef6-c299-4910-a778-202eb28ce4ce" +version = "1.12.0" + +[[deps.OrdinaryDiffEqSDIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] +git-tree-sha1 = "62327171ae40737b7874d4bdf70e0a213d60086a" +uuid = "2d112036-d095-4a1e-ab9a-08536f3ecdbf" +version = "1.4.0" + +[[deps.OrdinaryDiffEqSSPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "StaticArrays"] +git-tree-sha1 = "651756c030df7a1d49ad484288937f8c398e8a08" +uuid = "669c94d9-1f4b-4b64-b377-1aa079aa2388" +version = "1.3.0" + +[[deps.OrdinaryDiffEqStabilizedIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "StaticArrays"] +git-tree-sha1 = "111c23b68ad644b47e38242af920d5805c7bedb1" +uuid = "e3e12d00-db14-5390-b879-ac3dd2ef6296" +version = "1.3.0" + +[[deps.OrdinaryDiffEqStabilizedRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "StaticArrays"] +git-tree-sha1 = "8b54bcaf8634548bd13c0bd9a0522f15e5438b67" +uuid = "358294b1-0aab-51c3-aafe-ad5ab194a2ad" +version = "1.2.0" + +[[deps.OrdinaryDiffEqSymplecticRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "0d3e0527149d7ece68850c51de67e99bc4477b1b" +uuid = "fa646aed-7ef9-47eb-84c4-9443fc8cbfa8" +version = "1.4.0" + +[[deps.OrdinaryDiffEqTsit5]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "d0b069075f4a5e54b29e412419e5a733a83e6240" +uuid = "b1df2697-797e-41e3-8120-5422d3b24e4a" +version = "1.2.0" + +[[deps.OrdinaryDiffEqVerner]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "91f0a004785791c8c538d34a67c19cf3f7776e85" +uuid = "79d7bb75-1356-48c1-b8c0-6832512096c2" +version = "1.3.0" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+1" + +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "f07c06228a1c670ae4c87d1276b92c7c597fdda0" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.35" + +[[deps.Pango_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "275a9a6d85dc86c24d03d1837a0010226a96f540" +uuid = "36c8627f-9965-5494-a995-c6b170f724f3" +version = "1.56.3+0" + +[[deps.Parameters]] +deps = ["OrderedCollections", "UnPack"] +git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "7d2f8f21da5db6a806faf7b9b292296da42b2810" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.3" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "db76b1ecd5e9715f3d043cec13b2ec93ce015d53" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.44.2+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.11.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "41031ef3a1be6f5bbbf3e8073f210556daeae5ca" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.3.0" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"] +git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.4.3" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "3db9167c618b290a05d4345ca70de6d95304a32a" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.40.17" + + [deps.Plots.extensions] + FileIOExt = "FileIO" + GeometryBasicsExt = "GeometryBasics" + IJuliaExt = "IJulia" + ImageInTerminalExt = "ImageInTerminal" + UnitfulExt = "Unitful" + + [deps.Plots.weakdeps] + FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.PoissonRandom]] +deps = ["LogExpFunctions", "Random"] +git-tree-sha1 = "bb178012780b34046c6d1600a315d8dbee89d83d" +uuid = "e409e4f3-bfea-5376-8464-e040bb5c01ab" +version = "0.4.5" + +[[deps.Polyester]] +deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] +git-tree-sha1 = "6f7cd22a802094d239824c57d94c8e2d0f7cfc7d" +uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" +version = "0.7.18" + +[[deps.PolyesterWeave]] +deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] +git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" +uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" +version = "0.2.2" + +[[deps.PooledArrays]] +deps = ["DataAPI", "Future"] +git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.4.3" + +[[deps.PositiveFactorizations]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" +uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" +version = "0.2.4" + +[[deps.PreallocationTools]] +deps = ["Adapt", "ArrayInterface", "ForwardDiff"] +git-tree-sha1 = "2cc315bb7f6e4d59081bad744cdb911d6374fc7f" +uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" +version = "0.4.29" +weakdeps = ["ReverseDiff", "SparseConnectivityTracer"] + + [deps.PreallocationTools.extensions] + PreallocationToolsReverseDiffExt = "ReverseDiff" + PreallocationToolsSparseConnectivityTracerExt = "SparseConnectivityTracer" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.1" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.3" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.4.0" + +[[deps.Primes]] +deps = ["IntegerMathUtils"] +git-tree-sha1 = "25cdd1d20cd005b52fc12cb6be3f75faaf59bb9b" +uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" +version = "0.5.7" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" + +[[deps.PtrArrays]] +git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.3.0" + +[[deps.Qt6Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "eb38d376097f47316fe089fc62cb7c6d85383a52" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.8.2+1" + +[[deps.Qt6Declarative_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll"] +git-tree-sha1 = "da7adf145cce0d44e892626e647f9dcbe9cb3e10" +uuid = "629bc702-f1f5-5709-abd5-49b8460ea067" +version = "6.8.2+1" + +[[deps.Qt6ShaderTools_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] +git-tree-sha1 = "9eca9fc3fe515d619ce004c83c31ffd3f85c7ccf" +uuid = "ce943373-25bb-56aa-8eca-768745ed7b5a" +version = "6.8.2+1" + +[[deps.Qt6Wayland_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] +git-tree-sha1 = "e1d5e16d0f65762396f9ca4644a5f4ddab8d452b" +uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" +version = "6.8.2+1" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "9da16da70037ba9d701192e27befedefb91ec284" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.11.2" + + [deps.QuadGK.extensions] + QuadGKEnzymeExt = "Enzyme" + + [deps.QuadGK.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" + +[[deps.Random123]] +deps = ["Random", "RandomNumbers"] +git-tree-sha1 = "dbe5fd0b334694e905cb9fda73cd8554333c46e2" +uuid = "74087812-796a-5b5d-8853-05524746bad3" +version = "1.7.1" + +[[deps.RandomNumbers]] +deps = ["Random"] +git-tree-sha1 = "c6ec94d2aaba1ab2ff983052cf6a606ca5985902" +uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" +version = "1.6.0" + +[[deps.Ratios]] +deps = ["Requires"] +git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" +uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" +version = "0.4.5" +weakdeps = ["FixedPointNumbers"] + + [deps.Ratios.extensions] + RatiosFixedPointNumbersExt = "FixedPointNumbers" + +[[deps.RealDot]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" +uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" +version = "0.1.0" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] +git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.12" + +[[deps.RecursiveArrayTools]] +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "f8726bd5a8b7f5f5d3f6c0ce4793454a599b5243" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "3.36.0" + + [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" + RecursiveArrayToolsForwardDiffExt = "ForwardDiff" + RecursiveArrayToolsKernelAbstractionsExt = "KernelAbstractions" + RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" + RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] + RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] + RecursiveArrayToolsStructArraysExt = "StructArrays" + RecursiveArrayToolsTrackerExt = "Tracker" + RecursiveArrayToolsZygoteExt = "Zygote" + + [deps.RecursiveArrayTools.weakdeps] + FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.1" + +[[deps.ResettableStacks]] +deps = ["StaticArrays"] +git-tree-sha1 = "256eeeec186fa7f26f2801732774ccf277f05db9" +uuid = "ae5879a3-cd67-5da8-be7f-38c6eb64a37b" +version = "1.1.1" + +[[deps.ReverseDiff]] +deps = ["ChainRulesCore", "DiffResults", "DiffRules", "ForwardDiff", "FunctionWrappers", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "Random", "SpecialFunctions", "StaticArrays", "Statistics"] +git-tree-sha1 = "3ab8eee3620451b09f0272c271875b4bc02146d9" +uuid = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +version = "1.16.1" + +[[deps.Revise]] +deps = ["CodeTracking", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "REPL", "Requires", "UUIDs", "Unicode"] +git-tree-sha1 = "20ccb7e2501e9da93fe8450d01aeabf16a5f0c82" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.8.1" +weakdeps = ["Distributed"] + + [deps.Revise.extensions] + DistributedExt = "Distributed" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.8.0" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.5.1+0" + +[[deps.RuntimeGeneratedFunctions]] +deps = ["ExprTools", "SHA", "Serialization"] +git-tree-sha1 = "86a8a8b783481e1ea6b9c91dd949cb32191f8ab4" +uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" +version = "0.5.15" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.SIMDTypes]] +git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" +uuid = "94e857df-77ce-4151-89e5-788b33177be4" +version = "0.1.0" + +[[deps.SciMLBase]] +deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] +git-tree-sha1 = "1c7fd50df465f0684f04f3a63736eac01999c659" +uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +version = "2.107.0" + + [deps.SciMLBase.extensions] + SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBaseMLStyleExt = "MLStyle" + SciMLBaseMakieExt = "Makie" + SciMLBasePartialFunctionsExt = "PartialFunctions" + SciMLBasePyCallExt = "PyCall" + SciMLBasePythonCallExt = "PythonCall" + SciMLBaseRCallExt = "RCall" + SciMLBaseZygoteExt = ["Zygote", "ChainRulesCore"] + + [deps.SciMLBase.weakdeps] + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + MLStyle = "d8e11817-5142-5d16-987a-aa16d5891078" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" + PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLJacobianOperators]] +deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DifferentiationInterface", "FastClosures", "LinearAlgebra", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "3414071e3458f3065de7fa5aed55283b236b4907" +uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" +version = "0.1.8" + +[[deps.SciMLOperators]] +deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "7d3a1519dc4d433a6b20035eaff20bde8be77c66" +uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" +version = "1.4.0" +weakdeps = ["SparseArrays", "StaticArraysCore"] + + [deps.SciMLOperators.extensions] + SciMLOperatorsSparseArraysExt = "SparseArrays" + SciMLOperatorsStaticArraysCoreExt = "StaticArraysCore" + +[[deps.SciMLStructures]] +deps = ["ArrayInterface"] +git-tree-sha1 = "566c4ed301ccb2a44cbd5a27da5f885e0ed1d5df" +uuid = "53ae85a6-f571-4167-b2af-e1d143709226" +version = "1.7.0" + +[[deps.ScopedValues]] +deps = ["HashArrayMappedTries", "Logging"] +git-tree-sha1 = "7f44eef6b1d284465fafc66baf4d9bdcc239a15b" +uuid = "7e506255-f358-4e82-b7e4-beb19740aa63" +version = "1.4.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.3.0" + +[[deps.SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "712fb0231ee6f9120e005ccd56297abbc053e7e0" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.4.8" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "c5391c6ace3bc430ca630251d02ea9687169ca68" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.2" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.2.0" + +[[deps.SimpleNonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "09d986e27a606f172c5b6cffbd8b8b2f10bf1c75" +uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" +version = "2.7.0" + + [deps.SimpleNonlinearSolve.extensions] + SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" + SimpleNonlinearSolveDiffEqBaseExt = "DiffEqBase" + SimpleNonlinearSolveReverseDiffExt = "ReverseDiff" + SimpleNonlinearSolveTrackerExt = "Tracker" + + [deps.SimpleNonlinearSolve.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.4" + +[[deps.SimpleUnPack]] +git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" +uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.1" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.11.0" + +[[deps.SparseConnectivityTracer]] +deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "7bd2b8981cc57adcf5cf1add282aba2713a7058f" +uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +version = "1.0.0" + + [deps.SparseConnectivityTracer.extensions] + SparseConnectivityTracerLogExpFunctionsExt = "LogExpFunctions" + SparseConnectivityTracerNNlibExt = "NNlib" + SparseConnectivityTracerNaNMathExt = "NaNMath" + SparseConnectivityTracerSpecialFunctionsExt = "SpecialFunctions" + + [deps.SparseConnectivityTracer.weakdeps] + LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688" + NNlib = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" + NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.SparseInverseSubset]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "52962839426b75b3021296f7df242e40ecfc0852" +uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" +version = "0.1.2" + +[[deps.SparseMatrixColorings]] +deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "PrecompileTools", "Random", "SparseArrays"] +git-tree-sha1 = "9de43e0b9b976f1019bf7a879a686c4514520078" +uuid = "0a514795-09f3-496d-8182-132a7b665d35" +version = "0.4.21" + + [deps.SparseMatrixColorings.extensions] + SparseMatrixColoringsCUDAExt = "CUDA" + SparseMatrixColoringsCliqueTreesExt = "CliqueTrees" + SparseMatrixColoringsColorsExt = "Colors" + + [deps.SparseMatrixColorings.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" + Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.5.1" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.StableRNGs]] +deps = ["Random"] +git-tree-sha1 = "95af145932c2ed859b63329952ce8d633719f091" +uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" +version = "1.0.3" + +[[deps.Static]] +deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] +git-tree-sha1 = "f737d444cb0ad07e61b3c1bef8eb91203c321eff" +uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" +version = "1.2.0" + +[[deps.StaticArrayInterface]] +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] +git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" +uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" +version = "1.8.0" +weakdeps = ["OffsetArrays", "StaticArrays"] + + [deps.StaticArrayInterface.extensions] + StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" + StaticArrayInterfaceStaticArraysExt = "StaticArrays" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "cbea8a6bd7bed51b1619658dec70035e07b8502f" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.14" +weakdeps = ["ChainRulesCore", "Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.3" + +[[deps.Statistics]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ff" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.1" + +[[deps.StatsBase]] +deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "b81c5035922cc89c2d9523afc6c54be512411466" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.5" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "8e45cecc66f3b42633b8ce14d431e8e57a3e242e" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.5.0" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.StatsPlots]] +deps = ["AbstractFFTs", "Clustering", "DataStructures", "Distributions", "Interpolations", "KernelDensity", "LinearAlgebra", "MultivariateStats", "NaNMath", "Observables", "Plots", "RecipesBase", "RecipesPipeline", "Reexport", "StatsBase", "TableOperations", "Tables", "Widgets"] +git-tree-sha1 = "3b1dcbf62e469a67f6733ae493401e53d92ff543" +uuid = "f3b207a7-027a-5e70-b257-86293d7955fd" +version = "0.15.7" + +[[deps.SteadyStateDiffEq]] +deps = ["ConcreteStructs", "DiffEqBase", "DiffEqCallbacks", "LinearAlgebra", "NonlinearSolveBase", "Reexport", "SciMLBase"] +git-tree-sha1 = "66a028f9a2bb44d0f6de0814a2b9840af548143a" +uuid = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f" +version = "2.5.0" + +[[deps.StochasticDiffEq]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqNoiseProcess", "DocStringExtensions", "FastPower", "FiniteDiff", "ForwardDiff", "JumpProcesses", "LevyArea", "LinearAlgebra", "Logging", "MuladdMacro", "NLsolve", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SparseArrays", "StaticArrays", "UnPack"] +git-tree-sha1 = "c3a55a2a1e180e249a0550d30a58c700487aa7ef" +uuid = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" +version = "6.81.0" + +[[deps.StrideArraysCore]] +deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] +git-tree-sha1 = "f35f6ab602df8413a50c4a25ca14de821e8605fb" +uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" +version = "0.5.7" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "725421ae8e530ec29bcbdddbe91ff8053421d023" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.4.1" + +[[deps.StructArrays]] +deps = ["ConstructionBase", "DataAPI", "Tables"] +git-tree-sha1 = "8ad2e38cbb812e29348719cc63580ec1dfeb9de4" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.7.1" +weakdeps = ["Adapt", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "SparseArrays", "StaticArrays"] + + [deps.StructArrays.extensions] + StructArraysAdaptExt = "Adapt" + StructArraysGPUArraysCoreExt = ["GPUArraysCore", "KernelAbstractions"] + StructArraysLinearAlgebraExt = "LinearAlgebra" + StructArraysSparseArraysExt = "SparseArrays" + StructArraysStaticArraysExt = "StaticArrays" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.7.0+0" + +[[deps.Sundials]] +deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] +git-tree-sha1 = "7c7a7ee705724b3c80d5451ac49779db36c6f758" +uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" +version = "4.28.0" + +[[deps.Sundials_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "SuiteSparse_jll", "libblastrampoline_jll"] +git-tree-sha1 = "91db7ed92c66f81435fe880947171f1212936b14" +uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" +version = "5.2.3+0" + +[[deps.SymbolicIndexingInterface]] +deps = ["Accessors", "ArrayInterface", "PrettyTables", "RuntimeGeneratedFunctions", "StaticArraysCore"] +git-tree-sha1 = "59ca6eddaaa9849e7de9fd1153b6faf0b1db7b80" +uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +version = "0.3.42" + +[[deps.SymbolicLimits]] +deps = ["SymbolicUtils"] +git-tree-sha1 = "fabf4650afe966a2ba646cabd924c3fd43577fc3" +uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" +version = "0.2.2" + +[[deps.SymbolicUtils]] +deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "ExproniconLite", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TaskLocalValues", "TermInterface", "TimerOutputs", "Unityper", "WeakValueDicts"] +git-tree-sha1 = "fa63e8f55e99aee528951ba26544403b09645979" +uuid = "d1185830-fcd6-423d-90d6-eec64667417b" +version = "3.29.0" + + [deps.SymbolicUtils.extensions] + SymbolicUtilsLabelledArraysExt = "LabelledArrays" + SymbolicUtilsReverseDiffExt = "ReverseDiff" + + [deps.SymbolicUtils.weakdeps] + LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + +[[deps.Symbolics]] +deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "OffsetArrays", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] +git-tree-sha1 = "6eac6fe46d0e0f21baebc87d97dc118827737e05" +uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" +version = "6.48.1" + + [deps.Symbolics.extensions] + SymbolicsD3TreesExt = "D3Trees" + SymbolicsForwardDiffExt = "ForwardDiff" + SymbolicsGroebnerExt = "Groebner" + SymbolicsLuxExt = "Lux" + SymbolicsNemoExt = "Nemo" + SymbolicsPreallocationToolsExt = ["PreallocationTools", "ForwardDiff"] + SymbolicsSymPyExt = "SymPy" + SymbolicsSymPyPythonCallExt = "SymPyPythonCall" + + [deps.Symbolics.weakdeps] + D3Trees = "e3df1716-f71e-5df9-9e2d-98e193103c45" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" + Lux = "b2108857-7c20-44ae-9111-449ecde12c47" + Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" + PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableOperations]] +deps = ["SentinelArrays", "Tables", "Test"] +git-tree-sha1 = "e383c87cf2a1dc41fa30c093b2a19877c83e1bc1" +uuid = "ab02a1b2-a7df-11e8-156e-fb1833f50b87" +version = "1.2.0" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "f2c1efbc8f3a609aadf318094f8fc5204bdaf344" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.12.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TaskLocalValues]] +git-tree-sha1 = "67e469338d9ce74fc578f7db1736a74d93a49eb8" +uuid = "ed4db957-447d-4319-bfb6-7fa9ae7ecf34" +version = "0.1.3" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.TermInterface]] +git-tree-sha1 = "d673e0aca9e46a2f63720201f55cc7b3e7169b16" +uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c" +version = "2.0.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" + +[[deps.ThreadingUtilities]] +deps = ["ManualMemory"] +git-tree-sha1 = "d969183d3d244b6c33796b5ed01ab97328f2db85" +uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" +version = "0.5.5" + +[[deps.TimerOutputs]] +deps = ["ExprTools", "Printf"] +git-tree-sha1 = "3748bd928e68c7c346b52125cf41fff0de6937d0" +uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" +version = "0.5.29" + + [deps.TimerOutputs.extensions] + FlameGraphsExt = "FlameGraphs" + + [deps.TimerOutputs.weakdeps] + FlameGraphs = "08572546-2f56-4bcf-ba4e-bab62c3a3f89" + +[[deps.Tracy]] +deps = ["ExprTools", "LibTracyClient_jll", "Libdl"] +git-tree-sha1 = "91dbaee0f50faa4357f7e9fc69442c7b6364dfe5" +uuid = "e689c965-62c8-4b79-b2c5-8359227902fd" +version = "0.1.5" + + [deps.Tracy.extensions] + TracyProfilerExt = "TracyProfiler_jll" + + [deps.Tracy.weakdeps] + TracyProfiler_jll = "0c351ed6-8a68-550e-8b79-de6f926da83c" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.3" + +[[deps.TruncatedStacktraces]] +deps = ["InteractiveUtils", "MacroTools", "Preferences"] +git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" +uuid = "781d530d-4396-4725-bb49-402e4bee1e77" +version = "1.4.0" + +[[deps.URIs]] +git-tree-sha1 = "bef26fb046d031353ef97a82e3fdb6afe7f21b1a" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.6.1" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" + +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "6258d453843c466d84c17a58732dda5deeb8d3af" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.24.0" +weakdeps = ["ConstructionBase", "ForwardDiff", "InverseFunctions", "Printf"] + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + ForwardDiffExt = "ForwardDiff" + InverseFunctionsUnitfulExt = "InverseFunctions" + PrintfExt = "Printf" + +[[deps.UnitfulLatexify]] +deps = ["LaTeXStrings", "Latexify", "Unitful"] +git-tree-sha1 = "af305cc62419f9bd61b6644d19170a4d258c7967" +uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" +version = "1.7.0" + +[[deps.Unityper]] +deps = ["ConstructionBase"] +git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0" +uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" +version = "0.1.6" + +[[deps.UnsafeAtomics]] +git-tree-sha1 = "b13c4edda90890e5b04ba24e20a310fbe6f249ff" +uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" +version = "0.3.0" +weakdeps = ["LLVM"] + + [deps.UnsafeAtomics.extensions] + UnsafeAtomicsLLVM = ["LLVM"] + +[[deps.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + +[[deps.Wayland_jll]] +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "96478df35bbc2f3e1e791bc7a3d0eeee559e60e9" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.24.0+0" + +[[deps.WeakValueDicts]] +git-tree-sha1 = "98528c2610a5479f091d470967a25becfd83edd0" +uuid = "897b6980-f191-5a31-bcb0-bf3c4585e0c1" +version = "0.1.0" + +[[deps.Widgets]] +deps = ["Colors", "Dates", "Observables", "OrderedCollections"] +git-tree-sha1 = "e9aeb174f95385de31e70bd15fa066a505ea82b9" +uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" +version = "0.6.7" + +[[deps.WoodburyMatrices]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" +uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" +version = "1.0.0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.8.1+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a3ea76ee3f4facd7a64684f9af25310825ee3668" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.1.2+0" + +[[deps.Xorg_libSM_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] +git-tree-sha1 = "9c7ad99c629a44f81e7799eb05ec2746abb5d588" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.6+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "b5899b25d17bf1889d25906fb9deed5da0c15b3b" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.12+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.13+0" + +[[deps.Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "6c74ca84bbabc18c4547014765d194ff0b4dc9da" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.4+0" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.6+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.7+0" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "9caba99d38404b285db8801d5c45ef4f4f425a6d" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "6.0.1+0" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "a376af5c7ae60d29825164db40787f15c80c7c54" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.8.3+0" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll"] +git-tree-sha1 = "a5bc75478d323358a90dc36766f3c99ba7feb024" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.6+0" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "aff463c82a773cb86061bce8d53a0d976854923e" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.5+0" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.12+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] +git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.17.1+0" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "e3150c7400c41e207012b41659591f083f3ef795" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.3+0" + +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "c5bf2dad6a03dfef57ea0a170a1fe493601603f2" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.5+0" + +[[deps.Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "f4fc02e384b74418679983a97385644b67e1263b" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.1+0" + +[[deps.Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll"] +git-tree-sha1 = "68da27247e7d8d8dafd1fcf0c3654ad6506f5f97" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.1+0" + +[[deps.Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "44ec54b0e2acd408b0fb361e1e9244c60c9c3dd4" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.1+0" + +[[deps.Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "5b0263b6d080716a02544c55fdff2c8d7f9a16a0" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.10+0" + +[[deps.Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_jll"] +git-tree-sha1 = "f233c83cad1fa0e70b7771e0e21b061a116f2763" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.2+0" + +[[deps.Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "801a858fc9fb90c11ffddee1801bb06a738bda9b" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.7+0" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "00af7ebdc563c9217ecc67776d1bbf037dbcebf4" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.44.0+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.6.0+0" + +[[deps.ZeroSumGameSolve]] +deps = ["Arpack", "CUDA", "Colors", "DifferentialEquations", "ForwardDiff", "LineSearches", "LinearAlgebra", "Optim", "Optimisers", "OrdinaryDiffEq", "Plots", "ReverseDiff", "Revise", "StaticArrays", "StatsPlots", "Symbolics", "Zygote"] +path = "../.." +uuid = "acbac2c1-af1f-4c5c-8072-533d2c216f7a" +version = "0.1.0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+1" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.7+1" + +[[deps.Zygote]] +deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] +git-tree-sha1 = "a29cbf3968d36022198bcc6f23fdfd70f7caf737" +uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" +version = "0.7.10" + + [deps.Zygote.extensions] + ZygoteAtomExt = "Atom" + ZygoteColorsExt = "Colors" + ZygoteDistancesExt = "Distances" + ZygoteTrackerExt = "Tracker" + + [deps.Zygote.weakdeps] + Atom = "c52e3926-4ff0-5f6e-af25-54175e0327b1" + Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" + Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.ZygoteRules]] +deps = ["ChainRulesCore", "MacroTools"] +git-tree-sha1 = "434b3de333c75fc446aa0d19fc394edafd07ab08" +uuid = "700de1a5-db45-46bc-99cf-38207098b444" +version = "0.2.7" + +[[deps.demumble_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6498e3581023f8e530f34760d18f75a69e3a4ea8" +uuid = "1e29f10c-031c-5a83-9565-69cddfc27673" +version = "1.3.0+0" + +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "c3b0e6196d50eab0c5ed34021aaa0bb463489510" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.14+0" + +[[deps.fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b6a34e0e0960190ac2a4363a1bd003504772d631" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.61.1+0" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "4bba74fa59ab0755167ad24f98800fe5d727175b" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.12.1+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "125eedcb0a4a0bba65b657251ce1d27c8714e9d6" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.17.4+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.11.0+0" + +[[deps.libdecor_jll]] +deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"] +git-tree-sha1 = "9bf7903af251d2050b467f76bdbe57ce541f7f4f" +uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" +version = "0.2.2+0" + +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "56d643b57b188d30cccc25e331d416d3d358e557" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.13.4+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "646634dd19587a56ee2f1199563ec056c5f228df" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.4+0" + +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "91d05d7f4a9f67205bd6cf395e488009fe85b499" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.28.1+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "07b6a107d926093898e82b3b1db657ebe33134ec" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.50+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll"] +git-tree-sha1 = "11e1772e7f3cc987e9d3de991dd4f6b2602663a5" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.8+0" + +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b4d631fd51f2e9cdd93724ae25b2efc198b059b1" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.7+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.59.0+0" + +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2022.0.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "14cc7083fc6dff3cc44f2bc435ee96d06ed79aa7" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "10164.0.1+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e7b67590c14d487e734dcb925924c5dc43ec85f3" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "4.1.0+0" + +[[deps.xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "fbf139bce07a534df0e699dbb5f5cc9346f95cc1" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.9.2+0" diff --git a/experiments/ToyExample/Project.toml b/experiments/ToyExample/Project.toml new file mode 100644 index 0000000..fe77d3e --- /dev/null +++ b/experiments/ToyExample/Project.toml @@ -0,0 +1,9 @@ +[deps] +Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" +ZeroSumGameSolve = "acbac2c1-af1f-4c5c-8072-533d2c216f7a" + +[sources] +ZeroSumGameSolve = {path = "../.."} diff --git a/external/StayOnTheRidge.jl/LICENSE b/external/StayOnTheRidge.jl/LICENSE deleted file mode 100644 index 193bb89..0000000 --- a/external/StayOnTheRidge.jl/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Marika Kosohorska - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/external/StayOnTheRidge.jl/README.md b/external/StayOnTheRidge.jl/README.md deleted file mode 100644 index be38e59..0000000 --- a/external/StayOnTheRidge.jl/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# StayOnTheRidge.jl -[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://gitlab.fel.cvut.cz/kosohmar/StayOnTheRidge.jl/-/blob/main/LICENSE) - -This package implements the STay-ON-the-Ridge algorithm (STON'R), designed to find min-max critical points of possibly nonconvex-nonconcave functions. The concepts of min-max critical points and the STON'R algorithm were proposed in https://proceedings.mlr.press/v195/daskalakis23b.html. - -This project was developed as part of a Bachelor's thesis at the Faculty of Electrical Engineering, Czech Technical University in Prague. - -## Instalation -The package is not registered and this can be installed in the following way. - -```julia -(@v1.9) pkg> add git@gitlab.fel.cvut.cz:kosohmar/StayOnTheRidge.jl.git -``` - -## Description -The STON'R algorithm involves the computation of the gradient and hessian of the function. This implementation is able to switch between symbolic computation (using Symbolics.jl) and automatic differentiation (using ForwardDiff.jl). - -The algorithm operates on the unit hypercube $[0,1]^n$. The domain can be extended to a general convex set $K$ by defining a mapping $H$ from $[0,1]^n$ to $K$. -The current implementation can operate on $[0,1]^n$ or on a general hyperrectangle. - -## Example -### Function $2x_1x_2^2 - x_1^2 - x_2$ on the square $[-1,1]^2$ -To execute dynamics with the `run_dynamics` function, define configuration object first. Two configuration types are `Config_FD` and `Config_sym`. See help for Config_FD and Config_sym for more information. - -Execution using ForwardDiff differentiation: -```julia -using StayOnTheRidge - -f(x) = 2*x[1]*x[2]^2-x[1]^2-x[2] -n = 2 -min_coords = [2] -γ = 1e-3 -ϵ = 1e-1 -domain = Hyperrectangle([[-1,1],[-1,1]]) - -config = Config_FD(f, n, min_coords, γ, ϵ, domain) -elapsed = @elapsed min_max, trajectory, m, k = run_dynamics(config) -pretty_print(min_max, elapsed, m, k) -plot_trajectory2D(min_max, trajectory, config.domain) -plot_contour2D(min_max, config.f, config.domain) -plot_surface(min_max, config.f, config.domain) -``` - -

- -

-

- -

- -For more examples see examples/examples.jl - diff --git a/external/StayOnTheRidge.jl/examples/Manifest.toml b/external/StayOnTheRidge.jl/examples/Manifest.toml deleted file mode 100644 index 9ba2737..0000000 --- a/external/StayOnTheRidge.jl/examples/Manifest.toml +++ /dev/null @@ -1,1800 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.9.2" -manifest_format = "2.0" -project_hash = "c05dfa5df900a6715a70cd52a66abf6d8f2519dc" - -[[deps.ADTypes]] -git-tree-sha1 = "5d2e21d7b0d8c22f67483ef95ebdc39c0e6b6003" -uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "0.2.4" - -[[deps.AMD]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] -git-tree-sha1 = "45a1272e3f809d36431e57ab22703c6896b8908f" -uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" -version = "0.5.3" - -[[deps.ASL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6252039f98492252f9e47c312c8ffda0e3b9e78d" -uuid = "ae81ac8f-d209-56e5-92de-9978fef736f9" -version = "0.1.3+0" - -[[deps.AbstractAlgebra]] -deps = ["GroupsCore", "InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] -git-tree-sha1 = "c3c29bf6363b3ac3e421dc8b2ba8e33bdacbd245" -uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" -version = "0.32.5" - -[[deps.AbstractTrees]] -git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.4" - -[[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Test"] -git-tree-sha1 = "a7055b939deae2455aa8a67491e034f735dd08d3" -uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.33" - - [deps.Accessors.extensions] - AccessorsAxisKeysExt = "AxisKeys" - AccessorsIntervalSetsExt = "IntervalSets" - AccessorsStaticArraysExt = "StaticArrays" - AccessorsStructArraysExt = "StructArrays" - - [deps.Accessors.weakdeps] - AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - Requires = "ae029012-a4dd-5104-9daa-d747884805df" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "02f731463748db57cc2ebfbd9fbc9ce8280d3433" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.7.1" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "16267cf279190ca7c1b30d020758ced95db89cd0" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.5.1" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BenchmarkTools]] -deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "d9a9701b899b30332bbcb3e1679c41cce81fb0e8" -uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.3.2" - -[[deps.Bijections]] -git-tree-sha1 = "c9b163bd832e023571e86d0b90d9de92a9879088" -uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" -version = "0.1.6" - -[[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.1+1" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "e0af648f0692ec1691b5d094b8724ba1346281cf" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.18.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CodeTracking]] -deps = ["InteractiveUtils", "UUIDs"] -git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" -uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" -version = "1.3.5" - -[[deps.CodecBzip2]] -deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] -git-tree-sha1 = "9b1ca1aa6ce3f71b3d1840c538a8210a043625eb" -uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" -version = "0.8.2" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.3" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.24.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" -weakdeps = ["SpecialFunctions"] - - [deps.ColorVectorSpace.extensions] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.10" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSolve]] -git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" -uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.4" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.10.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" - -[[deps.CompositeTypes]] -git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638" -uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" -version = "0.1.3" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" -weakdeps = ["InverseFunctions"] - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - -[[deps.ConcreteStructs]] -git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" -uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" -version = "0.2.3" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.3.0" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.4" -weakdeps = ["IntervalSets", "StaticArrays"] - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - -[[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" - -[[deps.ConvexHulls2d]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "cd7759cfeaf855fed46ec26a26fb323ac3a5501e" -uuid = "438b5665-92b0-42e6-bc36-e4ac8449fa2d" -version = "0.1.1" - - [deps.ConvexHulls2d.extensions] - ConvexHulls2dMakieExt = "Makie" - - [deps.ConvexHulls2d.weakdeps] - Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" - -[[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.15" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "a6c00f894f24460379cb7136633cef54ac9f6f4a" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.103" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.DomainSets]] -deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays", "Statistics"] -git-tree-sha1 = "51b4b84d33ec5e0955b55ff4b748b99ce2c3faa9" -uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -version = "0.6.7" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.DynamicPolynomials]] -deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] -git-tree-sha1 = "fea68c84ba262b121754539e6ea0546146515d4f" -uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" -version = "0.5.3" - -[[deps.EarCut_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" -uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" -version = "2.2.4+0" - -[[deps.EnumX]] -git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" -uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" -version = "1.0.4" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.9" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.5.0+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.Extents]] -git-tree-sha1 = "2140cd04483da90b2da7f99b2add0750504fc39c" -uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.2" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FastClosures]] -git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" -uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" -version = "0.3.2" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra", "Random"] -git-tree-sha1 = "35f0c0f345bff2c6d636f95fdb136323b5a796ef" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.7.0" -weakdeps = ["SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.93+0" - -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.1+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.10+0" - -[[deps.FunctionWrappers]] -git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" -uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" -version = "1.1.3" - -[[deps.FunctionWrappersWrappers]] -deps = ["FunctionWrappers"] -git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" -uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" -version = "0.1.3" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.8+0" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.5" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] -git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.72.10" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.72.10+0" - -[[deps.GeoInterface]] -deps = ["Extents"] -git-tree-sha1 = "d4f85701f569584f2cff7ba67a137d03f0cfb7d0" -uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.3.3" - -[[deps.GeometryBasics]] -deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "5694b56ccf9d15addedc35e9a4ba9c317721b788" -uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.10" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.76.5+0" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.Groebner]] -deps = ["AbstractAlgebra", "Combinatorics", "ExprTools", "Logging", "MultivariatePolynomials", "Primes", "Random", "SIMD", "SnoopPrecompile"] -git-tree-sha1 = "44f595de4f6485ab5ba71fe257b5eadaa3cf161e" -uuid = "0b43b601-686d-58a3-8a1c-6623616c7cd4" -version = "0.4.4" - -[[deps.GroupsCore]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "9e1a5e9f3b81ad6a5c613d181664a0efc6fe6dd7" -uuid = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120" -version = "0.4.0" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.0" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.10.0+0" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IfElse]] -git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" -uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -version = "0.1.1" - -[[deps.IntegerMathUtils]] -git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" -uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.2" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.IntervalSets]] -deps = ["Dates", "Random"] -git-tree-sha1 = "3d8866c029dd6b16e69e0d4a939c4dfcb98fac47" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.8" -weakdeps = ["Statistics"] - - [deps.IntervalSets.extensions] - IntervalSetsStatisticsExt = "Statistics" - -[[deps.InverseFunctions]] -deps = ["Test"] -git-tree-sha1 = "68772f49f54b479fa88ace904f6127f0a3bb2e46" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.12" - -[[deps.Ipopt]] -deps = ["Ipopt_jll", "LinearAlgebra", "MathOptInterface", "OpenBLAS32_jll", "PrecompileTools"] -git-tree-sha1 = "6600353576cee7e7388e57e94115f6aee034fb1c" -uuid = "b6b21f68-93f8-5de0-b562-5493be1d77c9" -version = "1.6.1" - -[[deps.Ipopt_jll]] -deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "SPRAL_jll", "libblastrampoline_jll"] -git-tree-sha1 = "546c40fd3718c65d48296dd6cec98af9904e3ca4" -uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" -version = "300.1400.1400+0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterTools]] -git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.10.0" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "9fb0b890adab1c0a4a475d4210d51f228bfc250d" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.6" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.91+0" - -[[deps.JuliaInterpreter]] -deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "0592b1810613d1c95eeebcd22dc11fba186c2a57" -uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.26" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.1+0" - -[[deps.LDLFactorizations]] -deps = ["AMD", "LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "70f582b446a1c3ad82cf87e62b878668beef9d13" -uuid = "40e66cde-538c-5869-a4ad-c39174c6795b" -version = "0.10.1" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.4+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.1+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.LabelledArrays]] -deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] -git-tree-sha1 = "cd04158424635efd05ff38d5f55843397b7416a9" -uuid = "2ee39098-c373-598a-b85f-a56591580800" -version = "1.14.0" - -[[deps.LambertW]] -git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" -uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9" -version = "0.4.6" - -[[deps.Latexify]] -deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] -git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.1" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatticeRules]] -deps = ["Random"] -git-tree-sha1 = "7f5b02258a3ca0221a6a9710b0a0a2e8fb4957fe" -uuid = "73f95e8e-ec14-4e6a-8b18-0d2e271c4e55" -version = "0.0.1" - -[[deps.Lazy]] -deps = ["MacroTools"] -git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" -uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" -version = "0.15.1" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.7+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.42.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.35.0+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.36.0+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LinearOperators]] -deps = ["FastClosures", "LDLFactorizations", "LinearAlgebra", "Printf", "Requires", "SparseArrays", "TimerOutputs"] -git-tree-sha1 = "58e2ca62646a62e18f86253b9c2a2d821c2d934b" -uuid = "5c8ed15e-5a4c-59e4-a42b-c7e8811fb125" -version = "2.6.0" -weakdeps = ["ChainRulesCore"] - - [deps.LinearOperators.extensions] - LinearOperatorsChainRulesCoreExt = "ChainRulesCore" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.26" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.LoweredCodeUtils]] -deps = ["JuliaInterpreter"] -git-tree-sha1 = "60168780555f3e663c536500aa790b6368adc02a" -uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "2.3.0" - -[[deps.METIS_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "1fd0a97409e418b78c53fac671cf4622efdf0f21" -uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" -version = "5.1.2+0" - -[[deps.MUMPS_seq_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "840b83c65b27e308095c139a457373850b2f5977" -uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" -version = "500.600.201+0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.11" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MathOptInterface]] -deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] -git-tree-sha1 = "569a003f93d7c64068d3afaab908d21f67a22cd5" -uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" -version = "1.25.3" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "f512dc13e64e96f703fd92ce617755ee6b5adf0f" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.8" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" - -[[deps.MultivariatePolynomials]] -deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "6c2e970692b6f4fed2508865c43a0f67f3820cf4" -uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.5.2" - -[[deps.MutableArithmetics]] -deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "6985021d02ab8c509c841bb8b2becd3145a7b490" -uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.3.3" - -[[deps.NLPModels]] -deps = ["FastClosures", "LinearAlgebra", "LinearOperators", "Printf", "SparseArrays"] -git-tree-sha1 = "51b458add76a938917772ee661ffb9d59b4c7e5d" -uuid = "a4795742-8479-5a88-8948-cc11e1c8c1a6" -version = "0.20.0" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OpenBLAS32_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "2fb9ee2dc14d555a6df2a714b86b7125178344c2" -uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" -version = "0.3.21+0" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.1" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.12+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.2" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+0" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f6f85a2edb9c356b829934ad3caed2ad0ebbfc99" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.29" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.0" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.42.2+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.1.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.3.5" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.39.0" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PreallocationTools]] -deps = ["Adapt", "ArrayInterface", "ForwardDiff", "Requires"] -git-tree-sha1 = "f739b1b3cc7b9949af3b35089931f2b58c289163" -uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.12" - - [deps.PreallocationTools.extensions] - PreallocationToolsReverseDiffExt = "ReverseDiff" - - [deps.PreallocationTools.weakdeps] - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.0" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.1" - -[[deps.Primes]] -deps = ["IntegerMathUtils"] -git-tree-sha1 = "4c9f306e5d6603ae203c2000dd460d81a5251489" -uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.4" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.Profile]] -deps = ["Printf"] -uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" - -[[deps.Qt6Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] -git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.5.3+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.1" - -[[deps.QuasiMonteCarlo]] -deps = ["Accessors", "ConcreteStructs", "Distributions", "LatticeRules", "LinearAlgebra", "Primes", "Random", "Sobol", "StatsBase"] -git-tree-sha1 = "5654ee2631b0b291c639b2e6c81bbf06128bce85" -uuid = "8a4e6c94-4038-4cdc-81c3-7e6ffdb2a71b" -version = "0.3.2" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RandomExtensions]] -deps = ["Random", "SparseArrays"] -git-tree-sha1 = "b8a399e95663485820000f26b6a43c794e166a49" -uuid = "fb686558-2515-59ef-acaa-46db3789a887" -version = "0.4.4" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.RecursiveArrayTools]] -deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "d7087c013e8a496ff396bae843b1e16d9a30ede8" -uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.38.10" - - [deps.RecursiveArrayTools.extensions] - RecursiveArrayToolsMeasurementsExt = "Measurements" - RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" - RecursiveArrayToolsTrackerExt = "Tracker" - RecursiveArrayToolsZygoteExt = "Zygote" - - [deps.RecursiveArrayTools.weakdeps] - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Revise]] -deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "62fbfbbed77a20e9390c4f02219cb3b11d21708d" -uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.5.8" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.0+0" - -[[deps.RuntimeGeneratedFunctions]] -deps = ["ExprTools", "SHA", "Serialization"] -git-tree-sha1 = "6aacc5eefe8415f47b3e34214c1d79d2674a0ba2" -uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" -version = "0.5.12" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SIMD]] -deps = ["PrecompileTools"] -git-tree-sha1 = "d8911cc125da009051fb35322415641d02d9e37f" -uuid = "fdea26ae-647d-5447-a871-4b548cad5224" -version = "3.4.6" - -[[deps.SPRAL_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "34b9dacd687cace8aa4d550e3e9bb8615f1a61e9" -uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab" -version = "2024.1.18+0" - -[[deps.SciMLBase]] -deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "QuasiMonteCarlo", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] -git-tree-sha1 = "dd2d18b981d09a2376ba49c5fab480f497992c88" -uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.8.0" - - [deps.SciMLBase.extensions] - SciMLBaseChainRulesCoreExt = "ChainRulesCore" - SciMLBasePartialFunctionsExt = "PartialFunctions" - SciMLBasePyCallExt = "PyCall" - SciMLBasePythonCallExt = "PythonCall" - SciMLBaseRCallExt = "RCall" - SciMLBaseZygoteExt = "Zygote" - - [deps.SciMLBase.weakdeps] - ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" - PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" - PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" - RCall = "6f49c342-dc21-5d91-9882-a32aef131414" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.SciMLOperators]] -deps = ["ArrayInterface", "DocStringExtensions", "Lazy", "LinearAlgebra", "Setfield", "SparseArrays", "StaticArraysCore", "Tricks"] -git-tree-sha1 = "51ae235ff058a64815e0a2c34b1db7578a06813d" -uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.3.7" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SnoopPrecompile]] -deps = ["Preferences"] -git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" -uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.3" - -[[deps.Sobol]] -deps = ["DelimitedFiles", "Random"] -git-tree-sha1 = "5a74ac22a9daef23705f010f72c81d6925b19df8" -uuid = "ed01d8cd-4d21-5b2a-85b4-cc3bdc58bad4" -version = "1.5.0" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.0" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.3.1" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore"] -git-tree-sha1 = "0adf069a2a490c47273727e029371b31d44b72b2" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.5" -weakdeps = ["Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.2" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.2" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" -weakdeps = ["ChainRulesCore", "InverseFunctions"] - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - -[[deps.StayOnTheRidge]] -deps = ["ForwardDiff", "LinearAlgebra", "Plots", "Symbolics"] -path = ".." -uuid = "250d2a78-eb8c-4fdb-8c50-61bd39400985" -version = "1.0.0-DEV" - -[[deps.StructArrays]] -deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] - - [deps.StructArrays.extensions] - StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" - StructArraysSparseArraysExt = "SparseArrays" - StructArraysStaticArraysExt = "StaticArrays" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" - -[[deps.SymNLPModels]] -deps = ["LinearAlgebra", "NLPModels", "SparseArrays", "Symbolics"] -git-tree-sha1 = "33dd5b192fb5995a404fd6012a56e3d467625b1c" -repo-rev = "main" -repo-url = "https://github.com/votroto/SymNLPModels.jl.git" -uuid = "65174464-c9ac-4440-a6eb-f28a17d93ce8" -version = "0.1.2" - -[[deps.SymbolicIndexingInterface]] -deps = ["DocStringExtensions"] -git-tree-sha1 = "f8ab052bfcbdb9b48fad2c80c873aa0d0344dfe5" -uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.2.2" - -[[deps.SymbolicUtils]] -deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TimerOutputs", "Unityper"] -git-tree-sha1 = "2f3fa844bcd33e40d8c29de5ee8dded7a0a70422" -uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "1.4.0" - -[[deps.Symbolics]] -deps = ["ArrayInterface", "Bijections", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "Groebner", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils", "TreeViews"] -git-tree-sha1 = "4d4e922e160827388c003a9a088a4c63f339f6c0" -uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "5.10.0" - - [deps.Symbolics.extensions] - SymbolicsSymPyExt = "SymPy" - - [deps.Symbolics.weakdeps] - SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimerOutputs]] -deps = ["ExprTools", "Printf"] -git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7" -uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.23" - -[[deps.TranscodingStreams]] -git-tree-sha1 = "1fbeaaca45801b4ba17c251dd8603ef24801dd84" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.10.2" -weakdeps = ["Random", "Test"] - - [deps.TranscodingStreams.extensions] - TestExt = ["Test", "Random"] - -[[deps.TreeViews]] -deps = ["Test"] -git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" -uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" -version = "0.3.0" - -[[deps.Tricks]] -git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" -uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.8" - -[[deps.TruncatedStacktraces]] -deps = ["InteractiveUtils", "MacroTools", "Preferences"] -git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" -uuid = "781d530d-4396-4725-bb49-402e4bee1e77" -version = "1.4.0" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.17.0" -weakdeps = ["ConstructionBase", "InverseFunctions"] - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.Unityper]] -deps = ["ConstructionBase"] -git-tree-sha1 = "21c8fc7cd598ef49f11bc9e94871f5d7740e34b9" -uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" -version = "0.1.5" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.Vulkan_Loader_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] -git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" -uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" -version = "1.3.243+0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.25.0+0" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "24b81b59bd35b3c42ab84fa589086e19be919916" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.11.5+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.5+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.0.10+1" - -[[deps.Xorg_libSM_jll]] -deps = ["Libdl", "Pkg", "Xorg_libICE_jll"] -git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.3+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+4" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+4" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_cursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] -git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" -uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" -version = "0.1.4+0" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.5+0" - -[[deps.eudev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] -git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" -uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" -version = "3.2.9+0" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "47cf33e62e138b920039e8ff9f9841aafe1b733e" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.35.1+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.4.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.libevdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" -uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" -version = "1.11.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libinput_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] -git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" -uuid = "36db933b-70db-51c0-b978-0f229ee0e533" -version = "1.18.0+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.mtdev_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" -uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" -version = "1.1.6+0" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/external/StayOnTheRidge.jl/examples/Project.toml b/external/StayOnTheRidge.jl/examples/Project.toml deleted file mode 100644 index b55a057..0000000 --- a/external/StayOnTheRidge.jl/examples/Project.toml +++ /dev/null @@ -1,10 +0,0 @@ -[deps] -BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -ConvexHulls2d = "438b5665-92b0-42e6-bc36-e4ac8449fa2d" -ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" -GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -Ipopt = "b6b21f68-93f8-5de0-b562-5493be1d77c9" -Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" -StayOnTheRidge = "250d2a78-eb8c-4fdb-8c50-61bd39400985" -SymNLPModels = "65174464-c9ac-4440-a6eb-f28a17d93ce8" -Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" diff --git a/external/StayOnTheRidge.jl/examples/examples.jl b/external/StayOnTheRidge.jl/examples/examples.jl deleted file mode 100644 index 54f78d3..0000000 --- a/external/StayOnTheRidge.jl/examples/examples.jl +++ /dev/null @@ -1,552 +0,0 @@ -using Revise -using StayOnTheRidge -using Symbolics -using BenchmarkTools - -# Example 1 - example from https://proceedings.mlr.press/v195/daskalakis23b/daskalakis23b.pdf (Appendix D) -# domain: [0,1]² -# solution given by this implementation: (0.51, 0.49) -# solution presented in the paper: (0.5, 0.5) -# characterization at [0,1]²: convex-concave (bilinear) -function example1(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-2 - ϵ = 1e-2 - domain = Default() - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = (x[1]-1/2)*(x[2]-1/2) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = (x[1]-1/2)*(x[2]-1/2) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 2 - normal form game expected utility function (2 players, 2 strategies) -# domain: [0,1]² -# solution given by this implementation: (0.921, 0.921) -# solution computed by linear programming: (0.92105, 0.92105) -# characterization at [0,1]²: convex-concave (bilinear) -function example2(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-2 - A = [4 -5; -5 100] - domain = Default() - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = A[1,1]*x[1]*x[2]+A[1,2]*x[1]*(1-x[2])+A[2,1]*(1-x[1])*x[2]+A[2,2]*(1-x[1])*(1-x[2]) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = A[1,1]*x[1]*x[2]+A[1,2]*x[1]*(1-x[2])+A[2,1]*(1-x[1])*x[2]+A[2,2]*(1-x[1])*(1-x[2]) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 3 - function f2 from https://proceedings.mlr.press/v195/daskalakis23b/daskalakis23b.pdf (Appendix E) -# domain: [-1,1]² -# solution given by this implementation: (-0.004, -0.002) -# solution presented in the paper: (0,0) -# characterization at [-1,1]²: nonconvex-nonconcave -function example3(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-2 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = ifelse((x[1]^2 + x[2]^2)/2 <= 0, -x[1]*x[2] - 1/20*x[2]^2, - ifelse((x[1]^2 + x[2]^2)/2 < 1, -x[1]*x[2] - 1/20*x[2]^2 + 2/20*(3*((x[1]^2 + x[2]^2)/2)^2 - 2*((x[1]^2 + x[2]^2)/2)^3)*x[2]^2, - -x[1]*x[2] - 1/20*x[2]^2 + 2/20*x[2]^2)) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - function f_fd(x) - term1 = -x[1] * x[2] - 1/20 * x[2]^2 - term2 = -x[1] * x[2] - 1/20 * x[2]^2 + 2/20 * (3 * ((x[1]^2 + x[2]^2)/2)^2 - 2 * ((x[1]^2 + x[2]^2)/2)^3) * x[2]^2 - term3 = -x[1] * x[2] - 1/20 * x[2]^2 + 2/20 * x[2]^2 - if (x[1]^2 + x[2]^2)/2 <= 0 - return term1 - elseif (x[1]^2 + x[2]^2)/2 < 1 - return term2 - else - return term3 - end - end - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 4 - https://link.springer.com/article/10.1007/s10589-019-00141-6 example 5.3 i) -# solution given by this implementation: (0,0,0,0) -# solution presented in the paper: (0.2540,0.2097,0.2487,0.2944)*10^(-4) -function example4(sym::Bool) - n = 4 - min_coords = [1,2] - γ = 1e-3 - ϵ = 1e-2 - domain = Default() - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - p = x[1]^2+x[2]^2-x[3]^2-x[4]^2 - q = x[1]+x[4]+1 - f = p/q - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - p_fd(x) = x[1]^2+x[2]^2-x[3]^2-x[4]^2 - q_fd(x) = x[1]+x[4]+1 - f_fd(x) = p_fd(x)/q_fd(x) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 5 - https://arxiv.org/pdf/2109.04178.pdf example 1 -# domain: [-1,1]² -# solution given by this implementation: (0.3967,0.6302) -# solution presented in the paper: (0.4,0.6) -# characterization at [-1,1]²: convex-nonconcave -function example5(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-2 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = -2*x[1]*x[2]^2+x[1]^2+x[2] - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = -2*x[1]*x[2]^2+x[1]^2+x[2] - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 6 - f1 from https://proceedings.mlr.press/v195/daskalakis23b/daskalakis23b.pdf (Appendix E) -# solution given by this implementation: (-1,-1) -# solution presented in the paper: (0,0) -# characterization at [-1,1]²: nonconvex-nonconcave -function example6(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-4 - ϵ = 1e-1 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x, i) for i in 1:n] - f = (4*x[1]^2-(x[2]-3*x[1]+x[1]^3/20)^2-x[2]^4/10) * exp(-(x[1]^2+x[2]^2)/100) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = (4*x[1]^2-(x[2]-3*x[1]+x[1]^3/20)^2-x[2]^4/10) * exp(-(x[1]^2+x[2]^2)/100) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 7 - example 6.3 i) from https://arxiv.org/pdf/1809.01218.pdf -# domain: [-1,1]⁶ -# solution given by this implementation: (-1,-1,1,1,1,1) -# solution presented in the paper: (-1,-1,1,1,1,1) -# characterization at [-1,1]⁶: nonconvex-nonconcave -function example7(sym::Bool) - n = 6 - min_coords = [1,2,3] - γ = 1e-4 - ϵ = 1e-1 - domain = Hyperrectangle([fill([-1,1], 6)...]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = sum(x[i]+x[3+i] for i in 1:3) - prod((x[i] - x[3+i]) for i in 1:3) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = sum(x[i]+x[3+i] for i in 1:3) - prod((x[i] - x[3+i]) for i in 1:3) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 8 - example 6.3 ii) from https://arxiv.org/pdf/1809.01218.pdf -# domain: [-1,1]⁶ -# solution given by this implementation: (-0.0, -0.0014, -0.0013, -0.001, -0.0017, -0.0031) -# solution presented in the paper: (-1,1,-1,-1,1,-1) -# characterization at [-1,1]⁶: nonconvex-nonconcave -function example8(sym::Bool) - n = 6 - min_coords = [1,2,3] - γ = 1e-4 - ϵ = 1e-2 - domain = Hyperrectangle([fill([-1,1], 6)...]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = x[1]^2 + x[2]^2 + x[3]^2 - x[4]^2 - x[5]^2 - x[6]^2 + x[1]*x[5] - x[2]*x[4] + x[1]*x[6] - x[3]*x[4] + x[2]*x[6] - x[3]*x[5] - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = x[1]^2 + x[2]^2 + x[3]^2 - x[4]^2 - x[5]^2 - x[6]^2 + x[1]*x[5] - x[2]*x[4] + x[1]*x[6] - x[3]*x[4] + x[2]*x[6] - x[3]*x[5] - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 9 - function x₁² - x₂² -# domain: [-1,1]² -# solution given by this implementation: (-0.024, -0.024) -# well known solution: (0,0) -# characterization at [-1,1]²: convex-concave -function example9(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-1 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = x[1]^2 - x[2]^2 - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = x[1]^2 - x[2]^2 - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 10 - monkey saddle -# domain: [-1,1]² -# solution given by this implementation: (-1,-1) -# well known solution: (0,0) -# characterization at [-1,1]²: nonconvex-nonconcave -function example10(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-1 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = x[1]^3 - 3*x[1]*x[2]^2 - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = x[1]^3 - 3*x[1]*x[2]^2 - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 11 - example 1 from https://arxiv.org/pdf/2006.08141.pdf -# domain: [-1,1]x[-2π,2π] -# solution given by this implementation: (0,0) -# solutions presented in the paper: (0,-π), (0,π) -# characterization at [-1,1]x[-2π,2π]: convex-nonconcave -function example11(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-4 - ϵ = 1e-4 - domain = Hyperrectangle([[-1,1],[-2*pi,2*pi]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = 0.2*x[1]*x[2]-cos(x[2]) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = 0.2*x[1]*x[2]-cos(x[2]) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 12 - example 3 from https://arxiv.org/pdf/2006.08141.pdf -# domain: [-1,1]² -# solution given by this implementation: (-1,-1) -# solutions presented in the paper: (0,0), (-1,-1) -# characterization at [-1,1]²: nonconvex-concave -function example12(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-4 - ϵ = 1e-4 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = x[1]^3+2*x[1]*x[2]-x[2]^2 - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = x[1]^3+2*x[1]*x[2]-x[2]^2 - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 13 - figure 1 from https://arxiv.org/pdf/1807.02629.pdf -# domain: [0,1]² -# solution given by this implementation: (0.4189, 0.607) -# solutions presented in the paper: (0.4,0.6) -# characterization at [0,1]²: nonconvex-nonconcave -function example13(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-2 - domain = Default() - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = (x[1]-0.5)*(x[2]-0.5)+1/3*exp(-(x[1]-1/4)^2-(x[2]-3/4)^2) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = (x[1]-0.5)*(x[2]-0.5)+1/3*exp(-(x[1]-1/4)^2-(x[2]-3/4)^2) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 14 - example 2.2 from https://arxiv.org/pdf/1807.02629.pdf -# domain: [-1,1]² -# solution given by this implementation: (-0.002,-0.002) -# solutions presented in the paper: (0,0) -# characterization at [-1,1]²: convex-nonconcave -function example14(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-2 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = (x[1]^4*x[2]^2+x[1]^2+1)*(x[1]^2*x[2]^4-x[2]^2+1) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = (x[1]^4*x[2]^2+x[1]^2+1)*(x[1]^2*x[2]^4-x[2]^2+1) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 15 - Bilinearly-coupled Minimax” - example 3 from https://proceedings.neurips.cc/paper_files/paper/2023/file/a961dea42c23c3c0d01b79918701fb6e-Paper-Conference.pdf -# domain: [-4,4]² -# solution given by this implementation: (-0.0005,0.0001) -# solutions presented in the paper: (0,0) -# characterization at [-4,4]²: nonconvex-nonconcave -function example15(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-4 - ϵ = 1e-1 - domain = Hyperrectangle([[-4,4],[-4,4]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = (x[1]+1)*(x[1]-1)*(x[1]+3)*(x[1]-3) + 11*x[1]*x[2] - (x[2]+1)*(x[2]-1)*(x[2]+3)*(x[2]-3) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = (x[1]+1)*(x[1]-1)*(x[1]+3)*(x[1]-3) + 11*x[1]*x[2] - (x[2]+1)*(x[2]-1)*(x[2]+3)*(x[2]-3) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 16 - example 2 from https://proceedings.neurips.cc/paper_files/paper/2023/file/a961dea42c23c3c0d01b79918701fb6e-Paper-Conference.pdf -# domain: [-1,1]² -# solution given by this implementation: (0,0) -# solutions presented in the paper: (0,0) -# characterization at [-1,1]²: nonconvex-nonconcave -function example16(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-2 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = x[1]^2+3*sin(x[1])^2*sin(x[2])^2-4*x[2]^2-10*sin(x[2])^2 - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = x[1]^2+3*sin(x[1])^2*sin(x[2])^2-4*x[2]^2-10*sin(x[2])^2 - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 17 - example 17 from http://proceedings.mlr.press/v89/adolphs19a/adolphs19a.pdf -# domain: [-1,1]² -# solution given by this implementation: (0,0) -# solutions presented in the paper: (0,0) -# characterization at [-1,1]²: convex-nonconcave -function example17(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-2 - domain = Hyperrectangle([[-1,1],[-1,1]]) - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = 2*x[1]^2+x[2]^2+4*x[1]*x[2]+4*x[2]^3/3-x[2]^4/4 - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = 2*x[1]^2+x[2]^2+4*x[1]*x[2]+4*x[2]^3/3-x[2]^4/4 - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 18 - example 5.2 from https://proceedings.mlr.press/v139/hsieh21a.html -# domain: [0,1]² -# solution given by this implementation: (0.0787,0.4102) -# solutions presented in the paper: (0.08,0.4) -# characterization at [0,1]²: -function example18(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-4 - domain = Default() - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = x[1]*(x[2]-0.45)+1/4*x[1]^2-1/2*x[1]^4+1/6*x[1]^6-(1/4*x[2]^2-1/2*x[2]^4+1/6*x[2]^6) - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = x[1]*(x[2]-0.45)+1/4*x[1]^2-1/2*x[1]^4+1/6*x[1]^6-(1/4*x[2]^2-1/2*x[2]^4+1/6*x[2]^6) - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -# Example 19 - classical example with no NE: (x₁-x₂)² -# domain: [0,1]² -# solution given by this implementation: (0,0) -# characterization at [0,1]²: -function example19(sym::Bool) - n = 2 - min_coords = [1] - γ = 1e-3 - ϵ = 1e-4 - domain = Default() - if sym - x = [Symbolics.variable(:x,i) for i in 1:n] - f = (x[1]-x[2])^2 - return Config_sym(f, x, n, min_coords, γ, ϵ, domain) - else - f_fd(x) = (x[1]-x[2])^2 - return Config_FD(f_fd, n, min_coords, γ, ϵ, domain) - end -end - -config1 = example1(false); -elapsed1 = @elapsed min_max1, trajectory1, m1, k1 = run_dynamics(config1) -pretty_print(min_max1, elapsed1, m1, k1) -is_solution_VI(min_max1, config1, config1.domain) -plot_trajectory2D(min_max1, trajectory1, config1.domain) -plot_contour2D(min_max1, config1.f, config1.domain) -plot_surface(min_max1, config1.f, config1.domain) - -config2 = example2(true); -elapsed2 = @elapsed min_max2, trajectory2, m2, k2 = run_dynamics(config2) -pretty_print(min_max2, elapsed2, m2, k2) -is_solution_VI(min_max2, config2, config2.domain) -plot_trajectory2D(min_max2, trajectory2, config2.domain) -plot_contour2D(min_max2, config2.f, config2.domain) -plot_surface(min_max2, config2.f, config2.domain) - -config3 = example3(false); -elapsed3 = @elapsed min_max3, trajectory3, m3, k3 = run_dynamics(config3) -pretty_print(min_max3, elapsed3, m3, k3) -is_solution_VI(min_max3, config3, config3.domain) -plot_trajectory2D(min_max3, trajectory3, config3.domain) -plot_contour2D(min_max3, config3.f, config3.domain) -plot_surface(min_max3, config3.f, config3.domain) - -config4 = example4(false); -elapsed4 = @elapsed min_max4, trajectory4, m4, k4 = run_dynamics(config4) -pretty_print(min_max4, elapsed4, m4, k4) -is_solution_VI(min_max4, config4, config4.domain) - -config5 = example5(false); -elapsed5 = @elapsed min_max5, trajectory5, m5, k5 = run_dynamics(config5) -pretty_print(min_max5, elapsed5, m5, k5) -is_solution_VI(min_max5, config5, config5.domain) -plot_trajectory2D(min_max5, trajectory5, config5.domain) -plot_contour2D(min_max5, config5.f, config5.domain) -plot_surface(min_max5, config5.f, config5.domain) - -config6 = example6(false); -elapsed6 = @elapsed min_max6, trajectory6, m6, k6 = run_dynamics(config6) -pretty_print(min_max6, elapsed6, m6, k6) -is_solution_VI(min_max6, config6, config6.domain) -plot_trajectory2D(min_max6, trajectory6, config6.domain) -plot_contour2D(min_max6, config6.f, config6.domain) -plot_surface(min_max6, config6.f, config6.domain) - -config7 = example7(false); -elapsed7 = @elapsed min_max7, trajectory7, m7, k7 = run_dynamics(config7) -pretty_print(min_max7, elapsed7, m7, k7) -is_solution_VI(min_max7, config7, config7.domain) - -config8 = example8(false); -elapsed8 = @elapsed min_max8, trajectory8, m8, k8 = run_dynamics(config8) -pretty_print(min_max8, elapsed8, m8, k8) -is_solution_VI(min_max8, config8, config8.domain) - -config9 = example9(false); -elapsed9 = @elapsed min_max9, trajectory9, m9, k9 = run_dynamics(config9) -pretty_print(min_max9, elapsed9, m9, k9) -is_solution_VI(min_max9, config9, config9.domain) -plot_trajectory2D(min_max9, trajectory9, config9.domain) -plot_contour2D(min_max9, config9.f, config9.domain) -plot_surface(min_max9, config9.f, config9.domain) - -config10 = example10(false); -elapsed10 = @elapsed min_max10, trajectory10, m10, k10 = run_dynamics(config10) -pretty_print(min_max10, elapsed10, m10, k10) -is_solution_VI(min_max10, config10, config10.domain) -plot_trajectory2D(min_max10, trajectory10, config10.domain) -plot_contour2D(min_max10, config10.f, config10.domain) -plot_surface(min_max10, config10.f, config10.domain) - -config11 = example11(false); -elapsed11 = @elapsed min_max11, trajectory11, m11, k11 = run_dynamics(config11) -pretty_print(min_max11, elapsed11, m11, k11) -is_solution_VI(min_max11, config11, config11.domain) -plot_trajectory2D(min_max11, trajectory11, config11.domain) -plot_contour2D(min_max11, config11.f, config11.domain) -plot_surface(min_max11, config11.f, config11.domain) - -config12 = example12(false); -elapsed12 = @elapsed min_max12, trajectory12, m12, k12 = run_dynamics(config12) -pretty_print(min_max12, elapsed12, m12, k12) -is_solution_VI(min_max12, config12, config12.domain) -plot_trajectory2D(min_max12, trajectory12, config12.domain) -plot_contour2D(min_max12, config12.f, config12.domain) -plot_surface(min_max12, config12.f, config12.domain) - -config13 = example13(false); -elapsed13 = @elapsed min_max13, trajectory13, m13, k13 = run_dynamics(config13) -pretty_print(min_max13, elapsed13, m13, k13) -is_solution_VI(min_max13, config13, config13.domain) -plot_trajectory2D(min_max13, trajectory13, config13.domain) -plot_contour2D(min_max13, config13.f, config13.domain) -plot_surface(min_max13, config13.f, config13.domain) - -config14 = example14(false); -elapsed14 = @elapsed min_max14, trajectory14, m14, k14 = run_dynamics(config14) -pretty_print(min_max14, elapsed14, m14, k14) -is_solution_VI(min_max14, config14, config14.domain) -plot_trajectory2D(min_max14, trajectory14, config14.domain) -plot_contour2D(min_max14, config14.f, config14.domain) -plot_surface(min_max14, config14.f, config14.domain) - -config15 = example15(false); -elapsed15 = @elapsed min_max15, trajectory15, m15, k15 = run_dynamics(config15) -pretty_print(min_max15, elapsed15, m15, k15) -is_solution_VI(min_max15, config15, config15.domain) -plot_trajectory2D(min_max15, trajectory15, config15.domain) -plot_contour2D(min_max15, config15.f, config15.domain) -plot_surface(min_max15, config15.f, config15.domain) - -config16 = example16(false); -elapsed16 = @elapsed min_max16, trajectory16, m16, k16 = run_dynamics(config16) -pretty_print(min_max16, elapsed16, m16, k16) -is_solution_VI(min_max16, config16, config16.domain) -plot_trajectory2D(min_max16, trajectory16, config16.domain) -plot_contour2D(min_max16, config16.f, config16.domain) -plot_surface(min_max16, config16.f, config16.domain) - -config18 = example18(true); -elapsed18 = @elapsed min_max18, trajectory18, m18, k18 = run_dynamics(config18) -pretty_print(min_max18, elapsed18, m18, k18) -is_solution_VI(min_max18, config18, config18.domain) -plot_trajectory2D(min_max18, trajectory18, config18.domain) -plot_contour2D(min_max18, config18.f, config18.domain) -plot_surface(min_max18, config18.f, config18.domain) - -config19 = example19(true); -elapsed19 = @elapsed min_max19, trajectory19, m19, k19 = run_dynamics(config19) -pretty_print(min_max19, elapsed19, m19, k19) -is_solution_VI(min_max19, config19, config19.domain) -plot_trajectory2D(min_max19, trajectory19, config19.domain) -plot_contour2D(min_max19, config19.f, config19.domain) -plot_surface(min_max19, config19.f, config19.domain) \ No newline at end of file diff --git a/external/StayOnTheRidge.jl/examples/multilinear.jl b/external/StayOnTheRidge.jl/examples/multilinear.jl deleted file mode 100644 index 4fc7cb0..0000000 --- a/external/StayOnTheRidge.jl/examples/multilinear.jl +++ /dev/null @@ -1,29 +0,0 @@ -using Revise -using StayOnTheRidge -using Symbolics -using LinearAlgebra - -eval_expr(expr, dict) = Symbolics.substitute(expr, dict) - -function generate_example(dim1, dim2) - n = dim1+dim2 - min_coords = collect(1:dim1-1) - γ = 1e-5 - ϵ = 1e-3 - domain = Default() - x = [Symbolics.variable(:x,i) for i in 1:n] - A = 5 .+ 2 .* randn(dim1, dim2) - A = round.(A, digits=2) - # display(A) - f = x[1:dim1]' * A * x[dim1+1:n] - f = eval_expr(f,Dict(x[dim1] => 1-sum(x[1:dim1-1]), x[n] => 1-sum(x[dim1+1:n-1]))) - for i = dim1+1:n-1 - f = eval_expr(f, Dict(x[i] => x[i-1])) - end - n = n-2 - x = [Symbolics.variable(:x,i) for i in 1:n] - return Config_FD(eval(build_function(f, x)), n, min_coords, γ, ϵ, domain) -end - -config = generate_example(3,3); -elapsed = @elapsed min_max, trajectory, m, k = run_dynamics(config) diff --git a/external/StayOnTheRidge.jl/imgs/example5_contour.png b/external/StayOnTheRidge.jl/imgs/example5_contour.png deleted file mode 100644 index e58836b7adebe043de90dbe22b53ff13bdcbe279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129053 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

6LmYb;YySE)miyORPmz#32p*v}+E*+qPL-?d3Jc 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%0Aj$wkMiPe-M{8 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 z%0D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 diff --git a/external/StayOnTheRidge.jl/imgs/example5_trajectory.png b/external/StayOnTheRidge.jl/imgs/example5_trajectory.png deleted file mode 100644 index 049b7868ce1875aa01376e11a7c6ed5146828572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13782 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 0 - @test_throws AssertionError Config_FD(f_fd, 2, [2,-3], 1e-2, 1e-2, domain) # each min_coord > 0 - @test_throws AssertionError Config_FD(f_fd, 2, [1,2,3], 1e-2, 1e-2, domain) # no of min_coords <= n - # MethodError - @test_throws MethodError Config_FD(f_fd, 2, 2, 1e-2, 1e-2, domain) - @test_throws MethodError Config_FD(f_fd, 2.2, [1], 1e-2, 1e-2, domain) - @test_throws MethodError Config_FD("function", 2, [1], 1e-2, 1e-2, domain) - end - @testset "Config_sym" begin - x = [Symbolics.variable(:x,i) for i in 1:2] - f = (x[1]-1/2)*(x[2]-1/2) - domain = Default() - # AssertionError - @test_throws AssertionError Config_sym(f, x, 2, [1], 1e-2, -10, domain) # ϵ > 0 - @test_throws AssertionError Config_sym(f, x, 2, [0,2], 1e-2, 1e-2, domain) # each min_coord > 0 - @test_throws AssertionError Config_sym(f, x, 2, [1,2,3], 1e-2, 1e-2, domain) # no of min_coords <= n - x = [Symbolics.variable(:x,i) for i in 1:3] - @test_throws AssertionError Config_sym(f, x, 2, [1], 1e-2, 1e-2, domain) # length(x) == n - # MethodError - x = [Symbolics.variable(:x,i) for i in 1:2] - @test_throws MethodError Config_sym(f, x, 2, 2, 1e-2, 1e-2, domain) - @test_throws MethodError Config_sym(f, x, 2.2, [1], 1e-2, 1e-2, domain) - @test_throws MethodError Config_sym("function", x, 2, [1], 1e-2, 1e-2, domain) - end -end diff --git a/src/ZeroSumGameSolve.jl b/src/ZeroSumGameSolve.jl index b9a7894..7754cea 100644 --- a/src/ZeroSumGameSolve.jl +++ b/src/ZeroSumGameSolve.jl @@ -1,5 +1,10 @@ module ZeroSumGameSolve +# TODO: isolate all deps here +# TODO: move tests into test/ +# TODO: rename all non-module files "file_name.jl" instead of "FileName.jl" +# TODO: function names are "FunctionName" if constructors or structs, and "function_name" otherwise, or "function_name!" if they modify any arguments (usually the first argument) + # Write your package code here. include("LineSearch.jl") include("ObjectiveFunctions.jl") From e66e77e3790a901761798d8030f315f287170617 Mon Sep 17 00:00:00 2001 From: Kushagra Gupta Date: Sun, 3 Aug 2025 14:50:40 -0500 Subject: [PATCH 3/3] [skip ci] gitignore --- .gitignore | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b067edd..ef76bda 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,31 @@ -/Manifest.toml +*.mp4 + +# Files generated by invoking Julia with --code-coverage +*.jl.cov +*.jl.*.cov + +# Files generated by invoking Julia with --track-allocation +*.jl.mem + +# System-specific files and directories generated by the BinaryProvider and BinDeps packages +# They contain absolute paths specific to the host computer, and so should not be committed +deps/deps.jl +deps/build.log +deps/downloads/ +deps/usr/ +deps/src/ + +# Build artifacts for creating documentation generated by the Documenter package +docs/build/ +docs/site/ + +# Emacs files. +#* +.#* +*~ + +# File generated by Pkg, the package manager, based on a corresponding Project.toml +# It records a fixed state of all packages used by the project. As such, it should not be +# committed for packages, but should be committed for applications that require a static +# environment. +Manifest.toml