diff --git a/docs/ruff.toml b/docs/ruff.toml index 50ec7749e1fc..f97c32b0f3df 100644 --- a/docs/ruff.toml +++ b/docs/ruff.toml @@ -1 +1,2 @@ line-length=78 +extend-exclude = ['tutorials/time-evolution/time-evolution.ipynb'] \ No newline at end of file diff --git a/docs/tutorials/index.mdx b/docs/tutorials/index.mdx index b3792b5ddbfa..6a2c1e65f8ad 100644 --- a/docs/tutorials/index.mdx +++ b/docs/tutorials/index.mdx @@ -65,6 +65,8 @@ These tutorials focus on estimating physically meaningful quantities, such as en * [Observation of robust and coherent non-Abelian hadron dynamics on noisy quantum processors](/docs/tutorials/loop-string-hadron-dynamics) +* [Simulate time evolution of the transverse-field Ising model](/docs/tutorials/time-evolution/time-evolution) + diff --git a/docs/tutorials/time-evolution/Manifest.toml b/docs/tutorials/time-evolution/Manifest.toml new file mode 100644 index 000000000000..19cd69997db9 --- /dev/null +++ b/docs/tutorials/time-evolution/Manifest.toml @@ -0,0 +1,3434 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.11.5" +manifest_format = "2.0" +project_hash = "80255ba63d0ff89ffdc5480ac0d052ea4ad9084a" + +[[deps.ADTypes]] +git-tree-sha1 = "9b38b82a9fe131f3d331a53b7203d9d1a2a4602c" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "1.22.4" +weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] + + [deps.ADTypes.extensions] + ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" + ADTypesEnzymeCoreExt = "EnzymeCore" + +[[deps.AMD]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] +git-tree-sha1 = "45a1272e3f809d36431e57ab22703c6896b8908f" +uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" +version = "0.5.3" + +[[deps.AbstractLattices]] +git-tree-sha1 = "763b6f3f6bfabd72c7e262cbb5ddfd43fd5c6398" +uuid = "398f06c4-4d28-53ec-89ca-5b2656b7603d" +version = "0.3.1" + +[[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 = "7063ad1083578215c7c4bf410368150abe8d5524" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.45" + + [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"] +git-tree-sha1 = "daa72978cd7a624246e894a4f4f067706d4e17e2" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.7.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.ArgCheck]] +git-tree-sha1 = "f9e9a66c9b7be1ad7372bbd9b062d9230c30c5ce" +uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" +version = "2.5.0" + +[[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.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra"] +git-tree-sha1 = "60f11b38ebeabd984f5535838d91e197d97202f0" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.28.1" + + [deps.ArrayInterface.extensions] + ArrayInterfaceAMDGPUExt = "AMDGPU" + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = ["CUDSS", "CUDA"] + ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceFillArraysExt = "FillArrays" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceMetalExt = "Metal" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceSparseArraysExt = "SparseArrays" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + 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" + FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + 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 = "e0b47732a192dd59b9d079a06d04235e2f833963" +uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" +version = "1.12.2" +weakdeps = ["SparseArrays"] + + [deps.ArrayLayouts.extensions] + ArrayLayoutsSparseArraysExt = "SparseArrays" + +[[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.BangBang]] +deps = ["Accessors", "ConstructionBase", "InitialValues", "LinearAlgebra"] +git-tree-sha1 = "cceb62468025be98d42a5dc581b163c20896b040" +uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" +version = "0.4.9" + + [deps.BangBang.extensions] + BangBangChainRulesCoreExt = "ChainRulesCore" + BangBangDataFramesExt = "DataFrames" + BangBangStaticArraysExt = "StaticArrays" + BangBangStructArraysExt = "StructArrays" + BangBangTablesExt = "Tables" + BangBangTypedTablesExt = "TypedTables" + + [deps.BangBang.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" + TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.Baselet]] +git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" +uuid = "9718e550-a3fa-408a-8086-8db961cd8217" +version = "0.1.1" + +[[deps.BitBasis]] +deps = ["LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "89dc08420d4f593ff30f02611d136b475a5eb43d" +uuid = "50ba71b6-fa0f-514d-ae9a-0916efc90dcf" +version = "0.9.10" + +[[deps.BitFlags]] +git-tree-sha1 = "bbe1079eecf9c9fbb52765193ad2bae27ae09bc8" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.10" + +[[deps.BitIntegers]] +deps = ["Random"] +git-tree-sha1 = "091d591a060e43df1dd35faab3ca284925c48e46" +uuid = "c3b6d118-76ef-56ca-8cc7-ebb389d030a1" +version = "0.3.7" + +[[deps.BitTwiddlingConvenienceFunctions]] +deps = ["Static"] +git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" +uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" +version = "0.1.6" + +[[deps.Bits]] +deps = ["Test"] +git-tree-sha1 = "525d055f0c6b9476e6dcf032286383ea941a395c" +uuid = "1654ce90-6ed3-553a-957f-9452c3a40996" +version = "0.2.0" + +[[deps.BlockArrays]] +deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] +git-tree-sha1 = "75c9c4d41f387b58ac7ecac17a02062f4cf8e92a" +uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" +version = "1.10.0" + + [deps.BlockArrays.extensions] + BlockArraysAdaptExt = "Adapt" + BlockArraysBandedMatricesExt = "BandedMatrices" + + [deps.BlockArrays.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + +[[deps.BracketingNonlinearSolve]] +deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "7ad7171d693ae5552ac43862e7f6b61df4471c2b" +uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e" +version = "1.12.1" +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", "Preferences", "Static"] +git-tree-sha1 = "f3a21d7fc84ba618a779d1ed2fcca2e682865bab" +uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" +version = "0.2.7" + +[[deps.CRC32c]] +uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" +version = "1.11.0" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "1fa950ebc3e37eccd51c6a8fe1f92f7d86263522" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.18.7+0" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "12177ad6b3cad7fd50c8b3825ce24a99ad61c18f" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.26.1" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.ChooseOptimizer]] +deps = ["HiGHS", "JuMP"] +git-tree-sha1 = "39b8a40d2909b2a20c9ac1828db32c42df90127c" +uuid = "858a232f-1959-5553-8cfc-91e1fd5304e2" +version = "0.3.2" + +[[deps.CliqueTrees]] +deps = ["AbstractTrees", "FillArrays", "FixedSizeArrays", "Graphs", "LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "5fa37aead6e5a276ec0dd81b5389fd5976873d6e" +uuid = "60701a23-6482-424a-84db-faee86b9b1f8" +version = "1.19.4" + + [deps.CliqueTrees.extensions] + AMDExt = "AMD" + CatlabExt = "Catlab" + FlowCutterPACE17_jllExt = "FlowCutterPACE17_jll" + KaHyParExt = "KaHyPar" + KrylovExt = "Krylov" + LaplaciansExt = "Laplacians" + MetisExt = "Metis" + MooncakeExt = "Mooncake" + TreeWidthSolverExt = "TreeWidthSolver" + + [deps.CliqueTrees.weakdeps] + AMD = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" + Catlab = "134e5e36-593f-5add-ad60-77f754baafbe" + FlowCutterPACE17_jll = "008204e2-cd5c-5c6d-9360-d31f32b5f6c2" + KaHyPar = "2a6221f6-aa48-11e9-3542-2d9e0ef01880" + Krylov = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" + Laplacians = "6f8e5838-0efe-5de0-80a3-5fb4f8dbb1de" + Metis = "2679e427-3c69-5b7f-982b-ece356f1e94b" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + TreeWidthSolver = "7d267fc5-9ace-409f-a54c-cd2374872a55" + +[[deps.CloseOpenIntervals]] +deps = ["Static", "StaticArrayInterface"] +git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" +uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" +version = "0.1.13" + +[[deps.CodeTracking]] +deps = ["InteractiveUtils", "REPL", "UUIDs"] +git-tree-sha1 = "cfb7a2e89e245a9d5016b70323db412b3a7438d5" +uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" +version = "3.0.2" + +[[deps.CodecBzip2]] +deps = ["Bzip2_jll", "TranscodingStreams"] +git-tree-sha1 = "84990fa864b7f2b4901901ca12736e45ee79068c" +uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" +version = "0.8.5" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.8" + +[[deps.Collects]] +git-tree-sha1 = "d0b504dbd9ea6a0142845a6f9b4c58b3627c718f" +uuid = "08986516-18db-4a8b-8eaa-f5ef1828d8f1" +version = "1.1.0" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "b0fd3f56fa442f81e0a47815c92245acfaaa4e34" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.31.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.5" + +[[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 = "37ea44092930b1811e666c3bc38065d7d87fcc74" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.13.1" + +[[deps.Combinatorics]] +git-tree-sha1 = "c761b00e7755700f9cdf5b02039939d1359330e1" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.1.0" + +[[deps.CommonSolve]] +git-tree-sha1 = "cf963add2340ad9960e5eb22844e61ad8f931fe1" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.13" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.1" + +[[deps.CommonWorldInvalidations]] +git-tree-sha1 = "ef2022bff55342a8c9846cdf218f62e475f0444d" +uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" +version = "1.1.2" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "9d8a54ce4b17aa5bdce0ea5c34bc5e7c340d16ad" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.18.1" +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.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 = "804fc3ca1cbfdd5aa52ae3149c0cb0555f875eec" +uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" +version = "0.2.7" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "3c9be947934c38475bafe822c6d61aaed17f0738" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.6.0" + +[[deps.ConstructionBase]] +git-tree-sha1 = "b4b092499347b18a015186eae3042f72267106cb" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.6.0" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[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.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataStructures]] +deps = ["OrderedCollections"] +git-tree-sha1 = "b0bc6d2cad1fed8b7fd59a1551a991cb3d2809e6" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.19.6" + +[[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.DefineSingletons]] +git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" +uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" +version = "0.1.2" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.Dictionaries]] +deps = ["Indexing", "Random", "Serialization"] +git-tree-sha1 = "a55766a9c8f66cf19ffcdbdb1444e249bb4ace33" +uuid = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" +version = "0.4.6" + +[[deps.DiffEqBase]] +deps = ["ArrayInterface", "BracketingNonlinearSolve", "ConcreteStructs", "DocStringExtensions", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLLogging", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "9d333db14895e8c7d4857ed228eb1e72d3b302ec" +uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" +version = "6.218.0" + + [deps.DiffEqBase.extensions] + DiffEqBaseCUDAExt = "CUDA" + DiffEqBaseChainRulesCoreExt = "ChainRulesCore" + DiffEqBaseDynamicQuantitiesExt = "DynamicQuantities" + DiffEqBaseEnzymeExt = ["ChainRulesCore", "Enzyme"] + DiffEqBaseFlexUnitsExt = "FlexUnits" + 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" + DynamicQuantities = "06fc5a27-2a28-4c7c-a15d-362465fb6821" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + FlexUnits = "76e01b6b-c995-4ce6-8559-91e72a3d4e95" + 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.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 = "79a2aca180a85c690c58a020d47b426954b590f8" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.16.0" + +[[deps.DifferentiationInterface]] +deps = ["ADTypes", "LinearAlgebra"] +git-tree-sha1 = "dbd46a5cd0e79a97438b0ebbec42e744e8f436fe" +uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +version = "0.7.20" + + [deps.DifferentiationInterface.extensions] + DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" + DifferentiationInterfaceDiffractorExt = "Diffractor" + DifferentiationInterfaceEnzymeExt = ["EnzymeCore", "Enzyme"] + DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" + DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" + DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" + DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] + DifferentiationInterfaceGPUArraysCoreExt = ["GPUArraysCore", "Adapt"] + DifferentiationInterfaceGTPSAExt = "GTPSA" + DifferentiationInterfaceHyperHessiansExt = "HyperHessians" + 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] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + 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" + HyperHessians = "06b494a0-c8e0-40cc-ad32-d99506a00a6c" + 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.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", "Roots", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "d2facc77c08c1c2bfb1a77c148edd05b3db5410b" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.130" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsSparseConnectivityTracerExt = "SparseConnectivityTracer" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +git-tree-sha1 = "7442a5dfe1ebb773c29cc2962a8980f47221d76c" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.5" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.EarCut_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" +uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +version = "2.2.4+0" + +[[deps.EllipsisNotation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "4337603d8124cf76db5e9a8077c2bf150040b2ed" +uuid = "da5c29d0-fa7d-589e-88eb-ea29b0a81949" +version = "1.11.0" +weakdeps = ["ArrayInterface", "Static", "StaticArrayInterface"] + + [deps.EllipsisNotation.extensions] + EllipsisNotationStaticArrayInterfaceExt = ["ArrayInterface", "Static", "StaticArrayInterface"] + +[[deps.EnumX]] +git-tree-sha1 = "c49898e8438c828577f04b92fc9368c388ac783c" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.7" + +[[deps.EnzymeCore]] +git-tree-sha1 = "971d7831cc85f43bc9f51d615a3f7f21270c2f1d" +uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" +version = "0.8.21" +weakdeps = ["Adapt", "ChainRulesCore"] + + [deps.EnzymeCore.extensions] + AdaptExt = "Adapt" + EnzymeCoreChainRulesCoreExt = "ChainRulesCore" + +[[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 = "e6c4a6407a949e79a9d3f249bf49e6987c80e01f" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.8.2+0" + +[[deps.ExponentialUtilities]] +deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] +git-tree-sha1 = "a3c8b66f8813b721a45bfe3cf32acf793aed78bb" +uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" +version = "1.31.0" +weakdeps = ["StaticArrays"] + + [deps.ExponentialUtilities.extensions] + ExponentialUtilitiesStaticArraysExt = "StaticArrays" + +[[deps.ExprTools]] +git-tree-sha1 = "d2e49e7efd29719d6f28b891b0e0e159daa9d2b4" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.11" + +[[deps.ExproniconLite]] +git-tree-sha1 = "c13f0b150373771b0fdc1713c97860f8df12e6c2" +uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" +version = "0.10.14" + +[[deps.ExternalDocstrings]] +git-tree-sha1 = "1224740fc4d07c989949e1c1b508ebd49a65a5f6" +uuid = "e189563c-0753-4f5e-ad5c-be4293c83fb4" +version = "0.1.1" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "95ecf07c2eea562b5adbd0696af6db62c0f52560" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.5" + +[[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", "libva_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "7a58e45171b63ed4782f2d36fdee8713a469e6e0" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "8.1.2+0" + +[[deps.FastBroadcast]] +deps = ["ArrayInterface", "LinearAlgebra"] +git-tree-sha1 = "6a97f3e08655ea9df1a946e378770c4d3fb3c4e9" +uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898" +version = "1.3.6" +weakdeps = ["Polyester", "Static"] + + [deps.FastBroadcast.extensions] + FastBroadcastPolyesterExt = "Polyester" + FastBroadcastStaticExt = "Static" + +[[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 = "4916117dd032ec5959b7633aedbbac408ca5ddeb" +uuid = "442a2c76-b920-505d-bb47-c5924d526838" +version = "1.3.0" + +[[deps.FastPower]] +git-tree-sha1 = "eb92a563909f2d4cb2911e0e2cb247ad17c6e9ae" +uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" +version = "1.4.1" + + [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 = "5bad39456d9f0166184fce2248783dd9862645c1" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.17.0" +weakdeps = ["PDMats", "SparseArrays", "StaticArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStaticArraysExt = "StaticArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] +git-tree-sha1 = "5031f23e040bf17082e5b52422d77b5e844eefb1" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.33.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 = ["Random", "Statistics"] +git-tree-sha1 = "59af96b98217c6ef4ae0dfe065ac7c20831d1a84" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.6" + +[[deps.FixedSizeArrays]] +deps = ["Collects"] +git-tree-sha1 = "76bb6e6427ba47b22c97b7f2cddc1ae002e6a9ad" +uuid = "3821ddf9-e5b5-40d5-8e25-6813ab96b5e2" +version = "1.3.0" +weakdeps = ["Adapt", "Random"] + + [deps.FixedSizeArrays.extensions] + FixedSizeArraysAdaptExt = "Adapt" + FixedSizeArraysRandomExt = "Random" + +[[deps.Folds]] +deps = ["Accessors", "BangBang", "Baselet", "DefineSingletons", "Distributed", "ExternalDocstrings", "InitialValues", "MicroCollections", "Referenceables", "Requires", "Test", "ThreadedScans", "Transducers"] +git-tree-sha1 = "7eb4bc88d8295e387a667fd43d67c157ddee76cf" +uuid = "41a02a25-b8f0-4f67-bc48-60067656b558" +version = "0.2.10" + + [deps.Folds.extensions] + FoldsOnlineStatsBaseExt = "OnlineStatsBase" + + [deps.Folds.weakdeps] + OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] +git-tree-sha1 = "f85dac9a96a01087df6e3a749840015a0ca3817d" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.17.1+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 = "1b86cca764a61dcac4fef4c5e16e378e5ed6953c" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "1.4.5" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "70329abc09b886fd2c5d94ad2d9527639c421e3e" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.14.3+1" + +[[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", "PrecompileTools", "SciMLPublic"] +git-tree-sha1 = "daced009d54a7cf502a9b5ed2f615c341f78af6f" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "1.12.1" + + [deps.FunctionWrappersWrappers.extensions] + FunctionWrappersWrappersEnzymeExt = ["Enzyme", "EnzymeCore"] + FunctionWrappersWrappersMooncakeExt = "Mooncake" + + [deps.FunctionWrappersWrappers.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + +[[deps.Functors]] +deps = ["Compat", "ConstructionBase", "LinearAlgebra", "Random"] +git-tree-sha1 = "1ac2813982db52b974c9343124ca61adbf297316" +uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" +version = "0.5.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 = "9e0fb9e54594c47f278d75063980e43066e26e20" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.4.1+1" + +[[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 = "f954322d5de03ec630d177cda203dcd92b6be399" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.73.26" + + [deps.GR.extensions] + IJuliaExt = "IJulia" + + [deps.GR.weakdeps] + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + +[[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 = "6fada551286ab6ea4ca1628cb2de9f166a2ec966" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.73.26+0" + +[[deps.Gamma]] +git-tree-sha1 = "86f86b6168a016ed88e4ae4e64577b98c3b59e8e" +uuid = "a0844989-3bd2-4988-8bea-c9407ab0941b" +version = "1.1.0" + +[[deps.GenericSchur]] +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "a694e2a57394e409f7a11ee0977362a9fafcb8c7" +uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" +version = "0.5.6" + +[[deps.GeometryBasics]] +deps = ["EarCut_jll", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"] +git-tree-sha1 = "364685f5ffde25deb1bbcfd5bb278a5c6b7a9b37" +uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +version = "0.5.11" + + [deps.GeometryBasics.extensions] + ExtentsExt = "Extents" + GeometryBasicsGeoInterfaceExt = "GeoInterface" + IntervalSetsExt = "IntervalSets" + + [deps.GeometryBasics.weakdeps] + Extents = "411431e0-e8b7-467b-b5e0-f676ba4f2910" + GeoInterface = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + +[[deps.GeometryTypes]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "StaticArrays"] +git-tree-sha1 = "d796f7be0383b5416cd403420ce0af083b0f9b28" +uuid = "4d00f742-c7ba-57c2-abde-4428a4b178cb" +version = "0.8.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.Ghostscript_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Zlib_jll"] +git-tree-sha1 = "38044a04637976140074d0b0621c1edf0eb531fd" +uuid = "61579ee1-b43e-5ca0-a5da-69d92c66a64b" +version = "9.55.1+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "GettextRuntime_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "090526e65de8f69648ac156daae153de8b56df62" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.88.3+0" + +[[deps.GraphRecipes]] +deps = ["AbstractTrees", "GeometryTypes", "Graphs", "InteractiveUtils", "Interpolations", "LinearAlgebra", "NaNMath", "NetworkLayout", "PlotUtils", "RecipesBase", "SparseArrays", "Statistics"] +git-tree-sha1 = "24c0a854c2f971b4915891a68ccfcd90ab3faea7" +uuid = "bd48cda9-67a9-57be-86fa-5b3c104eda73" +version = "0.5.16" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "69ffb934a5c5b7e086a0b4fee3427db2556fba6e" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.16+0" + +[[deps.Graphs]] +deps = ["ArnoldiMethod", "DataStructures", "Inflate", "LinearAlgebra", "Random", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "7eb45fe833a5b7c51cf6d89c5a841d5967e44be3" +uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" +version = "1.14.0" +weakdeps = ["Distributed", "SharedArrays"] + + [deps.Graphs.extensions] + GraphsSharedArraysExt = "SharedArrays" + +[[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 = "51059d23c8bb67911a2e6fd5130229113735fc7e" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.11.0" + +[[deps.HalfIntegers]] +git-tree-sha1 = "9c3149243abb5bc0bad0431d6c4fcac0f4443c7c" +uuid = "f0d1745a-41c9-11e9-1dd9-e5d34d218721" +version = "1.6.0" + +[[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.HiGHS]] +deps = ["HiGHS_jll", "LinearAlgebra", "MathOptIIS", "MathOptInterface", "OpenBLAS32_jll", "PrecompileTools", "SparseArrays"] +git-tree-sha1 = "01a5241985559c08a5baadbcebd6d87daaf84a84" +uuid = "87dc4568-4c63-4d18-b0c0-bb2238e4078b" +version = "1.24.1" + +[[deps.HiGHS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Zlib_jll", "libblastrampoline_jll"] +git-tree-sha1 = "2d9747b79d17c4320fe48048a3a768fe6d6d82de" +uuid = "8fd58aa0-07eb-5a78-9b36-339c94fd15ea" +version = "1.15.1+1" + +[[deps.HypergeometricFunctions]] +deps = ["Gamma", "LinearAlgebra"] +git-tree-sha1 = "31bb6c92405c084617facc1d7ed9eb6c402d061e" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.30" + +[[deps.ITensorMPS]] +deps = ["Adapt", "Compat", "ITensors", "IsApprox", "KrylovKit", "LinearAlgebra", "NDTensors", "Printf", "Random", "SerializedElementArrays", "TupleTools"] +git-tree-sha1 = "87f561eba7f138aea267f0f993522f87cc05e58f" +uuid = "0d1a4710-d33b-49a5-8f18-73bdf49b47e2" +version = "0.3.45" + + [deps.ITensorMPS.extensions] + ITensorMPSChainRulesCoreExt = "ChainRulesCore" + ITensorMPSHDF5Ext = "HDF5" + ITensorMPSObserversExt = "Observers" + ITensorMPSPackageCompilerExt = "PackageCompiler" + ITensorMPSZygoteRulesExt = ["ChainRulesCore", "ZygoteRules"] + + [deps.ITensorMPS.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" + Observers = "338f10d5-c7f1-4033-a7d1-f9dec39bcaa0" + PackageCompiler = "9b87118b-4619-50d2-8e1e-99f35a4d4d9d" + ZygoteRules = "700de1a5-db45-46bc-99cf-38207098b444" + +[[deps.ITensors]] +deps = ["Adapt", "BitIntegers", "ChainRulesCore", "Compat", "Dictionaries", "DocStringExtensions", "Functors", "IsApprox", "LinearAlgebra", "NDTensors", "Pkg", "Printf", "Random", "Requires", "SerializedElementArrays", "SimpleTraits", "SparseArrays", "StaticArrays", "Strided", "TimerOutputs", "TupleTools", "Zeros"] +git-tree-sha1 = "9294fcfd772505110115c623aca48c72a202211f" +uuid = "9136182c-28ba-11e9-034c-db9fb085ebd5" +version = "0.9.30" + + [deps.ITensors.extensions] + ITensorsHDF5Ext = "HDF5" + ITensorsTensorOperationsExt = "TensorOperations" + ITensorsVectorInterfaceExt = "VectorInterface" + ITensorsZygoteRulesExt = "ZygoteRules" + + [deps.ITensors.weakdeps] + HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" + TensorOperations = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2" + VectorInterface = "409d34a3-91d5-4945-b6ec-7529ddf182d8" + ZygoteRules = "700de1a5-db45-46bc-99cf-38207098b444" + +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + +[[deps.Indexing]] +git-tree-sha1 = "ce1566720fd6b19ff3411404d4b977acd4814f9f" +uuid = "313cdc1a-70c2-5d6a-ae34-0150d3930a38" +version = "1.1.1" + +[[deps.Inflate]] +git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" +uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" +version = "0.1.5" + +[[deps.InitialValues]] +git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" +uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" +version = "0.3.1" + +[[deps.InlineStrings]] +git-tree-sha1 = "8f3d257792a522b4601c24a577954b0a8cd7334d" +uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" +version = "1.4.5" + + [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 = "c72458f1962faeb003bf23cbdb75164fe6280906" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.4" + +[[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", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "48922d06068130f87e43edef52382e6a94305ae6" +uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" +version = "0.16.3" + + [deps.Interpolations.extensions] + InterpolationsForwardDiffExt = "ForwardDiff" + InterpolationsUnitfulExt = "Unitful" + + [deps.Interpolations.weakdeps] + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[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 = "b2d91fe939cae05960e760110b328288867b5758" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.6" + +[[deps.IsApprox]] +deps = ["Dictionaries", "LinearAlgebra"] +git-tree-sha1 = "d1a10e34d7f2e163cc1ebb45824c0226a5b57e37" +uuid = "28f27b66-4bd8-47e7-9110-e2746eb8bed7" +version = "2.0.1" + +[[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 = ["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 = "7204148362dafe5fe6a273f855b8ccbe4df8173e" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.8.0" + +[[deps.JSON]] +deps = ["Dates", "Logging", "Parsers", "PrecompileTools", "StructUtils", "UUIDs", "Unicode"] +git-tree-sha1 = "c89d196f5ffb64bfbf80985b699ea913b0d2c211" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "1.6.1" + + [deps.JSON.extensions] + JSONArrowExt = ["ArrowTypes"] + + [deps.JSON.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" + +[[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 = "1dae3057da6f2b9c857afef03177bbdc7c4afe92" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.2.0+0" + +[[deps.JuMP]] +deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays"] +git-tree-sha1 = "614b22ff014355192982b1f9a12c61298ce6a908" +uuid = "4076af6c-e467-56ae-b986-b466b2749572" +version = "1.31.1" + + [deps.JuMP.extensions] + JuMPDimensionalDataExt = "DimensionalData" + + [deps.JuMP.weakdeps] + DimensionalData = "0703355e-b756-11e9-17c0-8b28908087d0" + +[[deps.JuliaInterpreter]] +deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] +git-tree-sha1 = "c3d401f110454b4ea24a76be33f6ee0d7d385103" +uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" +version = "0.11.4" + +[[deps.Krylov]] +deps = ["LinearAlgebra", "Printf", "SparseArrays"] +git-tree-sha1 = "71e740d00d71cdb15145d7fe0d6000ec70534598" +uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" +version = "0.10.9" + +[[deps.KrylovKit]] +deps = ["LinearAlgebra", "PackageExtensionCompat", "Printf", "Random", "VectorInterface"] +git-tree-sha1 = "a3babd26e875e83b461e1c0f945bff52701e8181" +uuid = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" +version = "0.10.4" +weakdeps = ["ChainRulesCore"] + + [deps.KrylovKit.extensions] + KrylovKitChainRulesCoreExt = "ChainRulesCore" + +[[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 = "17b94ecafcfa45e8360a4fc9ca6b583b049e4e37" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "4.1.0+0" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b7970cef8ae1c990ba0c09cd8bdc1145e006632f" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "22.1.7+0" + +[[deps.LRUCache]] +git-tree-sha1 = "5519b95a490ff5fe629c4a7aa3b3dfc9160498b3" +uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" +version = "1.6.2" +weakdeps = ["Serialization"] + + [deps.LRUCache.extensions] + SerializationExt = ["Serialization"] + +[[deps.LaTeXStrings]] +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.0" + +[[deps.Latexify]] +deps = ["Format", "Ghostscript_jll", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] +git-tree-sha1 = "24390f715ff0795a1c4b912d788f18c52c6abd19" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.11" + + [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.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.LibMPDec_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "ce78ec7bb8a7c6babc1e61f701fbdf36f5384a36" +uuid = "7106de7a-f406-5ef1-84f7-3345f7341bd2" +version = "2.5.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 = "cc3ad4faf30015a3e8094c9b5b7f19e85bdf2386" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.42.0+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "aebd334d06cee9f24cea70bd19a39749daf73881" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.7.3+0" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d620582b1f0cbe2c72dd1d5bd195a9ce73370ab1" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.42.0+0" + +[[deps.LightXML]] +deps = ["Libdl", "XML2_jll"] +git-tree-sha1 = "aa971a09f0f1fe92fe772713a564aa48abe510df" +uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" +version = "0.9.3" + +[[deps.LineSearch]] +deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "PrecompileTools", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] +git-tree-sha1 = "36d9ea45f400b185d291528dd2e7659ace2da2c7" +uuid = "87fe0de2-c867-4266-b59a-2f0a94fc965b" +version = "0.1.13" +weakdeps = ["LineSearches"] + + [deps.LineSearch.extensions] + LineSearchLineSearchesExt = "LineSearches" + +[[deps.LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Printf"] +git-tree-sha1 = "cef1ba655e8c1f65af9d96c4fffe18bf1a3a3291" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.7.1" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" + +[[deps.LinearAlgebraX]] +deps = ["LinearAlgebra", "Mods", "Primes", "SimplePolynomials"] +git-tree-sha1 = "81b61301d2881af967ad53b13c64f21421040d46" +uuid = "9b3f67b0-2d00-526e-9884-9e4938f8fb88" +version = "0.2.11" + +[[deps.LinearSolve]] +deps = ["AMD", "ArrayInterface", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "OpenBLAS_jll", "PrecompileTools", "Preferences", "PureKLU", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLLogging", "SciMLOperators", "Setfield", "SparseArrays", "SparseColumnPivotedQR", "StaticArraysCore"] +git-tree-sha1 = "ec49ed72f6024be2f9833fe630fbd72f6048f8ad" +uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" +version = "3.87.0" + + [deps.LinearSolve.extensions] + LinearSolveAMDGPUExt = "AMDGPU" + LinearSolveAlgebraicMultigridExt = "AlgebraicMultigrid" + LinearSolveBLISExt = ["blis_jll", "LAPACK_jll"] + LinearSolveBandedMatricesExt = "BandedMatrices" + LinearSolveBlockDiagonalsExt = "BlockDiagonals" + LinearSolveCUDAExt = ["cuSOLVER"] + LinearSolveCUDSSExt = "CUDSS" + LinearSolveCUSOLVERRFExt = ["CUSOLVERRF", "SparseArrays"] + LinearSolveChainRulesCoreExt = "ChainRulesCore" + LinearSolveCliqueTreesExt = ["CliqueTrees", "SparseArrays"] + LinearSolveElementalExt = "Elemental" + LinearSolveEnzymeExt = ["EnzymeCore", "SparseArrays"] + LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" + LinearSolveFastLapackInterfaceExt = "FastLapackInterface" + LinearSolveForwardDiffExt = "ForwardDiff" + LinearSolveGinkgoExt = ["Ginkgo", "SparseArrays"] + LinearSolveHSLExt = ["HSL", "SparseArrays"] + LinearSolveHYPREExt = "HYPRE" + LinearSolveIterativeSolversExt = "IterativeSolvers" + LinearSolveKernelAbstractionsExt = "KernelAbstractions" + LinearSolveKrylovKitExt = "KrylovKit" + LinearSolveMUMPSExt = ["MUMPS", "SparseArrays"] + LinearSolveMetalExt = "Metal" + LinearSolveMooncakeExt = "Mooncake" + LinearSolvePETScExt = ["PETSc", "SparseArrays", "SparseMatricesCSR"] + LinearSolvePETScMPIExt = ["PETSc", "PartitionedArrays", "SparseArrays", "SparseMatricesCSR"] + LinearSolveParUExt = ["ParU_jll", "SparseArrays"] + LinearSolvePardisoExt = ["Pardiso", "SparseArrays"] + LinearSolvePartitionedSolversExt = ["PartitionedArrays", "PartitionedSolvers"] + LinearSolvePureUMFPACKExt = ["PureUMFPACK", "SparseArrays"] + LinearSolveRecursiveFactorizationExt = "RecursiveFactorization" + LinearSolveSTRUMPACKExt = ["SparseArrays", "STRUMPACK_jll"] + LinearSolveSparseArraysExt = "SparseArrays" + LinearSolveSparspakExt = ["SparseArrays", "Sparspak"] + LinearSolveSpecializingFactorizationsExt = "SpecializingFactorizations" + LinearSolveSuperLUDISTExt = ["SparseArrays", "SuperLUDIST"] + + [deps.LinearSolve.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + AlgebraicMultigrid = "2169fc97-5a83-5252-b627-83903c6c433c" + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + CUSOLVERRF = "a8cc9031-bad2-4722-94f5-40deabb4245c" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" + Elemental = "902c3f28-d1ec-5e7e-8399-a24c3845ee38" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" + FastLapackInterface = "29a986be-02c6-4525-aec4-84b980013641" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Ginkgo = "4c8bd3c9-ead9-4b5e-a625-08f1338ba0ec" + HSL = "34c5aeac-e683-54a6-a0e9-6e0fdc586c50" + HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" + IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" + LAPACK_jll = "51474c39-65e3-53ba-86ba-03b1b862ec14" + MUMPS = "55d2b088-9f4e-11e9-26c0-150b02ea6a46" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + PETSc = "ace2c81b-2b5f-4b1e-a30d-d662738edfe0" + ParU_jll = "9e0b026c-e8ce-559c-a2c4-6a3d5c955bc9" + Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" + PartitionedArrays = "5a9dfac6-5c52-46f7-8278-5e2210713be9" + PartitionedSolvers = "11b65f7f-80ac-401b-9ef2-3db765482d62" + PureUMFPACK = "b7e1f0a2-3c4d-4e5f-9a0b-1c2d3e4f5a6b" + RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" + STRUMPACK_jll = "86fbd0b9-476f-557c-b766-62c724b42d8c" + SparseMatricesCSR = "a0a7dd2c-ebf4-11e9-1f05-cf50bc540ca1" + Sparspak = "e56a9233-b9d6-4f03-8d0f-1825330902ac" + SpecializingFactorizations = "fa08b7a1-13d3-4faf-875d-5cbc1520e3f3" + SuperLUDIST = "4cd002a6-0da4-410d-a012-232df062f478" + blis_jll = "6136c539-28a5-5bf0-87cc-b183200dce32" + cuSOLVER = "887afef0-6a32-4de5-add4-7827692ba8fc" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "bba2d9aa057d8f126415de240573e86a8f39d2a1" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "1.0.1" + + [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 = "f00544d95982ea270145636c181ceda21c4e2575" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.2.0" + +[[deps.LoweredCodeUtils]] +deps = ["CodeTracking", "Compiler", "JuliaInterpreter"] +git-tree-sha1 = "1d4c737ab26f51ceed52ab2019c09b7660eb7440" +uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" +version = "3.8.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.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.MathOptIIS]] +deps = ["MathOptInterface"] +git-tree-sha1 = "3b3d69130d8ab8c39d5fa4d30e20a8e6428c9d37" +uuid = "8c4f8055-bd93-4160-a86b-a0c04941dbff" +version = "0.2.0" + +[[deps.MathOptInterface]] +deps = ["CodecBzip2", "CodecZlib", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test"] +git-tree-sha1 = "f1ccd9ffcb8577e207deb9aaebeb3f961de70380" +uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" +version = "1.52.0" + + [deps.MathOptInterface.extensions] + MathOptInterfaceBenchmarkToolsExt = "BenchmarkTools" + MathOptInterfaceCliqueTreesExt = "CliqueTrees" + + [deps.MathOptInterface.weakdeps] + BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" + CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" + +[[deps.MaybeInplace]] +deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "69ad9ad584510f04f0ce75841253aa4b7c83e6f2" +uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb" +version = "0.1.7" +weakdeps = ["SparseArrays"] + + [deps.MaybeInplace.extensions] + MaybeInplaceSparseArraysExt = "SparseArrays" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "8785729fa736197687541f7053f6d8ab7fc44f92" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.10" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.6+0" + +[[deps.Measures]] +git-tree-sha1 = "b513cedd20d9c914783d8ad83d08120702bf2c77" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.3" + +[[deps.MicroCollections]] +deps = ["Accessors", "BangBang", "InitialValues"] +git-tree-sha1 = "44d32db644e84c75dab479f1bc15ee76a1a3618f" +uuid = "128add7d-3638-4c79-886c-908ea0c25c34" +version = "0.2.0" + +[[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.Mods]] +git-tree-sha1 = "0a3c164857cfc4defe0ac09e6b0123d61320abb1" +uuid = "7475f97c-0381-53b1-977b-4c60186c8d62" +version = "2.2.6" + +[[deps.Moshi]] +deps = ["ExproniconLite", "Jieko"] +git-tree-sha1 = "60beb0717782a3bbe0f7df56decad0ef89048c23" +uuid = "2e0e35c7-a2e4-4343-998d-7ef72827ed2d" +version = "0.3.12" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.12.12" + +[[deps.MuladdMacro]] +deps = ["PrecompileTools"] +git-tree-sha1 = "283bf85d4a767481dd924dff0eee1735e95f449e" +uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" +version = "0.2.7" + +[[deps.Multisets]] +git-tree-sha1 = "f4205a002e2e0c4a10971ea313084ee212f761a4" +uuid = "3b2b4ff1-bcff-5658-a3ee-dbcf1ce5ac09" +version = "0.4.6" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "dc5b2c4c111c46bc79ac4405eeb563523b39c004" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.8.0" + +[[deps.NDTensors]] +deps = ["Accessors", "Adapt", "ArrayLayouts", "BlockArrays", "Compat", "Dictionaries", "EllipsisNotation", "FillArrays", "Folds", "Functors", "HalfIntegers", "InlineStrings", "LinearAlgebra", "MacroTools", "Random", "SimpleTraits", "SparseArrays", "SplitApplyCombine", "StaticArrays", "Strided", "StridedViews", "TimerOutputs", "TupleTools", "TypeParameterAccessors", "VectorInterface"] +git-tree-sha1 = "66d86c534d6887e0b89fec21dd96e58d0d3a312f" +uuid = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf" +version = "0.4.28" + + [deps.NDTensors.extensions] + NDTensorsAMDGPUExt = ["AMDGPU", "GPUArraysCore"] + NDTensorsCUDAExt = ["CUDA", "GPUArraysCore"] + NDTensorsGPUArraysCoreExt = "GPUArraysCore" + NDTensorsHDF5Ext = "HDF5" + NDTensorsJLArraysExt = ["GPUArraysCore", "JLArrays"] + NDTensorsMappedArraysExt = ["MappedArrays"] + NDTensorsMetalExt = ["GPUArraysCore", "Metal"] + NDTensorsOctavianExt = "Octavian" + NDTensorsTBLISExt = "TBLIS" + NDTensorscuTENSORExt = "cuTENSOR" + + [deps.NDTensors.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + MappedArrays = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + Octavian = "6fd5a793-0b7e-452c-907f-f8bfe9c57db4" + TBLIS = "48530278-0828-4a49-9772-0f3830dfa1e9" + cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" + +[[deps.NLSolversBase]] +deps = ["ADTypes", "DifferentiationInterface", "FiniteDiff", "LinearAlgebra"] +git-tree-sha1 = "b3f76b463c7998473062992b246045e6961a074e" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "8.0.0" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "dbd2e8cd2c1c27f0b584f6661b4309609c5a685e" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.1.4" + +[[deps.NamedGraphs]] +deps = ["AbstractTrees", "Combinatorics", "Dictionaries", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "SimpleGraphAlgorithms", "SimpleGraphConverter", "SimpleTraits", "SparseArrays", "SplitApplyCombine", "Suppressor"] +git-tree-sha1 = "53f1eb3d3bdee03b95fea0ea257e1d1bcf8b7f19" +uuid = "678767b0-92e7-4007-89e4-4527a8725b19" +version = "0.7.4" + + [deps.NamedGraphs.extensions] + NamedGraphsGraphsFlowsExt = "GraphsFlows" + NamedGraphsKaHyParExt = "KaHyPar" + NamedGraphsMetisExt = "Metis" + NamedGraphsSimpleGraphAlgorithmsExt = "SimpleGraphAlgorithms" + NamedGraphsSymRCMExt = "SymRCM" + + [deps.NamedGraphs.weakdeps] + GraphsFlows = "06909019-6f44-4949-96fc-b9d9aaa02889" + KaHyPar = "2a6221f6-aa48-11e9-3542-2d9e0ef01880" + Metis = "2679e427-3c69-5b7f-982b-ece356f1e94b" + SymRCM = "286e6d88-80af-4590-acc9-0001b223b9bd" + +[[deps.NetworkLayout]] +deps = ["GeometryBasics", "LinearAlgebra", "Random", "Requires", "StaticArrays"] +git-tree-sha1 = "f7466c23a7c5029dc99e8358e7ce5d81a117c364" +uuid = "46757867-2c16-5918-afeb-47bfcb05e46a" +version = "0.4.10" +weakdeps = ["Graphs"] + + [deps.NetworkLayout.extensions] + NetworkLayoutGraphsExt = "Graphs" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.NonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "Setfield", "SimpleNonlinearSolve", "StaticArraysCore", "SymbolicIndexingInterface"] +git-tree-sha1 = "a6c5719bbb42985c72f4cacbfa49e86bab850d66" +uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" +version = "4.19.1" + + [deps.NonlinearSolve.extensions] + NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" + NonlinearSolveFixedPointAccelerationExt = "FixedPointAcceleration" + NonlinearSolveLeastSquaresOptimExt = "LeastSquaresOptim" + NonlinearSolveMINPACKExt = "MINPACK" + NonlinearSolveNLSolversExt = "NLSolvers" + NonlinearSolveNLsolveExt = ["NLsolve", "LineSearches"] + NonlinearSolvePETScExt = ["PETSc", "MPI", "SparseArrays"] + 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" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" + Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" + +[[deps.NonlinearSolveBase]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "LogExpFunctions", "Markdown", "MaybeInplace", "PreallocationTools", "PrecompileTools", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLLogging", "SciMLOperators", "SciMLStructures", "Setfield", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] +git-tree-sha1 = "cb824030a0d5769555704db95ee3cbe0f76ed53d" +uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" +version = "2.30.3" + + [deps.NonlinearSolveBase.extensions] + NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" + NonlinearSolveBaseChainRulesCoreExt = "ChainRulesCore" + NonlinearSolveBaseEnzymeExt = ["ChainRulesCore", "Enzyme"] + NonlinearSolveBaseForwardDiffExt = "ForwardDiff" + NonlinearSolveBaseLineSearchExt = "LineSearch" + NonlinearSolveBaseLinearSolveExt = "LinearSolve" + NonlinearSolveBaseMooncakeExt = "Mooncake" + NonlinearSolveBaseReverseDiffExt = "ReverseDiff" + NonlinearSolveBaseSparseArraysExt = "SparseArrays" + NonlinearSolveBaseSparseMatrixColoringsExt = "SparseMatrixColorings" + NonlinearSolveBaseTrackerExt = "Tracker" + + [deps.NonlinearSolveBase.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + LineSearch = "87fe0de2-c867-4266-b59a-2f0a94fc965b" + LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.NonlinearSolveFirstOrder]] +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "ce68820a4f421fb5bee7ec4dcf875aff33886bfb" +uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" +version = "2.1.1" + +[[deps.NonlinearSolveQuasiNewton]] +deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] +git-tree-sha1 = "538432ca1aea8bf63db02929bf870501f8a7c64c" +uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" +version = "1.13.1" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveQuasiNewton.extensions] + NonlinearSolveQuasiNewtonForwardDiffExt = "ForwardDiff" + +[[deps.NonlinearSolveSpectralMethods]] +deps = ["CommonSolve", "ConcreteStructs", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "a3781e12becdf0ce5520bd97ec617e879bf4e9f2" +uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" +version = "1.7.1" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveSpectralMethods.extensions] + NonlinearSolveSpectralMethodsForwardDiffExt = "ForwardDiff" + +[[deps.OMEinsumContractionOrders]] +deps = ["AbstractTrees", "CliqueTrees", "DataStructures", "JSON", "SparseArrays", "StatsBase", "Suppressor", "TreeWidthSolver"] +git-tree-sha1 = "318826781ce17989079d07fbf620113d4de0a732" +uuid = "6f22d1fd-8eed-4bb7-9776-e7d684900715" +version = "1.3.0" + + [deps.OMEinsumContractionOrders.extensions] + KaHyParExt = ["KaHyPar"] + LuxorTensorPlot = ["LuxorGraphPlot"] + + [deps.OMEinsumContractionOrders.weakdeps] + KaHyPar = "2a6221f6-aa48-11e9-3542-2d9e0ef01880" + LuxorGraphPlot = "1f49bdf2-22a7-4bc4-978b-948dc219fbbc" + +[[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.OpenBLAS32_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "libblastrampoline_jll"] +git-tree-sha1 = "30870d0f2dc0b2dba76b10df1c58c7f018413e56" +uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" +version = "0.3.34+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.5+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "NetworkOptions", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "1d1aaa7d449b58415f97d2839c318b70ffb525a0" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.6.1" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d8cce34295c55f47be683580f44791716045b8fe" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.7+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 = ["ADTypes", "EnumX", "FillArrays", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "Statistics"] +git-tree-sha1 = "6fe140aab6c042a73c9d5dc280b87b32eee44f9f" +uuid = "429524aa-4258-5aef-a3af-852621145aeb" +version = "2.2.1" +weakdeps = ["MathOptInterface"] + + [deps.Optim.extensions] + OptimMOIExt = "MathOptInterface" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e2bb57a313a74b8104064b7efd01406c0a50d2ff" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.6.1+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "94ba93778373a53bfd5a0caaf7d809c445292ff4" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.8.2" + +[[deps.OrdinaryDiffEq]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "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", "SparseArrays", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "47271adac597af08263b6ea2669e93040b45c4d0" +uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +version = "6.111.0" + +[[deps.OrdinaryDiffEqAdamsBashforthMoulton]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqLowOrderRK", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "2e44acb684dfcdc2e41851a988733e30b28a8478" +uuid = "89bda076-bce5-4f1c-845f-551c83cdda9a" +version = "1.11.0" + +[[deps.OrdinaryDiffEqBDF]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqSDIRK", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] +git-tree-sha1 = "d7f69947e070a6a89aaf583e8aa2fada199fc292" +uuid = "6ad6398a-0878-4a85-9266-38940aa047c8" +version = "1.26.0" + +[[deps.OrdinaryDiffEqCore]] +deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "ConcreteStructs", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappersWrappers", "InteractiveUtils", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "Polyester", "PrecompileTools", "Preferences", "Random", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLLogging", "SciMLOperators", "SciMLStructures", "Static", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "c0a22f012d3e98fd78afafe8e5152ace7a2276bc" +uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" +version = "3.33.1" + + [deps.OrdinaryDiffEqCore.extensions] + OrdinaryDiffEqCoreMooncakeExt = "Mooncake" + OrdinaryDiffEqCoreSparseArraysExt = "SparseArrays" + + [deps.OrdinaryDiffEqCore.weakdeps] + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.OrdinaryDiffEqDefault]] +deps = ["ADTypes", "DiffEqBase", "EnumX", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "PrecompileTools", "Preferences", "Reexport", "SciMLBase"] +git-tree-sha1 = "5fbd116f93790ce79c4beff8206e1b8e45c492a2" +uuid = "50262376-6c5a-4cf5-baba-aaf4f84d72d7" +version = "1.14.0" + +[[deps.OrdinaryDiffEqDifferentiation]] +deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SciMLOperators", "SparseMatrixColorings", "StaticArraysCore"] +git-tree-sha1 = "f3976b6baeb64051f41ed461a1933b7501a4f38e" +uuid = "4302a76b-040a-498a-8c04-15b101fed76b" +version = "2.9.0" +weakdeps = ["SparseArrays"] + + [deps.OrdinaryDiffEqDifferentiation.extensions] + OrdinaryDiffEqDifferentiationSparseArraysExt = "SparseArrays" + +[[deps.OrdinaryDiffEqExplicitRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] +git-tree-sha1 = "54346c3d7a9932ab11743a99afed8a3ff0a65fea" +uuid = "9286f039-9fbf-40e8-bf65-aa933bdc4db0" +version = "1.12.0" + +[[deps.OrdinaryDiffEqExponentialRK]] +deps = ["ADTypes", "DiffEqBase", "ExponentialUtilities", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "32fb54c8000c82fd32c55f7bf52f4651a3bd0e61" +uuid = "e0540318-69ee-4070-8777-9e2de6de23de" +version = "1.15.0" + +[[deps.OrdinaryDiffEqExtrapolation]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastPower", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "57bf89f5b144f6e5af1146fb7aee1544c6b76950" +uuid = "becaefa8-8ca2-5cf9-886d-c06f3d2bd2c4" +version = "1.18.0" + +[[deps.OrdinaryDiffEqFIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastGaussQuadrature", "FastPower", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "3339f3a26974a37666c74b95bdb54aefc63b9a56" +uuid = "5960d6e9-dd7a-4743-88e7-cf307b64f125" +version = "1.26.0" + +[[deps.OrdinaryDiffEqFeagin]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "302999c99bc454cf274d39b9ba3c2415f6fbb1cb" +uuid = "101fe9f7-ebb6-4678-b671-3a81e7194747" +version = "1.10.0" + +[[deps.OrdinaryDiffEqFunctionMap]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "2d2d59f9e530bca2f99934ecfde5430f6ad54bfe" +uuid = "d3585ca7-f5d3-4ba6-8057-292ed1abd90f" +version = "1.11.0" + +[[deps.OrdinaryDiffEqHighOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "a6fef72198944e64e0d818f2cc46275e663370c9" +uuid = "d28bc4f8-55e1-4f49-af69-84c1a99f0f58" +version = "1.12.0" + +[[deps.OrdinaryDiffEqIMEXMultistep]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Reexport", "SciMLBase"] +git-tree-sha1 = "bd5440f7f09ce75df59e7f5d2f5b8e52d24aae3c" +uuid = "9f002381-b378-40b7-97a6-27a27c83f129" +version = "1.14.0" + +[[deps.OrdinaryDiffEqLinear]] +deps = ["DiffEqBase", "ExponentialUtilities", "LinearAlgebra", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "a1217ddfc979da3a2d9cf11b083688562e8ef333" +uuid = "521117fe-8c41-49f8-b3b6-30780b3f0fb5" +version = "1.12.0" + +[[deps.OrdinaryDiffEqLowOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "68a5e7e1b37933841e823a588deff3ec3e757a00" +uuid = "1344f307-1e59-4825-a18e-ace9aa3fa4c6" +version = "1.13.0" + +[[deps.OrdinaryDiffEqLowStorageRK]] +deps = ["Adapt", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "076ac77cee882b2f4858292dde748c8b2ab908e7" +uuid = "b0944070-b475-4768-8dec-fb6eb410534d" +version = "1.15.0" + +[[deps.OrdinaryDiffEqNonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "PreallocationTools", "RecursiveArrayTools", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "SparseArrays", "StaticArraysCore"] +git-tree-sha1 = "82dde00dc43d5a4762cf50fa070b654cc38a2e87" +uuid = "127b3ac7-2247-4354-8eb6-78cf4e7c58e8" +version = "1.28.0" + +[[deps.OrdinaryDiffEqNordsieck]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "21117475cb0d27942d31e4b8a27337392ae680b0" +uuid = "c9986a66-5c92-4813-8696-a7ec84c806c8" +version = "1.11.0" + +[[deps.OrdinaryDiffEqPDIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "Reexport", "SciMLBase"] +git-tree-sha1 = "1aaaa4851bbe72497c9d01d69fa36396ddeb0a0a" +uuid = "5dd0a6cf-3d4b-4314-aa06-06d4e299bc89" +version = "1.14.0" + +[[deps.OrdinaryDiffEqPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "Reexport", "SciMLBase"] +git-tree-sha1 = "1fe4f58f170c68b187ac42dc5f00932bb162ddfa" +uuid = "5b33eab2-c0f1-4480-b2c3-94bc1e80bda1" +version = "1.10.0" + +[[deps.OrdinaryDiffEqQPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "275900d64ab7be5f1bca8c7bfd48166838b6ab44" +uuid = "04162be5-8125-4266-98ed-640baecc6514" +version = "1.10.0" + +[[deps.OrdinaryDiffEqRKN]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "edf3411246d6030e165a5fba513cbdcde5c72f79" +uuid = "af6ede74-add8-4cfd-b1df-9a4dbb109d7a" +version = "1.12.0" + +[[deps.OrdinaryDiffEqRosenbrock]] +deps = ["ADTypes", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "3579d9272c286ffcceee794c5752e8cc7c3ae514" +uuid = "43230ef6-c299-4910-a778-202eb28ce4ce" +version = "1.31.1" + +[[deps.OrdinaryDiffEqSDIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] +git-tree-sha1 = "c5e26fbadbad137fa2b7e3161a290a1becfec502" +uuid = "2d112036-d095-4a1e-ab9a-08536f3ecdbf" +version = "1.14.0" + +[[deps.OrdinaryDiffEqSSPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "4ec0be19f8115889f61643fc25f6e3af5cd4c9e7" +uuid = "669c94d9-1f4b-4b64-b377-1aa079aa2388" +version = "1.14.0" + +[[deps.OrdinaryDiffEqStabilizedIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqStabilizedRK", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "226226d334fe295885df6ecb2d110c22ead79983" +uuid = "e3e12d00-db14-5390-b879-ac3dd2ef6296" +version = "1.14.0" + +[[deps.OrdinaryDiffEqStabilizedRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "StaticArraysCore"] +git-tree-sha1 = "764e11fb6a26ee8f2d2d10778d531fd708f35d28" +uuid = "358294b1-0aab-51c3-aafe-ad5ab194a2ad" +version = "1.11.1" + +[[deps.OrdinaryDiffEqSymplecticRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "b18a4e7973e73e84cfd79222e2389565b323b588" +uuid = "fa646aed-7ef9-47eb-84c4-9443fc8cbfa8" +version = "1.13.0" + +[[deps.OrdinaryDiffEqTsit5]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "6bd89fce8a0b198ac9fe98dc80362a92a2a13ae5" +uuid = "b1df2697-797e-41e3-8120-5422d3b24e4a" +version = "1.12.0" + +[[deps.OrdinaryDiffEqVerner]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "58dc7756825ca46e5a601a5aeba7d26a071d373a" +uuid = "79d7bb75-1356-48c1-b8c0-6832512096c2" +version = "1.14.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 = "123266c25174ef6c8d4718920abc206452cf8de6" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.41" +weakdeps = ["StatsBase"] + + [deps.PDMats.extensions] + StatsBaseExt = "StatsBase" + +[[deps.PackageExtensionCompat]] +git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" +uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" +version = "1.0.2" +weakdeps = ["Requires", "TOML"] + +[[deps.Pango_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7126b66b721a605a2fec966a2874c5ed53258eb3" +uuid = "36c8627f-9965-5494-a995-c6b170f724f3" +version = "1.58.0+0" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "3de8f5e6e90ebfa8d6d1f86997d6cdcd6a912ff3" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.7" + +[[deps.PauliPropagation]] +deps = ["BitIntegers", "Bits", "LinearAlgebra", "Random", "StatsBase", "Test"] +git-tree-sha1 = "8679743b2b6f910f201517c30cbf932cdf2b61c1" +uuid = "293282d5-3c99-4fb6-92d0-fd3280a19750" +version = "0.3.0" + +[[deps.Permutations]] +deps = ["Combinatorics", "LinearAlgebra", "Random"] +git-tree-sha1 = "b1f03a4943c62552a12c7f95965b76c3f91cf5b7" +uuid = "2ae35dd2-176d-5d53-8349-f30d82d94d4f" +version = "0.4.23" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "e4a6721aa89e62e5d4217c0b21bd714263779dda" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.46.4+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 = "26ca162858917496748aad52bb5d3be4d26a228a" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.4.4" + +[[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", "Unzip"] +git-tree-sha1 = "cb20a4eacda080e517e4deb9cfb6c7c518131265" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.41.6" + + [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.Polyester]] +deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] +git-tree-sha1 = "16bbc30b5ebea91e9ce1671adc03de2832cff552" +uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" +version = "0.7.19" + +[[deps.PolyesterWeave]] +deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] +git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" +uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" +version = "0.2.2" + +[[deps.Polynomials]] +deps = ["LinearAlgebra", "OrderedCollections", "Setfield", "SparseArrays"] +git-tree-sha1 = "2d99b4c8a7845ab1342921733fa29366dae28b24" +uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" +version = "4.1.1" + + [deps.Polynomials.extensions] + PolynomialsChainRulesCoreExt = "ChainRulesCore" + PolynomialsFFTWExt = "FFTW" + PolynomialsMakieExt = "Makie" + PolynomialsMutableArithmeticsExt = "MutableArithmetics" + PolynomialsRecipesBaseExt = "RecipesBase" + + [deps.Polynomials.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + +[[deps.PositiveFactorizations]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" +uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" +version = "0.2.4" + +[[deps.PreallocationTools]] +deps = ["Adapt", "ArrayInterface", "PrecompileTools", "SciMLPublic"] +git-tree-sha1 = "315eb21a0da58dccdbd29e3c617e3a9fbdd768a8" +uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" +version = "1.4.1" + + [deps.PreallocationTools.extensions] + PreallocationToolsEnzymeCoreExt = "EnzymeCore" + PreallocationToolsForwardDiffExt = "ForwardDiff" + PreallocationToolsReverseDiffExt = "ReverseDiff" + PreallocationToolsSparseConnectivityTracerExt = "SparseConnectivityTracer" + + [deps.PreallocationTools.weakdeps] + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" + +[[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 = "8b770b60760d4451834fe79dd483e318eee709c4" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.5.2" + +[[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 = "4fbbafbc6251b883f4d2705356f3641f3652a7fe" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.4.0" + +[[deps.PureKLU]] +deps = ["LinearAlgebra", "PrecompileTools", "SparseArrays"] +git-tree-sha1 = "762c7006b147e31fc7dd272b5e4714aae648e05b" +uuid = "0c0d3e7f-3a8b-4f7e-b6f1-9a4d2e7c1f01" +version = "1.4.0" +weakdeps = ["ForwardDiff"] + + [deps.PureKLU.extensions] + PureKLUForwardDiffExt = "ForwardDiff" + +[[deps.Python_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "JLLWrappers", "LibMPDec_jll", "Libdl", "Libffi_jll", "OpenSSL_jll", "SQLite_jll", "XZ_jll", "Zlib_jll"] +git-tree-sha1 = "76a68dfc4e6fcbcccf90e1961fa2705885699391" +uuid = "93d3a430-8e7c-50da-8e8d-3dfcfb3baf05" +version = "3.11.12+0" + +[[deps.Qiskit]] +deps = ["CEnum", "Compat", "Libdl", "Qiskit_jll"] +git-tree-sha1 = "bef356714b8612dcd9c8623b0544608c0cfe89a7" +uuid = "91d9a17d-f964-4b6c-a3c4-2f4cfdea2c95" +version = "0.4.0" + +[[deps.QiskitIBMRuntime]] +deps = ["CEnum", "Compat", "Dates", "Libdl", "Qiskit", "qiskit_ibm_runtime_jll"] +git-tree-sha1 = "2732c577e98e6c95c998e55a2083cb5a6541117d" +uuid = "1f74880b-c9c8-4af4-a333-b5b4aaaec6f5" +version = "0.2.1" + +[[deps.Qiskit_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Python_jll"] +git-tree-sha1 = "73ce450e9f1725c1fa608fa86ad960d75aa08e83" +uuid = "b54e8e98-f244-53b3-a8e8-4727a4907f76" +version = "2.2.3+1" + +[[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 = "144895f6166994730ee7ff8113b981fc360638f1" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.10.2+2" + +[[deps.Qt6Declarative_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll", "Qt6Svg_jll"] +git-tree-sha1 = "159d253ab126d5b29230cf53521899bea4ef4648" +uuid = "629bc702-f1f5-5709-abd5-49b8460ea067" +version = "6.10.2+2" + +[[deps.Qt6ShaderTools_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] +git-tree-sha1 = "4d85eedf69d875982c46643f6b4f66919d7e157b" +uuid = "ce943373-25bb-56aa-8eca-768745ed7b5a" +version = "6.10.2+1" + +[[deps.Qt6Svg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] +git-tree-sha1 = "81587ff5ff25a4e1115ce191e36285ede0334c9d" +uuid = "6de9746b-f93d-5813-b365-ba18ad4a9cf3" +version = "6.10.2+0" + +[[deps.Qt6Wayland_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] +git-tree-sha1 = "672c938b4b4e3e0169a07a5f227029d4905456f2" +uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" +version = "6.10.2+1" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "5e8e8b0ab68215d7a2b14b9921a946fee794749e" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.11.3" + + [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", "LinearAlgebra", "PrecompileTools", "RecipesBase", "StaticArraysCore", "SymbolicIndexingInterface"] +git-tree-sha1 = "d0282d612f22dcad7b81cf487b746e63aa2a6709" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "3.54.0" + + [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" + RecursiveArrayToolsFastBroadcastPolyesterExt = ["FastBroadcast", "Polyester"] + RecursiveArrayToolsForwardDiffExt = "ForwardDiff" + RecursiveArrayToolsKernelAbstractionsExt = "KernelAbstractions" + RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" + RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] + RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] + RecursiveArrayToolsStatisticsExt = "Statistics" + RecursiveArrayToolsStructArraysExt = "StructArrays" + RecursiveArrayToolsTablesExt = ["Tables"] + 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" + Polyester = "f517fe37-dbe3-4b94-8317-1923a5111588" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" + 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.Referenceables]] +deps = ["Adapt"] +git-tree-sha1 = "02d31ad62838181c1a3a5fd23a1ce5914a643601" +uuid = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" +version = "0.1.3" + +[[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.Revise]] +deps = ["CRC32c", "CodeTracking", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Preferences", "REPL", "UUIDs"] +git-tree-sha1 = "ec46aed6a3a8cc6b67839ca361e7b4aa32eaeee1" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.16.3" +weakdeps = ["Distributed"] + + [deps.Revise.extensions] + DistributedExt = "Distributed" + +[[deps.RingLists]] +deps = ["Random"] +git-tree-sha1 = "70d8d52c6d4238cace6ae1a7dd2c0c4d43acdf0b" +uuid = "286e9d63-9694-5540-9e3c-4e6708fa07b2" +version = "0.2.9" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "5b3d50eb374cea306873b371d3f8d3915a018f0b" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.9.0" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6d40b2fe70437b01397d2a4d5b020008da4e7019" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.5.2+0" + +[[deps.Roots]] +deps = ["Accessors", "CommonSolve", "Printf"] +git-tree-sha1 = "7fb25a964849d90a0446366cdefca822e0e84900" +uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +version = "3.0.6" + + [deps.Roots.extensions] + RootsChainRulesCoreExt = "ChainRulesCore" + RootsForwardDiffExt = "ForwardDiff" + RootsIntervalRootFindingExt = "IntervalRootFinding" + RootsSymPyExt = "SymPy" + RootsSymPyPythonCallExt = "SymPyPythonCall" + RootsUnitfulExt = "Unitful" + + [deps.Roots.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + SymPyPythonCall = "bc8888f7-b21e-4b7c-a06a-5d9c9496438c" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.RuntimeGeneratedFunctions]] +deps = ["ExprTools", "SHA", "Serialization"] +git-tree-sha1 = "65c9e1142f0372bfc16ba14b9edd57737fe0039f" +uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" +version = "0.5.24" + +[[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.SQLite_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll", "dlfcn_win32_jll"] +git-tree-sha1 = "324744e40b84e6dc2cfaa4122ce969a083c40a6f" +uuid = "76ed43ae-9a5d-5a62-8c75-30186b810ce8" +version = "3.53.2+0" + +[[deps.SciMLBase]] +deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PreallocationTools", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLLogging", "SciMLOperators", "SciMLPublic", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] +git-tree-sha1 = "d56cb3b924cdf9297c171113e6a6ae9694e370eb" +uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +version = "2.155.2" + + [deps.SciMLBase.extensions] + SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBaseDifferentiationInterfaceExt = "DifferentiationInterface" + SciMLBaseDistributionsExt = "Distributions" + SciMLBaseEnzymeExt = "Enzyme" + SciMLBaseForwardDiffExt = "ForwardDiff" + SciMLBaseMLStyleExt = "MLStyle" + SciMLBaseMakieExt = "Makie" + SciMLBaseMeasurementsExt = "Measurements" + SciMLBaseMonteCarloMeasurementsExt = "MonteCarloMeasurements" + SciMLBaseMooncakeExt = "Mooncake" + SciMLBasePartialFunctionsExt = "PartialFunctions" + SciMLBasePyCallExt = "PyCall" + SciMLBasePythonCallExt = "PythonCall" + SciMLBaseRCallExt = "RCall" + SciMLBaseReverseDiffExt = "ReverseDiff" + SciMLBaseTrackerExt = "Tracker" + SciMLBaseZygoteExt = ["Zygote", "ChainRulesCore"] + + [deps.SciMLBase.weakdeps] + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" + Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + MLStyle = "d8e11817-5142-5d16-987a-aa16d5891078" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" + PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLJacobianOperators]] +deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DifferentiationInterface", "FastClosures", "LinearAlgebra", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "396fd0f85b71f87111618e1cbe6608a1bcc8a447" +uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" +version = "0.1.16" + +[[deps.SciMLLogging]] +deps = ["Logging", "LoggingExtras", "Preferences"] +git-tree-sha1 = "4e1e21f14a284f892eb62923a356c70a2a0c68e1" +uuid = "a6db7da4-7206-11f0-1eab-35f2a5dbe1d1" +version = "1.10.1" + + [deps.SciMLLogging.extensions] + SciMLLoggingTracyExt = "Tracy" + + [deps.SciMLLogging.weakdeps] + Tracy = "e689c965-62c8-4b79-b2c5-8359227902fd" + +[[deps.SciMLOperators]] +deps = ["Accessors", "Adapt", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "SciMLPublic"] +git-tree-sha1 = "54333a8ba01ff383643b44d5a97a4bc2c07d4d2f" +uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" +version = "1.26.1" + + [deps.SciMLOperators.extensions] + SciMLOperatorsLoopVectorizationExt = "LoopVectorization" + SciMLOperatorsSparseArraysExt = "SparseArrays" + + [deps.SciMLOperators.weakdeps] + LoopVectorization = "bdcacae8-1622-11e9-2a5c-532679323890" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[deps.SciMLPublic]] +git-tree-sha1 = "cf9aaf8b9ed5db993259ea8b24cf2b7ba9bd3b79" +uuid = "431bcebd-1456-4ced-9d72-93c2757fff0b" +version = "1.2.4" + +[[deps.SciMLStructures]] +deps = ["ArrayInterface", "PrecompileTools"] +git-tree-sha1 = "53bf620cb2c3763d41495b2a145611c6ca400dcd" +uuid = "53ae85a6-f571-4167-b2af-e1d143709226" +version = "1.10.4" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "9b81b8393e50b7d4e6d0a9f14e192294d3b7c109" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.3.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.SerializedElementArrays]] +deps = ["Serialization"] +git-tree-sha1 = "8e73e49eaebf73486446a3c1eede403bff259826" +uuid = "d3ce8812-9567-47e9-a7b5-65a6d70a3065" +version = "0.1.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.SimpleGraphAlgorithms]] +deps = ["ChooseOptimizer", "JuMP", "LinearAlgebra", "SimpleGraphs", "SimplePartitions", "SimplePolynomials"] +git-tree-sha1 = "e333fd8f96c9e61b3beac3968b06c87d5f849d99" +uuid = "41400c72-0c58-5c16-8579-4ecbce768449" +version = "0.6.0" + +[[deps.SimpleGraphConverter]] +deps = ["Graphs", "SimpleGraphs"] +git-tree-sha1 = "30b6ee355f4fb9a79db85300f2d96e1582eb89aa" +uuid = "205b04f2-f585-4877-a239-566270b3f673" +version = "0.1.0" + +[[deps.SimpleGraphs]] +deps = ["AbstractLattices", "Combinatorics", "DataStructures", "IterTools", "LightXML", "LinearAlgebra", "LinearAlgebraX", "Optim", "Primes", "Random", "RingLists", "SimplePartitions", "SimplePolynomials", "SimpleRandom", "SparseArrays", "Statistics"] +git-tree-sha1 = "34ce9c7e74b4d326a964dd68d73bec61b52c2bbe" +uuid = "55797a34-41de-5266-9ec1-32ac4eb504d3" +version = "0.8.10" + +[[deps.SimpleNonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "08d8bafd57b7ea16dc1f69a8bd57db23a2ceb686" +uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" +version = "2.12.0" + + [deps.SimpleNonlinearSolve.extensions] + SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" + SimpleNonlinearSolveReverseDiffExt = "ReverseDiff" + SimpleNonlinearSolveTrackerExt = "Tracker" + + [deps.SimpleNonlinearSolve.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.SimplePartitions]] +deps = ["AbstractLattices", "DataStructures", "Permutations"] +git-tree-sha1 = "76cdce94e07849d1172ccb8f3a60a0bbbebe58b3" +uuid = "ec83eff0-a5b5-5643-ae32-5cbf6eedec9d" +version = "0.3.3" + +[[deps.SimplePolynomials]] +deps = ["Mods", "Multisets", "Polynomials", "Primes"] +git-tree-sha1 = "77b2c5e731f7e50bbd088ccc2810232e06c1afa3" +uuid = "cc47b68c-3164-5771-a705-2bc0097375a0" +version = "0.2.18" + +[[deps.SimpleRandom]] +deps = ["Distributions", "LinearAlgebra", "Random"] +git-tree-sha1 = "bb4f42b25b87f124478207a82f5b02dfafdb3e63" +uuid = "a6525b86-64cd-54fa-8f65-62fc48bdc0e8" +version = "0.3.2" + +[[deps.SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "7ddb0b49c109481b046972c0e4ab02b2127d6a75" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.6" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "13cd91cc9be159e3f4d95b857fa2aa383b53772a" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.3" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.11.0" + +[[deps.SparseColumnPivotedQR]] +deps = ["LinearAlgebra", "PrecompileTools", "SparseArrays"] +git-tree-sha1 = "ee8155fd93f0efc510e4523850bd9e0bb6e03199" +uuid = "a57abbd0-fea5-4d57-96be-5e525945e8e4" +version = "2.1.6" +weakdeps = ["AMD"] + + [deps.SparseColumnPivotedQR.extensions] + SparseColumnPivotedQRAMDExt = "AMD" + +[[deps.SparseMatrixColorings]] +deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "PrecompileTools", "Random", "SparseArrays"] +git-tree-sha1 = "f63d76c7b7c329cf11badd564fd8ba877b09c3fe" +uuid = "0a514795-09f3-496d-8182-132a7b665d35" +version = "0.4.27" + + [deps.SparseMatrixColorings.extensions] + SparseMatrixColoringsCUDAExt = ["CUDA", "cuSPARSE"] + SparseMatrixColoringsCliqueTreesExt = "CliqueTrees" + SparseMatrixColoringsColorsExt = "Colors" + SparseMatrixColoringsGPUArraysExt = "GPUArrays" + SparseMatrixColoringsJuMPExt = ["JuMP", "MathOptInterface"] + + [deps.SparseMatrixColorings.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" + Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" + GPUArrays = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" + JuMP = "4076af6c-e467-56ae-b986-b466b2749572" + MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" + cuSPARSE = "b26da814-b3bc-49ef-b0ee-c816305aa060" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "c3ac026e735264e9bdc6a9bcbd1b1e781b36e3bc" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.8.3" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.SplitApplyCombine]] +deps = ["Dictionaries", "Indexing"] +git-tree-sha1 = "55db78e829cf726162fc4fc1b30d05f92092f3f6" +uuid = "03a91e81-4c3e-53e1-a0a4-9c0c8f19dd66" +version = "1.3.0" + +[[deps.SplittablesBase]] +deps = ["Setfield", "Test"] +git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" +uuid = "171d559e-b47b-412a-8079-5efa626c420e" +version = "0.1.15" + +[[deps.StableRNGs]] +deps = ["Random"] +git-tree-sha1 = "4f96c596b8c8258cc7d3b19797854d368f243ddc" +uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" +version = "1.0.4" + +[[deps.Static]] +deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools", "SciMLPublic"] +git-tree-sha1 = "474a5283ad435618090122872eea6a8165ea6bcf" +uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" +version = "1.4.6" + +[[deps.StaticArrayInterface]] +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "SciMLPublic", "Static"] +git-tree-sha1 = "2a635e15d5035c53b345077c947f31ff91744078" +uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" +version = "1.10.0" +weakdeps = ["OffsetArrays", "StaticArrays"] + + [deps.StaticArrayInterface.extensions] + StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" + StaticArrayInterfaceStaticArraysExt = "StaticArrays" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "246a8bb2e6667f832eea063c3a56aef96429a3db" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.18" +weakdeps = ["ChainRulesCore", "Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "6ab403037779dae8c514bad259f32a447262455a" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.4" + +[[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 = "178ed29fd5b2a2cfc3bd31c13375ae925623ff36" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.8.0" + +[[deps.StatsBase]] +deps = ["AliasTables", "DataAPI", "DataStructures", "IrrationalConstants", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "e4d7a1a0edc20af42689ea6f4f3587a2175d50ee" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.12" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "91a5737baed20ee31f3faea0e51f57461f6a689e" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "2.2.1" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.StrideArraysCore]] +deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] +git-tree-sha1 = "5316097111523c9a970596a5b33cfea5f92e8581" +uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" +version = "0.5.9" + +[[deps.Strided]] +deps = ["LinearAlgebra", "PrecompileTools", "StridedViews", "TupleTools"] +git-tree-sha1 = "5fa7f6845c91e6e351880cee67a9efc3b892bd3b" +uuid = "5e0ebb24-38b0-5f93-81fe-25c709ecae67" +version = "2.6.4" + + [deps.Strided.extensions] + StridedAMDGPUExt = "AMDGPU" + StridedGPUArraysExt = "GPUArrays" + StridedcuBLASExt = "cuBLAS" + + [deps.Strided.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + GPUArrays = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" + cuBLAS = "182d3088-87b7-4494-8cad-fc6afaa545bc" + +[[deps.StridedViews]] +deps = ["LinearAlgebra", "PrecompileTools"] +git-tree-sha1 = "21dc3942c478661f72c527ff5d67baa98e555372" +uuid = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" +version = "0.5.2" + + [deps.StridedViews.extensions] + StridedViewsAMDGPUExt = "AMDGPU" + StridedViewsAdaptExt = "Adapt" + StridedViewsCUDACoreExt = "CUDACore" + StridedViewsJLArraysExt = "JLArrays" + StridedViewsPtrArraysExt = "PtrArrays" + + [deps.StridedViews.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + CUDACore = "bd0ed864-bdfe-4181-a5ed-ce625a5fdea2" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + PtrArrays = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" + +[[deps.StructUtils]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "c65ae4aa47e543c278aea0a3468786d33021a3ff" +uuid = "ec057cc2-7a8d-4b58-b3b3-92acb9f63b42" +version = "2.8.4" + + [deps.StructUtils.extensions] + StructUtilsMeasurementsExt = ["Measurements"] + StructUtilsStaticArraysCoreExt = ["StaticArraysCore"] + StructUtilsTablesExt = ["Tables"] + + [deps.StructUtils.weakdeps] + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" + +[[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.Suppressor]] +deps = ["Logging"] +git-tree-sha1 = "6dbb5b635c5437c68c28c2ac9e39b87138f37c0a" +uuid = "fd094767-a336-5f1f-9728-57cf17d0bbfb" +version = "0.2.8" + +[[deps.SymbolicIndexingInterface]] +deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] +git-tree-sha1 = "ae6fd46b22508c2dfcd0fabf144ce5e9d9d2e719" +uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +version = "0.3.53" + + [deps.SymbolicIndexingInterface.extensions] + SymbolicIndexingInterfacePrettyTablesExt = "PrettyTables" + + [deps.SymbolicIndexingInterface.weakdeps] + PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" + +[[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", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "0f38a06c83f0007bbab3cf911262841c9a0f07e0" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.13.0" + +[[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.TensorNetworkQuantumSimulator]] +deps = ["Adapt", "Combinatorics", "Dictionaries", "GraphRecipes", "Graphs", "ITensorMPS", "ITensors", "KrylovKit", "LinearAlgebra", "NamedGraphs", "OMEinsumContractionOrders", "PauliPropagation", "Revise", "SimpleGraphAlgorithms", "SimpleGraphConverter", "SplitApplyCombine", "Statistics", "StatsBase", "TensorOperations", "TypeParameterAccessors"] +git-tree-sha1 = "a96fb5ae03f057dfc2ccc9de24e1db8d99d1bb65" +uuid = "4de3b72a-362e-43dd-83ff-3f381eda9f9c" +version = "0.3.11" + +[[deps.TensorOperations]] +deps = ["LRUCache", "LinearAlgebra", "PackageExtensionCompat", "PrecompileTools", "Preferences", "PtrArrays", "Strided", "StridedViews", "TupleTools", "VectorInterface"] +git-tree-sha1 = "e8c1d2e0e5ff26553ded73be8e55a88efd671eb9" +uuid = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2" +version = "5.7.0" + + [deps.TensorOperations.extensions] + TensorOperationsAMDGPUExt = "AMDGPU" + TensorOperationsBumperExt = "Bumper" + TensorOperationsCUDACoreExt = "CUDACore" + TensorOperationsChainRulesCoreExt = "ChainRulesCore" + TensorOperationsEnzymeExt = "Enzyme" + TensorOperationsJLArraysExt = "JLArrays" + TensorOperationsMooncakeExt = "Mooncake" + TensorOperationscuTENSORExt = "cuTENSOR" + + [deps.TensorOperations.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + Bumper = "8ce10254-0962-460f-a3d8-1f77fea1446e" + CUDACore = "bd0ed864-bdfe-4181-a5ed-ce625a5fdea2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" + +[[deps.ThreadedScans]] +deps = ["ArgCheck"] +git-tree-sha1 = "ca1ba3000289eacba571aaa4efcefb642e7a1de6" +uuid = "24d252fe-5d94-4a69-83ea-56a14333d47a" +version = "0.1.0" + +[[deps.ThreadingUtilities]] +deps = ["ManualMemory"] +git-tree-sha1 = "7c73336785b21f723f5b143f6e99cf6c43b37dc1" +uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" +version = "0.5.6" + +[[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.Transducers]] +deps = ["Accessors", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "ConstructionBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "SplittablesBase", "Tables"] +git-tree-sha1 = "4aa1fdf6c1da74661f6f5d3edfd96648321dade9" +uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" +version = "0.4.85" + + [deps.Transducers.extensions] + TransducersAdaptExt = "Adapt" + TransducersBlockArraysExt = "BlockArrays" + TransducersDataFramesExt = "DataFrames" + TransducersLazyArraysExt = "LazyArrays" + TransducersOnlineStatsBaseExt = "OnlineStatsBase" + TransducersReferenceablesExt = "Referenceables" + + [deps.Transducers.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" + OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" + Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" + +[[deps.TreeWidthSolver]] +deps = ["AbstractTrees", "BitBasis", "Combinatorics", "Graphs", "SparseArrays"] +git-tree-sha1 = "6738f4a82bba556df9c42aed0f8642ea7344033a" +uuid = "7d267fc5-9ace-409f-a54c-cd2374872a55" +version = "0.3.5" + +[[deps.TruncatedStacktraces]] +deps = ["InteractiveUtils", "MacroTools", "Preferences"] +git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" +uuid = "781d530d-4396-4725-bb49-402e4bee1e77" +version = "1.4.0" + +[[deps.TupleTools]] +git-tree-sha1 = "41e43b9dc950775eac654b9f845c839cd2f1821e" +uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" +version = "1.6.0" + +[[deps.TypeParameterAccessors]] +deps = ["LinearAlgebra", "SimpleTraits"] +git-tree-sha1 = "15553df00a2e5ddac528c859f356aa866f32e44d" +uuid = "7e5a90cf-f82e-492e-a09b-e3e26432c138" +version = "0.4.23" + + [deps.TypeParameterAccessors.extensions] + TypeParameterAccessorsAMDGPUExt = "AMDGPU" + TypeParameterAccessorsCUDAExt = "CUDA" + TypeParameterAccessorsFillArraysExt = "FillArrays" + TypeParameterAccessorsJLArraysExt = "JLArrays" + TypeParameterAccessorsMetalExt = "Metal" + TypeParameterAccessorsStridedViewsExt = "StridedViews" + TypeParameterAccessorsoneAPIExt = "oneAPI" + + [deps.TypeParameterAccessors.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + StridedViews = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" + oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" + +[[deps.URIs]] +git-tree-sha1 = "3b0738bd7c5645641845da25cbd99800b8718689" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.6.2" + +[[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.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.VectorInterface]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "949dd28df19a5bf0973214e4a9d36c19079d4d45" +uuid = "409d34a3-91d5-4945-b6ec-7529ddf182d8" +version = "0.6.0" + + [deps.VectorInterface.extensions] + VectorInterfaceChainRulesCoreExt = "ChainRulesCore" + VectorInterfaceEnzymeExt = "Enzyme" + VectorInterfaceMooncakeExt = "Mooncake" + VectorInterfaceStaticArraysExt = "StaticArrays" + + [deps.VectorInterface.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[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.WoodburyMatrices]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "248a7031b3da79a127f14e5dc5f417e26f9f6db7" +uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" +version = "1.1.0" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "3f3315d89fc954a28f5b471bce698ed6e27481be" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.15.3+0" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b29c22e245d092b8b4e8d3c09ad7baa586d9f573" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.8.3+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 = "808090ede1d41644447dd5cbafced4731c56bd2f" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.13+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 = "1a4a26870bf1e5d26cd585e38038d399d7e65706" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.8+0" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "75e00946e43621e09d431d9b95818ee751e6b2ef" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "6.0.2+0" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "dcb316b3ce0941f195537dda56bea4517fcd3ff5" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.8.4+0" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll"] +git-tree-sha1 = "0ba01bc7396896a4ace8aab67db31403c71628f4" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.7+0" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "6c174ef70c96c76f4c3f4d3cfbe09d018bcd1b53" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.6+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_libpciaccess_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "58972370b81423fc546c56a60ed1a009450177c3" +uuid = "a65dc6b1-eb27-53a1-bb3e-dea574b5389e" +version = "0.19.0+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 = "ed756a03e95fff88d8f738ebc2849431bdd4fd1a" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.2.0+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 = "9750dc53819eba4e9a20be42349a6d3b86c7cdf8" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.6+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 = "2e59214e017a55cb87474a00fa76035c82ac0e17" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.47.0+2" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.6.0+0" + +[[deps.Zeros]] +git-tree-sha1 = "3286921ca285adecd40313c375540421be5fffeb" +uuid = "bd1ec220-6eb4-527a-9b49-e79c3db6233b" +version = "0.5.0" + + [deps.Zeros.extensions] + ZerosRandomExt = "Random" + ZerosSIMDExt = "SIMD" + + [deps.Zeros.weakdeps] + Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + SIMD = "fdea26ae-647d-5447-a871-4b548cad5224" + +[[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.dlfcn_win32_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e141d67ffe550eadfb5af1bdbdaf138031e4805f" +uuid = "c4b69c83-5512-53e3-94e6-de98773c479f" +version = "1.4.2+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 = "850b06095ee71f0135d644ffd8a52850699581ed" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.13.3+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.libdrm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libpciaccess_jll"] +git-tree-sha1 = "28e57478e8a160d346a19c28b3fffb9273bcc9c2" +uuid = "8e53e030-5e6c-5a89-a30b-be5b7263a166" +version = "2.4.134+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 = "e51150d5ab85cee6fc36726850f0e627ad2e4aba" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.58+0" + +[[deps.libva_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "libdrm_jll"] +git-tree-sha1 = "7dbf96baae3310fe2fa0df0ccbb3c6288d5816c9" +uuid = "9a156e7d-b971-5f62-b2c9-67348b8fb97c" +version = "2.23.0+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", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "da8c1f6eee04831f14edcfa5dae611d309807e57" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2022.3.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" + +[[deps.qiskit_ibm_runtime_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qiskit_jll"] +git-tree-sha1 = "1167e96e41132995b6945a0517cd505e39af887c" +uuid = "dfd00f80-54b8-5b12-a44d-54bafd549557" +version = "0.38.0+1" + +[[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 = "a1fc6507a40bf504527d0d4067d718f8e179b2b8" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.13.0+0" diff --git a/docs/tutorials/time-evolution/Project.toml b/docs/tutorials/time-evolution/Project.toml new file mode 100644 index 000000000000..b42d0148822b --- /dev/null +++ b/docs/tutorials/time-evolution/Project.toml @@ -0,0 +1,19 @@ +[deps] +JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Qiskit = "91d9a17d-f964-4b6c-a3c4-2f4cfdea2c95" +QiskitIBMRuntime = "1f74880b-c9c8-4af4-a333-b5b4aaaec6f5" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +TensorNetworkQuantumSimulator = "4de3b72a-362e-43dd-83ff-3f381eda9f9c" + +[compat] +# Qiskit 0.5 pulls Qiskit_jll 2.4, whose QkCircuitInstruction stores gate +# parameters as QkParam** rather than double*. qiskit_ibm_runtime_jll 0.38.1 +# still reads that field as double*, so every rotation angle is submitted to +# the backend as a reinterpreted pointer (~7e-314). Holding Qiskit at 0.4 keeps +# Qiskit_jll at 2.2.3 and qiskit_ibm_runtime_jll at 0.38.0, where the ABI matches. +Qiskit = "0.4" +QiskitIBMRuntime = "0.2" diff --git a/docs/tutorials/time-evolution/time-evolution.ipynb b/docs/tutorials/time-evolution/time-evolution.ipynb new file mode 100644 index 000000000000..86afb4b40b89 --- /dev/null +++ b/docs/tutorials/time-evolution/time-evolution.ipynb @@ -0,0 +1,1984 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8d86bf32", + "metadata": {}, + "source": [ + "---\n", + "title: Simulate time evolution of the transverse-field Ising model\n", + "description: Use Qiskit.jl to simulate time evolution of the transverse-field Ising model on IBM Quantum hardware\n", + "---\n", + "\n", + "{/* cspell:ignore mktempdir Néel spdiagm Runge Kutta tspan saveat siteinds Neel maxdim tensornetworkstate println countmap clims xlabel ylabel colorbar */}" + ] + }, + { + "cell_type": "markdown", + "id": "65550e2a", + "metadata": {}, + "source": [ + "# Simulate time evolution of the transverse-field Ising model\n", + "Usage estimate: 22 seconds on Heron r2 processor (NOTE: This is an estimate only. Your runtime may vary.)\n", + "\n", + "## Learning outcomes\n", + "1. Learn how to transpile and run quantum circuits on the hardware using Julia\n", + "2. Learn how to post-process measurement outcomes to compute expectation values\n", + "3. Learn how to benchmark hardware results against classical simulation to quantify the combined effects of Trotter approximation error and hardware noise" + ] + }, + { + "cell_type": "markdown", + "id": "efde28b8", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "We suggest that users get familiar with the following topics before going through this tutorial:\n", + "* [Quantum simulation for time evolution](https://quantum.cloud.ibm.com/learning/en/courses/utility-scale-quantum-computing/quantum-simulation)\n", + "\n", + "* [The transverse field Ising model](https://en.wikipedia.org/wiki/Transverse-field_Ising_model) \n", + "\n", + "* [Circuit transpilation in Qiskit](https://quantum.cloud.ibm.com/docs/en/guides/transpile#introduction-to-transpilation)" + ] + }, + { + "cell_type": "markdown", + "id": "727912c7", + "metadata": {}, + "source": [ + "## Background\n", + "\n", + "Julia is a dynamic programming language designed primarily for numerical and scientific computing. Its high-performance numerical computing capabilities make it a natural fit for quantum simulation workflows. In this tutorial, we will show how Julia is used for both classical pre- and post-processing (e.g., building Hamiltonians, running ODE solvers, computing expectation values) and for orchestrating quantum hardware jobs, eliminating the need to switch between languages or environments.\n", + "\n", + "To interface with IBM Quantum hardware from Julia, this tutorial uses two packages from the Qiskit ecosystem: `Qiskit.jl` wraps the Qiskit C library and provides circuit construction and transpilation functionality in Julia; `QiskitIBMRuntime.jl` connects to IBM Quantum hardware through the Qiskit IBM Runtime service, enabling job submission and result retrieval directly from Julia.\n", + "\n", + "In this tutorial, we consider the trotterized evolution of the transverse-field Ising model on a 1D chain with nearest-neighbor interactions:\n", + "\n", + "$$\n", + " H = \\sum_{\\langle i,j\\rangle}J_{ij}Z_iZ_j + \\sum_i h_i X_i\n", + "$$\n", + "\n", + "To implement the time evolution $e^{-iH\\tau}$, we divide the time interval $\\tau$ into $r$ steps and define $\\Delta\\tau=\\tau/r$. The second-order Trotter-Suzuki decomposition gives:\n", + "$$\n", + " e^{-iH\\Delta\\tau}\\approx \\prod_i e^{-ih_i X_i\\Delta\\tau/2 } \\prod_{\\langle i,j\\rangle} e^{-iJ_{ij}Z_iZ_j\\Delta\\tau} \\prod_i e^{-ih_iX_i\\Delta\\tau/2}\n", + "$$\n", + "\n", + "For circuit construction, each Trotter step is implemented as a sequence of single-qubit $R_x$ rotations and two-qubit $R_{ZZ}$ gates. The circuit begins by preparing the Néel state $|0101\\cdots\\rangle$ using X gates on alternating qubits. Each subsequent Trotter step applies: (1) $R_x(h_i\\Delta\\tau/2)$ on every qubit, (2) $R_{ZZ}(2J_{ij}\\Delta\\tau)$ on each neighboring pair along the chain, and (3) $R_x(h_i\\Delta\\tau/2)$ again on every qubit. The total circuit depth grows linearly with the number of Trotter steps $r$." + ] + }, + { + "cell_type": "markdown", + "id": "020f72af", + "metadata": {}, + "source": [ + "## Requirements\n", + "\n", + "Note that this tutorial requires macOS or Linux — Qiskit.jl is not currently supported on Windows (tracked in [this open issue](https://github.com/Qiskit/Qiskit.jl/issues/15)).\n", + "\n", + "To get started, install Julia, following the instructions on the [Julia download page](https://julialang.org/downloads/). This tutorial was developed with Julia 1.11, one can install this version via `juliaup add 1.11`.\n", + "\n", + "Then, run the following command in a terminal to install the Julia package `IJulia` into the global environment, which lets you run Julia inside the Jupyter notebook.\n", + "\n", + "```\n", + "julia -e 'using Pkg; Pkg.add(\"IJulia\")'\n", + "```\n", + "\n", + "We will use Julia's built-in package manager to set up the project environment. There are two ways to set up the environment.\n", + "\n", + "Option 1: temporary environment. You can run the following code cell to set up a temporary environment and install the required packages:\n", + "\n", + "For quantum circuit construction and execution:\n", + "* `Qiskit.jl`\n", + "* `QiskitIBMRuntime.jl`\n", + "\n", + "For classical simulation:\n", + "* `OrdinaryDiffEq.jl`\n", + "* `TensorNetworkQuantumSimulator.jl`\n", + "\n", + "For post-processing results and visualization:\n", + "* `StatsBase.jl`\n", + "* `JSON.jl`\n", + "* `Plots.jl`\n", + "\n", + "Note that `Qiskit.jl` is pinned to the 0.4 series. Version 0.5 tracks a newer release of the underlying Qiskit C library whose circuit-parameter representation `QiskitIBMRuntime.jl` does not yet read correctly, which causes gate rotation angles to be lost when a job is submitted. Because 0.4 predates the `Qiskit.Operations` submodule, this notebook builds circuits with the property-style API (`qc.rx(θ, i)`) rather than the `!`-suffixed functions (`rx!(qc, θ, i)`)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1454cc50", + "metadata": {}, + "outputs": [], + "source": [ + "# Set up a temporary environment and install the required packages\n", + "using Pkg\n", + "Pkg.activate(mktempdir(); io=devnull) # fresh temporary environment\n", + "Pkg.add([\n", + " PackageSpec(name=\"Qiskit\", version=\"0.4\"),\n", + " PackageSpec(name=\"QiskitIBMRuntime\", version=\"0.2\"),\n", + " PackageSpec(name=\"OrdinaryDiffEq\"),\n", + " PackageSpec(name=\"TensorNetworkQuantumSimulator\"),\n", + " PackageSpec(name=\"JSON\"),\n", + " PackageSpec(name=\"Plots\"),\n", + " PackageSpec(name=\"StatsBase\"),\n", + "]; io=devnull)" + ] + }, + { + "cell_type": "markdown", + "id": "166792cc", + "metadata": {}, + "source": [ + "Option 2: reproduce the exact environment. Alternatively, you can go to the documentation [repository](https://github.com/Qiskit/documentation/tree/main/docs/tutorials/time-evolution) to download the following files: `Project.toml` and `Manifest.toml`. The project file describes the project at a high level — for example, the `[deps]` section lists all dependencies. The manifest file records the exact state of those dependencies, allowing you to reproduce the same project environment. See the [Julia documentation](https://pkgdocs.julialang.org/v1/toml-files/) for more on these files. If both `.toml` files are downloaded to the same directory as the notebook, you can run the code cell below to activate the environment defined by the `Project.toml` and `Manifest.toml` files in the current directory." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "940631f3", + "metadata": {}, + "outputs": [], + "source": [ + "# Alternatively, activate the environment and install packages specified in the .toml files\n", + "using Pkg\n", + "Pkg.activate(@__DIR__; io=devnull)\n", + "Pkg.instantiate(; io=devnull) # installs the exact versions recorded in Manifest.toml" + ] + }, + { + "cell_type": "markdown", + "id": "a13bff0e", + "metadata": {}, + "source": [ + "Up to this point, we have set up the Julia project environment to run the notebook. In order to run the workflow on IBM's quantum processing unit, an IBM Quantum account and API token are also required to instantiate Service from Qiskit IBM Runtime. Follow the \"Install and authenticate\" steps in the [IBM Quantum getting started guide](https://quantum.cloud.ibm.com/docs/en/guides/hello-world) to generate your API token and find your instance CRN — the account setup steps apply regardless of programming language." + ] + }, + { + "cell_type": "markdown", + "id": "613853a6", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4ea0efac", + "metadata": {}, + "outputs": [], + "source": [ + "using Qiskit\n", + "using QiskitIBMRuntime\n", + "using StatsBase\n", + "using OrdinaryDiffEq\n", + "using SparseArrays\n", + "using LinearAlgebra\n", + "using TensorNetworkQuantumSimulator\n", + "using Dates\n", + "using JSON\n", + "using Plots\n", + "using Plots.PlotMeasures" + ] + }, + { + "cell_type": "markdown", + "id": "5016929d", + "metadata": {}, + "source": [ + "We will also define the following utility function which returns the value of the bit in a bitstring `v` at position `i`. For example, with `v = 6` (binary `110`),\n", + "- `bit_at(6, 1)` returns `0`,\n", + "- `bit_at(6, 2)` returns `1`,\n", + "- `bit_at(6, 3)` returns `1`.\n", + "\n", + "This follows Qiskit's little endian convention, i.e., the position `i` is indexed from the least-significant (the \"rightmost\") bit." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "143aecbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bit_at" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + " bit_at(v::Integer, i::Integer) = (v >> (i-1)) & 1\n", + "\n", + "Return the value of the bit at position `i` in `v`.\n", + "\"\"\"\n", + "bit_at(v::Integer, i::Integer) = (v >> (i-1)) & 1" + ] + }, + { + "cell_type": "markdown", + "id": "6a17088d", + "metadata": {}, + "source": [ + "## Small-scale simulator example\n", + "\n", + "We consider a 1D chain of $N$ qubits, described by the transverse-field Ising model above. For the system of interest, we specify below the system size `N`, the Trotter step size `δt`, and the total number of Trotter steps `r_max`. The total evolution time is `δt * r_max`. Note that Julia supports Unicode identifiers such as `δt`; in the notebook or Julia REPL, type `\\delta` followed by Tab to enter `δ`. For a full reference, see the [Julia Unicode input documentation](https://docs.julialang.org/en/v1/manual/unicode-input/).\n", + "\n", + "### Exact solution\n", + "To establish a baseline for comparing results from the quantum hardware, we first demonstrate the classical simulation workflow for a small-scale problem. We build the Ising Hamiltonian as a sparse matrix, then obtain the exact time evolution by numerically integrating the Schrödinger equation using `ODEProblem` from `OrdinaryDiffEq.jl`. This approach scales exponentially in the number of qubits $N$. It requires storing the full $2^N$-dimensional state vector. For $N=20$ the Hilbert space already has over one million dimensions, making it impractical for larger systems." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "aa6b4db3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1048576×1048576 SparseMatrixCSC{ComplexF64, Int64} with 22020096 stored entries:\n", + "⎡⣿⣿⣾⢦⡀⠳⣄⠀⠀⠀⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤\n", + "⎢⠺⣟⢻⣶⣿⡂⠈⠳⣄⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⢤⡈⠻⠻⠿⣧⣤⣠⡈⠳⠄⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⠀⠙⢦⡀⠀⣻⣿⣿⣙⣦⡀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⠀⠀⠀⠙⢦⡈⠳⣼⣿⣿⡆⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⠙⢦⡀⠀⠀⠁⠀⠈⠈⠉⣿⣿⣾⢦⡀⠳⣄⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠺⣟⢻⣶⣿⡂⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⢤⡈⠻⠻⠿⣧⣤⣠⡈⠳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠙⢦⡀⠀⣻⣿⣿⣙⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠙⢦⡈⠳⣼⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⎥\n", + "⎢⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡟⢦⡈⠳⣄⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣍⣿⣿⣯⠀⠈⠳⣄⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⎥\n", + "⎢⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢦⡈⠋⠛⢻⣶⣦⣦⡈⠓⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠨⣿⠿⣧⣽⡦⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠙⢦⠈⠳⡿⣿⣿⣀⡀⡀⠀⢀⠀⠀⠈⠳⣄⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠸⣿⣿⡟⢦⡈⠳⣄⠀⠀⠀⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠈⠻⣍⣿⣿⣯⠀⠈⠳⣄⠀⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠐⢦⡈⠋⠛⢻⣶⣦⣦⡈⠓⎥\n", + "⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠙⢦⡀⠨⣿⠿⣧⣽⡦⎥\n", + "⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⠀⠀⠀⠙⢦⠈⠳⡿⣿⣿⎦" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "N = 20\n", + "δt = 0.05 # Trotter step size\n", + "r_max = 10 # total number of Trotter steps\n", + "\n", + "h = fill(1.0, N)\n", + "J = fill(1.0, N-1)\n", + "\n", + "function build_ising_hamiltonian(h::Vector, J::Vector, n::Int)\n", + " dim = 2^n\n", + "\n", + " # diagonal ZZ terms\n", + " diag_terms = zeros(Float64, dim)\n", + " for i in 1:n-1\n", + " for b in 0:dim-1\n", + " bi = bit_at(b, i) # bit at position i\n", + " bi_next = bit_at(b, i+1) # bit at position i + 1\n", + " diag_terms[b+1] += J[i] * (1-2bi) * (1-2bi_next)\n", + " end\n", + " end\n", + " H = spdiagm(0 => complex(diag_terms))\n", + "\n", + " # off-diagonal local X terms\n", + " for i in 1:n\n", + " mask = 1 << (i-1)\n", + " cols = [xor(b, mask) + 1 for b in 0:dim-1]\n", + " H += h[i] * sparse(1:dim, cols, ones(ComplexF64, dim), dim, dim)\n", + " end\n", + " return H\n", + "end\n", + "\n", + "H_ising = build_ising_hamiltonian(h, J, N)" + ] + }, + { + "cell_type": "markdown", + "id": "bbe38420", + "metadata": {}, + "source": [ + "We define the right-hand side of the Schrödinger equation in the in-place form `schrodinger!(dψ, ψ, H, t)`, which computes $d\\psi/dt = -iH\\psi$ using a sparse matrix-vector multiplication. We then set up an `ODEProblem` with the Néel state as the initial condition and solve it over the time span $[0, r \\cdot \\delta t]$, saving the state at each time step $\\delta t$. The solver used is `Tsit5()`, a standard explicit 4th/5th-order Runge-Kutta method suitable for non-stiff problems." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "959f77e9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "retcode: Success\n", + "Interpolation: 1st order linear\n", + "t: 11-element Vector{Float64}:\n", + " 0.0\n", + " 0.05\n", + " 0.1\n", + " 0.15\n", + " 0.2\n", + " 0.25\n", + " 0.3\n", + " 0.35\n", + " 0.4\n", + " 0.45\n", + " 0.5\n", + "u: 11-element Vector{Vector{ComplexF64}}:\n", + " [0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im … 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im, 0.0 + 0.0im]\n", + " [-7.61253527394167e-14 - 1.6384733396360143e-29im, 7.616818423232395e-14 - 1.6944517510822296e-12im, -8.565903349043733e-17 + 3.2368190823993494e-15im, -7.616820795844402e-14 - 1.0785153269116668e-15im, 1.5233638431199396e-13 - 1.6912125988569431e-12im, 3.586782474371457e-11 + 5.0833528138395e-12im, -7.608249752495304e-14 - 4.317561743447073e-15im, 7.616820798431707e-14 - 1.694451645171974e-12im, -8.570258514925334e-17 + 3.238411362418842e-15im, -7.606534127496806e-14 - 5.398093819616892e-15im … -7.59110211350164e-14 - 7.555016669022183e-15im, 1.5233640806402514e-13 - 1.6912125977890311e-12im, -4.283149391647205e-17 + 3.2390475588024942e-15im, -7.61253567131052e-14 - 4.319154099332233e-15im, 1.284985005554563e-16 + 4.773388002812812e-18im, -8.570258413862341e-17 + 3.2384113624488343e-15im, -7.612534879063732e-14 - 3.239046492370828e-15im, 1.5233638826330542e-13 - 1.6912127047672329e-12im, -4.2831492906927224e-17 + 3.237455101084491e-15im, -7.612535273941691e-14 - 1.3807965685765411e-28im]\n", + " [-8.680854672628346e-11 + 6.256503560232235e-26im, 8.709110140863831e-11 - 8.699033104505372e-10im, -5.649235901782456e-13 + 8.601572275260863e-12im, -8.709221846767865e-11 - 2.8597326938545193e-12im, 1.7418295344900313e-10 - 8.612608133903877e-10im, 8.412483173620371e-9 + 2.6096671235273328e-9im, -8.65248758862108e-11 - 1.150039589912672e-11im, 8.709222358844364e-11 - 8.699014655672968e-10im, -5.669821718119253e-13 + 8.629638578162904e-12im, -8.641073444337175e-11 - 1.4395664161950262e-11im … -8.538755211456954e-11 - 2.0113079067784403e-11im, 1.741840756500529e-10 - 8.61260696906882e-10im, -2.825548799186724e-13 + 8.64078736159475e-12im, -8.680873675466665e-11 - 1.1528470382567807e-11im, 8.478635815548829e-13 + 8.382372443494519e-14im, -5.669819735592164e-13 + 8.629638588149434e-12im, -8.680836165042765e-11 - 8.640671375786718e-12im, 1.7418313902498796e-10 - 8.612626582759332e-10im, -2.825546823534275e-13 + 8.612701741862285e-12im, -8.680854672628313e-11 - 4.9209408334755305e-26im]\n", + " [-4.286194292830845e-9 + 5.887314888079277e-25im, 4.318192995176659e-9 - 2.826937131562427e-8im, -6.395173522788378e-11 + 6.447233357075625e-10im, -4.318468070877428e-9 - 2.1364257686596824e-10im, 8.636571975410791e-9 - 2.7617721500979516e-8im, 1.7289660717976974e-7 + 8.480086489483074e-8im, -4.253920910159079e-9 - 8.649865429907801e-10im, 4.3184703186245335e-9 - 2.8269061699886618e-8im, -6.446071076018083e-11 + 6.495016281145661e-10im, -4.240844230135187e-9 - 1.0846764703342825e-9im … -4.124170626784799e-9 - 1.5115818225612886e-9im, 8.636849310525713e-9 - 2.7617681592276804e-8im, -3.1998788706003575e-11 + 6.513863923787413e-10im, -4.286241833579117e-9 - 8.697676141630414e-10im, 9.604781686581547e-11 + 1.4206678132640567e-11im, -6.446062402203501e-11 + 6.495016332435832e-10im, -4.28614892958544e-9 - 6.513467397401785e-10im, 8.636617557977331e-9 - 2.761803111790055e-8im, -3.1998702345812936e-11 + 6.466014984949251e-10im, -4.286194292830852e-9 + 1.1182440706624645e-23im]\n", + " [-6.079348924748456e-8 + 1.7751935068115955e-23im, 6.162943323939344e-8 - 2.9592110353110114e-7im, -1.6696556398383917e-9 + 1.2400459826013215e-8im, -6.164292787255698e-8 - 4.088131560944918e-9im, 1.232681097824979e-7 - 2.832733452226875e-7im, 1.253532043962044e-6 + 8.875042569125041e-7im, -5.994408800994485e-8 - 1.6725258647088334e-8im, 6.164314112979392e-8 - 2.9591021577421225e-7im, -1.694838714110838e-9 + 1.2572865374243698e-8im, -5.959595610442702e-8 - 2.1031419496567e-8im … -5.65135756283382e-8 - 2.9192023780832232e-8im, 1.2328181992163385e-7 - 2.832706038202529e-7im, -8.359520177503543e-10 + 1.2640019589288589e-8im, -6.079590106381681e-8 - 1.6897850407348896e-8im, 2.510637618113044e-9 + 5.084778396177932e-10im, -1.6948306165735368e-9 + 1.2572866042727849e-8im, -6.07912857370168e-8 - 1.2637312624047854e-8im, 1.2327033399936646e-7 - 2.832842331337841e-7im, -8.359439919088736e-10 + 1.2467163914771106e-8im, -6.079348924748456e-8 + 1.5886961816504013e-24im]\n", + " [-4.19355240760896e-7 + 3.705363043474765e-22im, 4.286265786618433e-7 - 1.6052971907760307e-6im, -1.8502762435969913e-8 + 1.0856276308591433e-7im, -4.288690355597113e-7 - 3.554458373697546e-8im, 8.574220964863107e-7 - 1.4932465582703893e-6im, 4.849187224415272e-6 + 4.812233679729089e-6im, -4.0984254612981356e-7 - 1.474506541819442e-7im, 4.288753395920818e-7 - 1.6051467128773298e-6im, -1.8960352857828116e-8 + 1.1102835700521803e-7im, -4.058832055335951e-7 - 1.861102285067016e-7im … -3.711838427223179e-7 - 2.569391306045145e-7im, 8.576709710986745e-7 - 1.4931825847645458e-6im, -9.271568570756987e-9 + 1.1197289579952923e-7im, -4.19400537145292e-7 - 1.4992045110994718e-7im, 2.787088237718027e-8 + 7.194933454521684e-9im, -1.8960118645415416e-8 + 1.1102838165568609e-7im, -4.193161709409198e-7 - 1.1191024844294274e-7im, 8.574617742181908e-7 - 1.4933970418540956e-6im, -9.271337900947215e-9 + 1.0949690324053822e-7im, -4.1935524076089585e-7 + 6.374924865499134e-24im]\n", + " [-1.7823579016922886e-6 + 2.4785975558170135e-22im, 1.8408383697701022e-6 - 5.5698549137294445e-6im, -1.1658899308162567e-7 + 5.632670364049073e-7im, -1.8431119114369732e-6 - 1.827783958832415e-7im, 3.6832950716080146e-6 - 4.979757871286644e-6im, 1.1823232043972907e-5 + 1.6681388560750265e-5im, -1.7216192586061926e-6 - 7.718155525067381e-7im, 1.8432004842500033e-6 - 5.568726970429025e-6im, -1.2094089315106987e-7 + 5.82567720170682e-7im, -1.6958321412209794e-6 - 9.789484717969278e-7im … -1.4727630743780975e-6 - 1.3421173522553972e-6im, 3.6856596566327365e-6 - 4.979010523365967e-6im, -5.848359517965932e-8 + 5.898080282235551e-7im, -1.7828068643880377e-6 - 7.911632992433929e-7im, 1.7605171124271105e-7 + 5.557422909554879e-8im, -1.2093769130400374e-7 + 5.825681268981904e-7im, -1.781997654171408e-6 - 5.89083803629295e-7im, 3.6836637838442496e-6 - 4.9808859083607794e-6im, -5.848046807781983e-8 + 5.703874412047739e-7im, -1.7823579016922876e-6 + 1.5322053214252255e-21im]\n", + " [-5.271984786989546e-6 + 6.170943707973725e-21im, 5.51579686406982e-6 - 1.3769890958036125e-5im, -4.854583030811299e-7 + 1.984102714841582e-6im, -5.529140076822174e-6 - 6.365426377065695e-7im, 1.1041341496086307e-5 - 1.1652942788167791e-5im, 1.9151485012220626e-5 + 4.1169949873337556e-5im, -5.014956072169312e-6 - 2.748560607544301e-6im, 5.529875137426112e-6 - 1.3764484293927573e-5im, -5.114444270677724e-7 + 2.0817439894898422e-6im, -4.903067916522345e-6 - 3.508133202204617e-6im … -3.950715241692091e-6 - 4.767013437270145e-6im, 1.1055449702075833e-5 - 1.1647607717886817e-5im, -2.438368979087014e-7 + 2.117436256276212e-6im, -5.274804158840672e-6 - 2.8465205753690247e-6im, 7.355815857851533e-7 + 2.7656731682993193e-7im, -5.114187341304822e-7 + 2.081747790923446e-6im, -5.269914388279329e-6 - 2.112332735357182e-6im, 1.104348132958811e-5 - 1.165835032842964e-5im, -2.438120770802626e-7 + 2.018953103020391e-6im, -5.271984786989546e-6 - 7.48763531674867e-21im]\n", + " [-1.1617825704147745e-5 + 3.5991127254033954e-20im, 1.234933763313651e-5 - 2.5744303624623147e-5im, -1.4542932918051394e-6 + 5.1236640987265355e-6im, -1.2403650700016824e-5 - 1.6202581807656793e-6im, 2.4739604924723182e-5 - 2.0155561130978494e-5im, 1.914409603981181e-5 + 7.674296978354388e-5im, -1.0832694804431495e-5 - 7.193087530961995e-6im, 1.2407719644833935e-5 - 2.5726120539890695e-5im, -1.5622920897790732e-6 + 5.474515092672055e-6im, -1.0480130191816805e-5 - 9.254685626031864e-6im … -7.537537188446304e-6 - 1.24352065813063e-5im, 2.4798220145598744e-5 - 2.0129513964044342e-5im, -7.316420138431981e-7 + 5.598791194770795e-6im, -1.1630271281791023e-5 - 7.545396775206759e-6im, 2.214232213417318e-6 + 9.742099793903378e-7im, -1.56215552436172e-6 + 5.474538012007297e-6im, -1.1609612670484624e-5 - 5.574263610620767e-6im, 2.474819662694356e-5 - 2.0173749496261236e-5im, -7.315119289887849e-7 + 5.243914596674164e-6im, -1.1617825704147755e-5 + 3.520307089522326e-20im]\n", + " [-1.981255884803874e-5 - 4.280028435581076e-21im, 2.1472710819325354e-5 - 3.757217609507472e-5im, -3.2943974661872405e-6 + 1.013842320109842e-5im, -2.1635832244093596e-5 - 3.1479593611068825e-6im, 4.307295621212705e-5 - 2.621614600567175e-5im, 4.770433131249616e-6 + 0.00011143181451766208im, -1.799201346429666e-5 - 1.4466566267165669e-5im, 2.1652013724844434e-5 - 3.7526877738616144e-5im, -3.626913442716557e-6 + 1.1086241359275971e-5im, -1.7142579310500262e-5 - 1.880456618220836e-5im … -1.0216935244391587e-5 - 2.4910439270939048e-5im, 4.3253534404398406e-5 - 2.6122963951736857e-5im, -1.6606359562314295e-6 + 1.1409418303425735e-5im, -1.985371138194472e-5 - 1.5419204044859418e-5im, 5.050007317756616e-6 + 2.5695410438397464e-6im, -3.6263960453836895e-6 + 1.1086337766500894e-5im, -1.9788658501789783e-5 - 1.1323323936752896e-5im, 4.309833408283905e-5 - 2.6261466566059023e-5im, -1.6601519712867634e-6 + 1.0447568732530248e-5im, -1.9812558848038734e-5 + 2.3894933285785212e-20im]\n", + " [-2.6605994524636195e-5 + 1.666209451620879e-20im, 2.9532145628332023e-5 - 4.33387707648945e-5im, -5.793688435837023e-6 + 1.572023652812327e-5im, -2.990681972152743e-5 - 4.767746092973612e-6im, 5.937030373177227e-5 - 2.515848316039316e-5im, -2.1873141629015416e-5 + 0.0001274172040690093im, -2.3313208885217593e-5 - 2.288272975975103e-5im, 2.9955219745474598e-5 - 4.325274969426528e-5im, -6.580507052690052e-6 + 1.770923159800002e-5im, -2.1702668886267355e-5 - 3.0142728729320408e-5im … -8.927183090969314e-6 - 3.9211979641537305e-5im, 5.9798561396861214e-5 - 2.490365316124225e-5im, -2.927485304562953e-6 + 1.8356702741523676e-5im, -2.6711940545518363e-5 - 2.4883683143055815e-5im, 8.967724203429814e-6 + 5.238269352768291e-6im, -6.579046665900118e-6 + 1.770952822000895e-5im, -2.655319342322953e-5 - 1.812661956307728e-5im, 5.942741740138474e-5 - 2.5244572524328325e-5im, -2.9261511036959767e-6 + 1.63305727281216e-5im, -2.6605994524636147e-5 + 1.1156898237795673e-19im]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# initial state |0101...01⟩\n", + "ψ0 = zeros(ComplexF64, 2^N)\n", + "neel_index = sum(1 << (i-1) for i in 1:2:N)\n", + "ψ0[neel_index + 1] = 1.0\n", + "\n", + "function schrodinger!(dψ, ψ, H, t)\n", + " mul!(dψ, H, ψ)\n", + " dψ .*= -im\n", + "end\n", + "\n", + "tspan = (0.0, r_max * δt)\n", + "prob = ODEProblem(schrodinger!, ψ0, tspan, H_ising)\n", + "sol = solve(prob, Tsit5(), saveat=δt)" + ] + }, + { + "cell_type": "markdown", + "id": "8054932d", + "metadata": {}, + "source": [ + "From the solution which describes the state vector $\\psi(t)$, we can obtain the magnetization per site, expressed as the single-qubit $\\langle Z\\rangle$ expectation values as a function of time. We will compare this with the results obtained from the trotterized circuits." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "27b209db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11×20 Matrix{Float64}:\n", + " -1.0 1.0 -1.0 1.0 … 1.0 -1.0 1.0\n", + " -0.995021 0.995034 -0.995034 0.995034 0.995034 -0.995034 0.995021\n", + " -0.980189 0.980386 -0.980386 0.980386 0.980386 -0.980386 0.980189\n", + " -0.955994 0.956968 -0.956968 0.956968 0.956968 -0.956968 0.955994\n", + " -0.922667 0.925652 -0.925653 0.925653 0.925653 -0.925652 0.922667\n", + " -0.881106 0.888117 -0.88812 0.88812 … 0.88812 -0.888117 0.881106\n", + " -0.832251 0.846116 -0.846129 0.846129 0.846129 -0.846116 0.832251\n", + " -0.776957 0.801257 -0.801298 0.801298 0.801298 -0.801257 0.776957\n", + " -0.715858 0.754749 -0.75486 0.75486 0.75486 -0.754749 0.715858\n", + " -0.649744 0.707628 -0.707895 0.707895 0.707895 -0.707628 0.649744\n", + " -0.580117 0.661272 -0.661841 0.661842 … 0.661841 -0.661272 0.580117" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function z_expval_from_state(ψ, qubit::Int, n::Int)\n", + " s = 0.0\n", + " for b in 0:2^n-1\n", + " bit = bit_at(b, qubit)\n", + " s += (1 - 2bit) * abs2(ψ[b+1])\n", + " end\n", + " return s\n", + "end\n", + "\n", + "classical_magnetizations = [z_expval_from_state(sol.u[r+1], q, N)\n", + " for r in 0:r_max, q in 1:N]" + ] + }, + { + "cell_type": "markdown", + "id": "c3568ea2", + "metadata": {}, + "source": [ + "### Small-scale simulation of the Trotterized circuits\n", + "\n", + "In the following, we show the classical simulation of the noiseless circuits using tensor network methods supported by `TensorNetworkQuantumSimulator.jl`. This allows us to validate our circuit construction and provides a baseline to compare with results from the quantum hardware.\n", + "\n", + "We first define the lattice as a 1D chain graph using `named_grid((N,))`, where each vertex is a tuple `(i,)`. We then specify the circuit gates as a list of tuples `(gate_name, qubit_indices, gate_parameter)`, which serves as the input format for the tensor network simulator." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47e7b661", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "make_trotter_circuit_tn (generic function with 1 method)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1D chain graph — vertices are named (1,), (2,), ..., (N,)\n", + "g = named_grid((N,))\n", + "\n", + "# Gates to prepare Néel state |0101…⟩, X on every other site\n", + "neel_state_gates(n::Int) = [(\"X\", [(i,)]) for i in 1:2:n]\n", + "\n", + "# Gates for one second-order Trotter step of size δt\n", + "trotter_step_gates(h::Vector, J::Vector, n::Int, δt::Float64) = vcat(\n", + " [(\"Rx\", [(i,)], h[i] * δt) for i in 1:n],\n", + " [(\"Rzz\", [(i,), (i+1,)], 2 * J[i] * δt) for i in 1:n-1],\n", + " [(\"Rx\", [(i,)], h[i] * δt) for i in 1:n])\n", + "\n", + "function make_trotter_circuit_tn(h::Vector, J::Vector, n::Int, δt::Float64,\n", + " n_trotter_steps::Int)\n", + " circuit = []\n", + "\n", + " # Neel state initialization\n", + " append!(circuit, neel_state_gates(n))\n", + "\n", + " for _ in 1:n_trotter_steps\n", + " append!(circuit, trotter_step_gates(h, J, n, δt))\n", + " end\n", + "\n", + " return circuit\n", + "end" + ] + }, + { + "cell_type": "markdown", + "id": "2425014b", + "metadata": {}, + "source": [ + "We use the belief propagation algorithm for tensor network contraction. This method is efficient for circuits with limited entanglement, but its accuracy degrades as entanglement grows with circuit depth. The `maxdim` and `cutoff` parameters control the trade-off between accuracy and computational cost. Similarly, we compute the magnetization at each site to compare later." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e3ea2c3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fidelity at trotter step 0 was 1.0\n", + "fidelity at trotter step 1 was 1.0\n", + "fidelity at trotter step 2 was 1.0\n", + "fidelity at trotter step 3 was 0.9999999999999679\n", + "fidelity at trotter step 4 was 0.9999999999976941\n", + "fidelity at trotter step 5 was 0.999999999947623\n", + "fidelity at trotter step 6 was 0.9999999993741586\n", + "fidelity at trotter step 7 was 0.9999999993647081\n", + "fidelity at trotter step 8 was 0.9999999992323612\n", + "fidelity at trotter step 9 was 0.9999999980892529\n", + "fidelity at trotter step 10 was 0.9999999980892462\n" + ] + } + ], + "source": [ + "apply_kwargs = (; maxdim=32, cutoff=1e-10, normalize_tensors=true)\n", + "tn_magnetizations = zeros(r_max+1, N)\n", + "\n", + "tn_initial_state(g) = BeliefPropagationCache(\n", + " tensornetworkstate(ComplexF32, v -> \"↑\", g, \"S=1/2\"))\n", + "\n", + "function apply_gates_to_tn_state(circuit, ψ_bpc; apply_kwargs)\n", + " ψ_bpc, errs = apply_gates(circuit, ψ_bpc; apply_kwargs)\n", + " return ψ_bpc, prod(1.0 .- errs)\n", + "end\n", + "\n", + "# ⟨Z_q⟩ on every site of a tensor-network state\n", + "z_expvals_from_tn_state(ψ_bpc, n::Int) =\n", + " [real(expect(ψ_bpc, [(\"Z\", [(q,)])])[1]) for q in 1:n]\n", + "\n", + "for r in 0:r_max\n", + " circuit = make_trotter_circuit_tn(h, J, N, δt, r)\n", + " ψ_bpc, fidelity = apply_gates_to_tn_state(circuit, tn_initial_state(g); apply_kwargs)\n", + " println(\"fidelity at trotter step $(r) was $(fidelity)\")\n", + " tn_magnetizations[r+1, :] = z_expvals_from_tn_state(ψ_bpc, N)\n", + "end" + ] + }, + { + "cell_type": "markdown", + "id": "aeb0878b", + "metadata": {}, + "source": [ + "### Step 1: Map classical inputs to a quantum problem\n", + "\n", + "Now we construct the trotterized time-evolution circuit using `Qiskit.jl`. The circuit mirrors the tensor network version: it initializes the Néel state, applies $r$ Trotter steps of $R_x$ and $R_{ZZ}$ gates, and finally measures all qubits in the Z basis." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6b680069", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x0000000489d56000, 1)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function make_trotter_circuit(h::Vector, J::Vector, n::Int, δt::Float64, n_trotter_steps::Int)\n", + " qc = QuantumCircuit(n, n)\n", + "\n", + " # Neel state initialization\n", + " for i in 1:2:n\n", + " qc.x(i)\n", + " end\n", + "\n", + " # trotter evolution\n", + " for _ in 1:n_trotter_steps\n", + " for i in 1:n\n", + " qc.rx(h[i] * δt, i)\n", + " end\n", + "\n", + " for i in 1:n-1\n", + " qc.rzz(2* J[i] * δt, i, i+1)\n", + " end\n", + "\n", + " for i in 1:n\n", + " qc.rx(h[i] * δt, i)\n", + " end\n", + " end\n", + "\n", + " # measure in Z basis\n", + " for i in 1:n\n", + " qc.measure(i, i)\n", + " end\n", + " return qc\n", + "end\n", + "\n", + "\n", + "qc = make_trotter_circuit(h, J, N, δt, 1)" + ] + }, + { + "cell_type": "markdown", + "id": "7a7e4d8f", + "metadata": {}, + "source": [ + "We build a list of circuits for Trotter steps 0 through 10, corresponding to evolution times $\\tau = 0, \\delta t, 2\\delta t, \\ldots, 10\\delta t$." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "704485a7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11-element Vector{QuantumCircuit}:\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d867200, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d88ec00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d889400, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d81e800, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d84ba00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d8dda00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d8bac00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d862e00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d847600, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d8c1c00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d88ca00, 1)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# prepare a list of circuits with different trotter steps\n", + "qc_list = [make_trotter_circuit(h, J, N, δt, r) for r in 0:r_max]" + ] + }, + { + "cell_type": "markdown", + "id": "3b7100d9", + "metadata": {}, + "source": [ + "### Step 2: Optimize problem for quantum hardware execution\n", + "\n", + "To run on quantum hardware, the circuits must first be transpiled. This includes: selecting a set of physical qubits to map the circuit onto, recompiling the gates into the native instruction set of the backend, and optimizing the resulting circuit depth. We use `least_busy()` to automatically select the least-busy available backend, `target_from_backend()` to retrieve its native gate set and qubit connectivity, and `transpile()` to perform the compilation." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "32354a49", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "backend.name = \"ibm_boston\"\n" + ] + }, + { + "data": { + "text/plain": [ + "\"ibm_boston\"" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "service = Service()\n", + "search_results = backend_search(service)\n", + "backend = least_busy(search_results)\n", + "@show backend.name" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "14205fe7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Qiskit.Target(Ptr{Qiskit.C.LibQiskit.QkTarget} @0x000000049a012270)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "target = target_from_backend(backend, service)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "8828900e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11-element Vector{QuantumCircuit}:\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000035857da00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d9d8400, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x00000004920d4800, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000016b46fa00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000010d904400, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x00000004943c7e00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000016b21ce00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x0000000103b85e00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x0000000103ccfc00, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x0000000103bec600, 1)\n", + " QuantumCircuit(Ptr{Qiskit.C.LibQiskit.QkCircuit} @0x000000011f8ba400, 1)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tqc_list = [transpile(qc, target)[1] for qc in qc_list]" + ] + }, + { + "cell_type": "markdown", + "id": "501e8dc5", + "metadata": {}, + "source": [ + "After transpilation, we inspect two properties of the compiled circuits. `get_circuit_layout()` returns the set of physical qubit indices selected for the circuit. `two_qubit_depth()` computes the two-qubit gate depth — the length of the longest chain of the two-qubit operations in the circuit — which is a useful indicator of noise accumulation on the hardware." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "bf4c910c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Set{Int64} with 20 elements:\n", + " 5\n", + " 24\n", + " 8\n", + " 17\n", + " 83\n", + " 6\n", + " 45\n", + " 44\n", + " 82\n", + " 64\n", + " 77\n", + " 7\n", + " 25\n", + " 46\n", + " 57\n", + " 4\n", + " 63\n", + " 38\n", + " 26\n", + " 62" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "function get_circuit_layout(tqc::QuantumCircuit)\n", + " return Set(q for inst in tqc.data for q in inst.qubits)\n", + "end\n", + "\n", + "get_circuit_layout(tqc_list[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5fa03372", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "r=0: 2q depth=0\n", + "r=1: 2q depth=38\n", + "r=2: 2q depth=42\n", + "r=3: 2q depth=46\n", + "r=4: 2q depth=50\n", + "r=5: 2q depth=54\n", + "r=6: 2q depth=58\n", + "r=7: 2q depth=62\n", + "r=8: 2q depth=66\n", + "r=9: 2q depth=70\n", + "r=10: 2q depth=74\n" + ] + } + ], + "source": [ + "function two_qubit_depth(qc::QuantumCircuit)\n", + " qubit_depth = Dict{Int,Int}()\n", + " for inst in qc.data\n", + " length(inst.qubits) == 2 || continue # skip non-two-qubit gates\n", + " d = maximum(get(qubit_depth, q, 0) for q in inst.qubits)\n", + " for q in inst.qubits\n", + " qubit_depth[q] = d + 1\n", + " end\n", + " end\n", + " return isempty(qubit_depth) ? 0 : maximum(values(qubit_depth))\n", + "end\n", + "\n", + "for (i, tqc) in enumerate(tqc_list)\n", + " println(\"r=$(i-1): 2q depth=$(two_qubit_depth(tqc))\")\n", + "end" + ] + }, + { + "cell_type": "markdown", + "id": "37aabbc8", + "metadata": {}, + "source": [ + "### Step 3: Execute using Qiskit primitives\n", + "\n", + "Now, we can submit the transpiled circuits to the backend as `Sampler` jobs with `shots` specified." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "7bcdead5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11-element Vector{QiskitIBMRuntime.Job}:\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e04c90)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000497640e80)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e04670)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d143c0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d15bf0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d05180)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000037182fae0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000011ea7b350)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d0dc40)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e05850)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a542ab0)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "shots = 1024\n", + "job_list = [run_sampler_job(service, backend, tqc, shots) for tqc in tqc_list]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9bca942a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Job 1: Queued\n", + "Job 2: Queued\n", + "Job 3: Queued\n", + "Job 4: Queued\n", + "Job 5: Queued\n", + "Job 6: Queued\n", + "Job 7: Queued\n", + "Job 8: Queued\n", + "Job 9: Queued\n", + "Job 10: Queued\n", + "Job 11: Queued\n" + ] + } + ], + "source": [ + "for (i, job) in enumerate(job_list)\n", + " status = get_job_status(job, service)\n", + " println(\"Job $i: \", status)\n", + "end" + ] + }, + { + "cell_type": "markdown", + "id": "f1429d09", + "metadata": {}, + "source": [ + "As the jobs are completed, we can retrieve their results. Note that `get_job_results` function will block until the job is completed." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "e8f81320", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11-element Vector{QiskitIBMRuntime.Samples}:\n", + " [\"0x54555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\" … \"0x55554\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\"]\n", + " [\"0x55555\", \"0x55554\", \"0x55555\", \"0x55555\", \"0x55455\", \"0x55557\", \"0x55555\", \"0x15555\", \"0x55455\", \"0x55555\" … \"0x55555\", \"0x55555\", \"0x55415\", \"0x5555d\", \"0x55555\", \"0x55455\", \"0x55555\", \"0x51555\", \"0x55415\", \"0x55555\"]\n", + " [\"0x55555\", \"0x55555\", \"0x55545\", \"0x55555\", \"0x55475\", \"0x55445\", \"0x55515\", \"0x55455\", \"0x55555\", \"0x5d555\" … \"0x55555\", \"0x55555\", \"0x55555\", \"0x55555\", \"0x55595\", \"0xd5555\", \"0x75555\", \"0x55555\", \"0x55555\", \"0x55455\"]\n", + " [\"0x55555\", \"0x55445\", \"0x5d459\", \"0x55555\", \"0x55555\", \"0x55551\", \"0x55155\", \"0x55551\", \"0x55575\", \"0x47555\" … \"0x55455\", \"0x55455\", \"0x15055\", \"0x57555\", \"0x55955\", \"0x55555\", \"0x55454\", \"0x55445\", \"0x55155\", \"0x55555\"]\n", + " [\"0x55d53\", \"0x55555\", \"0x55455\", \"0xc5555\", \"0x55557\", \"0x55555\", \"0x55055\", \"0xdd575\", \"0x45255\", \"0x55557\" … \"0x554d5\", \"0x5d775\", \"0x55515\", \"0x75555\", \"0x55455\", \"0x55555\", \"0x55555\", \"0xdd455\", \"0x45455\", \"0x55555\"]\n", + " [\"0x55570\", \"0xd7855\", \"0x75551\", \"0x55555\", \"0x6755d\", \"0xdd555\", \"0x55455\", \"0x35c55\", \"0x55455\", \"0x15555\" … \"0x59415\", \"0x754d5\", \"0xd5571\", \"0x55551\", \"0x55555\", \"0x57555\", \"0x55455\", \"0x55551\", \"0xd751d\", \"0x55576\"]\n", + " [\"0x5557c\", \"0x57d54\", \"0x55545\", \"0x7d555\", \"0xd1547\", \"0x55954\", \"0xd5555\", \"0x57557\", \"0x15155\", \"0x57655\" … \"0x5d555\", \"0x55553\", \"0x5d554\", \"0x55455\", \"0xd5555\", \"0x55535\", \"0x551d5\", \"0x55655\", \"0xdf555\", \"0x5755e\"]\n", + " [\"0x57465\", \"0x55454\", \"0x55455\", \"0x57153\", \"0xd5955\", \"0x55515\", \"0x55575\", \"0xd7555\", \"0x5dcd5\", \"0x55555\" … \"0xdd0d5\", \"0x55d75\", \"0x55554\", \"0x5541d\", \"0xd5445\", \"0xd5c56\", \"0xf75dd\", \"0x55555\", \"0x75557\", \"0x55555\"]\n", + " [\"0x55515\", \"0x6f557\", \"0x55555\", \"0x5d615\", \"0x5d455\", \"0x15175\", \"0x55455\", \"0x55755\", \"0x555d5\", \"0x545d5\" … \"0x57446\", \"0x5dc35\", \"0x5d554\", \"0x55575\", \"0xd5474\", \"0x75d0d\", \"0x45551\", \"0x2f124\", \"0x5551e\", \"0x59295\"]\n", + " [\"0x55411\", \"0xdd475\", \"0x14554\", \"0x7557d\", \"0x76775\", \"0xd5e55\", \"0x55855\", \"0xddfd4\", \"0x57c75\", \"0x57459\" … \"0x56575\", \"0x52574\", \"0x17d55\", \"0x55405\", \"0xf545e\", \"0xf7575\", \"0x54455\", \"0x56416\", \"0xd5554\", \"0x5c554\"]\n", + " [\"0x55734\", \"0xd5951\", \"0x7d594\", \"0x55d28\", \"0xf4d75\", \"0x558f5\", \"0xd5555\", \"0x74595\", \"0x55555\", \"0x55555\" … \"0x75146\", \"0xb4955\", \"0x57055\", \"0x55549\", \"0x5e45c\", \"0x75555\", \"0x5d056\", \"0x5c145\", \"0x54555\", \"0xdf515\"]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_samples = [get_job_results(job, service) for job in job_list]" + ] + }, + { + "cell_type": "markdown", + "id": "64b46f68", + "metadata": {}, + "source": [ + "### Step 4: Post-process and return result in desired classical format\n", + "\n", + "The hardware returns measurement outcomes in hexadecimal format. We define `hex_to_bitstrings()` to decode each hex value into a bitstring of length $N$. The `save_counts()` function aggregates the raw samples into a bitstring-to-count dictionary using `countmap()`, then writes the result to a JSON file on disk." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "e9dd9a79", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"0001\"" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# from hex to bitstrings\n", + "function hex_to_bitstrings(s::String, n::Int)\n", + " val = parse(Int, replace(s, \"0x\" => \"\"), base=16)\n", + " join([bit_at(val, i) for i in 1:n])\n", + "end\n", + "\n", + "hex_to_bitstrings(\"0x8\", 4)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "8ad39f14", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved to results/counts_N=20_2026-08-09_145108.json\n" + ] + } + ], + "source": [ + "# Save counts\n", + "function save_counts(all_samples::Vector{QiskitIBMRuntime.Samples}, N::Int; dir::String=\"results\")\n", + " mkpath(dir)\n", + " all_counts = [Dict(hex_to_bitstrings(k, N) => v for (k, v) in countmap(s)) for s in all_samples]\n", + "\n", + " date_str = Dates.format(Dates.now(), \"yyyy-mm-dd_HHMMSS\")\n", + " open(joinpath(dir, \"counts_N=$(N)_$(date_str).json\"), \"w\") do f\n", + " JSON.print(f, all_counts, 2)\n", + " end\n", + " println(\"Saved to $(joinpath(dir, \"counts_N=$(N)_$(date_str).json\"))\")\n", + "end\n", + "\n", + "save_counts(all_samples, N)" + ] + }, + { + "cell_type": "markdown", + "id": "91a52002", + "metadata": {}, + "source": [ + "From the bitstring samples obtained from the quantum hardware, we compute the magnetization per site (i.e., the single-qubit $\\langle Z\\rangle$ expectation values) by averaging $(-1)^{b_i}$ over all shots, where $b_i$ is the measured bit for qubit $i$. We then plot the magnetization as a heatmap over qubits and Trotter steps, comparing the three methods side by side: exact classical simulation, noiseless tensor network simulation, and hardware execution." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "c74b479d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11×20 Matrix{Float64}:\n", + " -0.986328 0.998047 -0.984375 1.0 … 1.0 -0.988281 0.998047\n", + " -0.929688 0.964844 -0.941406 0.978516 0.982422 -0.960938 0.974609\n", + " -0.892578 0.953125 -0.925781 0.962891 0.974609 -0.941406 0.9375\n", + " -0.882812 0.896484 -0.896484 0.921875 0.935547 -0.904297 0.939453\n", + " -0.839844 0.861328 -0.884766 0.90625 0.882812 -0.892578 0.853516\n", + " -0.736328 0.802734 -0.847656 0.855469 … 0.857422 -0.933594 0.794922\n", + " -0.671875 0.794922 -0.837891 0.814453 0.822266 -0.898438 0.792969\n", + " -0.652344 0.736328 -0.818359 0.712891 0.789062 -0.90625 0.728516\n", + " -0.601562 0.707031 -0.822266 0.701172 0.732422 -0.882812 0.648438\n", + " -0.498047 0.613281 -0.740234 0.666016 0.648438 -0.833984 0.570312\n", + " -0.529297 0.611328 -0.759766 0.6875 … 0.597656 -0.796875 0.445312" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Compute expectation values\n", + "# 0 -> 1, 1 -> -1\n", + "function z_expval_from_samples(samples, qubit::Int, n::Int)\n", + " mean((-1) ^ parse(Int, hex_to_bitstrings(s, n)[qubit]) for s in samples)\n", + "end\n", + "\n", + "magnetizations = [z_expval_from_samples(all_samples[i], q, N) for i in 1:length(all_samples), q in 1:N]" + ] + }, + { + "cell_type": "markdown", + "id": "a1b2c3d4", + "metadata": {}, + "source": [ + "The three panels below show the site magnetization $\\langle Z_i \\rangle$ as a function of qubit index (x-axis) and Trotter step (y-axis). At $\\delta t = 0.05$ the total evolution time is $\\tau = r_{\\max} \\cdot \\delta t = 0.5$, which is short enough that the initial antiferromagnetic pattern has not yet decayed — all three methods show a strongly alternating pattern. The classical and tensor network results are now in close agreement, confirming that Trotter error is small at this step size. The hardware results broadly track the other two but show reduced contrast in the alternating pattern at some qubit sites, which becomes more pronounced at larger Trotter steps as the circuit depth increases." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "cc5496cc", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/html": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# plot magnetization as a function of time\n", + "l = @layout [a{0.3w} b{0.3w} c{0.44w}]\n", + "plot(\n", + " heatmap(classical_magnetizations, title=\"Classical\", clims=(-1,1), color=:RdBu,\n", + " xlabel=\"Qubit\", ylabel=\"Trotter steps\", colorbar=false),\n", + " heatmap(tn_magnetizations, title=\"Tensor Network\", clims=(-1,1), color=:RdBu,\n", + " xlabel=\"Qubit\", ylabel=\"Trotter steps\", colorbar=false),\n", + " heatmap(magnetizations, title=\"Hardware\", clims=(-1,1), color=:RdBu,\n", + " xlabel=\"Qubit\", ylabel=\"Trotter steps\", colorbar=true),\n", + " layout=l, size=(900,300),\n", + " bottom_margin=5mm, left_margin=5mm, right_margin=6mm\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5e9fc890", + "metadata": {}, + "source": [ + "## Large-scale hardware example\n", + "\n", + "### Steps 1–4 in a single workflow\n", + "We now combine all four steps above into a single workflow, at a scale beyond the reach of exact classical simulation. Instead of resolving the magnetization site by site, we track a single scalar measure of antiferromagnetic order, the staggered magnetization:\n", + "$$\n", + " \\langle M_s \\rangle = \\frac{1}{N} \\sum_{i=1}^{N} (-1)^i \\langle Z_i \\rangle\n", + "$$\n", + "\n", + "The alternating sign is what makes the signal visible: for the Néel initial state $|0101\\ldots01\\rangle$ every term contributes $+1$, so $\\langle M_s\\rangle = 1$, whereas the plain average $\\frac{1}{N}\\sum_i \\langle Z_i\\rangle$ vanishes identically for all $t$. As the transverse field scrambles the alternating pattern, $\\langle M_s\\rangle$ decays toward $0$, so the staggered magnetization tells us how much of the initial order survives the time evolution.\n", + "\n", + "We also use this example to see how the Trotter step size affects accuracy. We fix the total evolution time $T = 1.5$ and vary the number of Trotter steps $r \\in \\{3, 6, 12\\}$, so that $\\delta t = T/r$. On hardware, two error sources compete: a smaller $\\delta t$ reduces Trotter error, but requires a proportionally deeper circuit that accumulates more hardware noise." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f840b38f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "24 circuits on 60 qubits, T = 1.5\n", + " δt = 0.5 → 4 time points, deepest circuit = 3 Trotter steps\n", + " δt = 0.25 → 7 time points, deepest circuit = 6 Trotter steps\n", + " δt = 0.125 → 13 time points, deepest circuit = 12 Trotter steps\n" + ] + }, + { + "data": { + "text/plain": [ + "24-element Vector{QiskitIBMRuntime.Job}:\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a723700)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a7ce880)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a796dd0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a797070)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a798b20)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a79fbf0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000497b9cf80)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e0cce0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a798bd0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e0d790)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e04820)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e0fb90)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e0da50)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000499a0a930)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e0cd50)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x000000049a90faa0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e18340)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d2f3a0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d1b160)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e0e4d0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d2f300)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d15b80)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102d1b5d0)\n", + " QiskitIBMRuntime.Job(Ptr{QiskitIBMRuntime.LibQiskitIBMRuntime.Job} @0x0000000102e0f250)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# -------------------------Step 1-------------------------\n", + "# Map classical inputs to a quantum problem.\n", + "N_large = 60 # the hex outcomes are decoded into an Int64, so N_large must stay under 63 bits\n", + "@assert N_large < 63\n", + "g_large = named_grid((N_large,))\n", + "h_large = fill(1.0, N_large) # transverse field on every site\n", + "J_large = fill(1.0, N_large - 1) # nearest-neighbor ZZ couplings on the chain\n", + "\n", + "T_total = 1.5 # fixed total evolution time\n", + "r_list = [3, 6, 12] # varying Trotter steps; δt = T_total/r\n", + "sweep = [(r, k) for r in r_list for k in 0:r]\n", + "\n", + "qc_list_large = [make_trotter_circuit(h_large, J_large, N_large, T_total/r, k)\n", + " for (r, k) in sweep]\n", + "\n", + "println(\"$(length(qc_list_large)) circuits on $(N_large) qubits, T = $(T_total)\")\n", + "for r in r_list\n", + " println(\" δt = $(round(T_total/r, digits=4)) → $(r+1) time points, \",\n", + " \"deepest circuit = $(r) Trotter steps\")\n", + "end\n", + "\n", + "# -------------------------Step 2-------------------------\n", + "# Optimize the problem for quantum hardware execution.\n", + "tqc_list_large = [transpile(qc, target)[1] for qc in qc_list_large]\n", + "\n", + "# -------------------------Step 3-------------------------\n", + "# Execute using Qiskit primitives.\n", + "shots_large = 4096\n", + "\n", + "job_list_large = [run_sampler_job(service, backend, tqc, shots_large)\n", + " for tqc in tqc_list_large]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "10004db8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Job 1 (δt=0.5, k=0): Completed\n", + "Job 2 (δt=0.5, k=1): Completed\n", + "Job 3 (δt=0.5, k=2): Completed\n", + "Job 4 (δt=0.5, k=3): Completed\n", + "Job 5 (δt=0.25, k=0): Completed\n", + "Job 6 (δt=0.25, k=1): Completed\n", + "Job 7 (δt=0.25, k=2): Completed\n", + "Job 8 (δt=0.25, k=3): Completed\n", + "Job 9 (δt=0.25, k=4): Completed\n", + "Job 10 (δt=0.25, k=5): Completed\n", + "Job 11 (δt=0.25, k=6): Completed\n", + "Job 12 (δt=0.125, k=0): Completed\n", + "Job 13 (δt=0.125, k=1): Completed\n", + "Job 14 (δt=0.125, k=2): Completed\n", + "Job 15 (δt=0.125, k=3): Completed\n", + "Job 16 (δt=0.125, k=4): Completed\n", + "Job 17 (δt=0.125, k=5): Completed\n", + "Job 18 (δt=0.125, k=6): Completed\n", + "Job 19 (δt=0.125, k=7): Completed\n", + "Job 20 (δt=0.125, k=8): Completed\n", + "Job 21 (δt=0.125, k=9): Completed\n", + "Job 22 (δt=0.125, k=10): Completed\n", + "Job 23 (δt=0.125, k=11): Completed\n", + "Job 24 (δt=0.125, k=12): Completed\n" + ] + } + ], + "source": [ + "for (i, job) in enumerate(job_list_large)\n", + " r, k = sweep[i]\n", + " println(\"Job $i (δt=$(round(T_total/r, digits=4)), k=$k): \",\n", + " get_job_status(job, service))\n", + "end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a3646d14", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "24-element Vector{Float64}:\n", + " 0.9919840494791725\n", + " 0.7243001302083297\n", + " 0.4607421874999984\n", + " 0.2953776041666664\n", + " 0.991756184895839\n", + " 0.7933593750000187\n", + " 0.6308675130208249\n", + " 0.46848958333333285\n", + " 0.322981770833333\n", + " 0.2501302083333333\n", + " 0.20818684895833284\n", + " 0.9914143880208396\n", + " 0.8537027994792055\n", + " 0.8044677734375222\n", + " 0.6895019531249889\n", + " 0.6047932942708262\n", + " 0.49879557291666704\n", + " 0.4245442708333316\n", + " 0.37533365885416486\n", + " 0.3322916666666643\n", + " 0.28656412760416666\n", + " 0.25361328125000027\n", + " 0.22163085937500068\n", + " 0.1990478515624999" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# -------------------------Step 4-------------------------\n", + "# Post-process and return the result in the desired classical format.\n", + "# Run this cell after all jobs are completed\n", + "\n", + "function staggered_magnetization(samples::AbstractVector{<:AbstractString}, n::Int)\n", + " s = 0.0\n", + " for sample in samples\n", + " val = parse(Int, replace(sample, \"0x\" => \"\"), base = 16)\n", + " s += sum((-1)^q * (1 - 2 * bit_at(val, q)) for q in 1:n) / n\n", + " end\n", + " return s / length(samples)\n", + "end\n", + "\n", + "all_samples_large = [get_job_results(job, service) for job in job_list_large]\n", + "mags_hardware = [staggered_magnetization(s, N_large) for s in all_samples_large]" + ] + }, + { + "cell_type": "markdown", + "id": "89c310c8", + "metadata": {}, + "source": [ + "At $N=60$ the exact solution from the ODE solver used above is out of reach, because the state vector alone would need $2^{60} \\approx 10^{18}$ amplitudes. Instead we use a noiseless tensor network simulation of the same 1D chain with a much finer Trotter step ($r = 96$, $\\delta t \\approx 0.016$) as the reference, where the Trotter error is negligible compared with any $\\delta t$ we run on hardware. This reference is itself approximate: its dominant error is now the bond-dimension truncation discussed above, reported as a truncation fidelity for each run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fbcc23a1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Converged tensor-network reference:\n", + " δt=0.01562, 96 steps: truncation fidelity ≈ 1.0\n" + ] + }, + { + "data": { + "text/plain": [ + "([0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0, 1.125, 1.25, 1.375, 1.5], Float32[1.0, 0.96955144, 0.88692987, 0.77388746, 0.65495837, 0.5478493, 0.45952404, 0.38842973, 0.32962787, 0.27903682, 0.23493162, 0.1971867, 0.1658363])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "apply_kwargs = (; maxdim=64, cutoff=1e-10, normalize_tensors=true)\n", + "\n", + "# Calculate the staggered magnetization given a tensor network state\n", + "staggered_magnetization(ψ_bpc::BeliefPropagationCache, n::Int) =\n", + " sum((-1)^q * m for (q, m) in enumerate(z_expvals_from_tn_state(ψ_bpc, n))) / n\n", + "\n", + "# Evolve a TN state and record the staggered magnetization at each step.\n", + "function compute_staggered_magnetization_tn(δt, nsteps; record_every = 1)\n", + " init_gates = neel_state_gates(N_large)\n", + " step_gates = trotter_step_gates(h_large, J_large, N_large, δt)\n", + "\n", + " ψ_bpc, fid = apply_gates_to_tn_state(init_gates, tn_initial_state(g_large); apply_kwargs)\n", + " times = [0.0]\n", + " mags = [staggered_magnetization(ψ_bpc, N_large)]\n", + " for k in 1:nsteps\n", + " ψ_bpc, fid_step = apply_gates_to_tn_state(step_gates, ψ_bpc; apply_kwargs)\n", + " fid *= fid_step\n", + " if k % record_every == 0\n", + " push!(time, k * δt); push!(mags, staggered_magnetization(ψ_bpc, N_large))\n", + " end\n", + " end\n", + " println(\" δt=$(round(δt, digits=5)), $(nsteps) steps: truncation fidelity ≈ $(round(fid, digits=5))\")\n", + " (times, mags)\n", + "end\n", + "\n", + "# If the fidelity drifts from 1, raise `maxdim` in `apply_kwargs`.\n", + "println(\"Tensor-network reference:\")\n", + "r_ref = 96\n", + "times_ref, mags_ref = compute_staggered_magnetization_tn(T_total / r_ref, r_ref; record_every = r_ref ÷ 12)" + ] + }, + { + "cell_type": "markdown", + "id": "af333ad4", + "metadata": {}, + "source": [ + "The plot below shows the staggered magnetization over time for the three Trotter step sizes, against the noiseless tensor network reference (dasked black). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6eb115f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAHgCAIAAAD8IL8wAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdZ0BT19sA8JMFgbD33iBL2aKgMgVkqChQEdwoIEXFUUFxUqXWhVtw1EG1Im5FBSIoSwUBZU/ZW/bIIMn74bb55w1DRJbt+X1KTs6999wrkoezHhSDwQAQBEEQBEHQ1ICe7AZAEARBEARB/wODMwj6r6isrExLS8vLy+vu7h6qTnNzc1paWm5uLpVKnci2DePy5cvr1q0rLy9nlmzevHnr1q2T2KSKigpvb++IiIhJbAMEQf9iMDiDoDHW1dWFQqFQKJSYmFhXVxfbp76+vigU6tKlSxPZpHv37mlqaiooKJiYmGhrawsJCTk7O7PVaWhocHZ2lpCQMDExmT59urS09MWLFyeykUNJTEy8evVqY2Mjs+SPP/64cePGJDapqakpIiKCSCROzOUyMjIiIiJKSkom5nJDiY6O5hiBsLCw8W5JYmLi/v37HR0dJSUlUSiUjIzMCA+kUqmoIdBotHFtMwR9E+xkNwCC/rWam5tPnToVHBw8uc04fPjw7t278Xj8Tz/9pKGh0d7enpOT8+HDB9Y63d3d1tbWeXl5VlZWzs7Ozc3N586d8/X1pVKp/v7+k9VyhKamprm5OT8//+Q2YxI9efLk4MGDN27cUFVVncRmiIiImJqaspa8fv2awWCYmpricDhmobS09Hi3JDg4OCUlBQCAx+NHcTg3N7eJiQlbIQqFGoOWQdAYgcEZBI0LPB6PRqOPHTvm6+srLCw8Wc0gEonBwcHS0tLx8fHq6urM8ra2NtZqJ06cyMvLW7Ro0f3799FoNADAxcXFyMgoKCjIzc1NXFx8otvNYteuXbt27ZrEBkAIc3Nzc3Nz1hJOTk4KhfLgwQNRUdGJbMny5ct9fHwMDAxwONwoAlYZGZm4uLjxaBgEjRUYnEHQuODi4tqwYcORI0d+++23o0ePTlYzgoKCGAzGxYsXWSMzAICgoCDzNYPBuHz5MgAgJCQEicwAANra2u7u7n/88cft27e3bNny1Qt9+vQpLS2tq6tLWlra2tqa7du6sbGxpqZGVlZWTEwsPz//9evXZDJZR0fH3Nz8qz0WFRUVX758UVdXJxAIbB91dnY+f/68pqZGSkrK3t6erXetsLCwp6dnxowZAIDY2Nji4mJRUVEHBwfmvefk5KSmppJIpHnz5unp6X31HgdVWVkZHx/f0dGhoaExf/58LHaQX6rFxcVJSUmtra0SEhKWlpYD+5ZoNFpaWlpZWVlzc7OIiIiCgsLs2bM5OTmRRtbV1SHPgdnfqaGhwc3NjbymUqmvX78uKCig0+mqqqqWlpZs/UklJSWdnZ3a2to4HC4hISE3N5eTk9Pc3JztR+IHsnHjRuQF60xECPpXYUAQNKY6OzsBAIKCgm1tbUJCQng8vqqqivmpj48PACAiImICWlJUVAQAkJGRodPpw1QrLCxEqrGVR0VFAQDs7e2Hv0pra6u9vT3rbxUuLq5jx46x1jl27BgA4NSpU76+vqw158+f39vbO/z5PTw8AACpqanMEl5eXmFh4fj4eCEhIeaphIWFX758yXqgsbExACAlJUVDQ4NZTVBQMC0tjUwmr169mlmIQqGQKHaE3r17BwBwc3M7cuQIBoNhnmfGjBmVlZWsNXt6epYvX84agOJwuKCgIBqNxqxTVlamra3N9ptZXFwc+VRBQWHg7+309HTk04yMDLauI1lZ2YSEBNY22NjYAADevHmDPBAEGo0+ePDgyG95UBwcHACApqam7zzPqJWVlQEApKWlR1ifQqEAANTU1Ma1VRD0/WDPGQSNFwEBge3bt+/atSskJORbV/a9f/++vb39q9VmzZrFx8c31Kdv374FAOjo6NTU1Bw9ejQ1NZVGo2lpaW3YsGHevHnMagUFBQAARUVFtsOVlZWZnw6FRqMtWrQoKSnJ2tp67969kpKSaWlp27dv3759OxcXF7OHAxEWFkahUK5evTpjxozq6uqdO3fGxcUdPXp07969X71TNr29va6ursuXL9+4cSMXF1dUVNSePXsWL1788eNHtmBl+fLlM2bMOHnypJCQUGRk5OnTp1esWOHg4JCQkHDz5k0tLa2PHz8GBASEhoY6OTnNnj175G1ITk5++vRpWFiYk5NTe3v7sWPHIiMjHR0dMzIykKgFALBixYr79+/PnDnz0KFDSkpKmZmZ27dvDw0NxWKxBw8eROqsX78+Nzd38+bNq1evFhYWbm5uzsnJefToEfLpzZs3w8PDIyMjd+7caW1tjRSqqakBAKqqqubPn9/e3h4QELBmzRoMBnPnzp1Dhw4tWLAgPT2dLeBbtWqVrKzso0ePZGRkUlNTAwMD9+3bN3/+/FmzZn3rwx81pG/1q9VMTU0H9pKOoaamJkdHx4qKCgKBoKOjs2rVKra5dBA0+SY7OoSgfxtmzxmDwejt7ZWWlsZgMPn5+cinI+w5Y+3kGAazB2VQyNe/jY2NoKAgBoNRV1dHBtRQKFRoaCizWnh4OADA2dmZ7fDKykoAAA8PzzCXuHv3LgBg2rRpZDKZWZiUlIQ8ge7ubqQE6TkjEAisnYjZ2dkoFGr69OnDP4pBe84AAC4uLqzVDhw4AADw8PBgliDP0M7OjrXjEAm/CARCTU0NsxBZYLht27bhW8KE9JwBAC5cuMAspNPpyJSsK1eusD4HcXHxjo4OZrXCwkIMBsPBwVFfX89gMPr7+5F/mmEuhwSvN27cYCv38vICAPj4+LAW7tmzBwDg5OTELEF6zoyNjfv7+5mFR44cAQBs3759hLc8qG/tOZs+ffpIfqrz8vJGeMLR9ZwBALi5uSUkJJhXHPk/PQRNDNhzBkHjiIuLa9euXX5+fvv27UNGCUdo27ZtDQ0NX60mJyc3zKdImBgbG6ulpZWeno70hN27d8/Dw2PXrl3z5s1D1qz19fUBAAb2wCFTuHp7e4e5xP3795HWMvuKAABz5syZM2dOcnJyQkKCo6Mjs3zZsmWysrLMtzo6OmJiYp8/f/7qbQ5q27ZtrG/9/f0PHz786NEjGo3GOtQYEBDAOqpoZmaWlpbm5ubGOvHLzMwMAPCtLRESEmIbG926dWtiYuKDBw/Wrl0L/nk4fn5+rM922rRpS5YsuXv37tOnT728vDAYDB8fX0NDw+fPnwd2Xg6DwWA8ePAAABAYGMhavmXLlt9///3Fixe9vb3MeWkAgK1bt7I+Fhsbm507d4764Y9OUFBQS0vLV6tJSkqOUwPQaPSJEydcXFyQn8Ourq6zZ88ePHjw+PHjGhoa69atG6frQtC3gsEZBI2v9evXnzhxIjo6+t27dyPsDwMAuLq6fv+lkRnlAIDw8HAkMgMALF26NCkp6dSpUxEREUhwhlQbuDMtMgI1/G4F+fn5AICBs+kNDAySk5Pz8/NZgzNkMI6VuLj4p0+furu7eXh4vvHmADLTn0lQUFBeXr64uLiyslJJSYlZzjbKiaxUYGsJUsi6ldpITJs2je3h6OrqAgDy8vKQt8M8nLt37zKrrV27FgkObGxsrKys5s+fr6mp+dWrNzY2fvnyRVhYWF5enrVcSEhISUmpoKCgpKRER0eHtbWs1ZAVuCP5A2AMubu7T+TlBsJgMAEBAcy3vLy8QUFBQkJCPj4+x44dg8EZNHXA4AyCxhcOhztw4ICnp+fevXtfvnw5wqNqampIJNJXq8nKyjIjsIGQ+fIEAoFtVydbW9tTp05lZ2ezVmttbWU7HClhXdc5EBLSDdxrAxkzYptgxNqRg0AWhzK+PcMvDw/PwLOJiYkVFxcPf1GkF42Li+v7myEmJjZoCbMByMP5arUjR47Iy8tHREQ8efLkyZMnAAANDY3Tp08zZ5gNaqiTAwDExcULCgqGfw6jfvLfo7q6mkwmf7WavLw868Zp483Nzc3Hx6ewsLCzs3OYGZwQNJFgcAZB487d3f348eOxsbGvXr0a4SEuLi7MiU3DSE9PNzQ0HOpTpLNEUFCQbbsKJBrr6elB3iLdSDU1NWyHV1dXgwE9LmyQ6V+NjY2s45UAgPr6ejDYUOlY6e7u7unpYZs2jnR9Tdj368CeNrYGMB/O8NUwGIy/v7+/v39VVdWrV6/u37//9OlTR0fHzMzMYbrQkJM3NTUN/AjpD5uCcYaDg0NOTs5Xq+Xl5Y2k73Cs8PPz4/F4EonU09MzBR8a9N8EgzMIGndoNDokJMTR0TEwMFBfX38kh7i6ug4TdTEN2nHChGzdXldXxzb9CEkExJx0hSR0Ki0trampYc2Eg4SSrOs6B9LW1s7Ozs7IyGBrbXp6OvLpV29h1LKysubMmcN8++XLl8rKSj4+PrZhvvFTWFjY19fH2gmXmZkJWO5aW1v7xYsXHz58cHJyYj0QeTgDZ8fLycmtXr169erV27ZtO3HixJMnT5AYBelGYssvJC4uLiYm1tTUxDZZraWl5fPnzxwcHAMHkSedu7v78D9OCNYdUiZAUVERiUTC4/EiIiITeV0IGgYMziBoIjg4OCBz5Ec4sYlttvvoCAgILFq0KDo6+ty5czt27EAK6XT6uXPnAADMzcmwWOyyZcvOnz9/7NgxZmLE5ubm69evYzCY4ecJubi4REZGhoWFrVmzhjnAmpiYmJaWJiIiYmFh8f13MZTjx4+zBmenT5+mUCju7u7MfXTHW3t7+5UrV37++WfkLZ1OP378OABg6dKlSImLi8uxY8cuXLgQEBDA3CA3Ly/v0aNHeDweidioVCqdTmcbm0ZmxDNHAKWkpMA/HZmsli5deuHChd9++w1Zb4s4fvw4mUxesmTJt6Y26u/vv3r1KgDA09Nz4JDxmAgKChqP0w4lLi6uoKDA2NiYOdezsbGRbQieTCYjKypsbGwmciwVgoYHgzMImiChoaFz586tqqqa4IvGxcUFBQU1NzcvWLCgs7Pz7Nmzb9++VVFRYd0Pdvfu3Xfv3j19+jQajXZxcWlsbNy/f/+XL1/8/f2H74BxcnKysrIiEok2Nja7d++WlpZOSUlBvoN/++230aU+HAlubu7k5OR169b5+vri8fjo6OhDhw7x8PDs27dvnK44kKys7C+//NLX1+fg4NDZ2Xn8+PHk5GR9ff3ly5cjFYyNjd3d3W/fvm1hYXHw4EFFRcWsrKzAwEAajXbgwAGkn6ahoUFfX3/FihVmZmbIOobU1NRDhw5hsVhmcnpDQ0MUCnXq1CkymSwjI4NGo52dnUVFRYODg+/evRsREYHFYletWoXFYm/fvn3ixAkCgXD48OFvvR0qlert7Q0AcHR0HKfgbKw8f/784cOH4J/1yO3t7UjLAQA7duxQUVFBXt+8efPmzZt79+5lBmebN28uKipauHChkpISgUAoLS29fPlyWVkZHx/fb7/9Nhm3AkFDmNydPCDo34d1nzM2Dg4OyP+7ickQgEhNTWVdvQgAmDNnTkVFBVu1jIwM5rcaAACFQnl7e1MolK+ev6Ojg21tKR8f3/nz51nrIPucnTlzhu1YZHljZ2fnMOcfKkPAmzdvWJNESUhIJCYmsh6IfCU3NDSwFp44cQIAEBYWxlqI5EcyMTH56s0imBkCTp06xZqvycjIqLa2lrUmiUTy8vJi7czD4/G//vorc+u1pqYmtul6AAAxMbF79+6xnufkyZOsN8vc3+7Tp09sw6MqKiqsz4rxzz5nxcXFrIXIvDTWW0amCQoICDB3p/uqycoQcOjQoaG+0ZKSkpjVVqxYAQDYu3cvs8Tf339gurBZs2ZlZ2dP8C1A0PBQjIldrQNB/3p0Or2iogKNRg9MvNPZ2Yns8yQqKopM6J4YNBrtzZs3paWlWCxWV1d3qDySNBrt9evXZWVlXFxcc+fO/abJW6WlpW/fvu3u7paWljYzM2ObWN3R0fHlyxcRERG28pqaGgqFoqCgMMxYZGNjY2dnp6ysLLMfrqKiAoVCycvL9/b2xsfH19fXS0hIWFtbs60PqK2tJZPJ8vLyrPt7IS0RFhZmTcRJo9EqKyvxeDwygPhVZDK5traWQCCIi4vX19cnJCR0d3erq6vPmTNn0Buprq5OTk7u6OgQExMzMzMTFhZmq1BWVpafn9/Q0IDH45WUlIyMjFj3jWNi/vxIS0szR0LpdPr79+/z8/NpNNq0adNMTEzY8nvW19f39fXJysqyDtsNvOU7d+4sW7bs4MGDyDa2I1FWVkan05WUlFif8ARob28fuLgYISUlxfw5QX5yhIWFWSextba2pqenNzY29vb2CggI6OnpDb/kBYImBQzOIAiCIODj4xMdHV1eXg5XLELQpINzziAIgiCgra1tZ2cHIzMImgpgzxkEQdD/xMbGlpaWDlNh1apV45qWG4IgCAZnEARB/+Pq6hodHT1Mherqatbd4CAIgsYcDM4gCIL+h0KhsG33yoYt9RMEQdCYg8EZBEEQBEHQFDJBW2lDEARBEARBIwGDMwiCIAiCoCkEBmcQBEEQBEFTyH8oOEtNTa2srJzsVkAQBEEQBA3nPxScXblyhUgkjvrwrq6uMWwMBI2r3t7e4ZccQtDUwWAwenp6JrsVEDRSExAP/IeCMwiCIAiCoKkPBmcQBEEQBEFTCAzOIAiCIAiCphAYnEEQBEEQBE0hMDiDIAiCIAiaQmBwBkEQBEEQNIXA4AyCIAiCIGgKgcEZBEEQBEHQFAKDMwiCIAiCoCkEBmcQBEEQBEFTCAzOIAiCIAiCphDsZDcAgiAIgkappKQkISFhslsB/fthsVhHR0cxMbEJutzEXGYora2tGRkZubm5hoaG8+bNG7ROUVHR9evXKRTK8uXL9fX1kUI6nR4ZGZmenq6iorJhwwYuLq4JbDUEQRA0JVy9evXVq1e6urqT3RDoX+7169doNHr16tUTc7lJDs7WrVtXW1vb3Nzs4eExaHBWXl5ubGzs7+8vLi5uYWERHx9vZGQEAAgKCnrx4sXPP/98//79Z8+excbGTnjbIQiCoMnn7OwcGBg42a2A/uXWrl3LYDAm7HKTHJw9ePAAALBy5cqhKpw/f97Z2TkkJAQA0N3dffz48b/++qujo+P8+fPv3r3T1NRcsWKFpKRkRkaGoaHhxLUbgiAIgiBofEz1BQFv3ryxtrZGXltbW7958wYAkJWVxcfHp6mpCQDA4/Fz5sxByscJg8FITEzctWtXXFwcnU4fvwtBEARBEARN9QUB9fX1oqKiyGtRUdGmpqb+/n7WQgCAmJhYfX39V09VWVlZXFyckpKCvMXhcKGhoZycnMMfFRMTs27NOhKJzIPnibgYgcPhZpvOdnZ21tHR0dTU/OrhEDQpent7aTQaBoOZ7IZA0NcxGIze3l4UCjWKY6lU6pi3B4IGRaFQent7AQB9fX3f89uVg4MDi/1K9DXVgzMcDtff34+8plKpGAwGg8FwcHAwC5HykQRJfHx8PDw8yJQ1AAAPDw8PDw8aPVzfYVNT02rP1Qu0FnubbMbjuMj95D/en3+QdCc+Ph4AgMVi1dXVdf+ho6MjKCg4+luFoLFDo9E4OTlhcAb9EBgMBvITO4pjv/olB0FjBYvFIj+lFArle7pmhg88/r7WqM8+MaSlpWtra5HXtbW1UlJSKBRKSkqqrq6OTqcjd1hTUzNr1qyvnkpQUNDU1HTt2rUjv/ratWsVRVQ2m/091ZQTy+ljElDcVFDRXSoqKlpUVJSbm5ubmxsZGYlUUFBQQAI1PT09fX19GRmZb7tbCBojmH9MdkMg6OsYDMaof1xH198GQaOARqORn9IJ+O06FeecdXZ2MldfLlq0KCoqClkicefOnUWLFgEAjIyMuLi44uLiAAA1NTVv3751dHQcj5bk5+WZKc9nKzRTmo9FY/Py8jo7O9++fXvx4kVvb29jY2Nubu6KioqHDx/u379/0aJFsrKyly9fHo9WQRAEQRD0LzbJPWdhYWGRkZEVFRUcHBwvXrzYvn37smXLCgsLbW1t+/v7MRiMl5fX9evXLS0teXl5P378mJycDADAYrG//fbbihUrbG1tk5OT/f395eTkxqN5OA5OKp19QkM/vR/dTyYVZXKr6RkbGxsbGyPlNBqtqKgoOzs7Ozs7KyuroqJCQkJi0NOWl5c3Nzdra2sTCITxaDYEQRAETX0RERHq6upD7XLKpq+vj0gkNjY2iouLW1lZjeH+pjU1Na9evRIREZk/fz4Ohxur036PSQ7OXFxc5s6dy3wrKysLANDW1v7w4QPSZyggIJCRkZGQkNDf329ubs7Dw4PUXLFihampaWZmZkBAAHNn2jHn5uZ6O+KOh+FaNOrvLkYGYCSUvBCbKx9/e7chVpIw244wyw5N4AMAYDAYTU1NTU3N5cuXD39aY2PjlpYWDAajpqbGHAbV1dVlXeUAQRAE/Udcvnz5/fv3ERERk92Qr6ivr9fX1x/JCrwRIhKJdDp9hMHZ7Nmz5eXlZ8yYkZWV1dLSguwHKyIiUlRUJCwsPOo2pKSkLFy4cPHixQUFBUePHo2Li5sKExknuQUyMjIDJ2Zxc3OzxlucnJx2dnYDj1VSUlJSUhrX5h0+fPhK+JXAxz/7z9spKyhf11FzOfUMB4Zzn9rRm9I3iZSaVS//EH0RyaU7l9d8CU5aeYSn3bJlS1RUVME/bt++jZTLyMgwlxfo6emN991BEARBk45Go7X9A4PB8PHxAQD6+/tLSkpwOJySkhIyu7qvr4/BYKBQqNzcXHl5eWYeITqdXlBQ0NPTo6SkJCIighT29fUVFRWJiopKS0sjJch6WBqNlpeXxzZu097ezsfHV1NT09raqqmpycHBwfyosbGxrq5u2rRp3NzcAICOjg6knQAAXl7erq4uZBkcsoxRQEAAAEAikWg0GnJ+MplcWFgoLCzM/KLv6+sDADAYjJycHGQ/LCYSiUQmk/n5+Yd6StXV1T4+PsuWLUMuBADo6upC2oNGo3l4eEbX6bV3797du3dv3bqVQqHMmDHj6dOnixcvHsV5xhjjP2Pt2rVXrlz51qMoFIqd3QJeLj4cBsfLxTff3Ob9yYKkgBzi9oz157bPj1x0/oh95Rbb6s22jcd+7k55RqeQR3hmEomUkZFx+fJlPz8/U1NTXl5etn8afn5+MzOzzZs3X7t2rbKy8ltbDv2X9fT09Pf3T3YrIGhE6HR6d3f36I4NDAwMDQ0d2/ZMsKKiomnTpklISFhbWyPb0GdnZ0+bNs3KysrY2HjevHkdHR0MBmPv3r12dnYGBgbz588XEBB4+PAhg8FobW2dMWOGubn5okWLVFRU8vLyGAxGfHy8pKSkjY2NoqLiihUraDQag8HYtGmTg4ODpqamhYVFZmYmawOEhITWrFkze/ZsPT296dOn9/T0MBgMMpns4eExbdo0BwcHWVnZ+Ph4BoOxZMkSNBptbW1tbW1dUVEhKSlZUFDAYDAOHjyIRqObmpoYDIafn19ISAiDwXjz5o20tLSNjY2ysvJPP/1EpVIZDMbOnTvt7Oy0tLQsLCxSU1Pd3NwuXLjAYDBycnJUVFTu3LkzzIMKDQ1VUFCQkZGxtbUtKipCbgqFQpmZmVlbW2dkZAxzbHNzs7e3NxLgsuru7kahUBUVFcjb7du3r1u3btAzrFmz5urVq8jrzs7OYa41JmBwNlLMfwwalV4YWZ0UkJO0NWfHyUPzIp1W3V7xOmRp9Wbb6s22tbt/an98hfql4VvPj0xZu3PnTmBgoJ2dHdt8NWFhYTqdPurGQ/81MDiDfiDjEZytWrVK8BvJysrm5OQMehVHR8dvPZuysvLI/6g+c+bM8uXLmU9j+vTp0dHRyNv169fv27ePwWDs3btXQUEBCdQiIyNnzZrFYDCioqLs7OyYB1KpVAqFIisriyyk6+7uVldXv3HjBoPB2LRpk4qKyqBRhZCQ0N69e5EzzJ49++bNmwwG4/jx405OTsivkdTUVHl5eTqdXlNTg8fjmQd6eHicOXOGwWCYmZnNnj0buaiGhkZKSgqNRlNWVr5+/TqDwejr69PR0YmIiGAwGDt37pSVlW1ra0POgARn8fHxioqKSUlJwzyirKwsLS2t7u5uOp2+f/9+TU1NJNpDo9HNzc1ffcJ0Ot3b23v+/Pm9vb2s5SUlJSgUCjkVg8E4efIk83mymeDgbPIHVn84aCxq2nIZLhGOqpdNC6sWyvfLRUve3acEzHVmeJZ0cVZ97iJGdb26y6mqy2u2CK9pDEa20huNRqupqampqbm5uSEl9fX1zOUFioqKg64Y//Lly59//qmioqKrqyslJTWW9wlBEPTDqqysREbfRq67u7ujo2PQjyoqKr71bH19fd3d3d90CKK6ujo/P7+5uRmZgoZGo9PS0pCPbGxskEFPfX39iooKAIC2tnZaWpqvr+/ChQvNzc25uLiKiopaW1tdXFwAAAQCwc3NLTExccWKFQAAJyengUM0iKVLlwIAUCgU88zPnz+XkZG5cuUKUqGpqamuro7tKEtLyydPnqxdu7a8vPzo0aNEItHU1LSmpsbIyKi6urqqqsrDwwMAgMfjly1blpiYuH79egCAg4MDc1wSABAdHV1TU/PixQs1NbVhHsvVq1eXLFmCjJYGBwf//vvvpaWl6urqQ9UfmNGRTqdnZ2dv27bt/PnzzEIajQZYNmTBYDCsu6hOIhicjQoKyNmKcQrhSqPqdOp0lbFKp0ROveoszFYQ9Jq3yqS8uTc9nlycRS7OwopIsS4a+CaSkpKSkpILFiwYpk54ePju3buR12JiYsjCAj09PUtLS7i8AIKg/6z4+PjOzs5vOoSDg2OoFfSZmZnfGmlxcnIi87S+VVdXFw6HY+5Tqq+vz5x1zTwhFotFYggNDY309PQ7d+4EBwfX19e/evWqr6+Pi4uLGW1wc3Mjm9oDAJDAblADz9zZ2cm6z2pYWBjrqRDW1tbbtm1LSEgwNTW1trbes2ePqampmZkZDofr7e3l4OBgbgbGeizbrDIODo6enh4ymTz8Y2lvb5eUlEReY+Gq0CUAACAASURBVDAYXl7eoSJpRHh4OFvJ06dPq6qqNmzYwFooISHBYDCam5uR0arGxkbmVSYXDM5GT9xIkEuEs+BqJU8V30Ha/nsa99La3v9edFtXfHrAtiPCeTk9Kc/6W+o6nlzt/PZFAyO0Zs2a1tbWDx8+ZGdnNzU1vXz58uXLlwAAAoHg5+f3yy+/fM8aFgiCoB8UBoMZw5QtOBxuXBPA4PF4CoWCvFZRUcHhcPr6+gP7fgalqqoaHBwcHBzs7u7+4MEDPz+/7u7u4uJipCMqOTl5JJu0D6Svr4/BYNhCGTqd3t/fz9wBXk5OTkRE5OjRo56ensLCwjw8PFeuXEFm0ysqKgIAPn78qKOjgzRDW1t70AstXLjw559/trW1ffjw4cyZMwEAJBKpv7+fuTkDQktLC9lLCwBQWlra3t6O3CDro2NlYGDA+rapqenKlSvx8fG6urqs5fz8/Hp6erGxsStXrmQwGHFxcT4+Pt/0oMYJDM6+C58it85m5bxLlX215CXdrlZ2885UR2Q35ng173ZVX7R21yV6eV7X64ek/Pe96cTedCKHrCph9gJuI2sUjuPrZx8BSUnJY8eOIa8/f/6MjIGmpaURicTff//94sWLW7Zs2bp161DrXyAIgqBJZ2xs/MsvvwQFBSkrK3t5eYWFhS1dunTjxo1iYmI5OTkyMjJbt24d9MAbN268e/fOyMiou7s7KSnJ39+fj48vMDBw8eLFmzdvzsrK+vTp0/Xr10fRJKQbjEKhmJiYNDU1JScnP378WFhYWElJafXq1VpaWl5eXsLCwpaWlhEREX/88QcAwNLS8vjx42fOnAEA4PH4vXv3urq6BgQE5Ofnp6amnj17dqhr2dvb37p1a+nSpXfu3DExMTl69OibN2+QfeaZfHx8IiIifHx89PT0Tp06FRgYiITLs2fP9vPzmzlz5rJly5CIcFBiYmL5+flsAR9i9+7dPj4+jY2Nnz59amtrW7Zs2Sge15jD7N+/f7LbMEEeP34sJyenp6c3usOHyqWF5caI6Qt0Vvb1NpDwpQQPC2cKL7nwS2lOcz6xKklJ0VDVzJ3b0BKF4+xvqu5vqSflvetJe07v6cSKSqG5BvlBGTVBQUENDQ0LC4uVK1cuWbKkpaUlKyvr9evX586d6+joMDIywuPxY3g5aCqjUqlYLHYkGdwgaCqgUqmsOziMHJFIxOPxc+bMGfMmTSRxcfGFCxdSKBQCgaClpaWnp2dtbV1WVtbQ0KCuru7m5sbNzc3Ly6uhoYHsBorFYuXl5XV0dCQkJLq6usrKyuh0+sGDB5HONnNzczU1tby8PCUlpXPnzgkJCQEA+Pn5NTU1B52aLCEhYWhoiHzB8fHxIdV4eXnXrVvX0dFRWlrKzc29du1aZLzP09MT+ZeaPn06Ho9XVlY2MjKysLAAACgqKs6YMcPOzg4ZVDU1NdXS0srPz5eTkzt79iwy0wa5C+bOGoKCgtOnTxcVFVVQUDAzMysrK9PW1r58+bK5uTlbhx8ej1+1alVTU1NDQ8OGDRvWrVuHlC9dupSPj49Op6urqw8zbgsAGOoHTFNT09TUNDc3V1FR8dy5c0Od5NGjR/Ly8kgI8Z25NUcCxWAwxvUCU8e6deu+Nbcmq66urqGmUgIA6P2Mkr9qmzPbUWiUkrNks2r9ifcXPndUAQDM5Uy3GHkL4gUYVEpf9puu1w+oNWUAAIBCfeuigW/19u3bPXv2IGnahYWFd+zY4e/vP7ppENCPpbe3FyY+h34UDAajt7d3dBlTgoKC+Pn5AwMDx7xV0GTx9PS8fPnyVOtNWLt27dy5c9esWQO+Fg+MCfiH9dhAY1HTPGTkbMUYdEbZvTqeFKHLC075G6znwuITq1I8n/hGFz5hYLHcRtbi28+JbTtDMLFHYXHk4qyWS/sbDq3rIkbRe75t7upIzJo1Ky4ujkgkmpiYfPnyJTAwUFVV9e3bt2N+IQiCIAgaE5GRkVMtMpt4MDgbOyggZyum6i6NwqDqkr6U3KxdouRw1eG0sZRBN6XnzIdL3i+2FX0pBQBwyKoKum2S3HeD32ktVkgcWTRQv9+z9c+j1NqyMW+XpaVlSkpKTEyMgYFBXV1dQkLCmF8CgiDoX6axsfHIkSOLFi60srBYvnz51atXSSTSZDcK+q+ACwLGmLiRIKcAR+G1qi+fOnPaP2uuk//dYl9q7fuT7y8Wt5b5vtyxWM3eS8eTG8eF5hHgtXLjtXQll2SP66IBxIIFC+zs7PLz84fZGAaCIAgCANy4cWOjjw8W0GdK8otzc1R9zvOJijq4f3/0/fsjXEQ5cmVlZWFhYcg8+u/x+PHj+vp6b2/vMWnVN0lNTf348SMnJ6eRkdH06dPH6rQkEunx48dtbW3W1tbKyoPsdfDq1Ss6nY68lpKSYssH9UODwdnYE1Al6AYo512q6Krqyz5ZprlO3kR6pr7TjOs5d/4qeHCv6MnrqpQNuittlSwBAACF4lTT41TT62+p60l70fP2BaW6hFJd0hFzg2BsQzB1wAqJj1XDUCiUlpbWWJ0NgiDoX+nhw4dr1qxeOV020FSNgPt74mZtF2lLXJ6NtdWHrOxhVgWOQltbW0xMzPcHZ4WFhaWlpWPSpG9y5syZCxcuuLi4YLHYd+/eIRuM7dy5U1hY+Jdffhn1aSkUipmZGQ8Pj6amZlBQ0IMHD8zMzNjq2Nvb29jYIGOglpaWMDiDvgIvwqGzSTn/j6rO8p5PZ8vVV8oKavB6662yUph7/P35/Jbiw2lhiVUpm428JQh/J6/FikjxO63ls/NkLhoYXaaB0SkpKamtrTU3Nx+/S0AQBE19NBpti7+/o6pkiLkGa7k0L/66k67tX++Cd+/+89atMb8unU5PT0/n5OTU0dFhbiFbVlZWXV0tJSXF3D2/o6ODTCbz8PBkZGSoqalJSEi0trbm5uZqaPyvtbW1tUJCQlxcXP39/VVVVTIyMhwcHGQyuampCVnsWVtbW1paKiQkpKWlhazp7u3tbWtrExMTS09Pl5SUVFRU7O/vz8/Pp1Ao06dPH35lYlNTk5SUlKOjo6GhIXK27u7uhoYGMplcXl7Ozc3Nlo1whB48eNDT05OSkoLFYlVUVA4cOPDq1auB1cLDw6fItrFjCwZn4wVLwGj7KCBLOPOvVCk5S0qaCqkIKp2zORr3OeHshyuptemZjZ+WaSzx1HbFof/+h0DhOLiNrLmNrCnVJT1pz8ck08BIuLm5ZWdnz5w5MyQkxMbGZjwuAUEQNPW9e/eusqYmwsNk4EfcOMzaGTJHHj4kk8lju5MChUJZtmwZmUzOzc2dN28esm1YUFBQUlKSrKzsx48fdXV1b926BQC4fv36nTt3enp6ZGVlfX19cTich4eHmZnZ58+fRURE5OTkAADbtm2zsLDw9vZOTEycP3/+/fv3nZ2d79279+effz579uzy5cvnz5+fNm1aWVkZJydnfHw8Jyfn69evt27dimQFXbx4saWlpbOzs7i4OCcnZ1lZ2fPnzxUUFIZqvJeX1+XLlzdv3lxXV7dt27ZNmzZlZ2enpqZycnLW1dUZGhqy9Z8NmgyANSkC4vnz505OTlgsFgDg7OwcEBCAJD9gOzAhIQHZSPZflsAQBmfjCFnCySXKUfWyqexeXV8TWWmxJBqFslWyNJLUu5B1LfZzwrWc28TKN1uNfPUlZrAeyyGryiGrym+/sudd7ARkGti1a9emTZvev39va2s7d+7ckJCQgR3IEARBP4rW66Gkog+jODA9pxKLRqkLD74JpbYoX09fX2bAYnmB0Wz8wWfryWO2eGB5bW3tjh07jIyMWltbZWRkQkNDJSQk9u/fj4SA/f39urq6ycnJyHZuBQUFBQUF4uLidDpdVVU1PDzc2dmZRCLp6ekhwZmVlVVsbKy3t/erV6/mzp0bHx/v7Oz86tUrS0tLAMCKFSu8vLyQ6zo5Od2+fXv16tUAgJKSkszMzBkzZgAAbG1tN2zY8PPPPwMAjh07FhwcHBkZOegdMRgMd3f3a9eu2dralpeXm5iYqKqqLliwYMGCBcLCwvv27Rt4yKCpBU+cOMFsFfOZ6OvrI6+RvrG6ujq2mWeysrL37t1DOtjCwsKYm5/9C8DgbJwhWTgFcaV36+qSvpA7qNOWy6A50EJcgrtNAuyVrU+8v1DVWbOVuGe+ormfwVoBzv+3lf+ELRpwdXV1cHC4dOlSaGhoUlKSubm5qanpoUOHYIgGQdCPiN7XTe8dTd5xGnm4JZloFAAA0Hp76Byj2SKUTu4btFxCQsLIyAgAICQkJCsrW1VVhYxXnj59Ojc3l0QitbS0FBUVIcHZ3LlzxcXFAQD19fW1tbWLFi0CAODx+IULFyLZ2a2srIKCguh0enx8/MmTJ5Ggh0gk+vv7AwDIZPLx48ffv3/f09NTVlbGnIispqaGRGb9/f0JCQkGBgZHjhwBANTW1r5//36oOyosLCwpKbG1tQUAKCkpeXp6Pnv2bPiU0CPMecpgMJjDu8gL5tx/puLiYuSjFy9eODs7L126lDWl+g8NBmcTQXymIKcgrvBaNXMJJ44XCwDQE59+xT7sz7x7f+ZFx35OeFubsUFvpaOKDQr8/+llE7JogJube/PmzevWrTt37tyRI0dSUlLMzc2tra1DQ0PHfHUSBEHQuBLxOUTv6wbfHkHpJ6f0x9mVtvaoDdZ5lt/Shefg0D9xfxQbcaGwWBTH4EexjtZhMBgajQYAcHJycnR0PH78uKCg4Jo1a5gbeTC3sCeRSKyjgcyRViUlJT4+vtevX7e0tJiamuJwuMTExK6uLmQdpbe3Nw8Pz+HDh4WEhEJDQ5mDjMzTksnk/v5+YWFhZJ9VQUFBJHAcVGdnJ+vO+3x8fC0tLcM/Bzc3t4GFXl5ebDNqpKSkGhsbkdeNjY0MBmPgwCUzekPSEpSUlAzT1B8LDM4miIAqj84W5fzL/1vCSZDGAwA4MBxrZrjbKJqfTL+YXp917N252M+JW2f6KvLLDTzJBCwa4OHh2blz58aNG8+fPx8aGhofH08kEh0cHEJCQtjyxUIQBE1lo8uPN8fSSlJcLDyr8rg1+9p2Co1+LafWwcGBW0hkLBo4HCqVmpmZSSQS+fn5SSRSdnb2wO4oOTk5DAbDTC6ekpLCHPWztLQMDg5G1nhZWVnt3r3b0tISCePevXt39+5dZGHj+/fvB6ZFJxAIGhoaUlJS7u7urOV0Or2iokJWVhaHwzELp02b1tbWVlpaqqKiAgB4/fq1g4MDGDofOQCA7bQIVVVVthIrK6szZ86EhISgUKjnz5/PmjULySHR3NyMx+PZNuj/+PEjmUyWl5cf9Io/IhicTRwu0UGWcCIfSfNKHrM8kFiVEpZ+8VNTnlfM5kWq9ut1V3BhB/kz6yuLBmYvQHN/b1oJXl7enTt3enl5HT169MyZM0+fPo2JiVm6dOmvv/7KXDQEQRD074PFYo+dOOnh4SFO4AiYqYzD/N0v9aWPsjUur763/3Fo6AQ0A4fDmZqarlmzxsrK6v79+4Om3cPhcPv373dxcfHz88vKyqqpqWEGZ1ZWVleuXPHz8wMAWFpahoWFITtcAADMzc0DAgKWLVtGJBI7OjoGvfrZs2c9PDwyMzMVFRVLSkoAACdPnmxvb1dWVi4qKmL9FhAQEAgODnZ0dPT29k5PT6+vr9+wYQMAYO7cub6+viQSSUdHZ+XKlawnd3Z2HskTcHNzO3LkiJub2/Tp00+dOnXz5k2k3MXFZcGCBYGBgffu3fvjjz8MDAy6urpu3Lixc+dOMTGxkZz5hwBza47UWOXS+n9ZOJdISpoIsX7aTem5+unWg+KndAZDikdii5G3sZTBV07Y3f73ooHWRgAACscxtosGmpubjx8/furUKRKJhEajly5devjwYeSPJGjKgrk1oR/IFMytefbs2W1btwpxccyR5hfm4qjqJL2u/sLLx3/nbvSYz8Rta2tLS0uzt7dH3r58+dLQ0FBYWLizszMyMrKtrc3R0ZFEIgkLC6uoqJSUlLS1tc2cOZN5eHx8/Nu3b/X09FRUVLq7uw0MDAAAHR0dsbGxNjY2/Pz8PT09MTExFhYWIiIiAAAKhXLr1q2qqipzc3NhYWEqlaqrq9vQ0JCXl2dlZcU8bW1tbUxMTENDg4KCgp2dnaioaEpKire396dPn9iWVQIA3rx5k5qaKiEh4erqyvx3zM3NLSoqkpCQMDU1Hd2T6ejouH37dnNzs6OjI5JxHLlfZL/Z9vb2mJiYsrIyAoEwZ84c1mcyHiY4tyYMzkZqLP8xGKAqtqnqZRMAQGqusNJiSbY5ZkWtpcffn0dyPZlIGwXM9BXj/lovOoPBXDQAGAwAwNguGqiqqgoJCbl+/TqVSuXg4Lh58+ag8wagKQIGZ9APZAoGZwCA8vLyS5cupSYndbS3S8nIWM+3WbduHT8//9eP/JeKjo4mEAjDT/b/F5vg4AwOa06G/7+Ek9JBVVsug+b4398i04RULtgefVAUc+VTZGpteuaTnFXTf1qm4YxGDZ0LdZwXDcjJyV26dCkwMPDAgQO3bt2qrKz8nrNBEARNcUpKSqETMoL5o3BxcZnsJvyHwOBs0jCXcLZ86iR3fNZc+/cSTgQGhXFRdzKXNw3Puh77OSE86zqxImnbTF9NkWnDn3ZcFw0oKyvfuHHj4sWLg06AgCAI+teoqqq6cuVKSmpKa1urjLSMrY3typUrx7u/BIIQMDibTP9bwlnZ9/FUueZ6eW7x/7frtAiX0G6TAAv5OafSw0vbyv1if7FWMPc39OLj+MoviHFdNAAjMwiC/t3Cw8M3bd6EwWN4tYSwgrjqmobn216E/BpyL/reqGdQDeVHT3zOYDDi4uLy8vIwGMysWbPGcO5XT09PdHR0a2urnZ0da34qppycnLS0NDKZbGJigky2AwCUlJRkZ2cz69jZ2f2IIfXQw2TQhECWcPIpcpNaKR/DytoKugbWMZE2uu54bvV0dwwKE/s5YdXTn1+WD5JibFAcsqqCbpsk993gd1qLFRJHMg3U7/No/fMotbZsTG8FpKWlhYeH9/T0jO1pIQiCJlJUVJSvr6+YtaxBmKX6Rn2V1dM1txoanrDoFwO2C+yQ1YtjCEl8/v3nKSws/PBhNEkRvtPJkyd/+eUXCoXS399/65+so5s2bTpw4MD3nJZMJpuamt65c6e+vt7U1DQ+Pp6twoMHD+zt7dPT05FdcA8fPoyUx8TE7Nix4+4/Rrjn7VQDe84mH5aA0fZV/F8WzgFLOAEAeCznmhnuZnImx9+fy20uPJwW9rycuHWmrxyfzEguMTGZBrZt25aWlrZ3797AwEAfH5+BSdAgCIKmOBqNtnnLZjFTGSV3TdZyDn5OjQDDj8HJu3bvuht1d8yvS6VSk5KS8Hj8rFmzkOWQDAYjLy+vsrJSSkqKuVaxqampp6dHUFAwNTVVV1dXSkqqvr4+OzubudE/AKCgoEBGRoaXl5dCoeTk5GhqanJxcfX29paXl2trawMAysrKCgsLRUREDAwMkOSVHR0d9fX18vLyycnJ8vLyampqyOZqJBLJyMho+LUaXV1d/Pz8M2fOnDt3LnK21tbWpqYmCoXy4cMHAQEBtpxLIxQdHQ0AePLkCQaDUVBQOHjwoLW1NWsFc3Pz8vJyZNM1e3t7V1fXwMBA5NHNmzfvxo0bo7jo1AF7zqYEJAunnK0Yg84oi64rf1A/6MbWSgLyZ22O7Jq9hZ+TL6sxZ13Mlj8+3abSqCO9DArFqaYnsv6AxO4rvFZuaAIfpbqkLep0/YGVHU+uIjtxfI8zZ87Mnj27qalp69atqqqq58+fH2oTQgiCoKkpLS2tob5BxnGQeAKNQ4vPl3vy5Alzs/6xQiKRHB0dL1++vH79+uXLlyOFgYGBAQEBDx8+XLdu3eLFi5GtFf766y93d3dLS8tr167l5uY+ffpUR0fn9u3bbm5uL168QA789ddfkV3BEhISDA0Nnz17BgC4d+/erl27AADh4eGrVq26f//+zp07Z82a1dfXBwBITU1dtGiRhYVFeHj427dvCwsLdXV1f//99/Pnz+vo6JSWlg7T+JUrV5aVlR0+fFhBQQFZQpGfn//hw4fk5OQjR47cu3ePrX7bYAZmQ4+NjbW3t0eWnDs5OSUlJfX29rJWEBQUZG6HSyAQWDf4qK+vv3HjRlxc3I/7HQR7zqYMZAmnAK40evAlnP/UQtkqWc6WMYrIuvG0NPZazu24isQAIx8jSb2RX2qcFg0YGBikpqbGx8cHBQVlZGT4+fkdOXJk9+7da9euRf6cgiAImhhBib+m1g6ZEXIYjW+qURgUQXrw7AI88nxkEnneeQcu8W/e+AMFUN56q9w1lwz8qL6+PiYmRkdHp7OzU1JSsq6uTkpK6tChQ8hvTjqdrqenl5SUNG/ePABAaWlpcXGxkJAQnU5XVFS8du2avb09lUo1MDBAdqC0srJ69uzZxo0biUSipaUlkUh0cXEhEonINmbr1q1jzktbsmTJrVu3kHzh5eXlOTk56urqAABLS8tt27atX78eAHD69Ong4OC//vpr0Jui0+lubm6RkZHm5uY1NTXGxsZaWloLFy4cJvH5oLPHfvvtNyT/OlNtbS0zc6CkpCQKhaqrqxt0i006nb5//34/Pz8kPuPk5ESj0a9fv87IyCCTyYmJiRISEoM2fiqDPWdTi7ixoNYGeSwXpuVTZ86Fz9Su/kGr8XHwbjf2Oz3/sCK/XG1X/fZX+/YlHWkjDb7X81CQRQPi28+JbTtDMLFHYXHk4qyWS/sbDnt1EaPovYPMfhsJa2vr9PT0uLg4PT29qqoqb29vVVXViIgIJFscBEHQBEB/dy67iSQpKYmkYOLj45ORkampqQEA1NXVbdq0ycrKaubMmTU1NcXFxUjlOXPmCAkJAQBqa2ubmpqQjcdwOBySNwkAYG1t/erVKxqNRiQSQ0NDX716BQBITExEgrOurq5du3bZ2dkZGhq+ffuWeVo1NTUkMkMGWLOzswMDAwMDAzMzMzMyMoZqeUFBQWVlJZInSkZGxsPD4+XLl8PfbMNg2CIzAAAK9b99WJEXqMH+TRkMhpeXFwqFYgaCPj4+L1++vHLlSlZWlrKyckhIyPDtmZpgf8aUI6DKM8NfKf9y5VBLOJlmiGldtj/1sDjm0sebiVUpGQ3Za6YvXzLNYbjt0AbDIavKIavKb7/y70wDzbUdT652voj8nkwD1tbWGRkZ9+7d27NnT1FRkbe3d1hYWGBgoKen58DdpSEIgsbWIbPdozswRSFlTsScnuoughzfwE+7KzrxXPgkvxhmlvExwZpGnTXxuYeHx44dO3h4eDw9PZkDf8y1h1QqFYPBMEMW5gCFnJycsLBwfHw8kkuAi4srNja2r68PmZe2fv16SUnJc+fOCQkJ7du3jznwxzwthUKh0Wh6enrMHXeXLl06VMt7enpYB0YIBEJzc/PwN8sMIln5+fkxcyQgBiY+l5SUZDuKwWD4+fmVlJS8ePFi4L8IGo1esGDBwHHVHwL8mpyKuCU4dQO+soQTgUVjXNSd/nA4bSxl0E3pOfPhks+L7UhqgW+FLBqQ2HNNdGMoXsuY0U/tTSc2HvVrOu7fkxrDoH7zyD0ajXZ1dc3Pz4+KilJRUSkoKFi1apWOjs7du3f/O3kpIAj6scyaNUtKWqrm6SCL2ekUWmNc1cKFC8c2MhsUlUrNzc3dsGGDrKwsJydnZmbmwDpycnKcnJzMFZpv3rxhfmRlZbVnzx6kq8zKyio4ONjS0hIJ4zIzM1etWqWsrCwgIJCWljbwtAQCQVtbm5OT0/UfTk5OAAA6nV5eXk6l/r9ZztOmTevs7CwoKEDeEolEZO0CFxfXUDPzNg1m+vTpbNVsbGyePXtGp9MBAE+ePJk7dy6yi1NVVVVraytSZ+fOnVlZWTExMaxLFli/X5KSkka3HGHSwZ6zKeqfJZw1zZkd+VeqlJdISgxYwskkxSPxu8W+1Nr3J99fLGot9X25Y7GavZeOJzfu29dLjnWmASREW7x48e3bt/fv35+bm+vm5mZsbLx7927kPzwEQdDUgcFgzpw+4+LiguPjUHBTR3P8nQON3EYqufgR9NBDD09Q4nMLCwsPDw9zc/MnT54ICAgMrIPFYg8dOrR06VJvb+/MzExmyAIAsLS0jIiI2LZtGwDAysrqxIkTSD5yAICtre3PP//s6uoaHx8/1Hz5CxcuuLm5vXv3Tl5evrS0FIPBnD9/vq2tTVlZubi4WFVVlVmTn5//4MGDjo6Oa9asycjI6Ozs9PLyAgBYWFisWbPmy5cvurq6GzduZD25ra3tSJ6Ai4vL0aNHnZyctLW1L126FBUVhZSvWLECSXx+9+7do0eP2tjYIHPmAADh4eGCgoL29vYSEhKioqIZGRlFRUUpKSkjudxUA3NrjtQE5NIaxNeycLIh9ZOu59z5q+ABnUEX4RLaoLvSVsnyu65PpfRlv+lKfPD3pmgo1PcsGiCRSOHh4aGhoUhn9eHDh4OCgr6nedBQYG5N6AcyBXNrXr16daPfRhQHmldDEEvAUb+Q2/JbxMXE7kXfmzVr1thea6jE5729vVFRUe3t7QsWLGhvbx8q8Xlqaurbt2/19fUlJSWZic87Oztfvnxpa2vLx8fX29v77NkzS0tLYWFhAACNRrt//35VVdW8efO4ubmHSnze1NQUFxfX0NAgLy8/f/58fn7+pKQkPz+/7OzsgVNT0tPT09LSJCUlnZycmEO0ZWVl+fn5QkJCo962d9BNaJOSkiQkJFRVVT9//sw2Gc7R0ZGLiys/Pz81NbW9vV1OTs7BwWF0P1cDwcTn4+WHDM4AAAA0vmsrja5j0BgiM/jUPGTQuK8MRpe2lR9/fz6/pRgAYCJttNnIW4Ig9p1tYGYaQMY3saLShFm2o8s00NPTc/bs2fPnTHAuQwAAIABJREFUzwcGBvr6+n5nw6BBweAM+oFMweAMAFBXV3f16tWU1JSWL19kpWXs7Ow8PT3/y/lRnjx5QiAQLC2/6w/+HxcMzsbLjxucAQDaS7oLr1X399F45bnYsnAOis5gPCuLvZD5Rw+1F4/lXKaxxFPbFYf+3lFsenf734sGWhsBACgcx/csGoDGDwzOoB/I1AzOIIjVBAdncEHAjwFZwokX4kCWcPY2su/XxwaNQjmp2EY6XbBRtCD1k6/l3N7wPCC3ufA7mzHmiwYgCIKmpuLi4u3bt882nq2loWVpYXnkyBHWSV0QNK4w+/fvn+w2TJDHjx/Lyckxk2B8KwqFMgErdIaB48GKGgh0VfT21JOaMtp5pPFcol9pDxeOa57sbF1x7fyW4oqO6udl8bXdDTpiWnjs990ICoUVluQ2sOA2tEThOPubqvtb6kl573rSntN7OrGiUmiuwfdvhCYMlUrFYrFw1xLoR0GlUjk4RpNEjkgk4vH4OXPmjG17Tp48ucR5SUlemSqXlgJBpedL3+1HkRfDLxoYGCgpKY3ttYqLiwMCApydnb/zPFFRUbGxsbNnzx6TVo0cnU5//PhxdHR0amoqnU6Xl5cHAPT29tJotO/cfryjo+PatWsvXrzg4eEZuI8GAKC7u/vdu3fv378XFhbm4fn7e6e9vf3Ro0cPHz4sLCxUUFBgjkQ/ffr048eP+fn5+fn5yIy0b2rMo0eP5OXlkRBiAuIB+Lv7R4IjYLR9FUX1+Wlkev6VqobUEf0Zpyc+/Yp92Orp7lg0NvZzgudj3yelLxmD5of6RkimAcn9kUIe23HSyvTu9i5iVEPI6ubzQaS8t+DbR8xbWlpmzZoVFBQ0MJUHBEHQxLhx48bWrVtXGK2/s+r5zvn7feYE7Lc/GrXmpYbgjIVOC/Pz88f2cp2dnWOyorCiooK5pcVEOnr06MGDB/n5+fn4+J4/f44UBgYGHjly5HtO29fXN3v27Pj4eBqNNn/+/EFzw8vJyfn5+a1atSorK4tZ6OTkdOvWrf7+/ri4OHV19c+fPyPlPj4+UVFR8fHx8fHxHz9+/J62TQC4lcYPBo1FTfOQ5RLlrHrZVBpd19tI/uoSTgAAB4ZjzQx3G0XzE+kXMuqzj707F/s5cetMX0X+b/vTYVBIpgFuI2vmogFycRa5OGsUiwZaW1uzsrLevXv34sWLyMhI1lS+EARBE4BKpf6y4xen6S5rZv2/5Uq8eL4D9sfW//XT7l27Hzx8MObXJZFI8fHxnJycFhYWSIcTjUb78OFDVVWVlJTU7NmzkV3KkMTnPDw8SUlJBgYG8vLynz9/zsrKYt0nrLCwUEpKio+Pj0wm5+bmIonPe3p6KioqkF+qnz59Ki0tFRQUNDU1RToskcTn0tLSCQkJysrKWlpaPT09b9++pVKps2bNGnQjDyYajcbBwaGsrGxpaYks1RyTxOdRUVFcXFx3795FoVBSUlK//vor2y61AIDa2louLi5FRUXWwqdPnzK3z7Wzs7t27dqBAweQt3v37h24odrUBIOzH9DALJwjWMIJAJDmlTxueTCxKiUs/eKnpjyvmM2LVO036K7AY/FfPXYkvj/TgJqaWnJysqenZ3Z2tqGh4f79+3fs2AHH5iAI+mYM0E8aTcq45OSUxqbGnxasGPgRDoNbMmP56edHulq7ubi+eRdJNAY1MF0yore318nJSU5OLjs7W1ZW9uHDhwCAXbt2FRcXy8nJZWZmcnNzP3/+HI1G//XXXzdu3GAwGDo6Ovz8/BkZGRs3blyyZElYWBiDwUD2mzh8+LCRkZG/v/+rV6/s7e3/+uuvn376KTo6+sGDBw8fPrxw4cLDhw/V1dVLS0s3bdqUlpbGw8OTmpq6adMmQUFBTU1NW1tbOp2+ZMmSmTNncnBw+Pr6xsTEDJoQE+Hq6hoREXHx4sX169evXbs2JCSktLQ0NzcXj8cj7WTb56y2tnbgSQQEBNhWhBCJxAULFiAhqb29/YYNG3p6etjqDPqvwIzMAABYLJZ1uDwmJiY9PV1fX19XV3eo25kiYHD2oxI3FuQUxBVer2751Enu+DySJZwIczlTQwndq59uPSh+eq/oSVpt+hYjb2Mpg7FqGLJogNfSlVyS3fX6ISn/fW86sTedyCGrSpi9gNvIGoUbbmaJkZERktPtzJkzgYGB8fHx165dk5aWHqvmQRD0X5AbXtFe3D2KA+PykrForJyQ4qCfKomokimkZ9vfyAiMZthBzk5MzmaQjY2amppOnTqlqanZ3d0tLi5eU1MjIyMTGhqK/GnKYDAMDQ1fv35tYWEBAKiuri4pKeHj46PRaPLy8n/++ae1tTWNRjMyMkLOZmlp+fDhQ39/fyKRaGdnRyQSf/rpJ2bic29vb+YeRm5ubrdu3UL2p62srHzx4gXSyzV37tzg4OBVq1YBAC5cuLBnz57o6OhB74hGo7m6ut66dcvExKSxsXHmzJk6OjouLi7ItmqDJj6fO3fuwMKQkBAPDw/Wkvr6euYdiYuLI4nPWfe//ar4+Pi0tLSIiAjkrbq6ellZWWFh4bZt23x8fEJDJ2Iz4VGDwdkPTEBtpFk42fBwEDYZrrdVsjj+/nzRl9JfEg6YSBsFzPQV4xYZs8YNm2mAx9QRIzTk1mtcXFynTp1asGDB2rVr4+PjtbW1z58/7+7uPmZtgyDo3w7Hg8FyjWYrGSwnhgEYDAZjiDTbdAAAjgs7ypMPcZSkpKSmpiYAgIeHR0ZGpra2VkZG5vPnz4cPHy4sLCSTyRUVFaWlpUhwZmJiwsfHBwCora398uULEnJhMBg7O7uWlhYAwPz58wMCAvr7+4lE4uXLl93c3AAACQkJyIYjX758OXTo0IcPH/r6+urq6hQUFJA2TJs2DYnMKBTK27dvdXR0kBlsjY2NrDO62OTn59fX15uYmAAAxMXF3d3diUSii4vLMA+hvLx8JM8KhUIhuZvAPxmZvmlvoOzsbE9Pz5s3b0pJSSEl8fHxyItffvllxowZ69atU1FRGfkJJxgMzn5s3BKcOgHKBVcrOz/3fjpd3q3XePR8aPbHbC4ubitrq19DQwZd4YKYJqRywfbog6KYK58iU2vTM5/krJr+0zIN52/Nmz48ZNEAn50nM9NAFzGq69Xdr2YasLOzy87O9vLyevLkyfLly58/f37u3LlJ3GoOgqAfyDRP2dEdyEhrD3lCK2suUhUbZCCvsDGPwE1wOmk+urWlQ2Fd+ofBYJCgxMnJydfX98iRI8LCws7OzsxUS8xliTQaDY1GM4NIZuwiLS0tKioaGxvb29trYGAgICAQExNDpVKRoUkvLy81NbW7d++KiooGBgYyc2UyRwz7+/vpdLq5uTlzqhmyudegSCQS68wTPB7f1NQ0/M0iISabLVu2LFq0iLVESkqqoaEBeV1fXw8AGObrjE1ubq69vf25c+cGTlMDAGhoaEhJSRUXF0/l4AzO5vnh/b2EU48/7uPzlV6eZjz2N90fn3K4iq/kN9QzqqysHOZYDArjou508+/t0EjhWdfXP9+KpBYYW8iiAfEd58S2nSGY2KOwOHJxVsul/Q2HvbqIUfTewTO7i4mJPXr0KDw8nEAg3Lx5c8aMGcnJyWPeNgiCICZjY2MFOYUb6ZcGftRL6Yn++OeSJUvGNjIbFJVKLSoq8vT0FBER6e7uHjRDuaysLIFAePv2LQCAwWAQiUTmR9bW1sHBwUgYhCQ+t7a2RsK43NxcV1dXCQkJFArF7Exixc39f+zdZ0BT198H8HOzd0LYG2SpbJWp4gBFESpurQur1VZrW63dQ63tv8MOa+vC8TjrVgRXqQsREFBkK0N2mCEkZM/7vAilVBEFAiRwPq/kcnPvSavwzbnn/H4UHx8fgUAQ9g/tg0iVSvXw4cNn2pm7ubmJxeK8vDztGBITE7X9oygUilQq7fStfd2Zjg2ptKZPn3758mWVSgUAiIuLmzhxonaFWUlJibYB4IsUFxdPnz59+/btc+bMaT+oVv+7APHJkye1tbWurq5dXGTAwZmzwQCDQ5wXWe1676efo/fZsx0BABQCdZHvCjyG8MUnXx47ebTrl5uQ2Z8Hb5hkP3ZHZmxpS9m6xA/DHCauH7OKQdD9NFV3Nw0gCLJ69eqQkJDFixdnZWVNmjTpgw8+2LZtGx6P1/nYIAiCMBjM77t+nzlz5vabW9eO/4BKaJumqhXUfJv4uRyRbvtmWz8MA4/Hh4eHz5kzZ+LEideuXTMz62QdCA6H++GHH+bOnRsTE5Odnd0xNk2ePHnPnj3a5sWhoaHbt29fv3699luRkZFr1qyZNWvWnTt3XvSgcM+ePXPnzr13756jo2NJSQmZTI6NjRUIBGPGjCkpKek44cRgML7//vvIyMjFixc/fPhQo9Fo25BPmTLl9ddfr6urCwgIeGZDQKdrzp43a9asX375JTw8fOTIkSdOnLh4sW2H7KpVq7SNzwEA69evf/LkSX19/eeff/7LL7/s3r3bxcVl0aJFUqn08OHDhw8f1r79Tz75JCkpadOmTf7+/gqFIi4ubtOmTfo8bQZg+6ZXN7Dtm17q8ePHs6fN3T/ndMeDPDF3Xfyy6rqqV7yITCU/WXjhRMFZpUbFJhu95bO8l33TXwJF2zcNaIuidbFpQKVSffPNN998841arfb39z927Jief+4ZWLB9E2RA9LB908mTJ1e/uRpVo15Wo1kkozoRJ4+T7WBnf/b82R5XMn+R1tbWvLy89u7gaWlpI0eOZDKZ2hjB5/OnTp0qEolYLJaNjU11dbVAIPDw8Gh/+aNHjzIzM729vS0sLCQSifbZpVgsTktLCwoKolKpMpns3r17fn5+2m2MKIpeuXKlpqZm3LhxFApFpVK5uro2NzeXlZW1L8AHAPD5/Nu3bzc0NDg4OEyYMIFMJt+5c2fTpk2ZmZnPr8YrKChIT083NzefOnVq+ydnDodTUlJiZGTk7e3ds/8yMpns8uXLPB4vLCysvfbvgwcPTExMtEvlMjMzBQJB+/kBAQF0Oj0tLU0sFrcftLCw8PDwkMvlaWlpxcXFBALBz8+vB3WaYG/NvjK4w1lubu6yWTF/zPzPJJlILlx6dOaD03lsDwbdlvzScmhaZfzKnzN2aXs9+Zp7bvR/245h0xdjbte+aUAjbgUAYGisF20aSEpKWr58eWVlJY1G27Vr17Jly/p0YIYLhjPIgOhhOAMAcLnco0ePpqam8lv4NrY2oaGhCxYs6IcHmnorPj6exWKFhIQM9EAGBgxnfWVwhzOpVGpjaXN0URyTbNR+8HZx4vXH8T/M/AMAQGDg2O4MYw8604WGwb0kpqEATSy7vSvrkEDeSsASXh85Z4n7XDy2b58kokpF+6YBAABAkE43DQgEgnXr1p04cQKDwUil0qH8s7ILMJxBBkQ/wxkEddTP4QyuORskyGTyho0bNx/d9MnEbRYMKwBAVnX63vRfjsWesMGbNue1Spvk9Wm8+jQeBo9huVDZ7nS2B4PwgtJoCEDCh00OsvGLfXT0cmni4byTf1fc2ej39hjLPizc94qdBphM5vHjx+fOnSsSiWAygyAIggYfGM4Gj8+//IxtbPTO5mUUAk2mkJqZm526cFK79NIh0lxSL+cVtvIKhK0VEl6hkFcoBOdqadZktjvdxIfZaYE0BoG+KWDdFMeJv2TsrhBUf3Drq4l2Y9/3e8uIxHz+ZB16lU0D0dHRfToGCIIgCBooMJwNHgiCrF23du26tZWVlXQ6nc1md/wuxYJIsTC1mWyqFKlanoi42QJ+sUhUIxXVSKv+aiQZE9gj6Wx3OtOZimD+89DT28z9YMTOuOKr+3OO3alKeVCfvcLz9dlukZgX1CfTlV52GoAgCIIgAwXD2SBkb2/fxXfxNJzZGJbZGJZGoeGXiHmFwub8Vlmzoja5uTa5GUfFskfQ2e50o+F0LLGtDB4Og507PCrYxm9H5r702oe/P9yfWH77A/+1bsZ9vxX5BZ0GWq8do/hP6brTAARBEAQZIhjOhi4MAcN2p7Pd6U5zLIWVUl6BsDm/Vdoob3zAb3zAx+AQxjAqeyTdxIdJYOAAAFY0ix8nbU7lZPyasbeIV/r2Xx9Gu0as8l5CwXe7AXAPvEqnAY1GExISQqVS9+/fb2fXk853EARBEDTgYDiDAIJBGI4UhiPFIdJc1qzgFQi5OYLWCgm/WMQvFpVdqtMuTWO702k25GBr/1FRXkfyTp96fPF8UUJSVcpqn2V9Ww6t41C73DRA9JtSW1tbXl7u7e0N23FC0BBx8eLF8vLygR4FNMilpqb2ZxkRWErjVel5KQ2d0y5N4xUIW54I1fK27rMkNkGb0phO1Ket5T9n7Nb2egq29nvfb405tb+fMGpE/LZNA7wGAACCJ2BHBvx0O+fnY2cBAPPmzdu7d+8za++GCFhKAzIgvSml8eTJk7t37+p8SBD0vNdee83CwgLAOme6BcNZz2iUGn6xmFco5OW3KoQq7UEcBctyoRmNpGVSH+zOPyhWSkg44sIRs5d4zMNj+n069rlOA0IK+6fEjD9zKsysrI8cOTJx4sT+HtJAg+EMMiC9CWcQ1P9gONMlGM56CwUijpRXIORmCyQNcu0xDA4hOxByqbnn0Iut+NZhLPsP/Nd5mA4fkAE+02lAoERP5FQcz6uZFbPqxx9/JBI7KRcyWMFwBhkQGM4gwwLDmS7BcKZD2qVpvEKhoFSMatr+CrVQeI9Yj54wn7iPdH1nzEomkTEgY3um04AGRVOqebf4YP2vB7x62uLN4MBwBhkQGM4gwwLDmS7BcNYXVGI177HwmaVpfCK/glXhPNp26qTxGCxmoMam3TQgSk9E1CoAQIVAyrf1mPbR/3C0vi2iqw9gOIMMCAxnkGGB4UyXYDjrUxoV2lom5hUIG7J5amHbXyoFTsF0pdr6mLM96DjSs0GhpaUlMzOTz+d7e3u7ubn11cBEfP69K/XXTzGAEgCgRAHBM9hs+mJtp4HBCoYzyIDAcAYZFhjOdAmGs36CAhFHmpVa2JTXYi620B5DMAjdnmzizTT2YhBZeADAvr37Nn+xxd3Ki4Kn5tVmjwkYffDIASazz+a0UPTW4V31V0+Mt2ZqOxsM7k4DMJxBBgSGM8iwwHCmSzCc9TORQnw87XxVVp2bYLij0BGDtj3fpJgTsyUZ/4vd+mPkbjO6BQBArVHH3v9NbNISd/linw6prq7u4zUrbHjlizxsjEh4AACWbjQoOw3AcAYZEBjOIMPSD3lgwNYDQYMejUB9a8Ky5cvnpAQmfef13XmHc/WWHAwBkTTI9x/duyZwgzaZAQCwGOzqwPcy7mfU1tb26ZAsLS2PXLpmueCdkBPpGxLzlEaWamGL8OaZum3Lm3Z/Kiu4D4bMZxUIgiBIb8EOAVDfcmM77wnffrHo6sHc41nKLJotbZXRstoTNc6m/1lkhsVgnc1dS0pKrKys+nQ8CIKsX79+6tSpWVlZDgsXKmtKn+80QA2ajqHAWVIIgiBoYMBwBvU5LIKdOzxqol3w7w8P3KlK2cHdraKq+VKeKe0/TxK5Qq6RkVH/DMnNzU27BYFg60KwdWFGLGvrNNDEESQcar1+nOwznj5x9uDeNABBEATpJ/hYE+onJhTjreM//m7iF+ZUM9QSc+LBwY7fzeE8FApbGbVm7VXT+hOGxqKHzrf48rDp2u9I7gGoSinJvNmwfV3jz+vFqVdRpaL/hwRBEAQNWXDmDOpXwdb+vuZent96Z4uz3ktYOXvEIjqR8YCTdjn/4rbpv9QkcoVlUtfXbbQ7OvsbghBdfYmuvm2dBtKuKapLFNUlrdeODcpNAxAEQZB+gjNnUH8j40jSJrHLh16SMFVs0x8/Fm9LMUsZ/sOYa/w4lKgWlIofbS9teiQYkLEtWLDA1tb25sM8ZtQblltPsBdvwls7wU0DEARBUH+CM2fQADBiGylaFWbjrME46/aDySV3lrz/uletH69AWHSsuuWx0GmOFZbYr58fCARCTU3N9OnT169f//3331P8wih+YdpOA3DTAARBENQ/sFu2bBnoMfST+Ph4Ozs7X1/fnr1coVAMqc7ZfaqF15L8113WaNP2I/wCLvdhXe3Y1gqLMq9hIzE1eFG1tDmvleFAITD67xHnrFmzjIyMbt++nZqaeuHCheDgYEtLSyzTmOweQAuejqEy1NxaVXOdvPiR6O4lVVMNztgCy2D32/BenVKpxOFwGAycGocMg1KpJBAGYTloaFDqhzzQwyK0N27c+Ouvvzgcjkqlaj9oZGS0b98+3Y1Nx2ARWv0hl8unzphayi1njDPFkXHiotbWTO6nu75MAQ+bpS0AgCByQGRxFGjEIFjENszUbqoZQPpvePn5+YsXL87NzcXj8Z999tmXX375bzVXFJWXZAuT4mSFGdrnm/rZaQAWoYUMCCxCCxmWfsgDPZk5W7t27bvvvvv48WO5XN7a2tryD5VKtWTJkj4YpG7AmTP9gcPhYpbG2JrYtBbwcDXgNf+I40eOTR41caZLhBGJVcovL5GW3mUkm5PMTFtMBaXi1nIxy5WGfa47Zx8xMzNbsWKFSqW6d+/enTt3bty4MWnSpLYyHwiCM7akjJ5EGTMZwRNVDVWq5jpZQbrk/nWNuBVvao0h68UvGDhzBhkWOHMGGRB9nDnj8/lsNvv999//4Ycf8PiB2FLXU3DmzFDIVLLLpX8fLzjbIuM7C50XVi4iy8l4KtZ5gbWxB6M/R/L333/HxMTU1tYymcw//vjj+c8eqFIhzb4rvHNRyXkKAAAIQnTxoU+YSRoZAJB+nOt7Dpw5gwwInDmDDIs+9tZ89OjRqFGjampqrK2tX362PoHhzLD8E9HOKEWqWRVzhguGAwDMxrCc5lphCf03IcTlct988824uDgAwOLFi3ft2tVpd/b2TQPaomgDvmkAhjPIgMBwBhkWfQxnPB7P0tIyIyPD29u7j8bUR2A4M0RSlexi8ZWT+RfcaodH1EQSNHjEGHjHONOsSf05jAMHDmzYsEEkEg0bNuzUqVN+fn6dnqYR8ds6DfAaAAAInjBQnQZgOIMMCAxnkGHRxzVnZDJZpVIdOXJk5syZhrUGC645M0R4DM7TdGS0a4TAiH9BFWcltKa10mrTuc0SnqWbab/tEhg1atT8+fPT0tIKCgqOHDlCo9ECAwOR5x5cIgQScZg7LSSa6OShkYhUDdVKTpk49aqsIB0AgLewR/orLcE1Z5BhgWvOIAOij2vONBrNwoULExMT8Xj8qFGjOj7igbs1oT4lUUovPbnecI0/umEMgiKNJg3DF9uNtHfptwEoFIqPPvpo586dKIpGRkaePHmSRqN1cb6qiSO+/5c47ZpGIgQAYOlG/dZpAM6cQQYEzpxBhkUfH2tqNBp/f/9Ov2Vqanrt2jVdjKpPwHA2OLQqhNduJrHumFCVNDFenOv96LVpYW5s534bQHx8/IoVK3g83unTp+fPn//S8wdk0wAMZ5ABgeEMMiz6GM50TiaT3blzB0GQCRMmkEjPLiSqq6urra3teMTHxweLxZaXl/N4PO0RLBbr4+Pz0hvBcDaY8Hj8zMOPqTV0AEC28aP6wOplvgtc2f20tKumpiYhIWHFihXP/43tQn9uGoDhDDIgMJxBhmXwh7OmpqZx48bZ2NgAADgczr1790xMTDqecODAgb1792r/3Nzc3Nzc3NTURCQSly5dmpSUZGZmBgCgUCh379596b1gOBtsUFB2m8O51oyoMU2kxjOOZxxcrN/wXuxiNGygR9aVF2wamIO31uWwYTiDDAgMZ5Bh0d9wVllZGRsbm5eXV19fb2Nj4+Pj89Zbb2mjUrds3rw5JydHW6cgOjra19d38+bNLzp55cqVWCw2NjYWALB06VI/P79333331e8Fw9mgJKmXFx6tkNUrVYjqptWNFMt7AVajV3ovcTZyHOihdamPOw3AcAYZEBjOIMPSD3mgJ5u57t275+np+f333z99+pRKpRYWFm7ZssXT07OgoKC7l4qLi1u4cKH2zwsXLtSmtE6JxeKzZ892jFaNjY0pKSn19fU9eAvQoEGxII7a6Go13hgHcOGcaTHFK/Iqnrx57f3NyT9UtXIGenQvhiBEV1+TN7dafHaAHjofQ6Erqktazuys/3q5IOGQmtc40OODIAiCBky3Z85QFHV1daXRaKdOnXJzc9MezM7Onj17trW1dXJycreuZmxsnJCQEBwcDABISUmZNWtWY2Pnv5YOHTq0ffv2x48fa79ctmxZbm4unU5/9OhRTEzM77///nxdg2fMmTOHSqVq7wUAoFKpCxcufPVaA3DmTM/x8oVl5+qUYrWKpDprdyafno9BkPE2QW94vm7L6KeCydu2bcvJyfn1119tbW279UJUqZDlJIuS4lS1ZQAAgCAEZ29ayGvEEf492zQAZ84gAwJnziDD0ss8gMFgXppYuh3OioqKhg8f/vDhw1GjRnU8fuXKlaioKD6fz2B0o8EOg8H4+++/AwICAAAZGRlTpkwRCASdnjlu3LhZs2Z98MEH2i+lUimZTAYAVFVV+fn57d69e86cOV3fKzQ0VKFQuLq6ar/E4XDffffdqy/oFolEXddNgAacSqSuuNDUWiwBCGgcVn+AdVAMxBgEGWsVsHzkAmuaZV8PYOrUqSkpKWw2e9++fRERET24gorzVJ75t+LRHe2mAayJFXFMKNFvCkLu3t89GM4gAwLDGWRYepkHCAQCDofr+pyXfPt5IpEIAPD8xICdnR2KokKhsFvhzNLSksvlav/c2Nhoadn5r8/i4uKMjIxz5861H9EmM+19w8PDMzIyXhrOHBwcerPmTK1WUyiUnr0W6icU4LWGXpvcXJ5Qb/bUYovp5hy/rNNN55M599PqMifbh8R4LrSm92FEi4uLW7FixeXLl+fPn79+/frt27d3u66miydw8dRFoOQJAAAgAElEQVS89kbbpgFureT6MenN0z3YNADDGWQotHME8AcsZCj6IQ90e83ZsGHDcDjcn3/++czxU6dOsVgsc3Pzbl1t7NixN2/e1P751q1b48aN0/5ZpVJ1nNI7cOBAVFSUhYXF81fQaDSPHz9+UaqDhhwEWIUY+250oliQFE0q90TvXaa/RDmFoyhILL+97PLab1N/rRX11TpFExOT+Pj4HTt24PH4nTt3BgcHl5aW9uA6GBqLHjrf4svDpmu/I7kHoCqlJPNmw/a1jT+vF6de1U6qQRAEQYNVT9o31dTU/Pjjj1VVVQCAlpaWzMzMb775Zs+ePR999FFoaGi3rubo6PjOO+9gMJiUlJSdO3fu379fu+WTRqMFBQUNGzYMAKBSqVasWLF58+b2J5IoioaHhzc2NmZnZ2/durWiomLPnj3tc2kvAts3DR14Os7cn6WWa1orJJIShYfKY9H0aCVWUcIrK20piy+51ijhurCHUfG6/+iDIEhgYOD06dNv3bql7fXk4ODg6enZs2vhjC0poydRRk9CCCRVQ5WquU5WkC65f10jbsWbWmPIL3wMBNs3QYYFtm+CDEg/5IFuhzMAwNSpUxsbGw8fPnzixImDBw+ePn26tLR006ZNX3/99UvXuD3D3Nw8IiIiLS1NIpH89ttv7b/D6HT62LFjtb2hGhoaqFTq0qVL23/TIAiComhpaWlDQ0NgYOC+ffs6dpF6ERjOhhQEixiNoFOtSPwSkaROLs5RhI0eP9M/XK5WFPGeFvFKLxZfaZRwXdlOlD6IaFZWVjExMRUVFQ8fPjx//nxZWVl4eDgej+/Z1TBUBsnNlxYSjTezVvEaVNxaRXmB6G6cvKwAS6HhTK2f3zQAwxlkWGA4gwyIPvbWbNfc3Pzw4UOBQGBsbDxmzJhuLTUbELDO2dCkEKpKTta0PBEBBFiNM3aIsqgW1xwvOHejIkmDavAY3LRhoTFei0zI7L64+9GjR99++22JRDJixIgzZ854eHj0/ppddxrgcrk7fv4pMzWFTqdPiYxauerNl648haCBBTcEQIZFf4vQGiIYzoYuFGh3CaBqlGJBdFtiS7UiVQiqT/wb0fDThk1e4fW6MdlI5zcvLCxcsGBBfn4+mUz+7rvv3nvvPZ1cVttpQJRyWVsUTdtpoMjIZe7yVXNdTMZZMSRK9YWyFg5CuZmc8ipTyxA0UGA4gwyLHoUzDodTVVXl7OxsamqalpbW6TkEAmH06NE6HZ4uwXA2xImqpUXHa6RNcgwOcYi0sBpvDBBQLqj6s+D8jYo7GhQl4UgznKYscZ/L1nVEk0ql77333v79+wEAS5cu3b17t87Ksvy308CUE6lfjHOdYP9vD7RtaWX0oOk/7fhNN7eDoD4AwxlkWPQonH377bdffPHF4cOHlyxZ8qKnJJaWls80KdcrMJxBGqWm4nJDbXIzAMBoOM1lkQ2BjgMAlPMrD+edSqpKRUFbRFvqMc+IxNLt3Y8ePbpu3TqRSOTq6nr69GkfHx8dXlzVWFN44fCsz75PWjau4/HqVunym2XFldU6vBcE6RYMZ5Bh0aNwVl1dXV5e7ubmZm5u/qIu40QiUVtOVj/BcAZpNee2lpzhqCRqPB3nutDaaETb/9YyfuWRfyIaGUea5TpjkftsBkGX/9MfP368YMGCvLw8CoVSVFRkY2Ojw4tnZ2evnhN1Icq940GxUj3u+P0mfmvPOg1AUD+A4QwyLHoUzgYBGM6gdnK+svhEjeCpuH2XAAbXll1KW8qP5Z/pGNFed59DJ+isOYRUKv3www8fPHhw/fp1FkuXk3MCgcDZ3vb+0kAi9t9Nmvc5vB9TS+PfmkkNnk4NCMfQ4OIzSO/AcAYZFn0MZxqNxt/fPz4+3srKquPxW7dubd++/dq1azodni7BcAb9x392CZDcltpQLf/t5VXILTqWfyaVkwkAoODJ0S4Ri93n0gj6/stj5bIlsry0r8c5afNZvUgWczXv/RCvaRZEAACCxZE8g2jBEUQXHziRBukPGM4gw6KP4UytVuNwuPLycgcHh47Hz5079/7779fU1OhydDoFwxn0PFGVtOhEtbRJgcFjHGaYW4UYd/xuAffJ8fyz2ojGINBnu0XOHzGzL0rX6opUKn1nzZt/X7s2xtpIpkaz61o+37xl3Tvr5SXZotSr0txUoFEDAHDmtlT/KdSgCAwFtouFBh4MZ5BhMaRw9s0331y4cCErK0uXo9MpGM6gTqnlmvL4+vo0HgDA2JPhMt8aR/1PS8q8psf/l/vnw/ocAACDSJ/tqu8RrbKyMi0tzcjIKCAgoOOTU7WgWfLgpig5Qc1vAgAgRDJl9CTa2Bl4a6eBGywEwXAGGRj9Cme//fbbsWPHUBTNysry9PTsWM25paWlrKzs448//v777/tmnDoAwxnUBW5Oa+nZf3YJLLIxGv7slFJeU+Gh3D+z6nMBAEwiY5brDJ1HtHv37lEolFGjRvX+UhKJ5IWNzzUa2eMMYdIleUk2QFEAAMHWhRo0nTImFCHAHhjQAIDhDDIs/ZAHutG+qbS0tLGx0cjIqLCwcMyYMebm5kb/8PT0XL169YYNGzr/ZaAfYPsmqAsUC6KpL0vMkUnq5U1ZfJVEzXKlIZh/F2aZU02nDZs8xtK7VtRQKajObsy/XJqIAtTFyAmH0UEJfpVK5ebmtn//fgwGM27cuO52QntGV+2bEARnZkP1C2tr2dlYreLWyQrSxfcuq3j1OGNLLNw0APU72L4JMiD62L5Jo9GEh4cfP37c3Ny8j8bUR+DMGfRSqAbl3OFWXmtE1SjNluy2xIZs2sm/wLymwgPZx7Mb8wEALCJzwcjoOW5RRGxvf7V8/fXXW7du1Wg0oaGhx48ft7Cw6PGlupo5+y9UqZAVpAuT4hTlBQAAgCBEFx9acATZKxhg9PezFjSYwJkzyLDo12NNQwfDGfSKhFXSouPVMu6/uwRQFM3Ly6uoqLC1tfX29tbOSD2sz4nNPvqkuQQAYERizh8RPdctitC7iHb79u3FixfX1dWZmpoeOXJk+vTpPbvOq4ezdm0tOx/cQhUyAACWwab4hdHGRWKNzHo2Bgh6RTCcQYZFf8OZWq0uLCwsLy+Xy+XtB8lkcmRkpO7GpmMwnEGvTi3TlCe07RIQmDRuOfOJqEXswHaq5lfiqJjDx/+vvb7/w/qcfdlHippLAQBmFJMFI2a95hLem4jW1NS0bNmy69evIwiyfv36n376CY/Hd/ciPQhnWhqZWJqVJEqOV9ZVAAAABkMa4UefEA2rb0B9B4YzyLDoaTjLz8+fNWtWaWnpM8etrKw4HI6OBqZ7MJxB3cXNEeQdL128f+aace+Huk7THkwpu7Pz/vd5hblsNrv9zIf1OfseHSnilQIAzKmm84dHz3SZhsd2O1RpoSi6c+fODz/8UKlU+vv7nzp1ytHRsVtX6HE4a6eoLhHdjZNmJaFqFQAAZ2pNDQynBk7DUBk9viYEdQqGM8iw6NeGgHahoaF4PP7s2bOlpaVvvPHGd999x2Kxnj59euzYsWHDhvXBIHUDbgiAuotiQbr19HrzE0FMwJr2g3ZGDhx+VSumpWOzMiuaRaTLVDdj5+pWTlVrTUZd1l/ld0g4orORIwbpbFV+lxAECQwMnDp16s2bNwsKCg4fPuzk5OTu7v7yV/6jqw0BrwbLNCZ7jaUGTcfSmCouR91cLy9+JLobp6wtx1LoOGPLHl8Zgp4HNwRABqQf8kC3d5k1NTXl5+enpqYGBQVRKBQ2mx0YGBgYGMhkMjdv3hwWFtYXo4SggfK0stTVdMQzB93Y7oV5j585iAAk2No/yNovjZN5MOfP0payn9J3Hc8/u8RjXoRTGBbp9iRWQEBAZmZmTEzM5cuX58+fv3r16p07d/bzJwQsw4geOp8+ed4/ZWxTpNnJ0uzkf6pvTEYIpJdfBYIgCOqObn+wrq6uBgB4enoCAMhkcmtrq/b43LlzU1NTBQKBbscHQQOLwWKIFK3PHOTL+CQ1udPztRFt//Rft47/2I5hUy9u/Cl91+L4txJK/1Kj6u7e3djYOD4+fseOHQQCITY2Njg4+PnlBP0BQYiuvsYxn1t8dpAeOh9DYyqqS1rO7Kz76vWWMzvbVqdBEARBOtLtcGZiYgIAaG5uBgDY2Njk5eVpj/N4PACAUqnU6fAgaIDNmDHjZtk1iULcfkSukl8tuOgmGZXz21N+ibjTV2EQZKLd2CORu7aO/9iOYV0navgpfdeS+LcTSv/SoJpuDQBBkPfeey81NdXZ2TkrK2vUqFF//vlnr95SL+BMLJlRb1huOW4c8znR1Vcjk4hTrzb88Fbjz+slmTe0q9MgCIKgXur2mjMGgxEbG+vu7u7h4YHH47/88ksEQWpqaj799FMWi/Xxxx/3zTh1AK45g3rA3Ny8hd/y3Z9bqTi6RqPOrnn4Q9JXoSGhM0bMkjYqGh/wW8slFHMigdnJ2n8EQRyYdtGuM4ax7J/yKzjCulRO5p2qFAqOPIxl360ys1ZWVsuXL3/69OmjR48uXLjA4/G6rrLR+zVnXUAwWLyFPdUvjOwbgmAwyvoqNa9BmpcqSbumEbfiTK0wZNiyE+oeuOYMMiD6WIQWAHDs2DE8Hr9w4UIAwLp162JjY1Uqla2t7enTp4OCgvpgkLoBd2tCPXbv3r29f+x7WvLUcZjDyrdWhoaGahSa2nvNNTe5KqkaIIA9gm4/w5xq+cIFWBoUvVudGpt9lCOsAwA4Mu0WjZw9xXESppv1Kfbu3bthwwYMBiMQCHC4F64Z7f1uzVeHyqWSh7dFKZeVnDIAOpaxHQv6Jh1CgwzcrQkZFj0tpfEMqVTa2Nhoa2vbRx/TdQWGM0jnVBJ1bXIz5w5XLdcABJh4MR0izUnGL5wAUGnUNyuSDuedqhXVAwAcWfYxngsn2AUjoBsRTVtfcPjw4V2c05/hrF1bGdvMG6hSAQDAMo2pQdNp46IwsB8U1CUYziDDoqfhrKyszMTEhMH4T7kjbUSzt7fX3dh0DIYzqI8oRSrOnebau1yNCkWwiLm/kd00MwL9hdNaz0S0YSz75d2PaF0bkHCmpZGKJBk3RHcvqZrrAAAIFkfyDKIFR8AyttCLwHAGGRZ9DGdqtRqHw1lZWSUkJIwaNar9+N9//x0TEwOL0EJDlrxFWX2jqSG9BdWgWALGcpyxTZgJjvTCeKTUqK6X3Tycd4oraQYAOLEclnku0FVEG8Bw1gZF/6m+kQo0agAAztyW6j+FGhSBocAVadB/wHAGGRb9DWcuLi719fWnTp2KiIjQHofhDIIAAJIGedX1Rm6uAKAAR8XaTDKxGm+Mwb/wiX9bRMs9yZXyAAAjTVyXeswPtvbv7TAGPJz9Qy1oljy4KUpOUPObAAAIkUwZPYk2dgbe2mmghwbpCxjOIMOijx0CUBT9+uuvb926xePxPv/8cyMjI22d9LKysri4uA8++KBPhqkLcLcm1A/wNJyJD9NoOF3OU0jq5fxiceMDPpaAoVqTOt2eiUUwbmzn2W6RZlSTIl5pVSvnZsXdzLpHRmSmLcP61e/L5XK9vb1TU1PDwsJIJFKf7tbsFgyJQhzmThv/GsHKUSMRqZpqlNUl4tSrsoJ0AADe3A7BdrsUNjT4wN2akAHRxw4BWkQi8ejRo05OTu+9915paekvv/yi22FBkEGj25M93nbkF4sqLjeIaqSlZ2trbnJtQk0sAtmdPrTEY3BRzuFTHCZeLk08UXiugPvk0zvfeJgOX+w+9xVn0VQqVXNz8+nTpzMyMk6ePKktE60/ECyO7DOe7DNe1cQR3/9LfP+6orpEUV0iSDhE9g2hhUTjLewGeowQBEH6ooePNR8/fqzdLHb48OE1a9ZMnjz5zTffXL9+PXysCUH/gQJeobDyaoO4TgYAoFiQ7MJNTby72r0oU8kul/59vOBsi4wPAPA0HfGG1+JRFl4vvVVVVdXChQvT0tJwONxHH320ZcsWPL6Hndf7GqpUyArShUlxivICADpW3wgGmIF/FAv1M/hYEzIs+rvmrD2cAQBu3749Z84cDAZDJBJhOIOgTqCAmyuoSGiQ8RQAALoDxWGGOdOpq19F/0S0My0yAQDA03TESu8lvuYvmQ9TKBSffvrpr7/+iqLo1KlTDx48aGNjo8P3oXNt1Tce3EIVMgAAlsGm+IXRxkdhWaYDPTSo/8BwBhkWfQxnGo3G39//3LlzDg4O7QcfP34cGRkpk8lgOIOgF0HVaENGS+X1RqVQBQBgudIcoixo1l01DpeqZBeLr/xZcF6oEAEAPE1HrPJZ6mPm0fWNLl++HBMT09zczGQyf/nllx7/ne83GplYmpUkSo5va9OJwZBG+NEnRMPqG0MEDGeQYdHHcGa4YDiD9IFarqlLaa65wVXJ1Nq6tfYR5mTTrpZCS5TSuJKrJwrOiRRiAMBoC+83fZaOMHbt4iUVFRUbN268ePEiACA8PHz//v22tra6fSN9QV5WILobJ8tL07bpxJlaUwPDqYHTMFTGS18LGS4YziDDoo+7NQ0X3K0J6QMMDmE4Ui0C2QBBRDUyca2sPo2nEKhotmQssfPNlXgs3tN05CzXGTQCtYhXWimovlyamNdUaM+0NaEYd/oSAoGwaNEiDw+P27dv5+XlHTx40NjYeNSoUd1q6Nn/cEZmFJ8QatB0LI2p4nLUzfXy4keiu3HK2nIshY4zthzoAUJ9Be7WhAyIHvXWPHr0aGxs7BdffDF16tSQkJBOzzExMYmLi9Pp8HQJzpxB+kbOV1b/3Va3FkPAWAQY2U4xxdO62kPdqhCef3L57JNLYqUEADDawnuN73I3tvMzp7XXOWtoaFi7du2FCxeAQU2hAdCxjG0K0GgAAARbF2rQdMqYyQihq2fBkMGBM2eQYdGjmbOioqLi4uJx48Y5ODjExcWRO8Nms6Ojo/t0uL0BZ84gfYMjYdnudFMfplqmEdVIhZXS+lSeWqah21EwuM6nuIhYoq+5Z5RzOBFLLGkpq2ytuVyaWMQrtWPYGJPZ2nMKCwsTExMrKirYbLa5ufmCBQvc3d21U2iHDh1is9n6P4UGAAAIgjO2pPiEUEZPRvBEVVONilsrK0gXJ8ereA04tjmWzhroIUI6A2fOIAOiRzNngwCcOYP0maROVpXYxM0RAADwVKz1JBOrEJMXRTQtgbz1VOHFC8WXZSo5ApAg6zELnKK3bPzq3v17zBHGGpmGX8T9cOOHn338KQCgvr7+rbfeunTpEgAgKirq3LlzhvW7EFUpZfn3RalX5cWPtEcIti60kJnkURNhGVtDB2fOIMOijxsCUBTdv3//okWLnhlZeXl5SkrKkiVLdDo8XYLhDNJ/rRWSyisNgqdiAADRCG8bZmoeYIRguopofLngdGHc+aIEuVpRtPcRnkZ0XDQcwWIAAEqhouy33O2f/bB06VLtySdOnHj33Xf5fH5paamjo2M/vCOdUzZUiVOuiNMTUbkUAIClG1H8p1DHzsCxzQd6aFAPwXAGGRZ9DGfaOmfl5eUdS2kAAM6fP//uu+/CUhoQ1Hv8YlFFQr2IIwMAUMyJdtPMTLyYXfdD50p5+9OObpn1ScDOMAT378aC1hKe5oooJzO7/UhTU1Ntba23t3efDb8/oHKp5OFtUcplJacMgI5lbMcCPWhaBXULDGeQYemHPKCzxwFisRj+04IgnWC50nw2OnNzBRVXGiQN8idHqul2XPsZ5iwX2oteYkJmT2dP/N3WtGMyAwBQ7Zh5Zfkdj5iampqaGnyJV4RIpgZHUIMj2srYZt6QFz+SFz/CskyogdNo46IwtK7aMEAQBOmzboSz3NzcoqIijUYDALh69WrHn+/Nzc179+51de2q8BIEQd2AABNvprEHoyGjpeqvRmGVNH9PBcOR4hBpwXCkdPoKIyMjOV/2zEEFX4al4mpF9VY0i74f9AAg2LoQbF2YUW9IMm6I7l5SNde1Xj8u/PsUyTOIFhwBy9hCEGSIuvFY86OPPtq+ffuLvuvi4vLnn3+OGTNGRwPTPfhYEzJQGoWm/n5L9Y0mpaittYDjaxZUq07KSYzwGombQmeP+nf1VenhPCwF77LQfbJ9SIznQmv6C0uFVVRUlJaWhoWF9cVb6Cf/Vt9IBRo1AABnbkv1n0INisBQXjjpCA04+FgTMiz6teaMx+Px+Xy1Wu3q6pqUlNSxZ5+ZmRmNpu8/+2A4gwyatrVA9Y0mtUyjbS3gEGlOMv7PjsucnJyw6VPoo9hUd5ZGphbe57JQxoIfl9+sTVajahwGO9k+ZIXXok5n0UJDQ2/duhUREREbG2ttbd1fb6tPqAXNkgc3Rcnxaj4XAIAQyZTRk2hjZ+CtnQZ6aFAnYDiDDIt+hTMtFEWzsrI8PT0Nax8+gOEMGhSUYjXnNrf2LlejQhEsYu5vZBduRmD8uz5BIBD89vvO5PvJTAYzKjxy6dKlGAymXtx4PP/s1ac3uohoV65cWbZsGY/HY7FYv/76a0xMTH+/N11D1SpZXpoo9aq8JBugKPi3jG0oQoA1C/UIDGeQYdHHcKalUqmSkpKePHkCAFi3bh0AoLKykslkslj6WxYShjNo0JC3KKtvtLUWwBIwluOMbUJNcGRs+wmNjY0MBoNE+s+jzzpRw4mCc9qIhsfgpg0LjfFc2LEBlAG3E+iSqokjvv+XOO2aRiIEAGDINLJvCG1CNN7cbqCHBgEAwxlkaPQ0nFVUVMyYMaOwsBBBkDFjxmRkZAAA5s6di8fjT5482QeD1A0YzqBBRtIgr7reyM0VABTgKFibySZW443PnDvz5WdftbTwVGqVj5fvjl2/+vj4dHxVVWvNsfyzNyqSNKimLaJ5LTL5p7sAAODs2bNr167lcrlMJvPHH3988803DaCdwCtAlQpZQbow6aKivBCAjtU3ggEG+7JXQ30IhjPIsOhpOAsMDBSJRIcOHSoqKvr999+14ez8+fMrV67k8/l9MEjdgOEMGpSEVdLKKw38EhEAIO7xqau5cR+Hfu1k4ooC9G7pjV1p26/duPZ8VbMKQfWJgnP/RDT8tGGTV3i9bkw20n634xTatGnTYmNjB8cUmlZb9Y0Ht1CFDACAZbApfmG08VFYlsFXGDFQMJxBhkUfw1lFRYWjo2N6erq/v//Jkyd//fVXbTjLy8vz8vLi8XhGRkZ9M9TeguEMGsT4xaKShJrwr8YeWnzWhGbWfjzxyeUccP/S1bhOX1UuqPqz4PyNijsaFCXhiDOcpi5xn8v+J6KdPXv27bffbm5uHmRTaFoamVialSRKjlfWVQAAAAZDGuFHnxANq2/0PxjOIMPSD3mg26W0uVwuAMDNze2Z49qQJ5VKdTIsCIK6heVKI09VWRpbd0xmAIAgh5D0zPQXvcqRafd58IZDETsn2o2VqxTnixIWxa/Z+WB/i4wPAJg3b15BQcGsWbMEAsGaNWsiIiKqq6v7/J30FwyJSg2OMP94r+m7P5N9xiMIRlaQ3rT70/r/rRLePKMRtw70ACEIGrq6Hc5sbGwQBHn06NEzx+/cucNgMMzNYXs7CBoYGCwGYJ6dCNegagzykn/mjiz7reM/PjRDG9Hk54sSFl1avfPB/haZwNzc/MKFC2fOnDE2Nr5+/bqnp2dsbGyfvYOBQRzmbhzzucXmY8yoN7BsM1UTR5BwqG7z4ubD37Y3WYcgCOpP3Q5nFhYWYWFha9euLSgoaH/GkZCQsGXLlsWLF2OxcF0tBA0MV1fXZlFTneA//W2Tn97ytPQVVb98SnsYy37r+I8Pzvhtot1YWVtEe3PfoyNChWjevHl5eXlRUVHaKbTIyMj6+vo+ex8DA8swoofOt/zyiOna78g+41GNWpqd3LT708af14tTr2pXp0EQBPWPnmwIqKmpCQsLKyoqYrFYSqWSRCI1Nzf7+/v//fffDAajL0apE3DNGTTo/d+h//vmi/9tGPe5l/UolVqZ+OTKofu7d8w5YG/saD3RxG6aGQb3SqupCrnFx/JPp3IyAQAUPDnaJWKx+1wagXrs2LH33nuvpaUlOjr64sWLffxuBpKKWytOuy6+f137fBNDopBHTaSNfw1v6TDQQxuE4JozyLDo44YALYlEcvz48Tt37jQ1NZmZmYWFhS1evFjPy9LCcAYNBX/99dcXH3/xpKQIj8NNCJn4w/bvCaVMzh0uqkEpFkTXhTY0O/IrXqqQW3Qs/8wzEU3Y3Lpt27aIiIjIyMi+fB96AVUpZfn3RalX259vEmxdaCEzyaMmIthuNCaGugbDGWRY9DecGSIYzqChQygUUiiU9mUGrRWSklMcaaMcwSCWY9kOM8wxhFdd0pDf9OREwVltRGMQ6LPdIuePmEnFd958fbBSNlSJU66I0xNRuRQAgKUbUfynUMfOwLHhKlsdgOEMMiz9kAewW7Zs6dMb6I/4+Hg7OztfX9+evVyhUBCJsOULZBjUajUOh8Ng2hIYkYW3CGSjaiCskAgrJU3ZAqoVicR+paluM6pJmMOEMZY+DeKmCkFVdmN+QulfcpXCle1EwOL78k3oESyNSRrhRw+ZiWObq/lNKm6dorxAdPeSvKwAgyfizWxh9Y1eUiqVev7sBYLa9UMe6MnMWVNT0zfffJOYmNjQ0NDxuIWFRWFhoe7GpmNw5gwaOiQSCZFIfH6DjrBSUnKKI2mQAwRYBLIdZ1pgX3kKDQCQ11R4KPfPrPpcAACTyJjlOmPBiGgK/lWfkw4abWVsM2+gSgUAAGdiSQ2aTg0Ix9CYAz00gwRnziDDoo+PNVEUHTNmjLb6kb29fcdvMRiMzz77TKfD0yUYzqCh40XhDACAqlFOErfyWiOqRknGBJcF1kzn7v1SzGsqPJBzIrshDwDAIjIXjIye4xbFa2z29fUNCAjYvXu3tbW1bt6GftNIRJLMG6K7l1TNdQAABIsjeQbRgiOIrj2cnh+yYDiDDIXaElgAACAASURBVIs+hrPq6mo7O7uzZ8/OnTu3j8bUR2A4g4aOLsKZlrhWVnKyRsSRtU2hvWaBJXavsM7D+pwDOccKucUAABaRGWEb+uWsj5vqGlks1o4dO5YvX97b92AoUFReki1KvSrNTQUaNQAAZ25L9Z9CDYrAUGgDPTjDAMMZZFj0MZzl5OT4+PjU19cbXL1ZGM6goeOl4Qw8M4XGJjgvsGK5dDtMPKzPic0++qS5BADAJNCVWeLEnxM0Ss20adP2799vY2PT8/dgaNSCZsmDm6LkeDWfCwBAiGTK6Em0sTPw1k4DPTR9B8MZZFj0cUMAm83ev39/QECAi4tL3wypr8ANAdDQoVQqO24I6BSCQRiOVGNPhqhaKmmQNz7kK1pVTGfqK9ZC07KiWUQ5h3uZjaxoreaI6pVm6MhoHwRgMq/fP7j/IJvNHj16dK/fjWHAkCjEYe608a8RrBw1EpGqqUZZXSJOvSorSAcA4C3sEVij+8XghgDIgPRDHuh2OMNisV5eXps2bXJycrKxscHhDKbYDwxn0NDxKuFMi0DHmQcYYQmY1jKJsEralMWnWpJIxt37NflvRBNU10kbaCNYjuFuwlbRqT9O3E+7P3HiRH0uT61bCAaDt7Cn+oVRRk9CCCRVQ5WquU5WkC6+l6BubcaZ2WAocAK+EzCcQQZEH3drarfod/otKysrDofT6bf0AXysCQ0dr/JY89mX1MtLTtUIq6QAABNvpvM8Kxyl2zM9KEDTOJn/l3uymPcUAKBskVdcLJJmC3747ofVq1d392qDAKpUyArShUkXFeWFAACAIEQXH1pwBNkrGGDgRFob+FgTMiz6uOZMo9G8aEsm3K0JQXqiB+EMAIBq0Lp7vIqrDRqFhsDAOc2xMvbsyYyXNqIdzPmztKUMACDjSqvjS7xJI/bvG1qr0Dpqq77x4Ja2TSeWaUwZE0obH4VlmQ700AYeDGeQYdHHcGa4YDiDho6ehTMtGVdRcpojeCoG2im0uVY4ak+uo0HRu9WpB3NOVLXWAABkTRLuDc5HM99f8+aaHlxtcNDIxNKsJNHdS8r6SgAAwGBII/zoE6KJLj5DuYwtDGeQYYHhTJdgOIOGjt6EMwAAQEH9fV75pXq1QoOn45znWBl79XDRmDai7Xt4uFbSAACQNUkYZcSDH+6xs7Xr4dgGBXlZgehunCwvDVWrAAA4U2tqYDg1cBqGOlQW53UEwxlkWPQxnHXxWNPMzMzR0XHKlCk0mj5W94HhDBo6ehvOAAAAyJoVJac5gtK2KTSnuVb4Hk2hgX8i2i/JuwVACACQN0jXBa9cHDAfg3SvuNogo25tkWT+LUq5rOY1AgAQPIHkHkCfEE1wdB/oofUrGM4gw6KP4UytVpuamopEIqVSiSAIlUoViUQAAAqFolar5XK5mZlZXFxcUFBQ3wy452A4g4YOnYQzAP6ZQouvV8s1eBrOaY6liXfPOxRpUPRS7pWdabEaOgAAODBtXx85Z4rjxCEe0TqUsU0BGg0AgGDrQg2aThkzGSGQBnpw/QGGM8iw6GM4AwAcP35827Ztv/76a1hYGIFAaGlpOXjw4O7duxMTEwUCwapVq1pbW4uLi3Xwi0GnYDiDhg6dhTMAAAAynqL0dC2/RAQAYI+kO8+3JjB6XkNHpVHfrEg6kn+aI6wDADgy7WK8Fk2wC0bA0F10paXi1orTrovvX9eIWwEAGBKFPGoibfxreEuHgR5a34LhDDIs+hjOxGKxpaXltWvXxo4d2/H4hg0b6urqTp06lZ2d7evrm5OT4+XlpdOh9hYMZ9DQodtwBsB/ptBwZKxDpLlFELs319NGtMN5p2pF9QAAR5Z9jOdCGNEAAKhKKcu/L0q9Ki9+pD1CsHWhhcwkj5qIYA2mrmS3wHAGGZZ+yAPd/qdeXFwsFAqfD15eXl4JCQkAAG9vbzKZ3NDQoJsBQhCkDxBgEcRmuzNKz3J4BcLSs7XN+ULneVZEFr5n18NhsOHDJoc6TLhWduNI3ulyfuXm5B+GseyXD/mIhuDwZJ/xZJ/xyoYqccoVcXqiorqEd+InbMJBit8U6tgZOLaBtc6DIKi7ur3Ug8lkAgBu3br1zPFbt26xWCwAgFKpVCgUQ6cgOAQNHQQGbuRK++HLbXEUbMtj4aPtpfVpvN5cEIfBRjmHn5wZuylgHR1LK+NXbk7+4Y3L796pSkHBUNlI/iJ4czvW7Letvv7TaP67eCtHdWuL8OaZ+m0xTbs/lWYna1enQRA0KHW7fZORkdGdO3f27duHx+NpNJpcLs/Ly9u6deuRI0c+//xzf3//pKSk48eP//jjjySSfi1lhe2boKHj1ds39QDFgmQ2xkjWrBBzZLxCobBSwnSi4kg9f4SKRTBubGdNnuz0wZN0B2YrIr5TlZJR94hNZtkyrHU4ckOE4PAEWxfa2EiSewBAEFV9paqJI81Oljy8hSoVeDObwbFpALZvggyIPrZvAgBwudylS5dev369/QiRSPz000+/+uorBEHy8vKqq6sjIiJ0Ok4dgGvOoKFD92vOOsPNEZSeq1WJ1VgSxjHKwiKQ3cunkampqR9+/GE5gWM/25XAIgEA3E2GL/GYG2ztr5sRGz6NiC9OTxSnXlU11wMAEBye5BFIC44guvbwY6c+gGvOIMOijxsC2pWUlBQUFPB4PO10lLGxsW5HpnMwnEFDR/+EMwCAUqgqPV/bnNsKAGC50VzmWxONergKTQtF0XPnzn365WcyB43ta84EJhEA4GE6/A2vxaMtvHUz6EHg3+obqUCjBgDgzG2p/lOoQREYij6WmewaDGeQYdHrcGZwYDiDho5+C2da3BzB0/N1SpEKQ8DYTTW1mWTayyk0hUJx+PDhr77+CudBbY9onqYj3vBaPMpCv7aBDyy1oFny4KYoOV7N5wIAECKZMnoSbWwk3nrYQA+tG2A4gwyLXoczuVxeUVGhrUCrhcfj9a18RkcwnEFDRz+HMwCAUqQqj69vfMAHADAcKS4LrcmmvV2T0dLS8sMPP/yxbxd7vIVdpAuWigMAeJqOWOm9xNfcUweDHixQtUqWlyZKvSovyQYoCtrL2PqFIXgDWMgFwxlkWPQ0nNXV1a1cufL69evPvNbKyorD4ehubDoGwxk0dPR/ONPiFQhLz3IUrSoMHmMXbmo90QTB9LYoRnV19TfffPN/xw9bhNrZRblgKW0RbZXPUh8zD12MevBQNXHE9/8Sp13TSIQAAAyZRvELpU2IxhlbDvTQugLDGWRY+iEPdHu3JgBg5syZ+fn5P/30U11d3Zw5c95++22VSsXn8/fs2TNixIg+GKRuwN2a0NDRp7s1u0A2I5oHGKmkGmGlhF8sFhSLGY4UPLVXpVOZTGZUVNT08OkPLqen7r+jlqqYzuwmRfP1spt5TYV2TBtTir4veO03GCqD5OZLC4nGm1mrWhrVvHpFZZEoOV5eVoDBE/FmNkBfO2XB3ZqQAdHH3ZoCgYDFYl29enX69Onh4eFRUVHvvPMOAGDt2rUcDufSpUt9M04dgDNn0NAxUDNn7VoeC0vP1sr5Sh1OoQEA4uPjP/nkk+LyEqspDs5z3dVYDQBgtIX3ap9lw41den/9QUZRXSJOuyZ5cBNVyAEAWKYxZUwobXwUlmU60EP7DzhzBhmWfsgD3f4UVV5eDgAIDg4GABAIBKFQqD2+Zs2aK1euiMVi3Y4PgiBDZDSC7vuhs0UQW6PUVFxuyP29XNIg7/1lX3vttdzc3F07/sDmqUaXuMZ4LqLiKQ/rc9Zc/2DjzS+LeKW9v8VgQrB1MZr/rqW2jK2FvVrQLLx5pu7r5dz9m+XFj8CQ2Q0GQQan248btKX/xWIxk8m0srIqLW37aYiiqFqtFgqF8NMPBEEAABwZ6zzPytiTUXqGI6yUZP9cahNqahtmimB7NYWGw+HWrFmzZs0a7Zdz3CLPF10+++TSw/qcNdc+CLIes8LrdVe2ky7ewSCBIVGpwRHU4Ah5WYHobpwsL01WkC4rSMeZWlMDw6mB0zBU2NAFgvRLt9ec0en033//PTg42NXVVSKRfP/99y4uLjKZ7OOPP5ZIJJs3b0aQbv/kbW1txWAwPXgEw+fzCQTCK94RrjmDho6BWnP2PLIJwSKArZKohdVSQamYVyCk21MIDJ018CbiiL7mnpHOUxGAlLQ8LRdUXS5NLOKV2jNtjclGurrL4IAzMqP4hFCDpmNpTBWXo26ulxc/EiVfUtaW4ZjGWCOzARwbXHMGGZB+yAPd/tmNw+E++uij6upqAMDcuXMDAgLmzZs3evTolJSUXbt2dTeZcTicoKAgJycnMzOz33///fkTYmNj2R0UFxdrj+fk5Li5ubm5uVlaWurzQjcIgrAkjPM8K4/VDkQjvLhWlrPjacXlBlSNAgDUanVJSUlGRkb7AomeYRIZa3yXn44+EGEVigWYVE7m6msbPr2zrbSlTEdvYvDAMozoofMtvzxiuvY7knsAqlJKs5Mbf/ug8ef14tSrqEI20AOEIKjXRWg1Gk1BQQGHw/H19TU3N+/uy19//XUajbZv376ioqKAgICMjAw3N7eOJ+zcuTMlJWXv3r3aLxkMhnaCbfTo0YsWLdq0adPNmzdnz55dU1Pz0tV5cEMANHQM+IaATmkUmqrEpprbTQAFVEtShUXhpi82EgCJSqSWNz5duWrlN//b1svpk7CwsLuZyaOWB9EC2UpUhUGQENvgld6L7Rg2unoXg4yKWytOuy6+f10jbgUAYEhU8qgJtPGv4S0d+m0McEMAZFj0tM6ZrojFYjabnZubqw1kixYtcnZ23rZtW8dzdu7cmZmZeezYsY4HCwoK/Pz8uFwuhUIBAIwaNWrjxo1Llizp+nYwnEFDh36GM63WcknJKc6D3MytVz/cGvnzCHMPAIBYLvo1+Vu7MZaxh2J7c/EbN26sWrWqsrISzyCOXxuKeJGUGqU2oq3yXgLbqL8IqlLK8u+LUq/Kix9pjxBsXWghM8mjJiJYnT2DfuHdYTiDDEo/5IEe/qtTKBSPHz+uqqqSyf6dAyeTyZGRka9+EQ6Ho1KpXFzaNsC7ubmVlJQ8f9rFixeJRKKVldWbb775ySefYDCYsrIyOzs7bTLTvvDp06cvvZ1arW5qaiora3vMQaVSezDVB0FQLzEcKT4fOH0+7v3V497TJjMAAJVI+3DiloXHpv/vx/+ZmJj0+OJhYWHFxcWHDx/+4osvbn1/lWxKnbB+qtIZuVOVcrc6NcQ2+E2fpTZ0Kx29lcEDweHJPuPJPuOVDVXilCvi9ERFdQnvxE/YhIMUvym0sZFY9kCuSIOgoaYn4SwxMXHVqlXaZWcddbdDgEAgIJPJ7WuWaTRaS0vLM+dMnz49Ojra2to6MzNz3rx5LBZr7dq1AoGgPZkBAOh0Op/Pf+ntCgsLr1y50v6ElEAgJCcnk8nkVxxtx0ZVEKTnpFKpQqHQz5kzrZKGotXeGzoeIeKIbpYjMjMzx40b18uLL1q0aNq0aTt27NizZ8/1ry4yrY2mfBDJMxfdqUq5V3N/vFXQ626zLanws1lnKEbYKUvoIXOUufcUGX+p6yuFN88Ib53FDfMkjAnDjwwAfbDLBEVRqVSq0Wh0fmUI6gu9zAMkEgmPx3d9TrfDmUwmmz9/vqur6++//25j859lHC+92TNMTU0lEolSqdS+kM/nm5k9++GsfV4tMDDw3XffTUhIWLt2rampqUAgaD+npaXF0dHxpbfz9PR86623evxYEwAAH2tChgKLxertY00tKoUqUTxbFlEoFBFFVDqN3su+6QAAOp3+yy+/vP/++99+++2BAwfObTxm6WI1+YOIWjr3ds295Nq0yfYhK7wWWdEsenunQYlOB5Nng8mz28rYZt5QPc1VPc3FmVhSg6ZTA8IxNKYO74aiKBaLhY81IQOid0Voi4uLBQLBsWPHZs6cOfq/utv13MrKisViZWVlab98+PChp2dXzYylUql2sfCIESOqq6u5XG77Cz08YIs9CDIk02ZMu14c3/FIRfPTOn4NJoXx8Pvi2rvNGpUOlsPa2dnt27cvPT194sSJdSW1J946ULej2B3jgqIgsfz20oS3v039tVZU3/sbDVZtZWw3H2VGvYEztlBx6wQJh+q2LGk+/G376jQIgnSu2xsC6uvrra2ti4uLnZx0UOZx06ZNWVlZ+/fvT09Pf/vtt0tKSszMzB4/frx69eqkpCQMBrNnzx5PT09zc/PMzMx169bt3bt3wYIFAICoqCg2m/3111+fPHly7969paWlONxLZgHhhgBo6NDnDQFaLS0tgX5BXuzREa7RdBLzUU3m4Yd7vn7vf15ogLxFCQAg0HEWwWyrEGMcWTfv4saNGxs3bszLywMABIQFjXsnNEucr0bVeAxu2rDQGM+FJrBHZ9dQVF6SLUq9Ks1NBRo1AABnbkv1n0INisBQaL27MNwQABkSPd2tuXTpUiqVunv37t6XuJTJZJ9++ulff/1lbm6+devWkJAQAEBxcfGGDRsSEhIwGMx3330XHx/P4/Hs7e1XrVo1f/587Qu5XO7GjRszMjJcXFx+/PHHV2m4DsMZNHTofzgDAEgkkh+/337t8jVBq8DX1+fzzZ97eHigarQ5v7XmFldULQUAYEkYcz8jm8kmBGb3Vk10SqVSHThwYOvWrfX19QiCRC+dPXpl8I2auxpU0xbRvBaZkNm9v9HgphY0Sx7cFCXHq/lcAABCJFNGT6KNjcRbD+vZBWE4gwyLnoYzmUw2Z86cmpqasWPHars5aTEYjM8++0ynw9MlGM6gocMgwlnXWsslNTebeIVCAACCRUx9mbZhpmQzHVTlFolE27dv//nnn8Vi8Y4dO6JjZh8vOHejIglGtG5B1SpZXpoo9aq8JFvbppNg60INmk7xC0Pw3StWB8MZZFj0NJxt27Zt8+bNKIrS6fSODxMtLCwKCwt1OjxdguEMGjoGQTjTEnFktUncpiwBqkEBAtgj6LZTTOn2lJe/8mVqa2svXry4ZMkSJpMJAKgQVJ/4J6KRcMQZTlMXu8+FDaBehaqxRpyeKE67ppEIAQAYMo3iF0qbEI0ztnzFK8BwBhkWfQxnjY2N1tbWS5Ys+fnnn9lsQ/pwCcMZNHQMmnCmJWtW1N5trr/folFqAAAMR4rNZFP2SB1s6nxGuaDqcO7JpKr/Z+++46Ms8j+Az/aSTdnd9J5NhSSQhE4gEIg0CUi1IoqH5VCRn96pd5ZTEQ+9ExULKupRpEhHFAXpHVII6QnpvW022ZLt+/vjCUsICAlskifZz/t1r3tlZ2d3Z8OafDLPzHfOWoiFz+bfH3zfY5HzJQIxIUSv1584caK4uDgwMDAhIaHrVXjshMWgb7t8Unlij6GyiBBCGAxeaIxo7AzBkLGEeYfPIcIZ9C90DGdpaWnDhg2rqKjoVEeD/hDOwH4MsHBGMaiMNWfk1aeajBoTIcTBi++T6OoW68xg2TijlSjK/pe5rWNEG9wWtOSJp4iExfHgGRv1hpq2zf/bPClxkm1fd2Bor76RcsSi1xFCWM5S4fDJovHJLBe3P3sIwhn0L3QMZwqFwsvL6+zZs7GxsT00ph6CcAb2Y0CGM4pJZ6670Fx1vFGnMBBCeGKOV7zEc6yEzbfNmzWZTNOmTePxeH9984UL+ssnys8aNPrU106EPxvjMrj96AJlkaL0i6ys9Cxvbxw2cGtmrbot7YTq5D5DbRkhhDCZ/EEjHCc8wAuNIYzOYRrhDPqXXsgDrH/961/degCfzxcIBJ9++un06dNFonvaPt3L9u/f7+/vf9eZUq/X83g2WIwM0AsMBgObzb73/dQ0xGQzHAOE3uOkAjdeW4NO26hXFKhrzsgNrUYHHwGLd69v2Wg0vv322ykpKdu+3xJo9lkx//lLf1xoMSp9pl3fisiT8PXNWp6SHT82/h5fbqBisLlcv1DRuGReWKxF12aqrzLWVWguHdGkHbcYdBwPPwa3/cfpwYMHv/h0zU9bNpdVVEVFReHHLNBfL+SBbs+cmc3mkSNH5ubmmkym0NDQjuNzc3M7ePCgrUdoM5g5A/sxgGfObmAhikJV9ckmalMnk81wjbHBps7m5ubVq1d/+umnWq2Wy+UOiRnaHKrxmX5DnYi605VjTDE/fPP9PY3fbphamzWXDqtOHzA11xNCGBwuP3IUP37m4//3j9Ks9IXBEice+0Kd6miVcu8vB+Pi4vp6vAC3Q8fLmmazeerUqbe8SyqVbtu2zRaj6hEIZ2A/7CWcXaOqbKs+2XTjpk53x4B7WrNfUVGxcuXK9evXmy1m36ky2WORN9z781Ufntc3H381SBp2b2O3JxaLrvCy8sRebc5FYrGsTy+7WKP4esZQ62XOE2WNK6805VwtZtx06ROAPugYzvovhDOwH/YWzijtmzrPyamjn2yyqfPSpUvPP/98Wlb68I8Suc7tE3JGjSH9zVODXhgmCnSOdhs0P2JWgt8YJmMAXkTuIcaGKvWZX+57/h9vjguN9bzhmM4Ze678eOD32x/lB9C36LjmrP/CmjOwHwN4zdltsIUs8SBHz9ESFo+prta2Negb0luaslpZXKbQk3d3kzE+Pj5Lly6trKj4bc1+C7GYNEZ5Rn3JN1nLnl0244GZxYqyCmXV8fIzh0uOE0JkLoFs5h3OkQNCCNPBiR8x7MNPP1s8yN2Re8N37EhxbZjAEujpxnKUMFj4ZgId9UIeQDjrKoQz6EfsM5xRWDymc4iD1zgp15GtqdW1NeibMlsbUloIIUIvPvOu6m4kz0yeO2vOpX3nMn9Ja0ir1im1hbmFoaKgf875W7BHUIWyukpZc7Em7cDVQ606ZZBLgJCDKmh39vOeXf4MbYDz9ZLCFkL+c7ZwkYeFk3lCdWyXriDdJK8nTCbLScKwyw8z0BMdNwT0X7isCfbDPi9r3sxisjSkt1QeadDU6QghHAeWxyiJd4KU63SXUzIGg+Gnn35as2ZNamoqIYTH4z366KOrP/ywQFu0KWtHTmM+IYTD5CQGjHsscn6As58N38vAs3PHjpUvv7B5RqQLn0MIsRCyLr38nIa3560XdMXZhvJ8i8lI9WRwedzAwTxZJE8WyQ2Oxowa9C2sObMlhDOwHwhnN7AQeY6y8mhDa4mGWDd13ucmcLv7v31Pnjz5ySef7Nu3z2w2f/PNN0uXLiWEZDbk7Mz7+WTFObPFzGQwRnsPnx8xa5jnUJu9kQHn3++v/GzNfycFujmzyYU6tcjbb9uuvZ6enoQQi65NX5anzU/XFaTrK6+Sa7+qGDwBNyCCHx7LC4vl+obcXDUNoKchnNkSwhnYD4SzW2ot0VSfbGq80kIspH1T5xR3R/+7vwRZVFR08uTJhQsXdiygWqWs2ZV/4MDV33UmPSEkXBIyL3xmUtAEFgP/HLdQUVFx4sSJ+vr6kSNHjhs37pZ9zKoW3dUruuIsfUmOvqLQ2s4UOXMDIniySAQ16E0IZ7aEcAb2A+HsNrSN+upTNt7UebNmbcvegl/3FPzSomslhHiLPOeFJ88MuY/P5tvyZQaEbp0QYGpt1hdnaQvSdXmpRnmdtZ3lJObKovhhsbzwOLbUs8cGC0CncKZQKORy+e37sFisgIAAW4yqRyCcgf1AOLsjvdJYe1ZefbLJ2GYihDj48H0muLrFOTOYtslov/322++///7IY4/IxcrN2TvLWysJIQ4c4TTZ5EcGz3UVSm3yKgPDXR/fZGyq0Rdn60pytDkXTYpGazvLScKVRfLDYvmDR9zmTE+Au0OjcPb++++/8cYbt+/j7e1dVVVli1H1CIQzsB8IZ11EndRZeaxR32IghPAlXO8EqedoMZN7r3sDH3jggX379hFCEhMTl7/0kmucx9ac3ZkNuYQQDpOdGDD+kch5Qc7+9/4WBgCbnK1pbKrR5adrC9J1BZfNGqW1nS314oXH8sNieaFDmQ5O9zxYADqFs9zc3KysLOrr8vLyt956a+LEiTNmzHBzc6upqdmzZ09GRsaaNWueeOKJHhzsvUE4A/uBcNYtnTd1ithe8RLvcVK2w91/A2tqav7zn/+sX7++tbWVEBIaGrp8+fL4BxJ+Kfvjj9ITZouZQRhxnkPmRySP9Rlps3fSP9n44HOLxVBXri/O1hak6/LSzFp1ezuDwfHwu3bpM5Yp6E9nQwOt0CicdTRs2LB58+b94x//6Nj44osvXr169ddff7Xd2GwM4QzsB8LZ3bAQeY6y4kiDslRDCGFxmR6jxD4TXXliDiEkPT39m3XfFhcUB8oCnvjLE2PGjOnKUyqVyq1bt3788cf5+fmEECcnpyeeeGLRssVnW1N/KTqkNeoIIaFi2YKIWfa8Y8DG4awjs1lfVaQrSNfmp+tLsi0GfXs7k8n1CeaFxfLDY7lBkQwO1/YvDQMXHcNZQUFBeHh4Y2OjVHrDmons7Ozo6GiFQuHkRNN5Y4QzsB8IZ/eitURTeaRBnqu0burcXfTjN99/vTD68UBJcKWifEfWxocWP/T+Byu7+IRms/mXX3757LPP/vjjD0IIi8WaPn368ldfqpcoduX93NgmJ4R4OrjPDps+K2SaiNsDGYXeejCcdXwVg15fUagvydbmp+uLMq1F1AiTxfWRtQc1WRSDzenRYcAAQMdwlp6eHhcXl5OTM2jQoI7tx44dmzRpUk1NDVWihoYQzsB+IJzdO3WNtupYY0N6S1ljycu7n/nu0Z+c+O2nQLYZNM/sfHj7/m0jRozo1nOmpaV98skn27ZtMxgMhJBhw4Y9/+Lz7mN8tufvLW2pINd2DDw8eI6b0NXm74i2eiec3fCKeq2+NPcWRdS4PG7gYGo6jRsQjmq3cEt0DGd6vd7f3z8kJGTLli3+/u2rWQsKCubOnUsIsa5LoyGEM7AfCGe2oms2vPN/Kyuyq54Z91LH9q2p/3MZy3v/g/fv4jlra2vXrVu3du1aispTwAAAIABJREFUagt8UFDQ0888M2zOyIMVR1NrM4h1x8DguUEu9N3/bkO9H85ueHVUu4Vu6oU80O0/C7hc7qZNm+bOnRscHBwZGUltCMjNzRWLxb/99ltPDBEAoK/wxByGl1FcIunU7iIQl10uVFW2iXwE3S2Q5unp+a9//euVV1753//+9+mnn169evX1117zWONRUFBQa2zYkbf/SOnJQyXHDpUci3Yb9EjkvDE+Ixi2LcIGHTB4Al5YLC8slhBiVil0VzO1Ben64ixDbbmuIF1XkE4IYYpceCHRvKBIriyS6xfa10OGge9uDj4PDg5+7LHHHBwcDAZDc3NzcHDwI4888v3334eG0voji4PPwX7Y88HnNldRUXH6xNnxQZM6Nh7M3ufG8pKW+tVdbNY26BlMBs+F060aaVwud+TIkc8//3xcXFx9fT2Hw/nLX/7i6eSR4DdmSlCihZCSlvJqVe2R0pOnKy/wWbxAZ38mY8D+gxoMBi6371flM7h8jmeAIHKUaFyyw9gZvIAIptDRrG4xtzQZa8u1eSnqcwfVZ3/Vl+VZNCqWgzNTYHcLBIHg4HPbwmVNsB+4rGlDra2tg8MjXxj1arxsItWSVnFx1dF//vzfQ6Scq1MYqEYml+kS4iCJdJRGOXEcbbBWSW3QHCw6si13T4OmkRAiEYhnhUybH5HsyB1oNSD69rJmV1BF1HQl2bqCy6aWJms7VUSNFzSYFxbLckZhYXtBxzVnVhkZGXl5eVwud86cOYQQhULB5/P5fPqeTIJwBvYD4cy2MjIyHntoEdfID3SRVbaWK4zyDT/+b/To0YQQTa1OntMqz1a2lmqIhRBCGEyGY4CASmkC93v987qxuelc3aVdRb+UKMoIIUKOYLos6cFBD3g4DJzC9/QPZx11qHabbtaorO3Xq92GxTCF+GUxkNE0nNXV1c2fP//06dOEkBEjRly8eJEQMnPmTKlUumHDBtuP0UYQzsB+IJzZnMlkunDhQlFRUVBQ0KhRoziczgUXdM2G5jylPFvZnK+ymNp/rvKlXMlgR9cYZ6dA4V0sGzMajd7e3lqtdsmSJdOfnHm8+dy5qhQLsbCZrHG+ox8aPGeQNOze31qf61/h7LprRdR0xdn6okyzVtPezmRyfYK5QYN5siheRByT39/eF9wJTcNZUlJSUVHR559/Xl5e/sMPP1DhbOvWrS+++GJDQ0MPDNI2EM7AfiCc9SGT3txSqG7MaJFnK6mDOwkhHAeWeJCjJNJRHOHI4nVj6di8efN2795NCGEymQ888MCDf324UFBxtOyk0WwihAyMHQP9NZx1ZDbpq4rbq90WZ1mM7Re7byiihmq3AwUdw1llZaWfn9/x48cnTJiwdevWNWvWUOHs8uXLsbGxCoXC2dm5Z4Z6rxDOwH4gnNGBxWxRlrXJs5VNma1tDTqqkclhuoQ6SCIdJZFOXKcuLU27cuXKF198sWnTpra2NkJIbGzs0y89yxnisLvwgEqvJoT4Ofk8EDpjVuhULqtf/u4fCOGsA4tepy/N0RVnUzNq1mq3DA6X4xvKk0Xyw2O5wdEootZ/0TGcXbp0aeTIkS0tLU5OTh3DWXZ2dlRUVGVlpY+PT88M9V4hnIH9QDijm5uXphEGEfkIJJGOrjHOQo87L02rr6//4YcfPvvss+rqakKIp6fnX55bGnL/4APlh+o1jYQQMd9lduj0eREznbj97CfVAAtnHf1pETUunxs4CEXU+ik6hjNq5uzcuXOjR4/uGM6+/fbbFStWNDc337wUgyYQzsB+IJzRlkFlbM5TNV5uURSozMYblqZJIh2dQxxuX49Dp9Nt3779o48+oip+8/n8+QsXTHt25smWC3lNhYQQAZufFDjhwUEP+DnR9O/kmw3gcNaRWd2qL83RFeeg2m1/R8dwRgiJj4/X6/V79+49derUxx9/fPHixfPnz8+ZM2fKlCnYEABABwhn9GfWmxWFanmOsimr1aBsv/LFdmBJurY07fTp06tXr/7ll18sFguTyZw0adK8ZQvLXGqpHQNMBmO09/BFUQsHu4b3yru5J3YSzjoyKZv1RVnagnRdfpqxqdbaznIUc4Oj+GGxXFkkx9Muzofoj2gazgoKChITExsaGry9vRUKhbe3d35+flhY2MmTJ93c6Lu7G+EM7AfCWT9yfWlaVmtb/bWlaWyGk8xBMtjRdagT1/lPL0fk5OR88sknmzZt0mq1hJCYmJiXV/29ViL/veSY3qQnhES7DZofMSvBbwydC9jaYTjryNTSpC/J0Raka3MumRTXN9WxnCRcWSQ/LJY/aDhL7N6HI4ROaBrOCCFNTU3r1q07evSoQqFwcXGZOnXqc889R/PsgnAG9gPhrJ/SNunl2crGjJbrS9MIEXrwXGOcJZGOIl/BLR/V0NCwbt26L7/8sra2dvjw4ZcuXZK3Ne8r/G1X/s9KvYoQ4uPoNTdsZnLoVB4tdwzYeTjr6HoRtcIMs7rV2n69iFroUKaDUx+OEAg9w1lFRcXKlSv/9re/hYSE9NCYegjCGdgPhLP+zqA2Necq5dnK5jylSWemGvkSrku4SDLYURwhYrA6r0zS6XQHDhwIDQ0dMmQI1dJm1P5y9fBPefvq1PWEEDHfeXbojHnhM5149PpRhnB2S9eDWn66ue2W1W5jmcKBdlxEv0DHcEaVzCgvL/fz8+uhMfUQhDOwHwhnA4bZYG4t0VDTafrWa0vThCyXUJEk0lES5cjm3+Jf2WKxlJWViUQiV1dXs8VyvvrSpqyfchoLCCEcJicxYNyiqIX+tNkxgHB2B9eq3Wrz0/Ul2RaDvr2dyeT6BPPCYnmywdzgIUy+sE9HaUfoGM7a2to8PT23bds2ffr0HhpTD0E4A/uBcDYAWYiqqk2erZRnK1WVbVQbdVSU61Bn6RAnnguHEGKxWL74/IuV76x04DnqDFpnsfPn69YOHjx4zJgxXrG+/smhNZxG646BRyMXRLlF9Om7IgThrFu6Uu1WFsVg07RswsBAx3BGCNm4ceP777//3XffjRs3rifG1EMQzsB+IJwNbNTSNHmOsqVIbT0qSujBk0Q6fX/0q1/3H3xt4nueTt6EkIyq1A+OvfnVd1889dRT1AkuTn4uo5+aYAxhGImJEBIuCZkXPvO+oIl9uGMA4ezuUNVutfnpuuJsQ3n+9Wq3XB43cDBPFsmTRaLabU+gYzgzmUxhYWG1tbUajUYgEHh5eVnvcnd3P3funK1HaDMIZ2A/EM7shEFllOcq5VlKRb7KpDcbTPo53yZtXrzPRSC29jlVdPRY64H9B/cfPnx406ZNe/fuNRgMHCeebGaE130BZo6FEOIt8pwXnjwzZAqffa8ntd8FhLN796fVblFErQf0Qh7odqBmMBhJSUm3vMvFxeWexwMAAF3FEbE9Rog9RojNRouiQHXhtxRvZ5+OyYwQMsxv1Mc/ruTz+cnJycnJyXK5fOfOnRs3bjyz5czVXVnu8b5Bs8KrSe3a1G83Zf00IzhpXkSyq0DSV+8I7g6DJ+CFxfLCYgkhZlWL7uoVXXGWviRHX1GoK0jXFaQTQpgiZ25ABE8WiaBGf3dZSqM/wswZ2A/MnNmngoKC5Mmzv1uwo2Ojoq15yeYFB14+7hImov5HnemZk5Pz008/bdiwobSsTBrr7pcc6hQqJoSwGexJgeMfi5wf4NxLu74wc9ZzTK3N+uIsbUG6Li/VKK+ztrOcxFxZFD8slhcex5Z69uEI+yM6XtbsyGKxqFSq/hJZEM7AfiCc2Sez2ezvE7DqvrUy1+uljnZd3pLflP2Pye9bW/hSrkuYyCXMwSVcxOCQI0eObNq0ac+ePWxfnveUINcRXgwmg0HIGJ8R8yNmDfMc2tPDRjjrHcamGn1xtq4kR5tz0aRotLazpV5c2WBeUCR/8AiWC30rydMHfcPZt99+++WXX+bl5UVHR1Nna/71r38dMmTIs88+a+sR2gzCGdgPhDO7tWf3nheeXf7sqJdGBIzVGtoOFRzYm7v9zPnTno7eigKVokCtyFcZtSaqM4PJcPDmU0GN5WHZs2/Pxo0bz+dc9EwK8Er0Z3JZhJAwSfD88OSkoAksRk99nBDOet/1ImoFl80apbUd1W67gqbh7L333nv77bcXLFjAZrMLCwupcPbhhx9u2rQpMzOzBwZpGwhnYD8QzuxZSkrKm6+/lZ6eJuALJ983eeUH73l6Xr9uZTFb1NVaKqh13OzJ4jEdA4QuYQ56F82uIz8Z2MbAqWE78/Y3tTUTQrxEHvPDZ80MuY/P5tt8wAhnfclsNtRX6IuztQXpurw0s1bd3s5gcDz8rl36jGUKUO32OjqGM5VK5ebmtmrVqhUrVmzdunXNmjVUODt9+nRCQoJWq+Vy6Xg8CEE4A3uCcAZdYdKblaUaRYFaUaBSVbVZD4ziOrKdZA4uYQ5OEcJTzWc3Z+8sb60khDhwhFODJj08aI67yJYXvxDO6OJO1W754bHcoEgGh6a/5XsNHXdrFhQUaLXaRYsWdWr38PCwWCz19fW+vr42GhsAAPQgFpdJbREgxEOvNLYWqxUFanmOUt9iaMxoacxoIYRIpb5vhb1R712zT//LhcaU3QUHduXsd2wQLBqycGHSPCaTvuepQ7cxmVy/UK5fqOPkhRaDXl9RqC/J1uan64sy9RWF+opC5ZGfUO22d3Q7nPF4PEKIWq12dXXt2F5SUsJgMFBNAwCgP+I6sl2HOrsOdSaEaJv01HXP5jyltkmvPScnhDebOW+u+/wTmuOXva7UetV8Vb/p4/e+jONGvjj7r4MHD+7r4YONMThcqoyt4+SFFr1WX5prLaJmDWpUtVtqOo0bEI5qtzbU7W9lRESEu7v7Z5999t///pdxrUqKwWBYvXr1iBEjRCJclgYA6N/4Uq7nGInnGMkNC9Suqo215niSEN+aoGVpC0WFRc5XrzpfXbT3r+Rd7YK4B55c/KSHh0dfjx1sj8HlW4uodap2ay2ihmq3ttXtcMZisVavXv3kk0/m5uZKpVK5XP7BBx9s2bIlNzf38OHDPTFEAADoEwwmQ+QrEPkKfCe5mXTmlqtqeY5SUaAiTSS6JTq6JZoQIufJi4YW5ZGcpBdmeqrFix58bP78+UIhDuEemG6sdqvQXc3UFqTri7MMteUdqt268EKieUGRXFkk1y+0r4fcL91lKY3t27e/+eabhYWF1M3IyMiPP/54ypQpNh2bjWFDANgPbAiAHmW97qkoVBk17YU5LAxLNa/6sjztUtpJ3wjPxx5/dPLkyYwuzKBgQ8AAYGqVU1s+tbkppuZ6azvLScKVRfLDYvkRw1kS9z4coQ3RcbdmR9XV1bW1tV5eXh1P2KQthDOwHwhn0EssRFXV1lygrMiqM5abmeb2j5ye6LMbrhQ2ZAeO9H321aVCh9tNpCGcDTBUETVdSbau4LKppcnaThVR4wUN5oXFspylfTjCe0T3cNa/IJyB/UA4g95nNphzM4uuXMpnVXA9NV5M0j5nZmIbPSKlLmEO4ghHnviGzX0Gg+GrL786uP83uVweNyLu1X/8PTAwsA+GDj2mQ7XbdLNGZW2/Xu02LIYp7Ge/W+lYSsNisXz77be3vEsikQQFBcXGxmJzNQCAvWFymJFxoZFxobXq+gNXDudmXPVt9g9tCXHRi62FOa6fHBUmajNqJsRPdGd4zwibJ/JyyriaOmb42B82fT9t+rS+fitgM2ypF3usl8PYGdYiarribH1RprGpxni2Rn32V6qIGjdoME8WxYuIY/IxgUrIXcycmUwmNvt2kW7w4MG7d+8ODw+/t4HZHmbOwH5g5gz6nNqgOVh0ZFvuHlOzObg1eLBmcEhrCFPf/plkMBn/u/yVXN60YuI/rQ8prM9988j/lVaU3P63DPR7ZpO+qri92m1xlsVoaG/vWESNxtVu6ThzxmKxtm/f/sorr7z++utJSUlisbiiouK77747cuTI1q1bi4qKXnnllQcffDA9Pb0r60ABAGBAcuAI50ckzw6bfrT05NbcPRsUl5gWZoguZApzsqxFpinXn846/up973R8SKj7IDcHj4yMjGHDhvXVsKE3MFnXq93qdfrSHF1xNjWjdr2IGofL8Q3lySL54bHc4Gh7K6LW7Xer0+leeOGFH374YcaMGVSLq6vr559/vmTJks8//3z9+vXu7u4JCQl5eXmDBg2y9WgBAKA/4TDZU2WTpsomZTbkbMneda4qpYAUMN0Zg73DGtbXOfGdO/UXElH+ryXBjuFOMgcmG3/hD3wMLu/PiqjpS7L1JdnKIz8xuHxu4CC7KqLW7XCWl5dXX18/fvz4Tu0JCQkffPABIWTs2LE8Hq+qqgrhDAAAKNFugz+YOPhqc8n23L1Hy05mGfJZrpzc2kx3x+uHshvNxsK6XGGFJGtdKYvLdA5xEA9yFA8S8SU0vbwFtnVDETV1q740R1ecY5/Vbu/y+Ka0tLQJEyZ0bE9JSaHuIoSYzWZsigYAgE5CxEH/HLviL0Mf25X/8+uM05+c/negNCRAEkQI0Rt1a059wGAzd17+MV42Mco7Rp6jlOcoSYdtBOIIRxYPG87sAtPBiR85mh85mhBiUjbri7K0Bem6/DRjU601qLEcxdzgKH5YLC88li3tByW9uq7bGwIsFktMTIxcLl+zZk1SUpKzs3NlZeUPP/zwzjvv/Otf/3rzzTcvXrw4evTouro6Nze3Hhr03cGGALAf2BAA9OcT5OuQ6Fq3t8zH2c+R75Rfk+McI9W0qCKGDqrIK1PmtQ71iIuXTYwPnijitv/sZXKYTkFClzAHSaST0IPXt+OHPmFqadKX5GgL0rU5l0yKBmv79Wq3g4azxD1b7Zamdc6Kiopmz56dnZ1NCGEw2p/hySef/PrrrzkczunTpzMzM5977jnbD/beIJyB/UA4A/qLHRVLZohE/k7qilaD2iDyc+KK+Wn/PBH+XJyDryOLweSrOLUZVdWpFe5y1yEucdOGJgc6hZBrv7IwnQbXi6gVZpjVrdb260XUQocyHZxs/ro0DWeEEJPJdOzYsZycnIaGhsDAwNGjR0dGRtp8cLaFcAb2A+EM6O+Tzz7974+fBD0fxWC2LxuSp9c376v625Y3C5uLcpsKjGaTtbNFbXLQ8BcnPB6mDhHVOCuyVXqlkbrLOp3mEiYS+Qr64J0ADVwPavnp5rZbVruNZQpFNnkt+oaz/gjhDOwHwhnQn9FoXPDIwrOXzzuNdWULOdqryrZc5aFffh8yZAghpM2ovdpcnNmQm1mfk9WY16pTWh/IZ/PDxLKhZEiYKsyxwlldrsN0Glx3rdqtNj9dX5JtMejb25lMrk8wLyyWJxvMDR7C5N/uSLHbo2k4a25uvmW7s7Mznc8GQDgD+4FwBv3FkSNHfv7159r62vFjxj+x+Ik/20xWrarNrM/JbMjNbMgpa6m0kOu/uQRyvmu+JIYRG8OL45vbZ86YbIaTzAHTafauK9VuZVEMNue2z9IZHcPZbU4I4HK5gYGBjz766Guvvcbl0m7nM8IZ2A+EM+hHunvwudqgyWsqvFKfk9mQk9WQqzO1T40wCcO92V1WEzTEHOOr92NY2q+W8iVcl3CRS5iDONyRxafvDAL0KKrarTY/XVecbSjPt5jaL4szuDxu4GCeLJIni+xitVs6hjOLxbJq1apVq1YNHz48KSlJIpGUl5dv3bpVJBItWbLk0qVLO3bseOqpp/7s/M0+hHAG9gPhDPqR7oazjkwWU3lr1ZW67KM5J3Pk+Xpe+29coVEoa5WFNYcNVg8WGNovYDGYDMcAgSTSEdNpdq5TtVtyLQjdsYhaVVXVj5s35WVlBocPevChh0JCQnpohHdzWTMhISExMfGdd64fu9HW1jZ+/PjHH3/8xRdf/PTTT19++eWamhqU0gDoKwhn0I/cSzjrpF7d+FvKocNXjhWpS9lePAabySQML413cGtwmDI8QBXANLfPnGE6DShmVYvu6hVdcZa+JEdfUWhtZ4qcuQERPFmkNaht3fLjyy88Py/MLcSZX96q21ZQ//pb7zz/4os9Mapuh7Pi4uLg4OD6+vpO2WvdunXr169PSUlRq9WOjo5Hjx6dOHGiLUd6zxDOwH4gnEE/YsNw1lFqRuqWQ9vP5F9oFapdBrtyHLlCo1CmlIUoQyMU4Y6G9goLN0yn+QjIwCw4D11iam3WF2dpC9J1ealGeZ21neUkbhT7T3nnqz1zY32d2udcm9r0s/ZkHDhyPDo62uYj6fYJAQqFghCiVqs7hTOVSkVtFHBwcBAK734TBAAAwL0bNnTYsKHDCCGlpaX79u3b8+u+jJaMwoDs82ESxyHO7m0e4S3hIcrQQGVQa4mmtURDSB3TgSEd5CyNdHQJF7H5nf+20Wg0v//+e0lJib+//5QpU5ycbF9AC/oWy0ksiBkviBlPCDE2VOkKM3SFGdrCDFNr8/5TGTOCJNZkRgiRCriPhLvt3L6dFuEsIiLCyclpxYoVGzdutM4k5ebmfvzxx4mJiYSQyspKtVrt7e1t45ECAAB0X2Bg4PLly5cvX97Y2Lh///5jx449Fr/IdZDHlfqcPPmV/dV7PeVeIcrQcEW4k9qpIUXRkKKwMAjT2+w1ROo+SEJNp508eXLRw4+HSiP8RUGH244vX/bSN999ff/M+/v6zUFPYbv5sN18HMbOIBaLobZM+drfvU1XOvXxduBdqSjrkVfv7gOEQuGXX365ePFif3//0aNHi8Xi8vLyc+fOeXt7r1q1ihBy6tSpSZMmhYaG9sBoAQAA7pKrq+uSJUusi1uGeQ4lhJgt5rLWyqyG3PT6C8V55d7NPtR0GqOKWV3VXH2w2cDXK92a//LuI+9O+zjKayj12OLGq0898ZcLqecDAgL67P1A72AwOF6BIeOnHM9K73RPUas2IL5H0s5dFqFNTU396quvcnJympqaqJT20ksvSaVSm4/PhrDmDOwH1pxBP9JDa866q7Ky0s/Pjyvm+wz1GzF5TLgk0r3ZO6QlWGR0PJC1K6c26+9Jb3fsv/782vCZga//4/W+GjD0pqampujwsG+SwmI8namWq83qhw9knU1JCwoKsvnLdXvmjDJs2LD169fbdigAAAB9xcfH57333tu8eXP+8fyS44WEEEex06QFSSOHj8/OywwUyzr193cOOnHgbHx0SsigAM9AVyYbWwkGMqlUumXnriceeSjOTRQsYla0WU5XNq/77oeeSGYExzd1HWbOoB/BzBn0IzSZObMqLi7++eefd+zYcfbsWepXJJPJnDv0oeUTb5gk23Rxvd6ofWrs84QQM8OsclayvZkeMoks3F/kxbceGAoDiVqt/uWXX7KzsyMiIqZPn+7i4tJDL3SX4ezEiRP79+8vLi5Wqa4fLyqVSrdt22a7sdkYwhnYD4Qz6EfoFs6sKisr9+3bt2fPnhMnTvBY/I2L9rg7elJ3tbQ1L93x0CtvvOHO8ubXO3hoPKwHEhBCzEyzwVHHD+D4Rni6BYqFHjxU6BhIeiEP3M1lzbVr1y5fvlwmkykUCldXVyaTmZ+fL5FIJk+ebPPxAQAA9AlfX99ly5YtW7ZMLpe//trrS35c8ED0QplrWEVz6fa0jQwWuXDu+Jo1azy9PEsbK/LzSuqLm8x1DGeFi6vWjdcisFwhFVcaK0ijiW2yuJlc/EVewW6OvkJkNbijuzlbUyKRPP7445999tm0adOSk5Off/75K1euzJkz54033njyySd7aKD3DjNnYD8wcwb9CG1nzjopKyv7/rvvz5w8q2pT1dbVlJWVEUI2bdr02GOPdezW1NacX3O16Gp5c6mS3cjxVHm56dxumFfjmNnuDLcgsbO/SOQrEHryevudwL2h48xZaWlpa2vr3/72NwaDQQgxGAyEkCFDhqxZs+bpp59evHgxk4lzMAAAYKAJCAh4593r5xaWlJTk5ORMnTq1UzepQDxWNmKox2BBksBMLEWKkqzK/PLi6rZynXuzp6/aR2RwNFeRuipFHVEQQiwOZpEvXxroIvIVOPoLOI53uVEPBpJufwioRWbUIjipVNrU1ES1R0ZG1tXV1dXVeXl52XaIAAAAdBMUFPRnO/Wys7Pj4uKcnZ2TkpKmTJkyZcqUeUPuJ4Q0tsmzGnIzy1IbSpoZ9Uwvtbefxs9B7aDO16vz66nHMkXE2U/k6C8U+QocA4UcB8x/26NuhzN/f38Gg1FWVhYdHR0aGvrzzz+//fbbHA7n2LFjTCaz53YuAAAA9AsuLi6BgYEFBQVbt27dunUrISQqKopKaQkJCRP948l40mbUXm0uzmzIPV9R0lymlLRKvNU+/mp/oUrYnKtqzm3fbMdxZDn6CUV+AqcgoWOgkMXFtSm7cDe7NUeMGJGcnPzWW2+Vl5eHh4cHBAQEBAQcPXp07ty527dv74lR2gTWnIH9wJoz6Ef6y5qz7iouLv7jjz/++OOPQ4cOtbS0UI1sNnvUqFHJyclJSUlxcXHUAiHqlIKCpquZDbml5ZWcWp632ttb4+Ol8eaaOdYnZDAZAjeuyE8g8hWI/AQiXz6Tc+us1tra+uUXX148e0kkEk2eNmnRokVYcWRDvZAH7iacNTQ0mEwmT09PQsjp06fXrVtXXV09duzY119//S7+69qwYcO3337LYDCWLl36+OOPd7o3IyNj3bp1V65c4XA4M2fOXL58OYfDIYSsXbv21KlTVB+BQLBhw4Y7vhDCGdgPhDPoRwZqOLMymUyXL1/+448/fv7553PnzpnNZqrd3d19woQJSUlJ999/v4+Pj7V/s1aR21SQ31SUVZ9bW9HopnL3UXt7a3x81T4sy/XrXZ2zmp+AKoSbmZk5fcqMsb4ThvuM0Rq1h4sOGBy0h48dwq8wW6FpOLOh33//fdGiRdR824MPPvjjjz/ed999HTusXbtWrVYnJiYqlcply5YtWLBg5cqVhJBFixZxOJwcMknSAAAgAElEQVTp06cTQths9pw5c+74WghnYD8QzqAfGfDhrKPGxkZqLu3QoUNVVVVUI4PBGDZs2I8//hgWFtapv8liutpcklmfmy+/mlmXa26yeLf5+Ki9/VUB3m3eHTeBMlgMgSvXSeYw9x8zHhz0xISQJOtdHx9bGZzo99HHH/XCG7QHdAxnZrN55MiR+/fv9/b27th+9OjRjz766ODBg916ttmzZ48cOfKf//wnIeT9999PSUnZs2fPn3X+7rvv1q1bd+nSJULIokWLRowY8eKLL3b9tRDOwH4gnEE/YlfhrKPs7GwqpZ08eVKj0ezatWvu3Lm3fwi1peBKfU6B/GpRfam7ysOnzddX7euj9pHqpISQBlX9X7cv2vHU7x0fVdta/eK+J6obqnvwzdgTOpbSsFgsqamper2+U7tcLs/MzOzus125cuX555+nvh45cuT3339/m87p6ekd/6rYuHHjwYMHQ0JCVqxYIZN1PvUMAACAziIjIyMjI1esWKHVaktLSyMiIm7ZLS8vz93dXSKREEJcBZKJ/vET/eMJIWqDJrexIKsxN7sh/0DjfrPW4qPxYeUynPjOnZ5BIpSqVOrML0tEvtQ1UL7AFYVwac1m9VRyc3Pd3d27+6j6+nrrBk+xWFxXV/dnPY8cObJ58+a0tDTq5rRp02bPnu3g4HDgwIFhw4ZlZmb6+vre/rUyMzP379//3nvvUTf5fP7JkycFAkEXh6pWq6mVmwD0p9FoDAYDZs6gX7BYLG1tbfZz0PMt+fr6djwO0So1NXXixIksFismJmby5MmTJ08eOXIkm93+uzvCMSTCMWR+ULLZYilXVubKCw5ZDle0lBlMeg6La32Sq435vi4BLVfVLVfVVIuFa+F6sJx8hCJfvtCbx5NykNW67h7zAJ/Pt/4L/pluXNb89NNPN23aZLFY0tLSoqOjudzr//DNzc3FxcWvvvrqv//9724N0cvLa9u2bRMmTCCEHD9+/LHHHqusrLy52/nz52fNmrVt27ZJkybdfG9iYuK0adNeffXV27/W448/HhkZuWDBAuoml8u9Y57rCJc1oR/BZU3oR+z2smZXyOXyRx999NixYzqdjmpxcnJKTEykCnOEhIR06l9TUxMRPmhi6JQV4//BZrIJIS1axYr9S+t0tbNXLvLRePtofLzVPu7aGyZTTGyTQaJleTKd/IWeMqmnnzuLhd2df4pelzWlUqlMJqPCmZ+fX8f/kKRSaVxc3OLFi7v78kFBQYWFhVQ4KywsDAwMvLlPSkrKAw88sHHjxlsmM0KIt7e3dZfybXA4HDc3N1wABQCA/kIikRw8eLCtre3MmTNUYY60tLR9+/bt27ePECKTyZKuEYvFhBAvL6/gCNl5xemFm6cP8xvZZtSkV6Rw3flLH//L0gXP1KjqqlW1xcrc9NaLlkYGo47lofbwVvu46dz49Q6knrRdsZSQxnxWdZOoUSNWEQ+z0Jfv5iP2cvKQCiSuAklffz/sxd1sCJg6dermzZs9PDzu/eW/+OKLDRs2UEUxxo8f/+STTz733HOEkJUrVz7yyCMymSwjI2PatGlff/31rFmzOj7wwoULo0aNIoRcvHgxKSlp165dnbZ53gwbAsB+YOYM+hHMnHVLXV3dyZMnqcIcNTU1VCN13ZNKab6+vknT77O4M4kz02K2mKv14d5hv/188JbLeJR6VbWqtqapvqmypa1Sz2xgieRO4jZxx32gepa+RlBTLaxqEjbpxTqml8XT0d3b0dNb5Okl8ghw8uWz+b305umBjrs1bUun0y1atOjYsWOEkMmTJ2/cuJG6Wurq6rpz586JEye+/PLLP/zwg7W/l5dXdna2xWIJDAxsaWkRiUQajebNN99csWLFHV8L4QzsB8IZ9CMIZ3fHbDanpKQcOnTo8OHD586do466JoS4urru37//csbl0+fPODk6Tr9veqfZjTtqU2tryhobiuXqKq2llsFtFTA6JAUjwyTnNVU7VFUJq6qE1VUOFQKegApq3iJPa2jzdHBnMgbmtVF6hbPS0lKFQhETE2NtSU1NfeONNzIzM93c3J599tlnnnnm7gbR3NxMCKGmZLtOoVBotVqqFm5XIJyB/UA4g34E4ezeKZXKo0ePUoU5SktLf/vtt8mTJ9vqyY1ak6ZGp6poay5XKsvVxiYL6RAcTAxzE6/RmtUqhZUmppEQwmGy3YSunRKbt8jTkSuy1cD6Cr3CWXx8vFgsPnDgAHWztLR0yJAhbW1t0dHRlZWVDQ0N69evf+qpp3psqPcK4QzsB8IZ9CMIZ7bV1tZ2yyuYer3+3XfflUql8fHxcXFxd9ww+GesWU1V2aaqaNPU6zpmNQvTohK2VjvUFHGLKoVV1qxmxWVxXQWSjqHNlStRV7a2qdoiIyPd3NzublS9iUYbArRa7aVLlzpeYVyzZo1Kpfr111+nTZum0WimTJny8ccf0zmcAQAADHh/ViIqKyvr/fffp752cHAYNWrUuHHjxo0bN2bMGJGoG7NZbD7LKUjoFCSkbpq0ZnWNtmNWc1Q5h6ucw0kEIYSwiMnJoBS31onqSnglGYzMVlNrtaq2WlWbSjIIIfLUuvINBW4OHo58p9L6q+ETBj/62uJAN/8Bf2309ro6c1ZaWhoUFJSenm69rBkSEiKRSC5evEjd3Llz50MPPaTVau86jPc0zJyB/cDMGfQjmDnrNT/99NPhw4dPnz6dl5dnbWSz2UOHDh13TdcXC93SzVmt47wag8XgSdnEw6yRqBucGo4XHNn+j80f3f9lsGsYIURr1H58YmWmQ6ZsWSTV/5bXRn1EXiJuX35a6DVzRjrk8bq6uqKioo4nWgYEBJhMpvr6+k7HOgEAAAAdLFy4cOHChYSQ1tbWixcvnj59+syZM6dOnUpNTU1NTf30008JIV5eXuPGjYuPjx83blxcXFx3q62y+MyO82pGrUlVoVVXtqkq21SVbW2Nem29gdQTJuF7EL+sX64sG/0KlcwIIXw2/28T316wceoEl9EqfluNqo6q/WGdZrNy5Iq8RZ5SgVgqkHTYN+rHZ/Ns8G2iga6GM39/fwaDkZKSEh4eTgj5448/CCEJCQnWDtSGXmu5fwAAAKAnJycnqu4GIUSj0Vy8ePHUqVNnzpw5e/ZsTU3Njh07duzYQQhxc3P7+uuvO07EdBebz3IJdXAJbZ/oMmpN6kotFdRUFdqSxqJl44d07M9hcQa5RoWcDZ6YkCjw5bIlLJWDqt5cX62qrVbWVqtqa1R1lcpqpV6VL79688tRoe2mfaMezP52wE9Xw5lQKJw6deqrr74qFApFItG7777r4uLScTNIenq6l5eXUCjsmXECAACA7QmFwokTJ06cOJEQYjKZrly5QgW106dPV1dX5+Tk3Es464TNZzmHODiHtGc16RaxUtfqSW644NaiUehKzOVt9dcfJeD6uYaEuQ7mS7l8N64ggmdyNtSThvZ5tWuhrU7dQIW2TrnNhtdG1Wr1r7/+mpOTExYWNm3atO5Wmei6buzWzMnJSUxMrK+vJ4RwOJzvv//+scceo+4yGo3BwcETJ07csGFDDw303mHNGdgPrDmDfgRrzmirpqbGy8vrlnd9+OGHVVVV1NXPu17O9Pabb+f8dnX5+NetLUWNBa//9kLqwQxTi0VTq9PU6rSNeqPWdPNjmWwG15nDl3KFHjyhJ48v5XIkrDZhW5NW3im01ajqbij+cY11mk0qkLgKJXe8Nnrs2LGHH39YEOTIcGeTZnNrTtP6r9Y/8MADd/feb697RWgVCsWvv/6q1+vj4+NDQ0Ot7Y2Njbt37x47dmxUVFQPDNI2EM7AfiCcQT+CcNbvWCwWFxeX1tZW6qZMJrPuJ4iIiOj6MjWlUjl+TIIPJ2BG2FxHnlNGdcqWjO+//f6bmckzO3Yztpm0Tfpr/zNom/SaWq2+1XjzEzJYDJ4Lhy/l8qVcvpQj9OALPXlMJ9Ko65zYKpRVGkPbLUd1y2ujHC07PDI8cFmkY3D78i1NterqR+lpF9KCgoK6+o3rsj4+IaA3IZyB/UA4g34E4aw/ysrK2rt379mzZ8+cOWNNaYQQV1dXajotPj5++PDhHA7n9s+j1+u/+PyLA3t+UbQoYofFvvbPV28+zf2Wbk5s2ia9Vq6/eY6sU2KjvhB68hUGRY26fc8BNcFWo6qr1zSaLeabX67hZFVLoTzkqWijytDWoOZLhRwnbuXuq0/EPvzmG292ZcDdgnDWVQhn0I8gnEE/gnDWr5lMpry8PGqN2qlTp0pLS613cTicIUOGJCUlxcfHx8fHSyQ9fm662WjRNuo1ddo7JzYmgye+KbG588xsS72moVNiq1bVZvx4iUGIsVKvzG/2FHvXt9QJ/ByEQ53GcGM3fb/J5m+EpjXJAAAAgP5YLFZkZGRkZOTTTz9NCCkpKTl9TW5uLlWkg+q2bNkyqlpHz2GyGUJPntDzhkVjZqNF39Ie1DS1Ok2dTtuk1zW3t3R6BraAJfTkOXu6eUi9x0i5/ECuwI3H4jH/U/Hf99557+EhTzy85EkWk2UhlgNZu7/c/1+PZ6f3xBtBOAMAAADbCAoKCgoKWrRoESGkqanp7Nmz1N7PlJSUqqqqPhkSk82gJsY6NpqNFm2TXtuob2vUaRv0bY16KrEZ20ytJZrWEs31rgzCc+ZYSrgR4qjHhv/lWhsjOWpeWsUFAY/fE2NGOAMAAADbk0qlycnJycnJhBCdTvdn6882b968e/fuUaNGDRs2LC4urheufhJqjs2DJ/TgEXJ9wZLFZNHKqcRm/X+dVm7QKQx5+XnD/EZ2epJRAePqqsp6YngIZwAAANCzeLw/rd2/ffv2AwcO7Nmzh7oZGBgYGxsbd809HifVLQwWQ+DGE7jxOpYvs5gtumbDkX97lZ6u7NRfY1ALRT1S3hXhDAAAAPrMpk2bDhw4cPHixbS0tIyMjNLS0tLSUmtW8/b27pjV/P39e3l4DCaDL+UmPzxj/uaFi0Ys5V6rgma2mI+W/Pbvv73fIy+K3ZpdhN2a0I9gtyb0I9itCVZmszk/Pz89PT0tLS0tLS09PV2hUHTsIJVK4+LiEhMTX331VSaT2ZtjW/bMsjOHzj05bFmQNLiqpWJT+jfegz137tnRE6+FcNZVCGfQjyCcQT+CcAa3UVxcnJqaao1rDQ0NVHteXh512Hdv2rVz15effXW16Gqgf+CTzzyxePHi7h4M30W4rAkAAAA0JZPJZDLZggULqJsVFRVpaWlms/mWyayurm7ZsmUeHh7UNdCoqKg7VsHtlnnz582bP68XJmsQzgAAAKB/8PPz8/Pz+7N7r1y5smvXLutNLpcbHR1tXbI2ZMgQgUDQK8O8VwhnAAAAMBDcd999p0+fPn/+PHUNtKCgwFoFlxDCZrMHDRpkzWoxMTG0Xa2EcAYAAAADBHVUFPW1SqW6fPmydb1aTk5OZmZmZmbmxo0bCSFMJjM0NDQuLu7VV18dOnRon466M4QzAAAAGIBEItG4cePGjRtH3dRqtVeuXLFmtczMzPz8/Pz8fLFY/MUXX/TtUDtBOAMAAICBj8/njxw5cuTI9kL/BoMhOzs7Kytr2rRpt+z/wQcfXLhwYejQoXFxcbGxsb1ZYg3hDAAAAOwOh8OJiYmJiYn5sw5bt27NzMzct28fddPV1ZVKaVFRUQsXLuRyuX/2wHuHcAYAAADQ2bFjx44ePZp2TWNj46FDhw4dOkQIqa6u/vvf/95zL41wBgAAANCZVCpdsGBBpxJraWlpeXl5M2bM6NGXRjgDAAAAuAOqxNrs2bN7oQhtr55LBQAAAAC3h3AGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCMIZwAAAAA0gnAGAAAAQCPsvh4AOXz48KFDh9zc3JYuXSoWi2/uUFRUtGnTJr1e/9BDDw0ZMoRqtFgs27dvT0lJCQoKeuqpp/h8fu+OGgAAAKBH9PHM2caNGxcvXuzr65uRkREfH6/X6zt1KCsrGzFiRFtbm0gkGj9+fFpaGtX+xhtvrFy5MigoaN++fXPnzu31gQMAAAD0iL6cObNYLKtWrVq7du28efMsFktMTMyuXbsefvjhjn2++OKLmTNnrl69mhCi0Wj+85//bNmypbW1de3atWfPno2KilqyZImXl1daWlpcXFwfvQ8AAAAAm+nLmbPa2tr8/PwpU6YQQhgMRlJS0okTJzr1OXHiBNWBEDJlypTjx48TQtLS0kQiUVRUFCFEIBCMGzfu5gcCAAAA9Ed9OXNWU1MjEAgcHR2pm+7u7mfOnOnUp7q62t3d3dqhvr7eZDLV1ta6ublZ+3h4eFRXV9/x5crKygoLC8+ePUvd5PF4q1at4vF4XRytVqvlcDhd7AzQt7RarcViYbFYfT0QgDuzWCxarRYfV+gv7jEPcDicO37a+zKccTgco9FosVgYDAYhxGg0crncW/ahvjYajSwWi8lkstlsk8lk7WMwGG5+4M0cHR0dHR2HDx9O3eTxeEKhkMns6twhh8NBOIP+gvq44rcd9AsWiwU/YKEfucePa1eCR1+GM29vb4PB0NjYSE2DVVVVeXt739zHOitWVVXl5eXFYDC8vb1ramrMZjP1DquqqkaNGnXHl5NIJPHx8UuWLLm70bJYLPyqg/6CdU1fDwTgzqhZXnxcob/ohY9rX645k0qlY8eO3bFjByFEo9H8+uuvycnJhBClUkmtLSOEJCcn79y502KxEEJ27tw5a9YsQsiIESO4XO7Ro0cJITU1NefPn7///vv76l0AAAAA2FAf1zl7//3358+ff/HixczMzKioqKSkJEJIbm5uYmIidRHz6aef/t///jdt2jQnJ6dz585Ri9I4HM6qVaseffTR5OTkEydOPPPMM4GBgX37RgAAAABsgkFNSvWhysrKkydPenh4JCYmUpcp1Wp1Zmbm6NGjqQ4ajeaPP/7Q6/X33Xefs7Oz9YF5eXmpqanBwcHWnrf31FNP3ctlTaVSad27AEBzGo2Gx+PhOhH0CxaLRaPRODg49PVAALqkF/JA34ezXoNwBvYD4Qz6EYQz6F96IQ/gbE0AAAAAGkE4AwAAAKARhDMAAAAAGkE4AwAAAKARhDMAAAAAGkE4AwAAAKARhLOu2rlzZ18PAaCrzp49W1FR0dejAOiSxsZG6sQXgH7BenBRz0E466rnnntOp9P19SgAuuSHH36wnoEGQHMXLlz48ssv+3oUAF31wgsvqNXqHn0JhDMAAAAAGkE4AwAAAKARhDMAAAAAGrGjszUTEhLkcrmXl9fdPfzYsWMTJkygjmYHoLns7GyJRHLXn3aA3tTU1FRRURETE9PXAwHokuPHj48fP/6uDy++//77X3rppdv3saNwlpGRUVFRwefz7+7htbW1np6eth0SQA9pbm4WCoU8Hq+vBwJwZ0ajUaFQuLq69vVAALrkHvPAoEGDfHx8bt/HjsIZAAAAAP3hIh0AAAAAjSCcAQAAANAIwhkAAAAAjSCcAQAAANAIwhkAAAAAjSCcAQAAANAIu68HQEf79u3buXOng4PDsmXLoqOjb+6Qm5u7du3alpaWBx54YMGCBb0/QgCr2tra//znP5WVlQkJCc8888zNdRH/+9//NjQ0UF8HBwcvXbq018cIQAgher3+3LlzKSkpDQ0Nb7/9tkAguGWfzz///MKFC8HBwa+88opEIun9cQJQSkpKzp49m5OTM378+GnTpt3c4dy5c/v27bPeXLFihYeHh01eGjNnne3evfvpp5+ePn16UFBQQkJCZWVlpw4NDQ3jx4/38PCYNWvW//3f/23atKlPxglACDGZTImJiUql8sEHH1y/fv1bb711c5/169e3traKxWKxWCwSiXp/kACUoqKi5cuXX7p0afXq1Tqd7pZ9Xnrppd27dz/88MPl5eUzZszo5RECdPTee+9t2bJlz549J0+evGWH1NTU33//XXzNXZ8ZcAsWuNHYsWO//vpr6usHH3zwzTff7NRh9erVM2bMoL7+8ccfhw4d2qvjA+hg3759wcHBZrPZYrGkpqa6uLio1epOfSIiIs6cOdMXowO4hZqaGkJIc3PzzXc1NTXx+fyioiKLxWIwGNzd3U+dOtXrAwS4weLFi19//fVb3rV27dpHHnmkJ14UM2c3MJvNly5dSkhIoG4mJCScP3++U58LFy507JCRkdHW1tarowS45sKFC+PHj2cwGISQ2NhYk8mUn59/c7dvvvlmxYoVmzZtMhqNvT5GgK66fPmym5ubTCYjhLDZ7LFjx978ExiAVrKzs1988cUPPvigrKzMhk+LcHaDpqYmg8EglUqpm66urrW1tZ361NTUdOxACLm5D0DvqK2ttS7KYTAYUqmUmpboaNq0aUOHDvX19f3oo49mzpxpwYltQFe1tbXWn66EEFdX15s/zwD04efnN2PGjEGDBhUWFkZFRV2+fNlWz4wNATcQCoWEEOtiCK1WS7V06mPtQH1xcx+A3iEQCPR6vfXmLT+xa9asob5YsmRJYGDg2bNn4+Pje2+IAF0mEAg6rkXTarVeXl59OB6A25s9e/bs2bMJIc899xyPx/vwww+3bNlik2fGzNkNHBwcxGJxeXk5dbOsrMzX17dTH19f344d+Hy+m5tbr44S4BpfX1/rXLparW5qavLz8/uzzmKx2NfXt7q6urdGB9A9fn5+1dXV1ovv5eXlN/8EBqCnqKioqqoqWz0bwlln8+bN27BhAyFEq9X+9NNP8+fPp77evHmzSqWiOuzatUutVhNCNm7cOGfOHCYT30boG3Pnzj127Bi1p3jr1q2RkZHBwcGEkHPnzl28eJEQolKpqM8qIeTMmTNFRUWxsbF9OGCAm506dSo1NZUQEhcXJ5FI9u7dSwgpLCxMSUmZNWtWX48O4AZyuXzz5s3U+pC6ujqqUaPRbN++ffjw4TZ7mZ7YZdCvlZaWBgUFjR8/Pjw8fMaMGXq93mKxUKvKqD1ERqNx3rx5wcHBiYmJfn5+BQUFfT1ksGuvvfaal5fXlClT3Nzcjh07RjU+8cQTTz/9tMViSUtLc3Jyio+PHz16tJOT09q1a/tyrGDfzGazTCYLCAgghAQGBkZERFDt8+fPX7FiBfX1/v37pVLp1KlT3d3dV69e3XeDBbD8+9//lslkjo6OLi4uMpns+++/t1gsKSkphBAqG8THx0dGRk6aNMnDw2PSpEkKhcJWL82wYHXwTXQ6XWpqqkgkGjJkCNViNpurq6u9vLysVUyysrIUCsXw4cP5fH7fjRSAEEJKSkrKy8tjYmKcnZ2plubmZgaD4eLiQghpbGzMz89ns9kRERHWDgB9ori42Po1g8EICgoihMjlchaLZf1wNjU1ZWZmBgcH3+YaPUAvkMvlCoXCelMqlTo7OxsMhrq6OuqCu9FozMnJaWpqCggIoHYZ2wrCGQAAAACNYLEUAAAAAI0gnAEAAADQCMIZAAAAAI0gnAEAAADQCMIZAAAAAI0gnAEAAADQCMIZAAAAAI0gnAEAdFZZWdnS0tLXowAAO4UitABgd5YuXWo2m//s3i+++EIqlb788svvvvtub44KAIDC7usBAAD0ttLSUms4S0lJMRqNo0ePtt5rNpsTExOpI+QBAHofZs4AwK6NGTNGoVDk5ub29UAAANphzRkAQGdLlizZuXMn9fXu3bsfeughuVy+bNmy6OjohISEvXv3EkKys7MffPDB6OjoOXPm5OXldXx4dXX1ihUr/r+9+3mFdgsAOH7IlNePWBGNZNiRhWExGylirZQiZoEFif2Ukv/CWhaShZTsxlpq0KRsRil/gGayoXEXU9J767oL984z934+q2fOOYtzdt+e5+mZZDI5ODi4sLCQz+ercAagZokzgN8dHR3d3d1Vru/v74+Pj2dmZorFYjqd/vj4mJubOzg4mJ6ejsfji4uLt7e3ExMTr6+vlfWFQiGZTJ6ens7Ozq6urhYKhVQqdXNzU73TADXGO2cA3yiXy7Ozs5lMJoSwsbERj8fT6fTl5eX4+HgIYWpqamxs7OzsbH5+PoSwvb3d2NiYy+Xa2tpCCJubm6Ojo5lM5vz8vLqnAGqFO2cA31tZWalcNDU1DQ0N9ff3V8oshDAyMtLQ0FAoFEIIpVLp4uJieXm5UmYhhFgsNj8/f3V1VZVtA7XInTOAb9TX13d2dn7+bGlp6e7u/jr769evUqkUQnh6enp/f9/b2/vzZziKxWJra+u/s2GgpokzgG/U1dV9O1IRi8VCCLu7u0tLS79NNTc3/xN7A/57xBnAj+nr62tvb8/n84lEotp7AWqVd84AfkxDQ8PW1tbJycn+/v7nVySfn58rX98A+DvEGcBP2tnZWVtbW19f7+rqSqVSiUSit7f38PCw2vsCaoZ/CAD+166vr9/e3lKp1NfBbDbb29tbeTT5+PhYKBQmJyc/Z3O5XLlcTiaTX9f39PQMDAx8jjw8PGSz2ZeXl46OjuHh4a+LAf6aOAMAiBCPNQEAImi4mpYAAABYSURBVEScAQBEiDgDAIgQcQYAECHiDAAgQsQZAECEiDMAgAgRZwAAESLOAAAiRJwBAESIOAMAiBBxBgAQIeIMACBCxBkAQISIMwCACBFnAAARIs4AACLkD1o1PKEkbnKsAAAAAElFTkSuQmCC", + "image/svg+xml": [ + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/html": [ + "" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plt = plot(xlabel = \"Time\", ylabel = \"Staggered magnetization\",\n", + " title = \"N = $(N_large) on $(backend.name), T = $(T_total)\",\n", + " legend = :topright, ylims = (-0.05, 1.05), size = (820, 480),\n", + " bottom_margin = 5mm, left_margin = 5mm)\n", + "\n", + "# Plot tensor network reference \n", + "plot!(plt, times_ref, mags_ref, lw = 2, ls = :dash, color = :black,\n", + " label = \"tensor network, δt → 0\")\n", + "\n", + "# Plot hardware result per Trotter step size\n", + "for (r, stop) in zip(r_list, cumsum(r_list .+ 1))\n", + " plot!(plt, range(0, T_total, length = r + 1), mags_hardware[(stop - r):stop],\n", + " marker = :circle, markersize = 4, lw = 2,\n", + " label = \"hardware, δt = $(round(T_total / r, digits = 4))\")\n", + "end\n", + "plt" + ] + }, + { + "cell_type": "markdown", + "id": "603fd062", + "metadata": {}, + "source": [ + "At the coarsest trotter step $\\delta t = 0.5$ (orange circles), the measured staggered magnetizations lie above the reference at every sampled time points. This suggest large trotterization error. On the other hand, hardware noise has the effect of driving the the staggered magnetization to zero. This effect can be seen clearly in cases of finer trotterization steps $\\delta t = 0.25$ and $0.125$ at short times, where the quantum solution lies below the reference. \n", + "\n", + "\n", + "Comparing $\\delta t = 0.25$ (green circles) and $0.125$ (purple circles): halving the Trotter step doubles the circuit depth and in principle reduces the Trotter error, but the two hardware curves are similiar, so the coarser of the two reaches the same accuracy at half the depth. Choosing $\\delta t$ for a Trotterized circuit on hardware is therefore a trade-off between Trotter error and the noise accumulated in a deeper circuit." + ] + }, + { + "cell_type": "markdown", + "id": "8defe5bb", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "If you found this work interesting, you might be interested in the following material:\n", + "\n", + "* [Multi-product formulas to reduce Trotter error](https://quantum.cloud.ibm.com/docs/en/tutorials/multi-product-formula)\n", + "\n", + "* [Integrating quantum and high-performance computing course](https://quantum.cloud.ibm.com/learning/en/courses/integrating-quantum-and-high-performance-computing)\n", + "\n", + "* [Qiskit.jl](https://github.com/Qiskit/Qiskit.jl) and [QiskitIBMRuntime.jl](https://github.com/Qiskit/QiskitIBMRuntime.jl) on Github" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Julia 1.11", + "language": "julia", + "name": "julia-1.11" + }, + "language_info": { + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/public/docs/images/tutorials/time-evolution/time-evolution/extracted-outputs/cc5496cc-0.svg b/public/docs/images/tutorials/time-evolution/time-evolution/extracted-outputs/cc5496cc-0.svg new file mode 100644 index 000000000000..e700919d7180 --- /dev/null +++ b/public/docs/images/tutorials/time-evolution/time-evolution/extracted-outputs/cc5496cc-0.svg @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qiskit_bot.yaml b/qiskit_bot.yaml index 3a9491e33ca4..f241fdc09c8d 100644 --- a/qiskit_bot.yaml +++ b/qiskit_bot.yaml @@ -686,6 +686,9 @@ notifications: - "@kaelynj" "docs/tutorials/index": - "`@nathanearnestnoble`" + "docs/tutorials/time-evolution/time-evolution": + - "`@nathanearnestnoble`" + - "`@haimeng-zhang`" "docs/tutorials/dc-hex-ising": - "`@nathanearnestnoble`" - "`@haimeng-zhang`" diff --git a/scripts/config/notebook-testing.toml b/scripts/config/notebook-testing.toml index 7a278f3adace..f7250b4eba40 100644 --- a/scripts/config/notebook-testing.toml +++ b/scripts/config/notebook-testing.toml @@ -221,6 +221,7 @@ notebooks = [ "docs/tutorials/edc-cut-bell-pair-benchmarking.ipynb", "docs/tutorials/compilation-methods-for-hamiltonian-simulation-circuits.ipynb", "docs/tutorials/solve-market-split-problem-with-iskay-quantum-optimizer.ipynb", + "docs/tutorials/time-evolution/time-evolution.ipynb", "docs/tutorials/simulate-neutron-scattering.ipynb", # Don't test any learning notebooks diff --git a/tox.ini b/tox.ini index b277fe6815f4..d723c12b3060 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,7 @@ commands = test-docs-notebooks {posargs} --check-pending-deprecations --config-p [testenv:{lint,fix}] deps = - squeaky==0.7.0 + squeaky==0.7.1 ruff==0.7.1 -e scripts/notebook-normalizer