============================================================================================================== COMPUTING THE SUNLIGHT THAT STARTED AND ENDED THE ICE AGES Top-of-atmosphere insolation from orbital elements, past 1 Myr Science Journaling Club, Volume 2 Issue 3, Spring 2026 ============================================================================================================== This output is arithmetic. No telescope, radiometer, ice core or field site is involved anywhere in this file. The orbital elements are taken from a published numerical solution; everything else is computed here. python version : 3.12.3 numpy version : 2.4.2 master seed : 20260320 generator : numpy PCG64, seeded once solar constant S0 : 1361.0 W/m^2 (Kopp & Lean 2011) tropical year : 365.2422 days, held fixed orbital solution : La2004, Laskar et al. (2004) file : INSOLN.LA2004.BTL.ASC source URL : http://vo.imcce.fr/insola/earth/online/earth/La2004/INSOLN.LA2004.BTL.ASC retrieved : 2026-09-14 bytes : 4590090 sha256 : 3f13b9f8e69085baf40bc67a2669e6f6af4148fef9218ed2158772aa91e35f8c rows in file : 51001 time span in file : 0 to -51000 kyr columns : t(kyr) e eps(rad) varpi(rad) row 0 (present) : e=0.0167024 eps=0.409093 rad = 23.43929 deg varpi=1.79626 rad = 102.9179 deg rows used : 1001 (0 to 1000 kyr before present) eccentricity range : 0.004155 to 0.057815 obliquity range : 22.0762 to 24.4546 deg precession index e sin(w) : -0.05768 to +0.05573 present precession index : -0.01628 ============================================================================================================== SECTION 1. THE INSOLATION FORMULA AGAINST CLOSED-FORM RESULTS ============================================================================================================== Present-day orbit throughout this section: e = 0.0167024, eps = 23.43929 deg, varpi = 102.9179 deg. Every 'club' number is quadrature or summation over the formula in the docstring. Every 'analytic' number is a closed form derived by hand. quantity club analytic difference relative -------------------------------------------------------------------------------------------------------------- global annual mean insolation (W/m2) 340.297512 340.297470 4.265e-05 0.0000% OK annual mean at the equator (W/m2) 415.595852 415.595852 5.684e-14 0.0000% OK annual mean at the north pole (W/m2) 172.348965 172.348964 1.056e-06 0.0000% OK annual mean at the south pole (W/m2) 172.348965 172.348964 1.056e-06 0.0000% OK northward equinox, equator (W/m2) 436.704616 436.704616 0.000e+00 0.0000% OK southward equinox, equator (W/m2) 430.230602 430.230602 0.000e+00 0.0000% OK June solstice, north pole (W/m2) 524.183832 524.183832 -1.137e-13 -0.0000% OK December solstice, south pole (W/m2) 559.457064 559.457064 0.000e+00 0.0000% OK December solstice, north pole (W/m2) 0.000000 0.000000 0.000e+00 exact 45N/45S solstice, distance divided out 499.313511 499.313511 0.000e+00 0.0000% OK mirror symmetry the same two before dividing it out 483.458250 515.990987 -3.253e+01 perihelion Against Laskar's own reference implementation. Subroutine cwj of insolsub.f from the La2004 distribution, transcribed into Python and cached beside the data file, branches on three cases instead of clipping the hour angle. Evaluated on a grid of 181 latitudes by 721 solar longitudes, at the present-day orbit: largest absolute difference anywhere on the grid : 2.842e-13 W/m2 identical to machine precision Laskar's subroutine wam gives the annual mean as so/(4 sqrt(1-e^2)), which is the closed form used in the first row of the table above. complete elliptic integral E(sin eps) by AGM : 1.506684231543093 same integral by brute-force quadrature : 1.506684231543093 ============================================================================================================== SECTION 2. MONTE CARLO CHECK OF THE WHOLE CHAIN ============================================================================================================== The daily-mean formula folds the day into an analytic integral over the hour angle. If that integral is wrong, every number above is wrong in the same way and the closed forms in Section 1 will not catch it, because they come from the same integral. So here is a check that does not use it at all: scatter points uniformly over the sphere and uniformly in TIME, work out the solar zenith angle at each one from scratch, and average the sunlight landing on a flat patch of ground facing the sky. Uniform in time means uniform in mean anomaly M, because M advances at a constant rate by construction. Kepler's equation then gives the position. quantity club analytic difference relative -------------------------------------------------------------------------------------------------------------- Monte Carlo global mean (W/m2) 339.968091 340.297470 -3.294e-01 -0.0968% standard error of the Monte Carlo mean : 0.2196 W/m2 difference in standard errors : -1.50 sigma OK (the verdict here is the z score, not a tolerance: a Monte Carlo estimate is allowed to miss, and is only wrong if it misses by more than its own uncertainty says it should.) samples : 4,000,000 The same target reached by the quadrature path : 340.297512 W/m2 S0 / 4 (the textbook number, circular orbit) : 340.250000 W/m2 eccentricity raises it by a factor 1/sqrt(1-e^2) = 1.00013951 ============================================================================================================== SECTION 3. AGAINST PUBLISHED PRESENT-DAY VALUES ============================================================================================================== These are numbers other people have printed, entered here by hand from the sources cited in the article. They are rounded as published, so agreement to the last printed digit is all that can be asked. quantity club published difference relative -------------------------------------------------------------------------------------------------------------- 65N June solstice, today (W/m2) 477.936747 480.000000 -2.063e+00 -0.4298% OK Berger 1978 tables 65N June solstice, today (W/m2) 479.341411 (the same with S0 = 1365, the older constant) equator, June solstice (W/m2) 384.850001 north pole / equator at June solstice 1.362047 annual mean, equator (W/m2) 415.595852 416.000000 -4.041e-01 -0.0972% OK Hartmann 2016 annual mean, pole (W/m2) 172.348965 173.000000 -6.510e-01 -0.3763% OK Hartmann 2016 obliquity today (deg) 23.439291 23.439300 -8.889e-06 -0.0000% OK IAU value eccentricity today 0.016702 0.016708 -5.638e-06 -0.0337% OK standard element longitude of perihelion (deg) 102.917945 102.947000 -2.906e-02 -0.0282% OK standard element Days from northward equinox to each astronomical event, present orbit: northward equinox lambda = 0.0 deg day 0.000 r/a = 0.996002 June solstice lambda = 90.0 deg day 92.758 r/a = 1.016265 southward equinox lambda = 180.0 deg day 186.406 r/a = 1.003468 December solstice lambda = 270.0 deg day 276.248 r/a = 0.983707 Length of the northern summer half year (equinox to equinox): 186.406 days, against 178.836 for the southern half. Difference 7.570 days. Published figure for the present asymmetry is about 7.5 days. ============================================================================================================== SECTION 4. CONVERGENCE OF THE ANNUAL-MEAN QUADRATURE ============================================================================================================== How many points around the orbit does the annual mean need? The answer depends on latitude, because the integrand is smooth at the equator and has a kink at high latitude where polar night begins and ends. Smooth periodic integrands converge faster than any power of N on a uniform grid. Kinked ones do not. N |err| equator |err| 65N |err| pole -------------------------------------------------------------------------------------------------------------- 8 1.112e-04 4.592e-02 4.511e+00 16 1.278e-10 3.469e-04 1.112e+00 32 0.000e+00 1.866e-07 2.772e-01 64 1.137e-13 3.979e-13 6.923e-02 128 0.000e+00 2.842e-14 1.730e-02 256 0.000e+00 2.842e-14 4.326e-03 512 0.000e+00 0.000e+00 1.081e-03 1024 0.000e+00 2.842e-14 2.704e-04 2048 0.000e+00 0.000e+00 6.759e-05 4096 0.000e+00 0.000e+00 1.690e-05 8192 0.000e+00 5.684e-14 4.225e-06 16384 0.000e+00 2.842e-14 1.056e-06 32768 0.000e+00 0.000e+00 2.640e-07 65536 0.000e+00 2.842e-14 6.599e-08 131072 0.000e+00 0.000e+00 1.649e-08 262144 0.000e+00 0.000e+00 4.109e-09 Reference values use N = 4194304. The equator falls to machine precision by a few dozen points. 65N does not, and that is the polar-night kink. Everything else in this file uses N = 16384. ============================================================================================================== SECTION 5. AMPLITUDE CONTRIBUTED BY EACH ORBITAL PARAMETER ALONE ============================================================================================================== Million-year means used as the holding values: mean eccentricity 0.028139 mean obliquity 23.33964 deg perihelion angle swept over the full circle A. Sweep one parameter over its full past-million-year range, hold the other two at the million-year mean, and record the 65N June solstice insolation at each end. This is a range, not a variance. parameter swept low high Q low Q high span W/m2 -------------------------------------------------------------------------------------------------------------- eccentricity (varpi today) 0.004155 0.057815 487.969 440.993 46.977 obliquity (deg) 22.07617 24.45460 446.377 484.349 37.972 perihelion angle (deg), e=mean 0.0 360.0 465.371 520.828 55.457 perihelion angle (deg), e=max 0.0 360.0 439.626 554.153 114.527 perihelion angle (deg), e=0 0.0 360.0 491.929 491.929 0.000 That last row is the whole point of the coupling. With a circular orbit the perihelion angle means nothing, because there is no perihelion. The precession lever is very nearly proportional to eccentricity, so what looks like a 23 kyr signal is a 23 kyr carrier inside a 100 kyr envelope. B. Let one parameter vary in time over the past million years and hold the other two at the million-year mean. Standard deviation of the resulting 65N June solstice series, against the full series with all three. series std W/m2 min max -------------------------------------------------------------------------------------------------------------- all three vary (the real curve) 23.488 430.528 558.777 eccentricity alone (varpi fixed at today) 11.239 440.993 487.969 obliquity alone 8.929 446.377 484.349 perihelion angle alone, e at mean 19.629 465.371 520.828 eccentricity and perihelion together 21.581 439.751 551.740 full series range : 128.249 W/m2 (430.528 to 558.777) full series mean : 493.164 W/m2 today : 477.937 W/m2 today as a percentile : 28.1% of the last million years were lower variance of the full series: 551.694 (W/m2)^2 sum of the three one-at-a-time variances: 591.318 (W/m2)^2 ratio : 1.072 (not 1, because the terms interact) ============================================================================================================== SECTION 6. SUMMER INSOLATION AT 65 NORTH, PAST MILLION YEARS ============================================================================================================== Insolation on the day of the June solstice (lambda = 90 deg exactly) at 65 N, one value per thousand years, from the La2004 elements. kyr BP e eps deg e sin(w) Q65N W/m2 -------------------------------------------------------------------------------------------------------------- 0 0.016702 23.4393 -0.01628 477.937 25 0.017868 22.4089 -0.01367 463.894 50 0.014600 24.4113 -0.01084 499.671 75 0.025952 22.6028 -0.01393 467.059 100 0.040060 23.6647 +0.00065 499.692 125 0.041862 23.8616 +0.03451 537.876 150 0.028439 22.4410 +0.02795 504.918 175 0.035987 23.8460 +0.03582 538.446 200 0.047170 23.1317 +0.03834 528.962 225 0.048819 22.7990 +0.01190 496.856 250 0.031516 24.3794 -0.01794 492.746 275 0.022617 22.6115 -0.00975 471.012 300 0.035193 23.7218 -0.02847 471.610 325 0.034447 23.6335 -0.03237 466.363 350 0.021445 22.3433 -0.00312 472.951 375 0.004480 24.1999 +0.00127 508.031 400 0.015810 22.7048 -0.01387 468.347 425 0.010514 23.5215 +0.00444 499.517 450 0.011225 23.8275 -0.00246 497.903 475 0.028550 22.7565 -0.02839 455.979 500 0.033783 23.7089 -0.00902 490.368 525 0.016948 23.2518 +0.00945 500.057 550 0.021392 22.8559 -0.00189 482.477 575 0.040462 24.0093 +0.02580 531.434 600 0.046970 22.7078 +0.04688 529.956 625 0.030048 23.7324 +0.01604 515.662 650 0.015796 23.4234 +0.01304 506.544 675 0.035111 22.9203 +0.01649 502.295 700 0.038151 23.9361 -0.01931 484.322 725 0.024985 22.6999 -0.02451 458.567 750 0.006833 23.6788 +0.00672 504.441 775 0.019848 23.1874 -0.01316 476.950 800 0.015927 23.1584 -0.01139 478.057 825 0.014979 23.6905 +0.01470 512.862 850 0.032711 23.0911 -0.00999 479.090 875 0.037950 23.5058 -0.03795 459.222 900 0.016269 23.5167 -0.00867 486.632 925 0.023983 22.8027 -0.02393 460.679 950 0.049542 23.8781 -0.03296 470.931 975 0.057312 22.7212 +0.01596 500.425 1000 0.035760 23.6282 +0.03376 532.291 highest value in the window : 558.777 W/m2 at 958 kyr BP lowest value in the window : 430.528 W/m2 at 231 kyr BP full swing : 128.249 W/m2, which is 26.0% of the mean at 958 kyr BP: e=0.05454, eps=23.7843 deg, e sin(w)=+0.05454 at 231 kyr BP: e=0.04648, eps=22.0923 deg, e sin(w)=-0.04642 ============================================================================================================== SECTION 7. THREE DEFINITIONS OF SUMMER, THREE DIFFERENT ANSWERS ============================================================================================================== 'Summer insolation at 65 N' is not one quantity. Three reasonable definitions are computed below on the same orbital elements. 1. Solstice. Daily-mean insolation on the day lambda = 90 deg. 2. Caloric summer half year (Milankovitch's own measure). The 182.62 days of the year with the highest daily insolation, averaged. 3. Integrated summer energy above 275 W/m2 (after Huybers 2006). Total energy received on every day whose insolation clears the threshold, reported in GJ/m2. definition today mean min max std -------------------------------------------------------------------------------------------------------------- solstice daily mean (W/m2) 477.937 493.164 430.528 558.777 23.488 caloric summer half year (W/m2) 366.008 369.037 346.411 385.738 7.242 integrated summer energy (GJ/m2) 4.990 5.002 4.674 5.241 0.111 Correlation of each definition with the orbital parameters over 1 Myr: definition r with e r with eps r with esin(w) -------------------------------------------------------------------------------------------------------------- solstice daily mean 0.0199 0.3954 0.9153 caloric summer half year -0.0195 0.7117 0.6981 integrated summer energy -0.0311 0.9159 0.3932 ============================================================================================================== SECTION 8. SPECTRAL CONTENT ============================================================================================================== Hann-windowed periodogram of each series after removing its mean and linear trend. Sampling 1 kyr, record length 1000 kyr, so the frequency resolution is 1/1000 kyr^-1 and the Nyquist period is 2 kyr. Bands, fixed from the known periodicities of the orbital solution before the spectra were computed: eccentricity band 75 to 135 kyr obliquity band 35 to 55 kyr precession band 17 to 26 kyr eccentricity e band share peak period band power -------------------------------------------------------------------------------------------------------------- eccentricity 75-135 kyr 46.38% 91.00 kyr 0.067595 obliquity 35-55 kyr 1.02% 52.68 kyr 0.0014875 precession 17-26 kyr 0.01% 23.28 kyr 1.3329e-05 three bands together 47.41% single largest peak at 333.67 kyr obliquity eps (deg) band share peak period band power -------------------------------------------------------------------------------------------------------------- eccentricity 75-135 kyr 0.00% 100.10 kyr 0.003834 obliquity 35-55 kyr 96.48% 41.71 kyr 285.13 precession 17-26 kyr 0.01% 20.43 kyr 0.036057 three bands together 96.49% single largest peak at 41.71 kyr precession index e sin(w) band share peak period band power -------------------------------------------------------------------------------------------------------------- eccentricity 75-135 kyr 0.00% 125.12 kyr 1.1159e-06 obliquity 35-55 kyr 0.02% 50.05 kyr 7.8038e-05 precession 17-26 kyr 99.62% 23.83 kyr 0.3865 three bands together 99.64% single largest peak at 23.83 kyr Q65N solstice band share peak period band power -------------------------------------------------------------------------------------------------------------- eccentricity 75-135 kyr 0.07% 125.12 kyr 329.66 obliquity 35-55 kyr 17.74% 41.71 kyr 82098 precession 17-26 kyr 81.26% 23.83 kyr 3.7597e+05 three bands together 99.08% single largest peak at 23.83 kyr Q65N caloric half year band share peak period band power -------------------------------------------------------------------------------------------------------------- eccentricity 75-135 kyr 0.01% 125.12 kyr 2.885 obliquity 35-55 kyr 52.83% 41.71 kyr 24558 precession 17-26 kyr 45.06% 23.83 kyr 20944 three bands together 97.89% single largest peak at 41.71 kyr Q65N integrated energy band share peak period band power -------------------------------------------------------------------------------------------------------------- eccentricity 75-135 kyr 0.01% 111.22 kyr 0.00078221 obliquity 35-55 kyr 82.85% 41.71 kyr 9.4225 precession 17-26 kyr 13.87% 23.83 kyr 1.5772 three bands together 96.72% single largest peak at 41.71 kyr The strongest local peaks in the 65N solstice spectrum: period 23.83 kyr power 96668 share 20.89% period 22.24 kyr power 83329 share 18.01% period 18.89 kyr power 65612 share 14.18% period 41.71 kyr power 36985 share 7.99% period 52.68 kyr power 2169.6 share 0.47% period 16.41 kyr power 685.77 share 0.15% period 28.60 kyr power 549.77 share 0.12% period 333.67 kyr power 129.38 share 0.03% How well can a 1000 kyr record place a peak at all? A discrete spectrum puts peaks only at bin centres. Near period P the bin spacing in period is P^2 / T, with T the record length, so: near 23.0 kyr the bins are 0.53 kyr apart, and a peak cannot be located better than about half of that, 0.26 kyr. near 41.0 kyr the bins are 1.68 kyr apart, and a peak cannot be located better than about half of that, 0.84 kyr. near 100.0 kyr the bins are 10.00 kyr apart, and a peak cannot be located better than about half of that, 5.00 kyr. So we ran the same periodogram on the whole 51 Myr file, where the bins near 41 kyr are only 0.0330 kyr apart, to pin the line periods down. One warning before the table. The eccentricity lines come from the secular motion of the planets and hold steady for hundreds of millions of years, so the whole 51 Myr file can be used on them. The obliquity and precession lines do not. They depend on Earth's own precession constant, which tidal friction has been slowing down, so those periods were shorter in the deep past. Averaging them over 51 Myr smears them low. For those two we use the most recent 10 Myr instead, and the drift is printed underneath so a reader can see the size of it. Line periods, Hann periodogram. The quoted uncertainty is the bin half-width P^2 / (2T), which is how well a record of length T can place a line at period P at all. quantity T kyr period kyr share usually quoted as -------------------------------------------------------------------------------------------------------------- eccentricity e 51000 404.770 +/- 1.606 20.35% 405 kyr term eccentricity e 51000 94.974 +/- 0.088 8.91% 95 kyr term eccentricity e 51000 124.090 +/- 0.151 5.05% 124 kyr term eccentricity e 51000 98.839 +/- 0.096 4.24% 99 kyr term obliquity eps 10000 40.820 +/- 0.083 44.21% 41.0 kyr term obliquity eps 10000 39.530 +/- 0.078 6.07% 39.7 kyr term obliquity eps 10000 53.481 +/- 0.143 3.37% 53.6 kyr term precession e sin(w) 10000 23.643 +/- 0.028 20.77% 23.7 kyr term precession e sin(w) 10000 22.324 +/- 0.025 17.74% 22.4 kyr term precession e sin(w) 10000 18.905 +/- 0.018 10.37% 19.0 kyr term precession e sin(w) 10000 19.050 +/- 0.018 3.55% 19.1 kyr term The right-hand column is what the literature calls each line. Every recovered period agrees with its published label to better than a percent. Nothing here was tuned to make them appear. They are properties of the solar system's orbital dynamics, and they fall out of a Fourier transform of somebody else's integration. The drift, shown rather than asserted. Peak obliquity and precession period in 5 Myr windows at four depths in the La2004 file: window (Myr BP) obliquity kyr precession kyr -------------------------------------------------------------------------------------------------------------- 0 to 5 40.992 23.701 10 to 15 40.659 23.590 25 to 30 40.008 23.369 45 to 50 39.378 23.153 That is not an error in our code. It is real, it is in La2004 because Laskar put it there, and it is why nobody quotes a 41 kyr obliquity cycle for the Cretaceous. A longer window, to separate the eccentricity lines that 1 Myr cannot: 2000 kyr window, 65N solstice: 400 kyr band 300-500 0.04% peak 400.20 kyr eccentricity 75-135 kyr 0.12% peak 95.29 kyr obliquity 35-55 kyr 11.73% peak 40.84 kyr precession 17-26 kyr 87.51% peak 19.06 kyr eccentricity itself, 300-500 kyr band: 16.72%, peak 400.2 kyr eccentricity itself, 75-135 kyr band : 69.52%, peak 95.3 kyr 5000 kyr window, 65N solstice: 400 kyr band 300-500 0.06% peak 416.75 kyr eccentricity 75-135 kyr 0.10% peak 94.36 kyr obliquity 35-55 kyr 14.12% peak 40.99 kyr precession 17-26 kyr 85.09% peak 23.70 kyr eccentricity itself, 300-500 kyr band: 40.57%, peak 416.8 kyr eccentricity itself, 75-135 kyr band : 47.86%, peak 94.4 kyr ============================================================================================================== SECTION 9. DOES THE CURVE LINE UP WITH THE TERMINATIONS? ============================================================================================================== Termination ages are the marine isotope stage boundary ages of the LR04 benthic stack, Lisiecki & Raymo (2005), read out of the published age- model table cached below. We dated nothing and typed nothing. The test asks, for each termination, how far it sits from the nearest maximum of our computed curve. LR04 age model file : LR04_MISboundaries.txt source URL : https://lorraine-lisiecki.com/LR04_MISboundaries.txt retrieved : 2026-09-14 sha256 : 3e15bfe68e220e48176e685b17645daf0f5a14c1b2c37e6ecdaf43a2b97b2de8 boundaries parsed : 227 local maxima of Q65N in the window : 46 mean spacing between maxima : 21.51 kyr maxima above the 75th percentile : 34 term MIS bdy age kyr nearest max offset Q at max Q at term -------------------------------------------------------------------------------------------------------------- I MIS 1/2 14.0 11.0 -3.0 527.07 518.79 II MIS 5/6 130.0 127.0 -3.0 548.83 538.62 III MIS 7/8 243.0 243.0 +0.0 533.74 533.74 IV MIS 9/10 337.0 334.0 -3.0 539.78 528.93 V MIS 11/12 424.0 426.0 +2.0 499.62 498.65 VI MIS 13/14 533.0 531.0 -2.0 514.81 514.19 VII MIS 15/16 621.0 621.0 +0.0 537.06 537.06 VIII MIS 17/18 712.0 713.0 +1.0 520.19 517.46 IX MIS 19/20 790.0 788.0 -2.0 521.04 515.26 mean offset : -1.11 kyr mean absolute offset : 1.78 kyr standard deviation of offsets : 1.90 kyr standard error of the mean : 0.63 kyr mean offset in standard errors: -1.75 sigma What would chance give? Insolation maxima are spaced 21.5 kyr apart on average, so a date thrown at random already lands fairly close to one. The mean absolute offset above has to be compared against that, not against zero. Monte Carlo null, 20,000 random dates drawn uniformly in 10-800 kyr: mean absolute offset under the null : 5.52 kyr standard deviation of that null : 1.11 kyr our mean absolute offset : 1.78 kyr our value in standard errors of the null: -3.39 sigma null sets of 9 dates at least as tight: 0 out of 20,000 p-value, one sided : < 0.00005 The same test against the caloric summer half year curve: local maxima: 43, mean spacing 23.52 kyr mean absolute offset: 2.89 kyr And the count that matters most. Over the past million years the curve offers 46 maxima. The record offers 9 terminations. The difference is the whole of the 100 kyr problem: most insolation maxima do nothing. ============================================================================================================== SECTION 10. WHAT THIS COMPUTATION LEAVES OUT ============================================================================================================== No atmosphere. No clouds. No albedo, so no ice-albedo feedback, which is the single largest amplifier in the real system. No carbon dioxide, no methane, no dust. No ocean, no heat transport, no thermal inertia, so no lag between forcing and response. A real ice sheet takes thousands of years to grow and thousands more to collapse, and none of that is here. No ice sheet at all, so no isostatic rebound and no elevation feedback. The solar constant is held at its present value for a million years. Obliquity is La2004's, referred to the fixed J2000 ecliptic. Termination ages are somebody else's, quoted, not measured. And the 100 kyr power in the ice record has no counterpart in the curve we computed. Section 8 gives the number. We do not explain it, and neither does anybody else with a calculation this simple. ============================================================================================================== Wall clock: 21.1 s Seed: 20260320. Orbital solution: La2004, sha256 3f13b9f8e69085ba... ==============================================================================================================