From b731a39efb8bbae8a112e2429c271d77136007ed Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Fri, 30 Jul 2021 03:27:00 +0000 Subject: [PATCH 1/7] Initial commit --- MisterBiggs/SADC.jl/README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 MisterBiggs/SADC.jl/README.md diff --git a/MisterBiggs/SADC.jl/README.md b/MisterBiggs/SADC.jl/README.md new file mode 100644 index 000000000..cb0d868b0 --- /dev/null +++ b/MisterBiggs/SADC.jl/README.md @@ -0,0 +1,2 @@ +# SADC.Jl + -- 2.51.2 From a7db0c1a8b70225225ef1044493c7bdb422802fe Mon Sep 17 00:00:00 2001 From: Anson Date: Fri, 30 Jul 2021 00:14:37 -0700 Subject: [PATCH 2/7] Everything except integrators implemented for #3 --- MisterBiggs/SADC.jl/Quaternions.jl | 54 ++++++++++++++++++++++++++++++ MisterBiggs/SADC.jl/SADC.jl | 23 +++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 MisterBiggs/SADC.jl/Quaternions.jl create mode 100644 MisterBiggs/SADC.jl/SADC.jl diff --git a/MisterBiggs/SADC.jl/Quaternions.jl b/MisterBiggs/SADC.jl/Quaternions.jl new file mode 100644 index 000000000..e5e685a29 --- /dev/null +++ b/MisterBiggs/SADC.jl/Quaternions.jl @@ -0,0 +1,54 @@ + + +export Quaternion + +struct Quaternion + i::Float64 + j::Float64 + k::Float64 + r::Float64 + + Quaternion(i, j, k, r) = + norm([i, j, k, r]) ≈ 1 ? new(i, j, k, r) : error("Magnitude not equal to 1.") + Quaternion(q) = Quaternion(q[1], q[2], q[3], q[4]) + Quaternion() = new(0, 0, 0, 1) + + Quaternion(yaw, pitch, roll) = + Quaternion([0 0 sin(yaw / 2) cos(yaw / 2)]) * + Quaternion([0 sin(pitch / 2) 0 cos(pitch / 2)]) * + Quaternion([sin(roll / 2) 0 0 cos(roll / 2)]) + + function Quaternion(ē, ϕ) + if sum(ē) == 0 + return Quaternion([0 0 0 cos(ϕ / 2)]) + end + dir = normalize(ē) * sin(ϕ / 2) + return Quaternion(dir[1], dir[2], dir[3], cos(ϕ / 2)) + end + +end + +function QuaternionMultiplication(l::Quaternion, r::Quaternion) + R = [ + r.r r.k r.j r.i + -r.k r.r r.i r.j + r.j -r.i r.r r.k + -r.i -r.j -r.k r.r + ] + L = [l.i; l.j; l.k; l.r] + return Quaternion(R * L) + +end + +Base.:*(l::Quaternion, r::Quaternion) = + QuaternionMultiplication(l::Quaternion, r::Quaternion) + +Base.iterate(q::Quaternion, state = 1) = + state > 4 ? nothing : (collect(q)[state], state + 1) +Base.length(q::Quaternion) = 4 +Base.collect(q::Quaternion) = [q.i q.j q.k q.r] +Base.getindex(q::Quaternion, i) = collect(q)[i] +Base.isapprox(a::Quaternion, b::Quaternion) = isapprox(collect(a), collect(b)) + +LinearAlgebra.norm(q::Quaternion) = norm(collect(q)) +LinearAlgebra.normalize(q::Quaternion) = collect(q) / norm(q) diff --git a/MisterBiggs/SADC.jl/SADC.jl b/MisterBiggs/SADC.jl/SADC.jl new file mode 100644 index 000000000..adce15e23 --- /dev/null +++ b/MisterBiggs/SADC.jl/SADC.jl @@ -0,0 +1,23 @@ +using LinearAlgebra + +include("Quaternions.jl") + +I = [3 0 0; 0 4 0; 0 0 2] +T = [0; 0; 0] +dt = 0.005 +ω₀ = [2.001; 0.001; 0.001] +q₀ = [0; 0; 0; 1] + + +integrate_ω(T, I, ω) = inv(I) * (T - cross(ω, I * ω)) + + +integrate_ω(T, I, ω₀) + +function q_step(β) + mag = β .^ 2 |> sum |> sqrt + + Quaternion([normalize(β) .* sin(mag / 2); cos(mag / 2)]) + +end + -- 2.51.2 From 2cbd65b1811cad03819ecb0c8281b3deb7217c88 Mon Sep 17 00:00:00 2001 From: Anson Date: Mon, 2 Aug 2021 02:43:34 -0700 Subject: [PATCH 3/7] Simulink 2 fully implemented #3 --- MisterBiggs/SADC.jl/DancingT.png | Bin 0 -> 33094 bytes MisterBiggs/SADC.jl/Quaternions.jl | 48 +++++++++++++++++-- MisterBiggs/SADC.jl/README.md | 1 + MisterBiggs/SADC.jl/SADC.jl | 74 ++++++++++++++++++++++++++--- 4 files changed, 112 insertions(+), 11 deletions(-) create mode 100644 MisterBiggs/SADC.jl/DancingT.png diff --git a/MisterBiggs/SADC.jl/DancingT.png b/MisterBiggs/SADC.jl/DancingT.png new file mode 100644 index 0000000000000000000000000000000000000000..5ddad21027ae0791dcefb261461881507fb6b9f7 GIT binary patch literal 33094 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 1) + pitch = copysign(π / 2, sinp) # use 90 degrees if out of range + else + pitch = asin(sinp) + end + + # yaw (z-axis rotation) + siny_cosp = 2 * (q.r * q.k + q.i * q.j) + cosy_cosp = 1 - 2 * (q.j * q.j + q.k * q.k) + yaw = atan(siny_cosp, cosy_cosp) + + + # return EulerAngles(roll, pitch, yaw) + return (roll = rad2deg(roll), pitch = rad2deg(pitch), yaw = rad2deg(yaw)) + # return (roll = roll, pitch = pitch, yaw = yaw) +end + diff --git a/MisterBiggs/SADC.jl/README.md b/MisterBiggs/SADC.jl/README.md index cb0d868b0..81aabde5f 100644 --- a/MisterBiggs/SADC.jl/README.md +++ b/MisterBiggs/SADC.jl/README.md @@ -1,2 +1,3 @@ # SADC.Jl +![](DancingT.png) \ No newline at end of file diff --git a/MisterBiggs/SADC.jl/SADC.jl b/MisterBiggs/SADC.jl/SADC.jl index adce15e23..340420ead 100644 --- a/MisterBiggs/SADC.jl/SADC.jl +++ b/MisterBiggs/SADC.jl/SADC.jl @@ -1,18 +1,23 @@ using LinearAlgebra +using NumericalIntegration + + include("Quaternions.jl") -I = [3 0 0; 0 4 0; 0 0 2] -T = [0; 0; 0] dt = 0.005 -ω₀ = [2.001; 0.001; 0.001] -q₀ = [0; 0; 0; 1] +time = 0.0:dt:100 +I = [3 0 0; 0 4 0; 0 0 2] +T = [0; 0; 0] +ω = [2.001; 0.001; 0.001] -integrate_ω(T, I, ω) = inv(I) * (T - cross(ω, I * ω)) +q = Quaternion([0; 0; 0; 1]) +ω_last = [0; 0; 0; ω] +ω_temp = similar(ω_last) -integrate_ω(T, I, ω₀) +integrate_ω(T, I, ω) = inv(I) * (T - cross(ω, I * ω)) function q_step(β) mag = β .^ 2 |> sum |> sqrt @@ -21,3 +26,60 @@ function q_step(β) end +function integrate_vector(v, v_last) + v_new = similar(v) + for i = 1:length(v) + v_new[i] = integrate([0, dt], [v_last[i], v[i]]) + end + return v_new +end + +yaw = [] +pitch = [] +roll = [] +for t in time + + + ω′ = integrate_ω(T, I, ω) + ω_new = integrate_vector([ω; ω′], ω_last) + ω = ω_new[4:6] + + β = ω_new[1:3] .- ω + + q = q * q_step(β) + + y, p, r = q_to_Euler(q) + push!(yaw, y) + push!(pitch, p) + push!(roll, r) + +end + + + +# Plot +# using Plots +# let +# plot(time, yaw, label = "Yaw") +# plot!(time, pitch, label = "Pitch") +# plot!(time, roll, label = "Roll") +# title!("Dancing T Handle") +# xlabel!("Seconds") +# ylabel!("Degrees") +# savefig("DancingT.png") +# end + +# Write to CSV +# using CSV +# using DataFrames + +# ts = 100 +# df = DataFrame( +# time = time[1:ts:end], +# yaw = yaw[1:ts:end], +# roll = roll[1:ts:end], +# pitch = pitch[1:ts:end], +# ) + +# CSV.write("ypr.csv", df, header = false) +# df -- 2.51.2 From 4872a8131599dfd505cf44bf476d3d26f5bac2e0 Mon Sep 17 00:00:00 2001 From: Anson Date: Mon, 2 Aug 2021 02:44:50 -0700 Subject: [PATCH 4/7] added script to import sim to blender for viz --- MisterBiggs/SADC.jl/blender.py | 15 +++ MisterBiggs/SADC.jl/ypr.csv | 201 +++++++++++++++++++++++++++++++++ 2 files changed, 216 insertions(+) create mode 100644 MisterBiggs/SADC.jl/blender.py create mode 100644 MisterBiggs/SADC.jl/ypr.csv diff --git a/MisterBiggs/SADC.jl/blender.py b/MisterBiggs/SADC.jl/blender.py new file mode 100644 index 000000000..99b209289 --- /dev/null +++ b/MisterBiggs/SADC.jl/blender.py @@ -0,0 +1,15 @@ +import bpy +import csv + + +f = start_frame = 1 +frames_per_row = 1 / 100 +csv_path = "C:\Coding\SADC.jl\ypr.csv" + +ob = bpy.context.object + +with open(csv_path) as file: + rows = csv.reader(file, delimiter=",") + for row in rows: + ob.rotation_euler = [float(v) for v in row[1:4]] + ob.keyframe_insert("rotation_euler", frame=float(row[0])) \ No newline at end of file diff --git a/MisterBiggs/SADC.jl/ypr.csv b/MisterBiggs/SADC.jl/ypr.csv new file mode 100644 index 000000000..4c4d5cb5d --- /dev/null +++ b/MisterBiggs/SADC.jl/ypr.csv @@ -0,0 +1,201 @@ +0.0,-9.540335165199443e-8,0.00014331106844745883,7.16555343728998e-5 +0.5,-28.59055520794292,-0.010067963240155036,-0.01712250020844832 +1.0,-57.18110682282848,-0.010805653071259233,-0.03710627751075855 +1.5,-85.77166058830477,-0.0018902097489129697,-0.0550062866055157 +2.0,-114.3622225182562,0.01450410454832978,-0.066457136840862 +2.5,-142.9527967511293,0.03437910106745392,-0.06866623381451453 +3.0,-171.54338374298828,0.052887728492160564,-0.061094832113965575 +3.5,159.86602047819648,0.06551616511608903,-0.04558942362000769 +4.0,131.275423665418,0.06918463901954665,-0.025931416517365226 +4.5,102.68483538960747,0.06299850446726275,-0.00691493498399178 +5.0,74.09426424942235,0.04846641682602987,0.006822352628997159 +5.5,45.503715039717974,0.029132408671674246,0.011930248350437713 +6.0,16.91318674970176,0.009711588042970218,0.007163058983439075 +6.5,-11.677327910746143,-0.005059766626609895,-0.006316607899844169 +7.0,-40.26784115889305,-0.011579274425059233,-0.02522137838659732 +7.5,-68.858367187227,-0.008256982834969695,-0.04494082628033537 +8.0,-97.44891833167111,0.004096883309627242,-0.06066584439360147 +8.5,-126.03950139189422,0.02246950987811131,-0.068561470007655 +9.0,-154.63011516579775,0.04238024102004465,-0.06670214496734295 +9.5,176.77925000968997,0.058973310980521484,-0.05554131811784771 +10.0,148.18861042353888,0.06820206153972722,-0.03780085791147009 +10.5,119.59798518372959,0.06781582641625657,-0.017807247086120335 +11.0,91.00739132138274,0.05790880600678322,-0.0004364539841475853 +11.5,62.41683904968017,0.04089708974476031,0.010075197668277141 +12.0,33.82632847391289,0.020929433039027345,0.01116416609383035 +12.5,5.2358487541623475,0.0028754758255636246,0.002564879897633679 +13.0,-23.354619869442676,-0.008861850407675047,-0.013625495582925461 +13.5,-51.94510152779969,-0.011420092517712647,-0.033458509677587275 +14.0,-80.53561869699085,-0.004175354872780828,-0.052097359804918114 +14.5,-109.12618620713585,0.01110554628850456,-0.0649964699648674 +15.0,-137.71680687646906,0.03069595899542869,-0.06901004925683588 +15.5,-166.30747001595438,0.0498182357131141,-0.06315928069017879 +16.0,165.10184664121246,0.06380889854116736,-0.04887103377728024 +16.5,136.5111718964889,0.06925595914313298,-0.02962988030896679 +17.0,107.92053406370627,0.06483101677462619,-0.010128284597550078 +17.5,79.32995367280354,0.051613214734394446,0.004877776889102558 +18.0,50.739437767824235,0.03282606263865181,0.011728682347527504 +18.5,22.148977359178417,0.013051303114404736,0.008753659568045672 +19.0,-6.441451139734371,-0.0028884676004996565,-0.003321751047727363 +19.5,-35.03188065056317,-0.011105919243187577,-0.02155264012264158 +20.0,-63.62234550514704,-0.009597011743670926,-0.04149292489523467 +20.5,-92.21287277073645,0.001270270924516018,-0.05827964163947069 +21.0,-120.80347502189994,0.018845658247815426,-0.06781890481252872 +21.5,-149.39414647715208,0.038842923679487974,-0.0677843113457418 +22.0,-177.98486363200416,0.05638519735179882,-0.05818430016656344 +22.5,153.42440958401014,0.06719433070166426,-0.04136009353713161 +23.0,124.83371324713032,0.06863423850184715,-0.021414722449638424 +23.5,96.24308150209615,0.0603537688975343,-0.0032123913872468763 +24.0,67.65253370364768,0.044372334859103225,0.0088077834786061 +24.5,39.062068922447686,0.024587430227489333,0.011714367265937444 +25.0,10.471665346847498,0.005824126100892692,0.004798514951128974 +25.5,-18.11871506508976,-0.0073416525039399225,-0.01025315777185261 +26.0,-46.70911764992007,-0.011699086830776076,-0.02976990245860927 +26.5,-75.2995839170584,-0.006185501805092832,-0.048992047108011375 +27.0,-103.8901409761802,0.00785447351712944,-0.06323176448203865 +27.5,-132.48079420766834,0.0269968211881344,-0.0690163213188045 +28.0,-161.07152513812488,0.04657316704183603,-0.06493500016301662 +28.5,170.3377047693353,0.061809295116142055,-0.051983143338385905 +29.0,141.7469451664547,0.06898947568440791,-0.03331940903513909 +29.5,113.15624478606178,0.06636264090494615,-0.013495443600161125 +30.0,84.56563923371924,0.054569419225140206,0.002654157772143628 +30.5,55.97514165418658,0.03648589920398398,0.011190891051591004 +31.0,27.384738705928196,0.016522224055282784,0.01003285038853197 +31.5,-1.2056069695747607,-0.00045293756345371006,-0.0005375429652832332 +32.0,-29.795948187536297,-0.010299747580246535,-0.01794241746998934 +32.5,-58.386340519389755,-0.01061680457157343,-0.037937135400001064 +33.0,-86.97682850983422,-0.0013267837806374865,-0.05564545831102285 +33.5,-115.56743423609356,0.015304701901930479,-0.06674874316532087 +34.0,-144.1581511438588,0.035221622848238446,-0.06853915860032816 +34.5,-172.74894485010972,0.05356670330519357,-0.06058006597109708 +35.0,158.6602390960239,0.0658660072173963,-0.04481250592641772 +35.5,130.06946223918646,0.06912003069437292,-0.02508181906815294 +36.0,101.47877811787474,0.06253520256153013,-0.006199854255025264 +36.5,72.88821873645658,0.04771740988707305,0.007228525646537054 +37.0,44.297786018063086,0.028280361922232912,0.011928457927867713 +37.5,15.707450504973263,0.008964295703553619,0.006753742070312169 +38.0,-12.88284216757216,-0.005520057581460226,-0.0070336282627097195 +38.5,-41.47315842398914,-0.011640309917455873,-0.02607123765540616 +39.0,-70.06356056053008,-0.007903877549014072,-0.04571626369981885 +39.5,-98.65409116791943,0.004778015659931479,-0.061177748842668245 +40.0,-127.24476206343373,0.023312557250844683,-0.06868499975760911 +40.5,-155.8355505986009,0.04317960380969601,-0.06640717385346886 +41.0,175.57359556459633,0.05953404338246103,-0.05489978266992451 +41.5,146.98274619809223,0.06838741452307134,-0.03696921350860845 +42.0,118.39197163943784,0.06758059728098631,-0.016988311982918093 +42.5,89.80132538423227,0.057310361871169564,0.00017005319938174284 +43.0,61.21083043985211,0.040081377112940804,0.010321364447840955 +43.5,32.62047291198595,0.020095385097990925,0.010989958488624515 +44.0,4.030204587332793,0.0022264972755115854,0.00201278335026805 +44.5,-24.560045914248942,-0.00916748904849798,-0.01442083748324968 +45.0,-53.150355986456944,-0.01130785315150783,-0.034303131655546534 +45.5,-81.7407900059186,-0.003672609738302506,-0.0527852783321733 +46.0,-110.33138310987552,0.011876189783635934,-0.0653599176610499 +46.5,-138.92213187021142,0.031546558993934506,-0.06896038952199948 +47.0,-167.5129943211449,0.0505413507020782,-0.06270862428448837 +47.5,163.8961004751636,0.06422817794084834,-0.04812928522922367 +48.0,135.3052354998131,0.06926915109245285,-0.028777934530235198 +48.5,106.71448552251901,0.06443490451579291,-0.009373910791595054 +49.0,78.12389845935651,0.0509044008798958,0.00535060508248941 +49.5,49.53348298322766,0.031977410259315504,0.011804653579016961 +50.0,20.943205579900766,0.012269778630249492,0.00841424654795358 +50.5,-7.647002025201743,-0.00341226877682815,-0.0039937731793075115 +51.0,-36.23722669279316,-0.011244254404558078,-0.022393380805557715 +51.5,-64.82755277514141,-0.009316144058678607,-0.04229734718278749 +52.0,-93.41804122833136,0.0019018447923364612,-0.05885156571039921 +52.5,-122.00871410852538,0.019673912472099694,-0.06801885156902297 +53.0,-150.59954839098737,0.03966586638494115,-0.06756351827810866 +53.5,-179.19048081126658,0.05700213208086963,-0.05759661350136629 +54.0,152.21857726938967,0.06745480192676968,-0.0405488362297365 +54.5,123.62771846533839,0.06847472396641462,-0.02057774086405691 +55.0,95.03701659724621,0.05981317076840905,-0.0025538052652869674 +55.5,66.44650814375797,0.043582492378542004,0.009127360837628565 +56.0,37.85618256688831,0.023740967454548463,0.011616998770706063 +56.5,9.265984062197264,0.005127475439757568,0.004307946795227177 +57.0,-19.32417548749369,-0.007718594416373239,-0.011017287303654704 +57.5,-47.91439534974178,-0.011664392748367785,-0.03062124003354372 +58.0,-76.50476165357082,-0.005747632539744723,-0.0497229714366692 +58.5,-105.09532592223519,0.008588732290172546,-0.0636640201052333 +59.0,-133.686091780562,0.027848401056252105,-0.06904449098791414 +59.5,-162.27701325600998,0.047334387513102615,-0.06455221383961546 +60.0,169.13199471821068,0.06229451249579014,-0.05128275363187442 +60.5,140.541035991751,0.06908035734932229,-0.03247222444974118 +61.0,111.95020792587059,0.06603702344816259,-0.012708072228162792 +61.5,83.35957730780575,0.053906713282998564,0.003189694965109304 +62.0,54.76916340265408,0.03564772321290235,0.011343989477370078 +62.5,26.178932435352674,0.015712989491737894,0.009766173248237692 +63.0,-2.4111949482337303,-0.001035877426054603,-0.0011589590914299354 +63.5,-31.001324866127856,-0.010514227509182924,-0.018767023609234414 +64.0,-59.59156448602173,-0.010410517872673095,-0.0387638294343333 +64.5,-88.1819956453809,-0.0007500385858447991,-0.056272628889425476 +65.0,-116.77265430412385,0.016111251250653404,-0.06702343787879217 +65.5,-145.36352098766884,0.036061277828966565,-0.06839438564092111 +66.0,-173.95452474123874,0.054234691677707364,-0.060051132019650046 +66.5,157.45444018006242,0.06619942259138017,-0.04402840555257845 +67.0,128.86348880962555,0.06903756145016486,-0.024233775743028263 +67.5,100.27271730443623,0.06205696139004403,-0.005494685434901294 +68.0,71.68217900804656,0.046960028663353526,0.0076188462499230366 +68.5,43.09187069365575,0.027428548161476825,0.011908740615554598 +69.0,14.501732524766087,0.00822578680349415,0.00632879573918336 +69.5,-14.08833805128197,-0.005965156725478224,-0.007760168927884809 +70.0,-42.67846169027338,-0.011683450146732704,-0.02692218633844234 +70.5,-71.26874772360254,-0.007534537768910136,-0.04648409396147584 +71.0,-99.85926709716568,0.00546976252216724,-0.061675204761868975 +71.5,-128.4500343778182,0.024158010507479455,-0.0687907632618047 +72.0,-157.04100338566155,0.043972577112445475,-0.06609545155534897 +72.5,174.3679222868271,0.06008114918914102,-0.054246596322657596 +73.0,145.7768662575955,0.06855522702357492,-0.036133859863675594 +73.5,117.18594933464412,0.06732819148067355,-0.016174513882045112 +74.0,88.59525978047284,0.0566992938597433,0.0007638299318393347 +74.5,60.0048311752806,0.03926067205795562,0.010550311982606489 +75.0,31.414633424043743,0.01926519372224992,0.010798242213761449 +75.5,2.824579298112492,0.0015892837488054184,0.0014471586605620144 +76.0,-25.765454885139622,-0.009456323422024366,-0.015222427808112364 +76.5,-54.3555993400129,-0.011177868428683478,-0.03514519849990161 +77.0,-82.94595888686369,-0.0031555058242598738,-0.05346246129990001 +77.5,-111.53658685434081,0.012654303702853652,-0.06570706751666354 +78.0,-140.12747130801492,0.03239591918585668,-0.06889284432936105 +78.5,-168.71853715065512,0.05125481801888769,-0.06224285665417755 +79.0,162.6903362239509,0.06463175466279543,-0.047378884960658015 +79.5,134.09928587166883,0.06926441487894033,-0.02792590647581425 +80.0,105.50843183451273,0.06402301085457773,-0.008628044212979009 +80.5,76.91784744043187,0.05018580108639595,0.005808411256962203 +81.0,48.327540709254954,0.031127353965276064,0.011862751515287644 +81.5,19.737451571499214,0.01149557463645691,0.008058467833326888 +82.0,-8.852534218059333,-0.00392181035865717,-0.004676662199292274 +82.5,-37.442557681863235,-0.01136486844337246,-0.023236839398009385 +83.0,-66.03275230303478,-0.009018415475166188,-0.04309567556696583 +83.5,-94.62321114308666,0.0025453073597784936,-0.05941007021806719 +84.0,-123.21396349706842,0.020506183807841936,-0.06820132581589836 +84.5,-151.8049669402303,0.04048397492648779,-0.06732546089573994 +85.0,179.60388309787928,0.05760656032361279,-0.05699608108198548 +85.5,151.01272838193722,0.06769814439825861,-0.03973228449985223 +86.0,122.42171349559993,0.06829763570798773,-0.019744307362302187 +86.5,93.83095037725049,0.05925883975099843,-0.0019067444360670778 +87.0,65.24049046217188,0.04278610696775879,0.009430246440308645 +87.5,36.65031135812396,0.022896747377847974,0.01150184278182663 +88.0,8.06032149383895,0.0044413061566099905,0.003802833359801149 +88.5,-20.529618192413455,-0.008079372434060032,-0.011789172653856884 +89.0,-49.11966065328141,-0.011611794239177412,-0.031471652508595384 +89.5,-77.7099353382855,-0.0052944847732485124,-0.05044451535386731 +90.0,-106.30051614949528,0.009331917565190462,-0.06408072766068183 +90.5,-134.89140268086956,0.028700378447501985,-0.06905473674296461 +91.0,-163.4825194980286,0.048087379583153025,-0.06415349898516368 +91.5,167.9262661676415,0.06276488228244764,-0.05057231537233541 +92.0,139.33511245763643,0.06915339321875434,-0.03162332188547526 +92.5,110.74416435254184,0.06569491415368277,-0.011927732417736743 +93.0,82.15351795428441,0.053232891420567356,0.0037111658884455487 +93.5,53.563196379995716,0.0348065181296859,0.011479417355497441 +94.0,24.97314330712006,0.01490955138871275,0.009482530713752131 +94.5,-3.616764056492267,-0.001605608901390079,-0.0017924979992692148 +95.0,-32.20668555116898,-0.010711308337964921,-0.019595953462072015 +95.5,-60.79677923713509,-0.01018688457956764,-0.03958599366384824 +96.0,-89.38716259096554,-0.00016022972397910108,-0.05688752085139568 +96.5,-117.97788325485979,0.016923395405007556,-0.06728109962598877 +97.0,-146.56890662180723,0.03689769430087037,-0.06823197931109083 +97.5,-175.1601234794685,0.05489139803358571,-0.05950826466473973 +98.0,156.2486239590645,0.06651626387838708,-0.043237469767523594 +98.5,127.65750384172479,0.0689372680803507,-0.023387661984188585 +99.0,99.06665353699172,0.06156399292606542,-0.004799740577845268 +99.5,70.47614563092803,0.04619460861318029,0.007993141875452556 +100.0,41.8859694737608,0.026577344522479215,0.011871105424690007 -- 2.51.2 From 68b78c3b902ee4d9cb88f81871ebd8562b1e9b1b Mon Sep 17 00:00:00 2001 From: Anson Date: Tue, 3 Aug 2021 22:34:30 -0700 Subject: [PATCH 5/7] work with help from matty --- MisterBiggs/SADC.jl/DancingT.png | Bin 33094 -> 32620 bytes MisterBiggs/SADC.jl/Quaternions.jl | 4 +-- MisterBiggs/SADC.jl/SADC.jl | 56 ++++++++++++++++------------- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/MisterBiggs/SADC.jl/DancingT.png b/MisterBiggs/SADC.jl/DancingT.png index 5ddad21027ae0791dcefb261461881507fb6b9f7..1eccfd4f0fb5eacda0233d73a12feddc7be277ba 100644 GIT binary patch literal 32620 zcmeAS@N?(olHy`uVBq!ia0y~yV2WU1V4T3g#K6GtH@x#a0|NtFlDE4H!+#K5uy^@n z1_lKNPZ!6KiaBrQmM4US{`x-OdhZ=i{Rw8q3%#b^JL2k~vq5Z%Xu-za>mKY{VIL_S zG$q#IZm7o@$e=&wCb~d%pgO zU*);I#qVn86`%WD!>`_@WFW!A*6gUwb%{3t%v3oeXe1H%yj{L-$M<{H<~cVUb}7!C zx_;lUSB>m)H#VpHe>ib!s`mT6-|umY>j~tDE+3CL_|Bvm?9$Q#IWmXS}|= z{QQo>$4&pk!o&Z6ILvQoXz1L|m;1wPZ=C$6$4v@9YV78p7ylIcQq@r)CC8xIQS2Fq zWNdrp)+qs$=ezazHl*cKk;JIi;`W|?{*~r`SDTNt>?$D*X#fP zeP93oA%8u`zE_`r^2ym${QL9s(xppJo;=x@eEi$X%gZmC%h=b&2(&0Vx9zz5F8B7f zx%TyThK7Zwrf6nnX8NA3+*I6g#vXZNM0_~6I|@9Y$P#v{`9yiP6oM(2aOZfuZ!6!!~jxn^XVYF{E=hF z%=QRc^v$*`UUvCq&X0pno}?_kSn=gW;O3h$HOu4H-`|oMtSmgg=9A}zlb#w=Pu2hX zJpa<_`E|cE8EpQ1IDGK?{rdlZ88)Pzp0+Z0x!Ip9f4|??=Wsfle{WA^@!@4^Dk^X8 z>@+qsG}P16JJY>6_qG{>gmIeBjQ9WFY(CHM;FR`yo}a6pO#AlkuC&djf`?9P!)|}j zF_Aj^=xDce-K#e@H!~PyURvTi+w7x_d`)^()GdDdKNmjCE!$mtYfC2Y{@inOEbD*Y zzR!^G_0`pb+hZ%APGtxP2oSJQ;yAR(wY$VB_V9VXxmH`3EmJ!qoF2gKJuR`MHgD%s zF$RmmM=qtMTT7Pg+4JYs>h|Xcl}e-%$oOq4dusrd8pxODBc=bwFN zo4xJQUiahG>h=5n|NE^zzvj~8k9UgC+lGdQ9{gVO?Pj|9-ICzc)TfV*cK6F#m;L(k zGWYhjzYqEAGxBEYo><&(H*5a<{e_Q@Eq3o;7rWcc(z5dGEYsO$xm^1mzPPy9IQ`t0 zs=cej)}A_f(z5i`mDuvTrLWg+x0>r$sn;tL5)yK!`u*Pdb-!MooUHCY$KvDvfA{~t zzPI=Hqodu|*G6A|F?YHD{C%(2?S6KC{{Hg!_wMd4KR?58@s1ro*6n_m^<&=ecf0dn zUt1d3OW0V#=)$Lt01;PB!zVX3CZFAVFl}?Bj@Vqk^zFBs*(Xn)%=lp6 z?|0ch&P8rcV?6Nd>+7ZUd*kxM!o(PAKAluQTU%MI?6mpjn*xg__NBkN?*DyPeo%S; z-?#aU53YvC=l;mu|NrlMMul6-hi1%}adDx61W&=sjt!d2{pW|R3_0A+&o4L8t%X5A zMzwpT_ zz(U5p?acRYTXU~4Eu&Mp^B{Ssth4u0FeUFt4uB#pEmEK;$Bu`EFJ~7Q7f1ilX+9{UxcGH&OpK21s?zuOVy!l% zoSbyDTU=d5C8qxGSFvtaulqmVY(D?(-QCyUe@oYeExx!SWcnSoON(RnXk3a855N9l z_HCELh5jE-H{aLk-TUbAW9hx_tFM~}|QX)68b)@A-Ia$`p~4x$EQh zTIuVrzj!p~R?f-A?5l;|mRU2He3>ic+i$XH*)lc;yZ?WRmj>N@vGm7}AIsP!d)h!X z#xD=!%$Y88Lx|NoQDa$n6iXWI1X=2rKs<&(aI?$g;`ly|9)NH&*V^0`s&KcV7vM6&G-NGb=KF2J98yNJLu{C|Np+* zTS`@P&YU^(3u4<6a1 zJNL<0Ui!q|&LhdhaKG+%E{mHa52$XP>D=}@=WzO)8yjt_zF1Uzc+f6icjF(MdCTJ+mc`G0{QcL;Ezb7bd#>N}NvhsY zOs~i}#hqE|J>6`U2=C;VmzOgin4P~*^Xx>gn%{4?ul1UJuk!g^uGU9eug7WY=;VBv zq`)D&>Q>7|#>C*oJ?jo1Y-XQd@raY5VE5h7(9ob>1%@73>$1abya%n`$=Oz=q@}&P zzrX(8p33iciu=P>-`!RE`qEPG&6_u$pKpIZY_ZqUPiwc|+x6{McKX>_Ur#9a|M|9k ze{XNEZTY)9>ho)iQcg^0m#bP~o4%#s;h}!}e?RV)-#>fy?B0iM(sTTt|N8p+@#DwI z$;pDBQV%8m`SDR}>Z`BUc^a1rNlHp?zf*L2j%D#O-`Up; zVx5)-<=)uv@Y(GAy2rid_bMLqzC7{yynTFNpyE~KZBsobtJVJd`JCV8!+|bQ?XWcw zin3R-whF8HWL*EraOCLGxA*q`_OJhSdHMXhUFGlNdfkdo>uv`%Eg~Z$*FNiiFk$Z8 zzt3jppPOy|e&cbu>NgvYGbq^E)jdAes~x_sC+F^$v*!0pcE-Hl|G(}+>D~JOe{HM2 zOmLbb7O^SCGb`)WBG>LEX)KaPDIQf-RV=!R7ns#I$-a`DJO9?LTWvx5R&({#)Rrxr z5+3}f?05P7+Uc`rON)z}Cmw2Cyg zEn7^~)YLRJS3WGa~+FjOq*s__U6U{lUbKv>S$?o_4o7FEm^eaP}=6w z_xJV&X1e(K^#!e*qV+{ua_x#09=^U;UzS)}THd^Q^YO9X+uQTwEyUe7t-JnOy7R!+ zKXuIq1uoS;dH%fGX5N`IXWEj|Qd3iZe}Av9tv$KLt=BENuyEt;w`Q}?25~(4{F94| z>q}Mb;xD(j#r0x#6ey~yF1^@a`sYWXXLiYz6@j(CzpY)la^<>peqLT&Vh2P-MJ?z0 zt-g9oWBK*BW$*9r|NrOb=S3Q2@9)(;uhx8#;~9r!kKeJ${&qWSetv4@7T1g2 zHKin4qGugLaSM-Id)l=%k&ln}%bR9Rnc}!B^YSwDdlkxxiVvThoZMShkzgP(@!&NM z$sWG5`uqPVWlmswd3pKyU8S#Qh^H7lY3c>Z_$mlk6g@dH(>PsATf5gS`TxJa?!8h+ zmjp@hNGA48IGA7{5ptO8l_aR|VG8PT@US&!%}`DObwREgxSs&^MOMKT$|yD;OfXon z?6t+AUAuO*Wlh!yt_j^8{dvvt>aLwk^Pm^lJ zh1(B1?&1^?6Mq>N&~o`@%6Va*l=^ukvJgAmSa4a^X6eM%d@vz^x44Cet@+>r zsb?JMuFa92UDVRPk6S@{Z)SBux?$GNcjvbz{pbHPLyYl3e0od${DWc(X8u~b|3qU| z?)NEO-`^g6=Ty9(w`NXzRqkq=3!iK4izfcG_v7l9KeBHdv-$7-_y-2M^HvGIztvki z>%6S!ziPg%+?@=6?LJrs&U4n{QI74f(wA9vVA_Ng1>MhI9r4VpFpqXGZd=8z#GHFg<_lf2O6nt1Dc3Dm2dgtP4g|pZm zZ%sWtEw=jY)=kn$eH+d`xy6~G`SiwyUM?jOizD+4SC~iZ{mNu=SQq<;cfq{0eX$}g z0Sj)al;q|nt&-c$ebaF5)ydBtW<`CjusM44X!Q2HqlVWnRy>=TzH0UA#UIa}5!^PD zOWfjb!hyX-E_v@`q`&kW-0JbdWa3AzfF~lxy&)`;i-Q9Ejr(2Z%xYh;Wc9_2HeTtr z^!3Vu^78Ua^V70ha@|x6HB>%{9F}hrvviUFWhUy<_T$IB>5~)=ziZ|)-*&NPji92k z*M|H0LL4?nIa)uT5Mx#nd9Z99gXwj%^Lkt_)Vt)p89U`gid{~0u$>WfWBNBY>=~1I znV33bJwJnG&I%D(8%B*np%42`h&B35Xv~?QXbe(TH%EI?#WI1J#z*YWI<>zzKEGep znCIxW4*6>WhFRZ>L*;T7gA)FRvmdgU7!}qZtLr+tg0m;;ix!h(n_Hu;e0GQ+hf#&; zw(n1`PI!Od-g+}PUxjH#D_xW(@;d9yP|h(Hn|HWABHH(c+vT2^t?ng{r@c*+w5)lb z{mk--!r?Q)g|pa1kE~dDr8DbFQ{8fghF0~>Ql}W* zxx;O(%eu9k)hnhPb)Fc^^I+bJt1b@`a}5hm*snP1qH;oE^QALjjXqs{#Xk?eb2iN~ z6pZ+}VaA61d?kNF?(>S)PQ8=7FBZ1$_`LDQMv)0Swu#AodUNCR#z?our>9G@K(3Wh zKWmg|fAoX6;s^D{%RDiy(O(`dTNmMTqqvPB!7y>X$z)EW3(1;syl$dXb_ev%>P^`+ z|3pww(5FM(`aACKpO*XX*4FIH%Y0d8ix{2}bZa`=GS|Z?#qL_xp>O-V`VQ2rX;uFq za+u#}Q-wxJ!ujKqI3Ha2ojWaXK|$7*>hJG%m%Xj}b~Alxy|1+Ok$+eEd){yew;Uuf~Fm2F$j%||6xj0;w* z$hf@Bw@HEFz|P|5d@>de8$R+T_8AC$cpSs0z+Kzh9%9j7GfUD1d2gIP!4{qT3S_Ob<2| z&6dvcALF1syq3+&;3r8^63+z3-Y%n znikrJOrF{Ad+lMKCKCe#|9gHBxA@1p-R;xe+iy$-^=W6D=g+gR|5tv$cKP+!^J_kx zeBdpt?ssQj?e8lqgVp`!>?nSI?)AFedB^)?jnmKl`Sp5zJFoP%w9+H44!RU{cWakx?7I~ zBLh3X9H@WS-PPrz7Mz!tS664p;4{nQ<;LT3#TGJ^m6iJYemq*_+MRZOUTj?4y~1r5 z6Z#BR=dck2{hJwev=D+^dF-TaKy_sp8ZkB(~rtZ&= zhlkte+f)|4zP5J%&$IalCCQF(bl+d(!=bD;*)aZlEZE5sJ=J0yEm<5TdP zMS*Wbt+z4-eU+KDCHils(y^d}8<_0dFP|x%aVc*R2ZNIEbjAh;g@B+SqnaND3>vz+ zQ?IcyIxN53D{EbLa+2y~HQykusmg9W5j%^XF7ce)VfIaEhH{Sp)6_#R_(fKTGauGd zJu%z9Brrl%gT_YJy~=i>6pTEuJVr+2&G&$B3eG`IX-<=?N@zrVk4 z|Krk;PT}+O?d=O6xiHKy$-MOQ^K5*Xy7hrN95rrrU4#{rz@ZzWz^P-)n)%3_(gK7qC3BJiKmw;i?A;lb?Tj zlQci#NVa#%#c(d8UCQTS65f}pKoWYs`_-@ z?stdsizmdZ*IZETnfz73bN9zAo5f;sePIu0PM$C=`qz<1k)R65|I}3t1=r)EmPd5t zOi$dH(kzk^Q&fHHh@s|+<(i(mOFJxN#TQ@9F!{HOL&vw5iQ)Wb-uuE|YO40ySzAkQ zZe8n?koDzSbbjsEtKsW+y;`+QzgOBk@6!{|0E?VKLPN=uv*!1w9J|HL&R6qlix7U|BP5!zLniMuAYY>}?gVO7a`v*raCr-PE_^%Y7AZ;wsr?%V2C zaliI^Z0*;p=k0#y#Kz7odGh4s}3AvPF90uKYJYBUIU6vg!3V zxyJwD{H8Nc+i7~);c#{qCwmQNF)OccS`0dIdn!&$Q1n|~{Pfh+`1-$J=h;?^aJjm= zy2ixR@>a&g%(?t>%k8(k?ss@2_t*V>c6PS394Hy7`_H@cWv<_HV*w7A4R>CYY1i7d zo_*#Ms&($_s$8=k(Vq?uk4vg@%oJmn|J!-$`|KYpwAWh7%u&e5F`LbJ;Mvt_S8wp1 zD!cozton6e^YzuAIubVj+`V$DyY>`|>tP~W%XY^;7v9V>YyK(QyCQ+|qPt?a_Q$7g zww!GFu4eABw8{2cI9ZtD)|(6bFnxUD{q-F&b+dgvF0ZOv#}d7LMY-bc*}_MEZT7zK z>fDsuMm!g{amw|dl4h8FcK)i6e?^Xsms?pJUzb?rZgXh!t6p{IvcLRMy(a}0E^pSF zS_v%D*mXB=_F1uWpH(^zCIo0XdoY?TVYWQ<^Ye4>`W|U>Jx$G*S5^iyv+;CvcXQ9% zd^YWJh6%6wV(G%qXU+9vcWrq%@yL-Q53+KdMYviICUhJSd{xpEr8~=KSDlnb!7m@R z9;uwAm+}oVeAL#JHw8Qr@l~tcqAT@xk(1zrbLVnCg*O^*y}L?#ZJc(m+JdVEYLoZn zPulS;hT-|GqB;G~D<|_+9brAilr>rNRk2Fd-UUIOYLmD13u@Wet-ZKp;_WmAfe#fn zY=_s+b6?8!;%nAq&x_W9H=?^Pw$9Odu;Z8Xk*rVQU4K$9iod&<#d=VGmd~%#EE_*W z97y3Re1E#n>7lsRqt4H1~@$`idZja^~;^@#-T6ndUPMKeH^ktD~~yE=SR?FE4GYzcDbJ|IEzJCu32dz_2E6 zZ`A6m_lnQk+RZ=zwCL!OBPQQJPMS1nXYupAo10kIA3f`w(0k$e=hz(u2Va)_`umSt zT+f3~-`@WJot?!D0vs&!>i<>ljnj|4W?B4fP3-P%yLR1r{(0}OSF4MkojI6aQ2aoj zQy_BVVSUv%c`K%u9d7B6=@hM9I@3c_u`XzxU!?xqwoH-w+}S$6zrC&gb~C+S#&T2b z?{BNu?RvHGxEyoClP6D(9C2az@oaW})H;!poiV%1-X6-#S}hQl5CS=AO%E42qWOFn>{N2mt^W_YaTAUVgurTfa^QrsrLyMv(9LEct+xb`-cHgagaG-J3s#T}; z_wVtaZ+FSO!e-vv+uNBBJUKbpSugpa!vVp#+OJoyUcK7O*C%bhZp|8>DAp@kTMs^# zIllMLr_-mW>x;82d^pS9ox%Pbuh;IQ52gvptvX<=p7>1hI$!O^=gA+>#F}_H+*&(( zo_0Y;*pannYt-KDe|~~R@^Mh$^JLXbb1w0ZXVNxnbZyRXCzh4)_Z~oomxyTRjV8+W`Y5mz5@b&1}5C-tB%LRXbawYmtW8+;3Mh z>b~CRYIPEb`nh*exYNyzQ&O$O#Y$8S6n3z)vR=v)`?6(0iE{W$G20u_xf3Rq9Tsza zq{#o*q7E&foTV z@m=Dn*e&FBLHTXi3xUPoU+{3&>0C{ew5ix|Hf{IAHfgz<4~`5GTeGfqiE4v}%+lvo zK3lbVU6)UQW)*XdndvRPCFx#GVx>p*`aP!Ymo+U_4dpMBxA>Fb@@Ao!aLug#bU&xA zoGP>EG8x_O6Az9DMX9R1+M%?3MyAVNTl3`Ht&Vd*E!+#*-Cg9*V4A1-@LtfLM2#o66ohw9nJ{bR z#V=pJEc1%9t^UUIFV{fAtyfC)kGY~^;;%0+57vLJ`rE=O-1MK#JU^@P#oakMSzBTs z9N)p7wGFB!8 z%jegD5*m|3UERO`fA9ZyO`G_5!6Dh3?$M2whsp#Ovu$P4TKxI8NqcL=FYDRHQ{-9M zXWDdL5#>tK^t{DeX*bPdzv>~-*!;OUKfm41*N@z^B>nunUNhJHBOf0h=a;cyU6Kqk?>^+Z>!9ILkcNpX;GjM@%dUt)Gyc)_8g%iOG0T%Pf0YN{@Azs390^l zLo6hrwJ?gs=~AAE+UYOv?na9oJ$1^90W`zDKJIi_PyhpTEx=wey_kx-rPuG)d_Ehu zKIdp07oXPR&2A^SUft&YcglSZn}|$EwSwdAU$dVcI&=75kWI1BrQjR~n`N$A&v>TF zq)6d{Ij!6mEHT^TwL6)!14V~@%j7zzHPUDx8v~Rk3G`nd1q&tf~KC9@?M-R zmD;yqZ$!nr=TS!9kuxskg$YTsJ$&!w(Z6N3Nx{q39ar0Cws4tgW^PY%$=t3L{*|@d zcgtFq76Hy!S65fDGDcc6gomq%G0&V&8}#Uvf7^?eK}IJ2x!7yGAXq+*5pd z+3vmn*LqBwbzyz{esBc^n!K$dC|pY6mJ&)u&4#{L=WO{|36oB#YgUthNSZua$crnApxZT(gM z|M&con)~}|nc4ZKTny;qTQqUa0hz>V#pQ7qzj||POe}l7Ed5g6#ikQ%jV`B5PA&@3 znqT>B=JR>gd<@g{Vt?(v|2OaIs?g%+=k9LLzYm(Ck>piMjatWWhk zEm=Z&gCg*c8glMtmZ6rto?g)-G1%F`}=Bte|szaCwyhdz4H6Dm+pfGk?reh4x95! znRxsH4Iy8PR*t{o(|4|8f^Y9BhS|nFa%pOB#bhtd*b@CkCn(aZ!+8?lqQd0{?i$QL z{@S_mN(o)cYq``kW6SJ69+&cNMCV=zT;}O=t5;}JX<+A4kXyZ;c<9(@x=M$1PueoO zmoL+tX_dCmt=@}#lS*Ue#s1^1nyEa6(d$u6(9)I@i^cj{0=<$}LMk7~0G2>h(^AH@ zLOoh53Qq5NbXsO1kBjv=-kE9c0k?F$T5NokX5WhN4O|(T)tK>HMbKs4$*ZbLZ>QzG z$y(a7FyBAx+kykfvmSktIU`tRvt+qM(faFLt1D(Mcj{|7F-P%VS*^^( zKM_`^OfK`rSpEu=PWyEv^}>b^6W&j`S#0R8!T;mDh*y|hhsW-Vlb-rd-V)9D>)P=j zGgGG|7#994^6%Z$R8=|Q(VdH$D^4i{eG{4I$-sSnuChs+L+BR8jaQEy{X6ZW-{##5 z<8Jx(@4k9$8ObxBi&8$=Yr9I<# z%2@x@c~aTx15?X3&q_!)oM*{dwdC%H?RMvkiguQLGy*jgB;D3sQT@dlaMJ4Kv}x16 zEw}&s@@xHC>u7bp>`gy?HU_Wx>NKV9?EI`F7Q7|qCjUMuPfa>6p%u72Ux*F>0uDy6rzW&d~@bz(Nn=LB>1X>Qa^H+8A6_qVXC7O98{clzdbyjkMxK2vRS zS@)tqt0i|oC`<3dumwvByn-227-cDoV}x2=ud{_e)c z$19i5+g0$8iDA$0cf0ep|2{EMx%%51N%Oorr>1Iul$PO}l9MI8n9YE$*FXWO^^-G21(r7|RV%DLnY2mA z<85xqg)@h*{Si3+)Ii)6a$-`#cg*)9Qw8I|v9ViO!{s_O$DD*5)9)g`1#9@U7AeyKg%()Ywh*QNK(%5!(W zTyRQvS4~rx=I*mqyM5=YrzzJ23oXsQ{pM|^;lZC#ipE_23)Axbn`dP6-*oenTY$1wb9#Gty=Y9|J12dFL|tc`0>=KQ#WozG#|WhXS&Z!qo-HH z<9UzE94};RR%CKtag{4;>xs|1mg#@(;GV*I#YX>s&gP((*I%33+~2Wv`pX3eUK*R# zF1#yIv&c#CLFK-e-nNfh=V!al%a6{`?Mgb4pWWdmd?91UgzML&94R{Lwt{`BS>)>yjof)wVy+<`p&u&F6{L5a3vG^;KJWm)FzlFQ@occTHq( zzkmE?#o{~uOuL0F&WV3=e?M2FX4d^@dLn#My$W0l_gh*Yi`SE2b6?1N8 z`RdafXT0z662D~avef8{`S%X)DL+Ck?%0-9>ahChtTI12g}~?QgC&f6jpA=Na4;;~ z9bj>Ovf0JJDXDGz@^#gZilNcE9hFHqX1Tz>&eA{M{Wz=e94e zuj^Y{R^Hr{Ds7f?AirQngwLIcUPd!B?*@2taz2rraq<0@1zVzHM6_CGA3k*WpAo2T z@tu&}{_kUjSm%+TA18ag*2Udg>&}z4^u6_dfeYFvHg-PVo!Av~lBZE{;rZvg3m!W4 z%h{%#omKkq5bN%}cGxUg`Dw zer5e(Yv)ugTsPCBPDger>y(_Fn`are+Hq_>C+Di6S)gQOv3Zumx3>xt6b+Q#TwZ?u z)6>(l<*sLK?YI3FartpGJAd8Zuh$pfU-zvk-kw|Kor$nw=62bmDJJJLCX_jwX?gB` zdi&@;pIg3pMvIl-UNaJ#_j}u#;_!fyDW-??8fHG{dXqHy%i$MJoid%R7f!Jk&5@o` zcDQAV4Cf~n>wjsd9g;fM@6veNmbry{ija}JhP0KcO2$qh^~uVeeXd_Ft8ALgw-3}X zdB^syiG9YF=n$Pr9ZR3IS~^)O3O&EH;gjHEHeSw5^FOz5pK+F(T-MFBWXW9)9_PxO z#gn$omal#k={G}pitwNGu9?q2$(Ecseo66d+y48TRNkg7PP7xNt#MP!KhPrU?RhEB zb;snyPlsd{&Jhqy>JN2Z+3hLeeo#raxXoe7lnH$iT4xW0?sDaSSEEy>!`d>bD76LT z2J_P`ITI(e80HnoE@xzAzdG;QeNAN-IgK!3h40Z`Nt&wcl5TqP^=i#0w!S@69bn+D zp+4ov&a`=_-St&ff?ItrrunQ83;vSuy^(qUlnG5t>OmVt{$;J`0Vxa%Dwkrtl=nlE z!C_6nlGn$B?zpD1`7EAtBXk%-kh2p#kwz;ITXz8lmomx9CcJZ zcki6BC3=d^CP77Ij(-wN_mw8>xLjfSA~c}SR=#_#D-(m5@V3*-Ri;f^a`(gKrV|>s z7UXXYd?i#nciWT+mQFJd)-Ox>7^A4Vw57yj_d|CxPpc1{0p0fU-iwa$Ss$GhpwpTY zvbG_wYMns%Enl}8%2Oo&oH2oPKPOpCpJeH*FmacYr;e-3t==;_f}J6bI}`c>(m2i< zB_7|I7IaF%=a#P319!72M}l0I-0fJ(T6&9%>lsIC+a!zYhl*MGzQl5ZJIvF(E;U*o zSaNq!^27;Sq>Ed6s!mK15}H(Y_+D1?gcd{5PsuMfiny!jc0l6vqT*XM@iT&_eA*^9 z2w1BYsT{ea4GM;yPdAEGrW^_K;=A;6LfK^QXB??+iyK00w+UFQ7Op$$;&!XIZK;k| z(#jB9i$5TziCJ%cXI9+uDf!__P1PmNw|Faqr4<%>`g-adop>Xwc~V4I$ClYK2JRa6 zKVl6opAfa2xh1+pM~KVl!_vDh3tVsU#+J4^=(u*m6sc~BQdN1qL+MUdnAf8i&s)4d zZ9cl|y7UAIfl{mAou3ifvX}CT4$3V2BQR0lshug)nK8oE%S=TW5V9T~r6z=ifF_+gUtmxl3P5M;zn6z^Wy8Ia2H| zZk#VJm}#yQEq|J+xaHI0Fo$wxP{MTf6%KmmT(@SJ3TlC4)c%A*fR~3mIEhY*@DiJ$+`~0xO-;(jn1#&Iw|L{* zg*iNTUlj0G&2SWf#BSG8tH*L8X9V3?y~6BFxIo$V$#IQ|Wy(V5geBW933!(pJILNTl?TZWx9@Io`L$biQ-w{pOPJjUZ_egRd74$AX}4|S6FH6ARFXP7E~vjPipilkvf0AEaS=kbG-E4{84P&vK~}tlZR;`KEFl4RZOET9otX0n483>}Q-jQ}vDoRVA>*f28kB`e+m2||szQtB&F+cN(*TtoGJ36!k zyNUyKnL2;Ds=XDn?eMwr;Ql<9C3kQ6vr7qrx)054yhS@>&f9*!b8T(3dCm<6hSb#5 z&d$zD(n7+*uV1~A;cLH`!SjE8c#)Hs4>< z>*!9Y)Yalg9u{n=+PXJxskp`Ny%!*k61c{i=>ndVI+!8E@TYF-?YG>^&C?`Jm!Fb#7QS`6 zRYuQG$oF(vn+$O1-7@^3vBK_TgRMTqN`S9WU&N(c8Uu>hn&y11~R6 zxn@xjTD^Yl>7^VjQ_8AeGkUM`D%@bQ=G-+cyZNUcbH2Wn_Ufwr)auJq-|n^j%fyi3 zT(+=ap1LCsTeH)}Qxn!RTOPU|UmyD``B;x++UB2cZf>@%{$?V!$Ui_ z**<1oYG-=>w88v?g?5WC-iZ3#$lek9`;Axftc828hb$MV zaARR&+!~c@AkpL=qP5>|InQ$LuN}NoSVP|K-{!_zFh_rm-W7l5pM4wd-PDrmJ;0fG zw`A|5R;G5F?aQ4WUVr`7=KinGN5IYIySHkqU%g!vbn}-lJHvFZ!Efc~Mcfj&urdoOP2+Ovsx_e0ltbX)H~b^0dzUiI`^{;OEw-a`wV6>!+JN z63z+K?|-^rOLP-Y|LcN{GZOMOK?74ZPi`G;?BJg4@`dZe>%?3B?vcuC)~zeEntSQK zw0Yi_pEZAfe`jxyG)`L+zyIFruS^GSZOu+UGsAJy)ZE5NQ~8xH<%I=Jl6-O7@xgQ< zp~@~n4b>&iw{%_k`RuoCnayfDEz4f^sGyux$%^Xl?-slDN?8;kgi z54^d#IXF1@_xJbqH9tN~R`=J7*w9eoeOPsF3%JHj3E6N_yOmeVVB&e^uXDzlp$f9SC)XZM5^HbhcET5VAq-#!+1B>cBUxV2@l&7YgGTHsoQ2p|X zj-^6d6qv45DEc+0UqNk0STcWKK`wY4QF0rni;<-CfD)qLb%SDZqTNFw-lbC{ksZ1)m?Htkf;m*$D=xsTc zfW*qH1riDRMsKc>L(mrcImfRXpxp zv}loO_O%`fLnTW~Nrs~0Vn&4>dYxg}aecanu~jc5*N{4d|%D@jx7Qr=s| zl1*nmJw1KD?)TfCo*rfQKAo5y0aiaws?T2n9wAdQTYtG({<)UL34=xY+b?YVH1X(l z@7;+`I)7!YcTVhz(2C<`C}1qN6SJSjBiyyv=b*L&e-sK@6^7j{Jl*LTcl@7Syw$v);uwNV^HuiNyD>UdEejN z-Ch3v9&i7ddA8QS-oDI=@KFib@Y+@6qtmo6-IwyD&ct&1-gze^^zwb#iAlx&7p{Ri zUu#}~X03Ex`$2i;o05^Sq_fcOAM0A?YR50T`TW|>;^$&I5e0w0UI#6Bxipbi+6=Te zCW801QoyE_yn^7SqSB?jA5B*rye_se1uk*X{o(1c`=Pjnt51gekGI?J$JPCO`v2$o z`c4~%IHv7Xc+f;7fad~Q#nxUL1UtU+2 z&YuxRf5q&N&hp${YT#tyH2*w1Lsji#)7PMhs({s3InKWFdSGv*nrZ%|*HCj}nR4;0 z7ygEOxst91yn6L3nd6U(kXMrCi;(6+0(}OSmOG=j=gHUqF=Q~25nLC&{alKXsh4W% z7O&sC7ic)m?g|r;N%<60XWix{xMa>Y`*XRkGn-@{)*Ih-uD%iQjfcmA8NZ=%}1c8&P~8X}+_7Q+5E4?k9H+O&zq(W2(Z zhhx3cptj)hc~xGEFD7hV+nr!|aH3bv;xM_QoD1q=7nOc7@e52X+dM;QkEb%X(Z6cG z-5l<>@+)(+lBWGXy4K9Vd#bM5yX8_wU1pt8d-PIF3oXsQSm_CQ?wlyNtM9`^ce#~o z*T!y4YCZm#u|ZJTO+%!MUB1R(h0$RSd2atjQ#RBEF}F$BhY8QWoEnX(G6ATZY zQv!{QRG!${e6%HFVoO}3sI8{C#@lPWTc=F89p>=to6NKpsgw&F{z(}wlvO-l=sitm zrg{E7^ZPZyadC3e($!C=hDYg$-Pu+u=&`m&q1+MN3%{@Tt;==aUQSlYyC40GHQp|B zkB5uYP^rcx1`lO%)-QlYA|2IJR9q^7Q5rL(LT%L*zPt z-iXgS`Q-EwcPn{mMwe&F%8MgYXa4!~Cw*RJ+OID!9aCq1zgL}qds}VmDUc!^@yDR!Ug-@`k<(IcChk(>gi+=$&9pk-VsCJY!4r6@@L045E%~|1xLI*b>dI z+@k!YYA?fq&%NcdR<2sb#4wf1@af{!4okQny%)?d4cz$2(dAaJkHvX#_pN0SFYl$i ziGqg&mn{K-nqM!M7p&ZLruzNfWcPuHs?qaryc=nx|bDREyiV z_%>DOo!9%;>+Ey!+0GcHNs?t(ru<&8Wj0s&>&JgnS-d!lb0?%7*zDn{Bf6Y%Dbp&O z2^|q$8Kwt86Uc(XRr5Z7JTAX})vBm%IWtub*k)W%=zIKb=ks|-yTuo8Teo_`8s>h6 zQo9bv5FK@;w`yxYe(62DIV0^-USM;_mf2ILfF@{{Oc98`<@;*8p!aUqq>YoO2$`+c z*_?E=t6jdX;`%z!DXLwwt>g3yb{Au$}Z|-Ckei0DsShHlw-ID^p z)JS^XT6=}_u3`H^pId8{1rG^Mn=)m|(xtV(UM|19%y;+SZ?`|*zA}YdT(4s9y(?Ej zF7bBCtZWgxDtKw*r-cs`4xe~>^XR=9m-5u~+C6u>vMXK6yR=}#?nckuCwT-jw{vi8 ze2`!?Q-sSkM`uw`*k_KWg7wZdy6B1!=5NmfkE&d~RLi4XHqCShicX!6`$ z%HyR>_#h*YOT$3`dK}$@&oJ2!K_qvi|=1`uh6%{4bL_tY@7+d-m_& z_x1XJ@2(DCzh{q)qku@)1rl!mN=4Mr>7#jx{E$aPHH7E3H`p&en7%|rkzvn8( z7lm-Fva*i3tkqkm6Z|YWNkfLcR~0=W$T5{Gd%Sc?&z>i&41P=$Z}9R zYVo4^{?&T(^)vo;CVk)O!tt?L?A8&H?KduE{;FMM?~?7>AkzMFy3N{mm#&B|znr?_ zDsw};Kulwrh^Zb&obT!D*F-n{UV2S)|N7qChqre9iQ6x+YtO|u+g~6TXAx^ag6a7{v5vbvYh>hz`LENl+!Ar-#OJ?l#gor zRMcTv7B=@z&&37>i`g%o{$(jDY`fEXCuzmCV`17^ryoV_vi%#EZyc*}SNn;0HS2D( zFQ1qEyj@)2@V|JS;@R8J^g^l}d&;*}C6?D9ITb-kJ$+25M|=BqO(&YQ`|xQV$j*iv!RgPvCvlReLMmFYd1oO*tq z?WBD^!4uqDZr;4PI&AGMvs@_#5fPD;)YO|f+m@{|XZY}H^?JSNZ901ICY|{!9#@fg zsD;z_{-0a(nBBGRWxSg%==h}df_Phb-mT^&m5D)-LHn@uKDjxjVT#7x0wkx(e1PWkjv2dNOPGJ2Q@gn9Vbf%QP&U znJq2A=n}B4BzN{}rw0uVEwLU9rJI*uniRNPf@8~%#S$zWm6Ervwz};1x|ox!|I%r? z(8sqgMOn?S2Z>+eT9CDD>pg}HC)%ziiCU>c@fu(TdqYv?tId$ zZ2w7CM_lR0gWu1Yx4-FFvi11t7RTAOf;9mmN3*y8v^$-D=hm)WyTa^uJXlbF^rHid z824MJ?_ck6*lBbn9jf0G`p&~{$CvuX<@~Nix#rJVmgV?(96h|C^7B{i%yy zi3u+J!ubv%|My?`UJ9D4YSai86l`YWwJLcr;mh}f&Ft*_ayqB4r%85Z{9d#=;j-e} zYj+(SZt>Pzb1ZPX#rxj`G&eQDEc)0M3C4xjIhOm(42q4t`=!Fksp)9aOuO1&Td&7S zKW)4E`MCYR!be9sC#(5-d3i-`%efi<|5teAzH2!m-vk3<9~R|4dY~8Y<5O`{M6~wrc!68$JbTf zExoQAwS{AOt#doy-}CkVHfLR3wg1mkeQq(G8Mf8ibmFtsCc5?LC+c|azB$30^W_SW zWB*MXSAdFtuWii=VO}1Njlt2JZ#mY6WuKpCdw#zC{`~v>G z%5GOdr+eaiL6bA57BoqiPDz|D6tpqsQkc_w_Z>AqKTVIT($v+}t=Lfh{$973Zq>V; z&qK7XetLR3RO{-$zrO`YPWH?CQuV`(Y5viBn6|LuxK=^guZP2C^)XjXPDmEOr!l4)*y{;8nH zMo@dAF}&H4^(lC%PDnK8MAKClGv-yjTB$z2=F^Rh$)H0TgoTB@y}dzmqVjb=9`5~q zkGWy4b@{Eg-yR-rU%WlcZ;jfCg$^BaJGRW;a?F?^{8n!pWT;1Y`!}9n>soB4A6{~I zQOcDgPj4Lwamh4S+88pMBi8QY5n+E7HMM;|9(8kz=`b*~IvEx`IG`K7?M}txUWS6B zqTwN-p{8@K-^Qd!KFpDwd8w)5POo9+iBIp-7-sX&sWWJKcQNo_R+Indk7qnR9No@K zxOA(CReboIy2Z=mLeWt_!^0g_)p;jX7s_XgyDwdEEJ(J7xht)^`Q85i|K`{KyZN-} z>60frV%8-e@AHfkU?{PQP5<8Hkg>%t!ERcgrE}(L-Y3RWK{xt3tvrIB=(2t zN}E_;uh^6ju4vzooUFy*we=10ULGp#!nV^+ZSQ6(s?(8W^~+rp>Hgzh^?P1vvojec z-`?Mkx7w6(anbYn^>V8d1KT~+c1;ZtPq~yAxM23Y)gP0*cLxfk1QgAx5L$%h#6N&fU)1-!EsoYtyDp z8#V}Rti0GdOVs*A@};~$Bd_jPT-&}c^}5Bozpq;;bNdI*ha9I*pFVx+RNnr--`tJ| z2L~?=H@wx#WLw;JLR;S9(M8Xb!9J79J}>azt#~}hA#j4D+pV=GU(9x0T-1EJx2>S% z(y?o1(U0W{|NW_C@bK_($PnWT6LNa<#bftHg*(n(kR_%%t?OAGr*4t{mFC0ZGVzdl zi*iqYzr0Dt1?}~FlsK5m3$-6RD17+y`FymFm}ktg?1W{Dw=~@8l3jIF#MWXaXl8Pf zh3_BTByeYa7RQ<6ZT>G(W{SsEJUq;Azvoex_O-Rq&x>}3t%)$K`trhew%OX4oklOD zb~F5lR1pZAbNk$-FXxQXZ=AdQl@pV6!o_`*_InB4U^sBJHO<;8NZ_v`88HUWO6D1~e z7YFLHExmha`QO+Hle`{sBxwe=l(9|zQQYR3x&4FvrGJ-IRD=3uWZ0M9J>=eZdvX`k z@(-C|6S5v1>1^kdUA1P7j<$Apcel5{|M46#zJnL7o+(_l{oRW|*+QRd`1Q_c2L9?KW53Wd#!J>1Vu=X}UfTwE+)`{kmdb6d&l zYr3kcsTUSF7C%4t_v3N-kJ9Z73(w9l;AQf7`F@9+@K%9@OL-R?g=WTpCe%`kG$)pE zPd?UH@cY|aW_G?m$L;?G1_e!;I~O#lG;7wZtEp@odz)PT zD%DMJY;0FhdMoBA=J`AEQeL3bq%!TovcK-}Gh!ZbtX{o3{rtSSlO}xv?c5C z9!Gah@!0+F{=Kw6UWr!ol3bSD{gA9VVOoMFhmi&-e7t2I-rStt&Les0PINn;?61@M z`(5^Xt`Kt$>WiZC5x*p!gU@&tvrG(ff(%8vaLqaMBC>kQk)Xs&5&WRTW0w2R=lgkW&YU?f zwzo3`rChn&pz+!vT1=zc30BVoiV$ANV^287@rrlaB*Z|U396t^?6@d=@G%iWcMBQ|Ns5{{arYdOLK`u zInSaG{DPV0-2M)?d}ncbCS1xZa(20O7E&d!_FhtW+ctmAf>0+R&dlw)FD~UhEI654 z^5;jPt!DZKpJNqA6qHYc z2KO!HrTIDx{oPxAep#Dd%46~3{3x2cVq)3quYwam<0wbg$1m}^wf4%@htoJ`Dyv*! zy*Qoa#l*71{W%()OGRW-9!(b#I%Vr-=L^bM%Co}~`vlI|gg59N@ms|;yYK9b4SVw^ z@$K=srRyd3vSaBLt{2PHH(q69W%Ya5Fr)aIRQC0CU#nhkfBW+0=I2K`g_rLC{P{Cz z6J!7J;@4}p^GTU_l?#l(B*;dm+ zOP8>z1;ODendapTC7`jmhl$mK^DH@y`76sd%=(}cB;?)d%q}H(ZoYl}^>wlCeV|pC z9vjj&?$}XrV?*N8r%$uCR{i<$k)2}IfT|^Tqn0xFaxf;`+>{!&dh5f9po(zS>UC95r-m~)h#Z}&9iDe@Ph{EdOZmon zqNOexp1T)L6PmR{UVnn5*4JZeR;mYidHCJx4Sy`T_0xwyxp|hHnWFp6lf0}|H%@V5 zJZZJ=g5s>oD@@CMEoIkvtOr~5_t#fYPG0ET-sHaT=d;0qa*c83r`@JnDtYr6Hu2vi&?O)h!#7)VsX;k3TNcjuOb?JH2R{b-Z-g@efs&jvTMUGp2&IH3oiM z8-Lru;o;}jui9IDy12Mxz1mN&&3T(u37Xk#z4Pwce04_?Dc{4@iYhDmE@W*L6E%%% zu6xv}K20x{ive^dS4qmdJ3B!O%sw1sH#RZ~(F#=v*v~%e{`+tZ5wFzE-Oo5VIhon{ za!OR5d<|NCHEXNYjl$|<2it!-S%inJ6cObLSe+WNWBaTlPU0~O^Zq`2XyLdtsO|4= zbMNyNC(1drN?)s8&0^qq-L%E4tfykxx_?dE|M*F+U)w6)WxHyMfr@d;?rnt=-aEW^ zGE7=1J?q~*(9SHq%$}I#GuN@T$A2iwO3wD@o9gw%V#0Fnqg~P5PIJvz z3JU(>U4ozAB-V-^=j7V?E0^bq^`SStUm2^cWfxkqorRAW%9oC9p)le-` zNm+9D!u5F7O!GH?BC@#VL@isaa=PZ{)9HVIeck=I&pPeQ48zn@Q$)4HN?u>%Wq7yq z`MgV)E@iLZTlVeEO=%zutnx<{ ztH_a{wU+`XrLNokZr771Pl}(Pd-?U3czn&p95e6Z$;rw5@^*ioPLJPp_ucilYF$Oe z9?Rby3Q9-%_Bbj`2*{hVIu6% zzBs<%xFF`XaPIyQ*B|Kh@;03r|n%`w;$Ne$u2Z(na5<%shV1g}p&%F(@n?7m2Y5 zW)&>G+p%PSu+rPM_wQ9Rw=>)bH1$^75T=2xcxC^+c7^8Uho`ob7zo-io<)%a;BPjhnGWS`g%w%q?*p)=}FR zt>$Fzyls72L1<#x;zaQJKK6fXjSfl^TP8)UVx6J9hehdC(~r*^e@s45m2@dD*8bem zloc*sw|YC`7&l#nY+$Jf49@r2$$MvMyL?I1;N2JkS{hgY z>HvclRxVrC;nQZyUfeRhVSlU61(mmLHM4wf>2`^69u4~OdE>(=LZ`S@H-@xL)Gkj} zS2qJGOi;VT`f@^l--S}R^+^YmDT#8Sswy^}sl zE_~vqwdAhHS)s(`>n;d-gS^zMxIoWC>Gb`cd7D5>aVJ?!pYlgSG<8m(ehld*A;O;ec2!3W8K@^yOl^3hvayD!-#&9@0#wWujTe%1ct%N3kB6u44*+a@Wn zcz8H{6WDZSl26*ZJNM8`?e{yy=c=#0-&wlQrLW~on3M3f zqQ#);F1DG*%RT0JdAQu_ZQB;IX=1ih{2U3vXB@koPo8O4dE2&k>V)Nsq`f?&wY-?Q z`Wm)K@8dGFy_9!i>x4X zL^IP|%FM#G#q!WQ70DfGRxLL)Czc(a|I=VqL%1{Z^OY-w?zBTQ0`$+b$XK$_SZ1eyfWcZo>7#_#c7A+Rf7s9c(red_UEuT^!Rwc ze)P7SPft#QR{2-_m}#88%x7kj+3e$eve6L{5?t}S%W{*Fl5%q1PImLt@v7(Q%tb#;Ayet!MO zqvBVyO7rs8X>?V8d&AhkZ}%hN;Nm6K zZoN{a-`+%S{LUM-NQ2A%*)gTZCX9k7dAyd~&4~E-F5yz%CdXG>#GZg-`p?G*rA1rs z2AuqOVbY{Y&h31q+#wnw-qZEozE#)N)wMa_{%>o9&e^kPgLa%unZ$H9ZS(o(pDS!0 zmbYzAJlqC41&clPw@*Zw?~eZ~?zwJNDx@)>N&Z1?}Ntu^n)iO5H;-N5LV>F6f;$Y0G`##z8#vT1k57LPYFo4{N;hL` z%=r^{Y+f23Tztr)cy>80uB@1RhFkzq7bS%+!-z-1zkd;R|6Ap5Jkd#c;?gI5LPw;DJwWSEY?j?JccCm3M?sf)?^mzd zX_&X2t$+S&U2e~#o7ew(a!ewN(}d&K8oA8X<(*!sPj)?0``Ia^SN21>&UC8Rg_lY- zFJ`Allx$e1eJDJbn?bZNZNM<0p4)iO!UsxpIw!Zqlt!F|9mv7w+3Q+ae|L>Vz$`1I5k@NVaos z3x7DXo1@Y4(6(*c-tYUpZqueqZ_Dbx-z`r~O=XxcbLPx>^Zp%^&i_%ful#;(_`-lQ zGYpv->1V#}5{^)$(rS7-ZO0&o$dU|^1<-G$91zyZ3DlT^3 zTm?F(dtdEuAt52VUoRHx@B85-<+bH@UB0~k@3-6Y z9%_fLi`iMU^v}m%f-Y6BgN~<4e5%ly`Pn}3bFIfM-J=~=GrrY}bMzdKE9iWj{87hC z`ppw*&CZVI=chPMK1)5esIT;K|8XndplGi5roz18OYVMQxpPr8Z|Ym&?NU=XLe!*p zxP56hlvV4SR;FiqDbM%Ct3!iSu4ITlIndiIpw_5_A@gUo;hml6z%ozQRiPr3h zE`>hhsBRTfEc^30wZTPq+Nt8LaYF976K0%p%8PN&@jl7>&mnaRn}|%zw}n!wM%Q}R zH~FS8##)>a{KlnPr1FEEg{kxM_N!bS*NaV0c!$4`Fy8VxMwAm=g-^`#R^)%#zT~dQ zL7Bw$0YTlWk~`8$GR^;(&T&{W*V{e13sU7rc}yx(-VxVkc_{AS{Rpm>C3h!zdh8aA z{MV=dHq6)Q*4j(WS%Mx^6fx@$M@{2I1XB^e4as2Zb%JS!eHVxZ4v4aNvS3S=9 zxLqj7Ag!bRhEc%gtqoIr^bW3V0Xfz^Ns&`hG)L{NnzY}a#b!PMFAs|RV^L6ld#%G- zu3LXH_m>5-L_ z+FP~xu0pw*e_VH(*_N;zXtkD;Zn8YIZ$Zj4<&EN*=8+p0%L{O*uxXu?&1!zd@l|WX zijDoZ4&-|uT&wa{ZGGUEs1D^VLJ?3c%^h2$_wC@BFyV}X(%Uq1rpC1`FStE5GQBS< zzjaH=@B%68P`((gzNoTo|AdwceV$C0@(Qh(F6I5Gp3K=JIg7(%w_xUhK&7{CDS_)) zid(KXobXGO`ldB;Qkn8Y#S7;@8+C=oy;@-HuSqld46}&Pp(piKoYiG-4 znk$`d^5{9vv~Pi zoXaJ?xnnyY=ZlBk1o0UWRr)-E#95Fs-C;IKI}X01#+6k%%2_x z4!h;|?0CGfY~GPeqE<`pzS+~E|5j}A(+S&!f;JuOoD{`zB3Ct~?}Jo;(Pu@^-4F9s zRTgJBH*T4I*W=Nhs4sRblglRa8ztXu*(PMUyE^2Spx?P2C`TvOK z?DW{p*uZsLfq|jIX5OPmNlSw)6A!fnJoxwbH*=%5^i3flA-6sm$z7Gt&&{1Xckbr& z^V@Fb{McCfA*NNjd{gU@GwyTbY#2YV9O#&#DWi5Ht~LE#SD>8M9fLDX851uoH2ZNW zFHAQ4v0!lJp34HVHs9;TJ4E~ogJkYyw;fA1JU?^G=NQR_A8(wAxWa78X>sW5>+ANP z&lsm|uDr1!v7JwrtMz{M`@PEUeOF$8WtcE|vNE{l^qj0_DZ{t=>aL=vr<&RMmn~ne z>^@_X;o%8eZg*tt(RpD~C?0cT>y4}X^zUW2ExBvb;cUPs{M}c!aczrep2yRTx=PLV z963SFajd?w0?UsZzcM*EFUm;!^aNSO#)TJuetsUmucq?tt*y5DwVzI^vx0&C-Y=6x zHYFZzTe4)y`hCA%P4>3~-DNX7e_y9`BtwIQZU=+ziPg(rOekCIvbRYt)BF#=m&>i* zD>h8Lm-5PljL))wX10u_dIj}mZL3PYzq`xJ%e!!btaaI)^82+i#~Ba&`T4p0&5cHp z)AG)0+(7}LM*HHYD|oGL1x?x_{V7m-O2-x9m8~5wL?_Ht?&-Lib$3&0_x0DdWp8fm zDt!$eS2i^@J$drvCEk-KPxkiq#>U1<^{PD*_VV%qEtdT-VQ2C4WlNWS-E;Z<_uqf( zPVWEK9-=&DJFD9)M*#&1mi>RKBArVD9y0B}&(E-kqtW4j{{Or#5#}k|8}IA0Fe!9} zui@tiYWkkGWzE(4-K=gFU+jIxxcTvG9nLsaSzOWZ7JJ2P&Hp@_>7x_}8zaNwie)h;ogNg)sW`Ms7Y?MsvY>ggY%b=B0qSEsMw^fcZ4Js;i9 z-w+WM{rYkBrAt9egE$#>m%sn_RKMOb|DMh4vtm4KqFvf|!2@HA(W0*BLo<8^bxr)+OlU}<*r6R~uhuy={;$^-Htaqk3lqy$`D4K%nu ztv}{%T5x=}g=Ji@*N2YjZ}u$O<12HlJ0o-UqIRzBk5(zBz7Lf4c;n{U>Mg?3bA3us zv^E!KRq9mlf)5pu8b=R=?yzv=;9~N~)ZXsO;9;tvx8sOsn4!cI28M^GlS>OOuKvQ# z!pa`L`9kRxb#u3_M(ew3-XGsIhb(^7l<~l7E3eoagKDlF5TFt#Ivf}Nfd+QFLc6w=;G&TIfOOq(aCl(9) zFIhG4^a^EJtxr*8n6Pj4nimW@S@o+|_+BcO5x5S9b z{@IIyHKsO2^#3JoDP)%PyD*A^w8c*L<74Dx?GPfbl-yLPRnrY5N1 zm^^>JKJVmb&!4BKr}IbXtY>fM+_%oz{8X{1UZD@qD=9yzzFQogyHg_q!heP@Sl?ed zW64ULJ=cAnS}I-2bDw>}W4EfLfv!-5Ym@y#xk+Wl3VwG4XDI7vYMwlOT3c6FS6~19 z*|TTQoB^FIT>kdf*L&6Pdu6S+EnfWiald`szM7qfA2Kk!Y!lTEJ96yUy6Ele7A#<} zKjg4ROj+UWHO&O?-Il%qS9-Dp*XgO8bhzi`;dG0)vT$(}a5q-RhcQ&zia9SuJ~JLkIcJuof7u9xu|PkWmWa@ z(NV$o{(gRS4_n2b^oPg0fVLf_l_-8={<=c!;i@gS1(YAnQ0)8|p%l$I`J~70iJ2)& zW(w~1Qd>8xWlOZ;zX~1BOmm}X&ca@!wHN<2t-mAjN-*hL%#xY>XZrFzZt;FLbvBlt zk>6D>lC(nXuTlaJr=0Lhd}(UfUG8yp6J^B{!{*xRf9=kz?pYX_kEdRjIUDwU! zR_}>fe1BewdEEl<%kLH9{l+N$jN>d1Acr(Gyq8 zI~boV)pptC^@7{8V{QLY)2y&&H^%8T74lOo5B+mGdB%N>7?Weh@w;9g%PJ~xo^Y%0HZXHFD1?wvp2dhUw_o>_hoI1 z%P)Z&dvmRB1yzYgTnT8mmg|mJWY{IfQrzI3V-z1&wdW zi=kk~4zHN)DxSMb74%~tGTL+BtaLc%#3y{^f!+%S26p}vKf_kDtnSM`l)K!@_XZcI zOOI8>m8yQrL$41UEIzUMBf|rO!V_7C%H(bY!aHG^7fhgbb04(91MQKW&324 zT!JV5=KrC}${?e5K4i68b& z*|IdKXAak1JLM}DZreSUh&h>@l6m;m(KDQL|B|Cw2bUZ(>$;!KSe0e?rDk=IgOO^i z>X)b!b~lbE&s5%H_u=>{P0dV)CDL9`OfUATNm=OrtI+9mW2-yeHfh_GIM$CQjOk8?a`6`zCU?`wCCqHGN1m;^kw(|=d$oglXzh5r7K)N3T6paPW^hs;@s2Yez%Wb5>;Ll*u8x6^MC0gm$Hj)2o-Ib zIDLBgw>LNU?Ai10&YO=FJZ#MF33p}(#pq2x>9T0Hr)m@EBERN?4pvHA4!jahVcTPu z=)4&F{T&*mEz|Ymzx^yYe`D$FUAwF<1up35>+8FAE$q_91s&6-O*`io^EP*v%z{x+eHRkx(1q({=YtwcxT(dYB__3w5*_c-39G_T@OXHyf?rHu<(&z(DW zaj`r98)MB<@YNv+9tQ4^3r!?#esh4%gk2N4SmUgbyDc9u8ja_xAbU z%F0T=<(uDEv-K;pG~C@?US3){v5ysWT}qzlGT+&0X7SG9nE{ZyObphEn?YTIezgkx zwv*C60|Aad|Gw{^Z&CQ@&CSjG|9*?UbWyTp%l7T-yezS?tkv=*}WAXlU`i9 z9$#;peQiyru=={Vy-@-zO%r9N$XFC49Bg83=a=Ve&AGGVW1scA9gq90&2n$K7$i0K zfBN(Zv~cs!kB^(v&feOdKVRg=l`C6PPEPvx__%(|jt#3;b>;A|3ybT;RD8MUzSQe? zxBfnkR(YF>f^TnbMn*=i-}h_P{rCGdrIk|G#OSst zYF7UFc)a}WtwA0H0$r>CT_Ffj&-XlrZxs$G6|cJ}`N|9+o2b7pJy^+|m%7aV&0 zu}9Ka&Cagw^|iG@9(8s5&Zgboo`3&(e7&r=`1JYn{mt5%+h)z0b>zqq(A99q`{nQN ztp+V_U;1IDak^gIo*!3M25X0}J9FlYiuB2YM>+(R!`4I;{`>PY_x84rHuZ0A7zT>G ze)Z~1+UGW2X}>uZ6Q@r7dMkVV-5$gtnjnFWuFb}~Ew z-`WE@J^%at`u!sNl8^K4zUya{*4zg=$QHEzbw%J}r@n%Fdn#9lt)27_bbQhCv$Ngx z%9^{D&#$YxxXAS`lef3`)~MX*=-C=wjSdI0w#r!)G`PHBla`g0We5lhQ~PV3duz+r z*Vnrj{WvC_e`cn!JJ+4<`SDIpO;;Z5GkhT>m7ABhZtdE+28m5y^25Te?f?Hbe^a2; zojDeThcZmmR8<)doSdwFIC$TtO`F!P?ag?@#t&L8RrTdXu)nRST*ap+C)cdedHH_L znl+Qv{U>$YQh4&>;^N20`#}dVKR-MB`?uTq>`aUd8hU!5s{oev-u7Br^ybFKHF=T( zC02Lu>@5EO>-zp{*RP9EG_!)eCeFFmnFR6OoS+{UuW6B>kZoB#V=H}n;mfsK6 zn)>izZ*T8I&T~Q43s$UJ6}7wU?Gn$)^J>4{^qpC22SRKCp-mcQu zI|?6z&cyn1*?;-crHl^A$;lqdmorSVOlHkK`LM*&sr#tVt8C_m+i&^K@9tqd^0ese zOyl%#Z*FRbt(o9-CT;We*HizM?Y_%!K&aj!Vry1tS=qL`dHI={f-DCgfAn~HNB3Z4 z7QaZ^=AQ@I#xtZF8BNO{m#x}zV_yf z9yWEk{^##@zn8PE`f@vezbsdYh0H_E^Pl%z%~BOP=y>$y<>ltNw@gZ2Tv+JbK5g2x zbrBmM@z?)gX0Vv+H|^@v120S3zHCiSPPUcvH;~wJ`|Z=GPZw^z@cjJzbWS^kDO09! zG#Qk?i(%LhwRYjve|KLAuML|$V@Ac}w7e?4&-;6hc8lvrZgLSh`s!8I>Z@A14oN%; zaqG?1)zd#dI@+Yr(k^dPVW6kCZripnk)!T%l_@tjrM4(p%;1dI`Fzg$eUH5TzQv0d zZ{A#dsD<jUHr@^P=wXd!`u7zj>5$nT|a;R z+_-UL-1_MSF6^wOrKMS0f6dO{C+NCy@7~%kFD~Zq{W?vf>wf+J+LDrz)YPRKT|0N~ z%>cJ=qG%L+ziWM($5 zUOicYx#RZRZ@>TE6$%q*X=`JfeRf&cYERdk4MFko^0KmPuVx))wzjgmb?cUpkWk*I zhf}P;w_h2kyok~{oM0fq<7Q6ib}o1oQryDBX1HtDu0yO^`I=JF(x7pjTeqSv2__n( zv|Bo{F-y-s|NYtQe5<*Bd*kv=q;$o+e>gth&LJu)x^w5wrAwDCQ9hJ#qOYrjMS|y5 z#IBN;({!V!>BrlppOaY|79AG$?R@>e&o?$ETUuH!S$r(v0!Q$)M1z2xH9t34sL)j$ykVX(T4rY3md^_J_U^v_zQ4QswJzV;vuD*N zdoI4{vS&%y>a%H|Hzprf^P96H|Ng!=Z{A!8?LYqbV?|PO@^06u2Y;+@sA*{2NJ zXV)WRX{4s6W@mRVZ+rf|J(gcq@7c3w#*7(@7A@MCd^~Dx*y4*8>F4HLyLRmYFKDlj zP35MmSz9A?EG;dsUcLJ8;_ZF4)m2qi=Rbe^__1nl-M2S4nP;f+utkERCcx9v)6>W2 z&+YsFzP(&Nf7|x$-}fwBv?%G;mQ1<+^y7W9s;a7>eQB@PZm;`&`@UDWwzhWtx6SjX zPMel@Z_m#wD}z~CSr@zafBXHHAs`~cqWoP<_t8!D|Nk9s=kJ%d|95@=zpv@@Yt{a4 z*t~i3(xs^n54E12rmL-^6SF<PZ z0;XhTXN&7Z7*u|GvS`twOP4OK-}fu)%nZX%YQoKpCw=879!xM;*T1*=yI0juucbv_ zUR>1Q^Wo6T%gdd^~ahZ zwZFf0E}AiaK0ibHxjB+6L=p`0G$Z;a96X?=uKxVa&f@vC-)>%7>fLU3m z^X_WJ-rZYW?&ju}nD}ts>JK*WzgC?-b&4V3{5;#6H*fka-~2q;e~yJ=^|v=GR%pD8 zUmEoD05ks_tI}0FcUqR5*RT87ec}G$c7FcedNEPaqsNZ<&9}2HDgF27=fm=>t+(3c zs$Mkn+pSo=T6#lEfDJ|_> z#KB-{YI>KibaI`xVakaKZ*Om39kS}qojXsSJSlv9EcgDtzt4ml5AJYH=$mj*;mnVZ zk3rjsr%e-Ec|P52Ht5#x)3!4}yGC7HT}@3)Tx$9*X6z|>8C2nsoUF_cp))P}n4+DX z-J^WxGjl9IpO~o3%L_VD>S~6`{$E$ucXfBK|LiK+6DFN6Je|~;>dHMVM`}fa!d-}{W$$Wor@7%d_7f#UM|L4-nl4Hk@#~X(! zyZ7Z}WN2te*>(POM8}sg3Wqy5GeBSo@g$o}}DEEhigj~6PeSOT%O&d0R zXcdop;lD;qFGfOK{QHgM{<$`lm!1~w{r~Ux{Q7^DFJ7ISYkhr9Wbv;rne)$=|NQjy z`~CX(g#mxQEVrMkSSi6HG$C&7;e-pW+1am~Sh){9e|076Ycs!H#mh@eFW7?GLWjPq zzxevgwOg!pUESxi=8}?<3s-|KGSAMQtXKQz<8ebn!-esn8;%Yp1ng2-E5*ygwD9?! zpU-A92<&?J;o;$hcY8B4Go{UP8dk4%D}Q@S)UG*W^UZtp|7&*&cO7(S);w(>!NS49 zv~}y&uV23g1_rKNxzcLxy63i2r%vVN+iqz ze?Bzde=l!Wv*TdGj(ZVvZ7PEnU*wUui&^->E+!;2G&DXwe`CZPzjT*SDYnP^!3lt^ s+0iryb{V7$#_S_Ip*i~r=KnWT#zUtaW%fq{X+)78&qol`;+0HU7{`v3p{ literal 33094 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 4 ? nothing : (collect(q)[state], state + 1) Base.length(q::Quaternion) = 4 -Base.collect(q::Quaternion) = [q.i q.j q.k q.r] +Base.collect(q::Quaternion) = [q.i, q.j, q.k, q.r] Base.getindex(q::Quaternion, i) = collect(q)[i] Base.isapprox(a::Quaternion, b::Quaternion) = isapprox(collect(a), collect(b)) diff --git a/MisterBiggs/SADC.jl/SADC.jl b/MisterBiggs/SADC.jl/SADC.jl index 340420ead..3b349ecce 100644 --- a/MisterBiggs/SADC.jl/SADC.jl +++ b/MisterBiggs/SADC.jl/SADC.jl @@ -1,23 +1,28 @@ using LinearAlgebra using NumericalIntegration - +using ProgressBars include("Quaternions.jl") dt = 0.005 -time = 0.0:dt:100 +time = 0.0:dt:60 I = [3 0 0; 0 4 0; 0 0 2] +Iinv = inv(I) T = [0; 0; 0] ω = [2.001; 0.001; 0.001] +ω′ = [0; 0; 0] q = Quaternion([0; 0; 0; 1]) ω_last = [0; 0; 0; ω] -ω_temp = similar(ω_last) +ω0 = copy(ω_last) +ω_area = [0; 0; 0; 0; 0; 0] + +β = [0; 0; 0] -integrate_ω(T, I, ω) = inv(I) * (T - cross(ω, I * ω)) +integrate_ω(T, I, ω) = Iinv * (T - cross(ω, I * ω)) function q_step(β) mag = β .^ 2 |> sum |> sqrt @@ -34,40 +39,40 @@ function integrate_vector(v, v_last) return v_new end -yaw = [] -pitch = [] -roll = [] -for t in time - +qs = [] +for t in ProgressBar(time) + # t = collect(time)[1] ω′ = integrate_ω(T, I, ω) + + ω_new = integrate_vector([ω; ω′], ω_last) - ω = ω_new[4:6] + β = ω_new[1:3] .- β - β = ω_new[1:3] .- ω + ω_last = [ω; ω′] + ω = ω_new[4:6] .- ω + ω_area = ω_new .+ ω_area q = q * q_step(β) - y, p, r = q_to_Euler(q) - push!(yaw, y) - push!(pitch, p) - push!(roll, r) + push!(qs, q) end # Plot -# using Plots -# let -# plot(time, yaw, label = "Yaw") -# plot!(time, pitch, label = "Pitch") -# plot!(time, roll, label = "Roll") -# title!("Dancing T Handle") -# xlabel!("Seconds") -# ylabel!("Degrees") -# savefig("DancingT.png") -# end +using Plots +let + plot(title = "T Handle Quaternion") + plot!([q[1] for q in qs], label = "i") + plot!([q[2] for q in qs], label = "j") + plot!([q[3] for q in qs], label = "k") + plot!([q[4] for q in qs], label = "r") +end +# println("done") + +# plot(qs) # Write to CSV # using CSV @@ -83,3 +88,4 @@ end # CSV.write("ypr.csv", df, header = false) # df + -- 2.51.2 From c3c2164674072ef735dbd657ce2d83398c3dd69c Mon Sep 17 00:00:00 2001 From: Anson Date: Fri, 13 Aug 2021 03:31:18 -0700 Subject: [PATCH 6/7] cleanup --- MisterBiggs/SADC.jl/Quaternions.jl | 3 +-- MisterBiggs/SADC.jl/SADC.jl | 7 +------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/MisterBiggs/SADC.jl/Quaternions.jl b/MisterBiggs/SADC.jl/Quaternions.jl index c303d08bc..a6290db44 100644 --- a/MisterBiggs/SADC.jl/Quaternions.jl +++ b/MisterBiggs/SADC.jl/Quaternions.jl @@ -29,14 +29,13 @@ end function QuaternionMultiplication(l::Quaternion, r::Quaternion) R = [ - r.r r.k -r.j r.i + r.r r.k r.j r.i -r.k r.r r.i r.j r.j -r.i r.r r.k -r.i -r.j -r.k r.r ] L = [l.i; l.j; l.k; l.r] return Quaternion(R * L) - end Base.:*(l::Quaternion, r::Quaternion) = diff --git a/MisterBiggs/SADC.jl/SADC.jl b/MisterBiggs/SADC.jl/SADC.jl index 3b349ecce..2062d99f5 100644 --- a/MisterBiggs/SADC.jl/SADC.jl +++ b/MisterBiggs/SADC.jl/SADC.jl @@ -2,7 +2,6 @@ using LinearAlgebra using NumericalIntegration using ProgressBars - include("Quaternions.jl") dt = 0.005 @@ -18,7 +17,6 @@ q = Quaternion([0; 0; 0; 1]) ω_last = [0; 0; 0; ω] ω0 = copy(ω_last) -ω_area = [0; 0; 0; 0; 0; 0] β = [0; 0; 0] @@ -26,7 +24,6 @@ integrate_ω(T, I, ω) = Iinv * (T - cross(ω, I * ω)) function q_step(β) mag = β .^ 2 |> sum |> sqrt - Quaternion([normalize(β) .* sin(mag / 2); cos(mag / 2)]) end @@ -42,16 +39,14 @@ end qs = [] for t in ProgressBar(time) - # t = collect(time)[1] ω′ = integrate_ω(T, I, ω) ω_new = integrate_vector([ω; ω′], ω_last) β = ω_new[1:3] .- β - ω_last = [ω; ω′] ω = ω_new[4:6] .- ω - ω_area = ω_new .+ ω_area + ω_last = [ω; ω′] q = q * q_step(β) -- 2.51.2 From 6af2722cc13316b4c9361b01f3d7bf8d59f8c4f7 Mon Sep 17 00:00:00 2001 From: Anson Biggs Date: Fri, 19 Nov 2021 20:13:14 -0700 Subject: [PATCH 7/7] made project more usable --- MisterBiggs/SADC.jl/Manifest.toml | 898 ++++++++++++++++++++++++++++++ MisterBiggs/SADC.jl/Project.toml | 4 + MisterBiggs/SADC.jl/README.md | 2 + 3 files changed, 904 insertions(+) create mode 100644 MisterBiggs/SADC.jl/Manifest.toml create mode 100644 MisterBiggs/SADC.jl/Project.toml diff --git a/MisterBiggs/SADC.jl/Manifest.toml b/MisterBiggs/SADC.jl/Manifest.toml new file mode 100644 index 000000000..801ea4946 --- /dev/null +++ b/MisterBiggs/SADC.jl/Manifest.toml @@ -0,0 +1,898 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.7.0-rc1" +manifest_format = "2.0" + +[[deps.Adapt]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "84918055d15b3114ede17ac6a7182f68870c16f7" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "3.3.1" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.AxisAlgorithms]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] +git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7" +uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" +version = "1.0.1" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[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", "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 = "f2202b55d816427cd385a9a4f3ffb226bee80f99" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.1+0" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "f885e7e7c124f8c92650d61b9477b9ac2ee607dd" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.11.1" + +[[deps.ChangesOfVariables]] +deps = ["LinearAlgebra", "Test"] +git-tree-sha1 = "9a1d594397670492219635b35a3d830b04730d62" +uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" +version = "0.1.1" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random"] +git-tree-sha1 = "a851fec56cb73cfdf43762999ec72eff5b86882a" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.15.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.0" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.8" + +[[deps.Compat]] +deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] +git-tree-sha1 = "dce3e3fea680869eaa0b774b2e8343e9ff442313" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "3.40.0" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" + +[[deps.Contour]] +deps = ["StaticArrays"] +git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.5.7" + +[[deps.DataAPI]] +git-tree-sha1 = "cc70b17275652eb47bc9e5f81635981f13cea5c8" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.9.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "7d9d316f04214f7efdbb6398d545446e246eff02" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.10" + +[[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"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.8.6" + +[[deps.Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + +[[deps.EarCut_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3f3a2501fa7236e9b911e0f7a588c657e822bb6d" +uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +version = "2.2.3+0" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b3bfd02e98aedfa5cf885665493c5598c350cd2f" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.2.10+0" + +[[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", "Pkg", "Zlib_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "d8a578692e3077ac998b50c0217dfd67f21d1e5f" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.4.0+0" + +[[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.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.10.4+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.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] +git-tree-sha1 = "0c603255764a1fa0b61752d2bec14cfbd18f7fe8" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.3.5+1" + +[[deps.GR]] +deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Printf", "Random", "Serialization", "Sockets", "Test", "UUIDs"] +git-tree-sha1 = "30f2b340c2fff8410d89bfcdc9c0a6dd661ac5f7" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.62.1" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "fd75fa3a2080109a2c0ec9864a6e14c60cca3866" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.62.0+0" + +[[deps.GeometryBasics]] +deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] +git-tree-sha1 = "58bcdf5ebc057b085e58d95c138725628dd7453c" +uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +version = "0.4.1" + +[[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", "PCRE_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "7bf67e9a481712b3dbe9cb3dac852dc4b1162e02" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.68.3+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.HTTP]] +deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"] +git-tree-sha1 = "0fa77022fe4b511826b39c894c90daf5fce3334a" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "0.9.17" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] +git-tree-sha1 = "8a954fed8ac097d5be04921d595f741115c1b2ad" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "2.8.1+0" + +[[deps.IniFile]] +deps = ["Test"] +git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" +uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" +version = "0.5.0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.Interpolations]] +deps = ["AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "61aa005707ea2cebf47c8d780da8dc9bc4e0c512" +uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" +version = "0.13.4" + +[[deps.InverseFunctions]] +deps = ["Test"] +git-tree-sha1 = "a7254c0acd8e62f1ac75ad24d5db43f5f19f3c65" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.2" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.1.1" + +[[deps.IterTools]] +git-tree-sha1 = "05110a2ab1fc5f932622ffea2a003221f4782c18" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.3.0" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.3.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.2" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "d735490ac75c5cb9f1b00d8b5509c11984dc6943" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "2.1.0+0" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.1+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 = "f2355693d6778a178ade15952b7ac47a4ff97996" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.0" + +[[deps.Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] +git-tree-sha1 = "a8f4f279b6fa3c3c4f1adadd78a621b13a506bce" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.15.9" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" + +[[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" + +[[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 = "7739f837d6447403596a75d19ed01fd08d6f56bf" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.3.0+3" + +[[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", "Pkg"] +git-tree-sha1 = "42b62845d70a619f063a7da093d995ec8e15e778" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.16.1+1" + +[[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", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "340e257aada13f95f98ee352d316c3bed37c8ab9" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.3.0+0" + +[[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", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "be9eef9f9d78cecb6f262f3c10da151a6c5ab827" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.5" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.9" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"] +git-tree-sha1 = "1c38e51c3d08ef2278062ebceade0e46cefc96fe" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.0.3" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" + +[[deps.Measures]] +git-tree-sha1 = "e498ddeee6f9fdb4551ce855a46f54dbd900245f" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.1" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.0.2" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + +[[deps.NaNMath]] +git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "0.3.5" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[deps.NumericalIntegration]] +deps = ["Interpolations", "LinearAlgebra", "Logging"] +git-tree-sha1 = "2a4ef5fc235053f9747d59cfdee19bcb8ba1e833" +uuid = "e7bfaba1-d571-5449-8927-abc22e82249b" +version = "0.3.3" + +[[deps.OffsetArrays]] +deps = ["Adapt"] +git-tree-sha1 = "043017e0bdeff61cfbb7afeb558ab29536bbb5ed" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.10.8" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7937eda4681660b4d6aeeecc2f7e1c81c8ee4e2f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "15003dcb7d8db3c6c857fda14891a539a8f2705a" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "1.1.10+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 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.4.1" + +[[deps.PCRE_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b2a7af664e098055a7529ad1a900ded962bca488" +uuid = "2f80f16e-611a-54ab-bc61-aa92de5b98fc" +version = "8.44.0+0" + +[[deps.Parsers]] +deps = ["Dates"] +git-tree-sha1 = "ae4bbcadb2906ccc085cf52ac286dc1377dceccc" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.1.2" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.40.1+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Requires", "Statistics"] +git-tree-sha1 = "a3a964ce9dc7898193536002a6dd892b1b5a6f1d" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "2.0.1" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "Statistics"] +git-tree-sha1 = "b084324b4af5a438cd63619fd006614b3b20b87b" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.0.15" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun"] +git-tree-sha1 = "0d185e8c33401084cab546a756b387b15f76720c" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.23.6" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00cfd92944ca9c760982747e9a1d0d5d86ab1e5a" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.2.2" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.ProgressBars]] +deps = ["Printf"] +git-tree-sha1 = "938525cc66a4058f6ed75b84acd13a00fbecea11" +uuid = "49802e3a-d2f1-5c88-81d8-b72133a6f568" +version = "1.4.0" + +[[deps.Qt5Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] +git-tree-sha1 = "ad368663a5e20dbb8d6dc2fddeefe4dae0781ae8" +uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" +version = "5.15.3+0" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.Ratios]] +deps = ["Requires"] +git-tree-sha1 = "01d341f502250e81f6fec0afe662aa861392a3aa" +uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" +version = "0.4.2" + +[[deps.RecipesBase]] +git-tree-sha1 = "44a75aa7a527910ee3d1751d1f0e4148698add9e" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.1.2" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] +git-tree-sha1 = "7ad0dfa8d03b7bcf8c597f59f5292801730c55b8" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.4.1" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "4036a3bd08ac7e968e27c203d45f5fff15020621" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.1.3" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "0b4b7f1393cff97c33891da2a0bf69c6ed241fda" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.1.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.0.1" + +[[deps.SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "3c76dde64d03699e074ac02eb2e8ba8254d428da" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.2.13" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.StatsAPI]] +git-tree-sha1 = "1958272568dc176a1d881acb797beb909c785510" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.0.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "2bb0cb32026a66037360606510fca5984ccc6b75" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.33.13" + +[[deps.StructArrays]] +deps = ["Adapt", "DataAPI", "StaticArrays", "Tables"] +git-tree-sha1 = "2ce41e0d042c60ecd131e9fb7154a3bfadbf50d3" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.6.3" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[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", "TableTraits", "Test"] +git-tree-sha1 = "fed34d0e71b91734bf0a7e10eb1bb05296ddbcd0" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.6.0" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.URIs]] +git-tree-sha1 = "97bbe755a53fe859669cd907f2d96aee8d2c1355" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.3.0" + +[[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.Wayland_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "3e61f0b86f90dacb0bc0e73a0c5a83f6a8636e23" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.19.0+0" + +[[deps.Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll"] +git-tree-sha1 = "2839f1c1296940218e35df0bbb220f2a79686670" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.18.0+4" + +[[deps.WoodburyMatrices]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "de67fa59e33ad156a590055375a30b23c40299d3" +uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" +version = "0.5.5" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "1acf5bdf07aa0907e0a37d3718bb88d4b687b74a" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.9.12+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.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.6.9+4" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.9+4" + +[[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", "Pkg"] +git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.3+4" + +[[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", "Pkg"] +git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.0+3" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.13.0+3" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.0+4" + +[[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", "Pkg", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.2+4" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.27.0+4" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.4.0+3" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "cc4bf3fdde8b7e3e9fa0351bdeedba1cf3b7f6e6" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.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", "OpenBLAS_jll"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" + +[[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.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 = "c45f4e40e7aafe9d086379e5578947ec8b95a8fb" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" + +[[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 = "ece2350174195bb31de1a63bea3a41ae1aa593b6" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "0.9.1+5" diff --git a/MisterBiggs/SADC.jl/Project.toml b/MisterBiggs/SADC.jl/Project.toml new file mode 100644 index 000000000..e9bb19b01 --- /dev/null +++ b/MisterBiggs/SADC.jl/Project.toml @@ -0,0 +1,4 @@ +[deps] +NumericalIntegration = "e7bfaba1-d571-5449-8927-abc22e82249b" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +ProgressBars = "49802e3a-d2f1-5c88-81d8-b72133a6f568" diff --git a/MisterBiggs/SADC.jl/README.md b/MisterBiggs/SADC.jl/README.md index 81aabde5f..4db314df1 100644 --- a/MisterBiggs/SADC.jl/README.md +++ b/MisterBiggs/SADC.jl/README.md @@ -1,3 +1,5 @@ # SADC.Jl +To get started run Julia in your terminal then: `] instantiate` to install all the projects dependencies. You may need to set your Julia env to SADC.jl in order for vs code features to use the new enviroment. + ![](DancingT.png) \ No newline at end of file -- 2.51.2