owlplanner 2025.4.1__tar.gz → 2025.4.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/.flake8 +1 -1
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/PKG-INFO +4 -2
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/README.md +3 -1
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/pyproject.toml +1 -1
- owlplanner-2025.4.6/reponse.txt +20 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/plan.py +30 -28
- owlplanner-2025.4.6/src/owlplanner/version.py +1 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/About_Owl.py +3 -1
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Documentation.py +2 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Optimization_Parameters.py +1 -1
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/owlbridge.py +1 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/requirements.txt +1 -1
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/sskeys.py +2 -2
- owlplanner-2025.4.1/src/owlplanner/version.py +0 -1
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/.devcontainer/devcontainer.json +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/.gitattributes +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/.github/workflows/github-actions-runtests.yml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/.gitignore +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/INSTALL.md +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/LICENSE +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/Papers/FE00006821-Class-VI-Injection-Permit--Salient-Features-and-Regulatory-Challenges_Final.pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/Papers/Kou-OptionPricingDouble-2004.pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/Papers/Multi-Period Mean Expected-Shortfall Strategies Cut Your Losses and Ride Your Gains .pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/Papers/Optimal Asset Allocation for Retirement Saving Deterministic Vs. Time Consistent Adaptive Strategies.pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/Papers/Rule-based_strategies_for_dynamic_life_cycle_inves.pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/Papers/bv_cvxbook.pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/Papers/s10436-006-0062-y.pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/USER_GUIDE.md +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docker/Dockerfile +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docker/README.md +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docker/docker-compose.yml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docker/fastentrypoint.sh +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/AD-taxDef.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/AD-taxFree.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/AD-taxable.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/Hist_Bequest.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/Hist_Spending.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/MC-tutorial2a.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/MC-tutorial2b.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/OwlUI.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/allocations.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/owl.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/profile.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/ratesCorrelations.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/ratesPlot.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/savingsPlot.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/sourcesPlot.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/spendingPlot.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/taxIncomePlot.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/images/taxesPlot.png +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/owl.pdf +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/docs/owl.tex +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/case_jack+jill.toml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/case_joe.toml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/case_john+sally.toml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/case_jon+jane.toml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/case_kim+sam-bequest.toml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/case_kim+sam-spending.toml +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/jack+jill.xlsx +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/joe.xlsx +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/john+sally.xlsx +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/jon+jane.xlsx +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/examples/template.xlsx +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/notebooks/john+sally.ipynb +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/notebooks/kim+sam.ipynb +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/notebooks/template.ipynb +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/notebooks/tutorial_1.ipynb +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/notebooks/tutorial_2.ipynb +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/notebooks/tutorial_3.ipynb +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/owlplanner.cmd +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/owlplanner.sh +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/requirements.txt +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/__init__.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/abcapi.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/config.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/data/__init__.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/data/rates.csv +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/logging.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/progress.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/rates.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/tax2025.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/timelists.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/src/owlplanner/utils.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/tests/test_logger.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/tests/test_regressions.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/tests/test_repro.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/tests/test_toml_cases.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/tests/test_units.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ttt.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ttt2.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ttt3.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Asset_Allocation.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Create_Case.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Current_Assets.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Fixed_Income.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Graphs.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Historical_Range.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Logs.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Monte_Carlo.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Output_Files.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Quick_Start.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/README.md +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Rates_Selection.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Settings.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Wages_And_Contributions.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/Worksheets.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/main+fonts.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/main.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/plots.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/progress.py +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/sskeys.py.color +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/style.css +0 -0
- {owlplanner-2025.4.1 → owlplanner-2025.4.6}/ui/tomlexamples.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: owlplanner
|
|
3
|
-
Version: 2025.4.
|
|
3
|
+
Version: 2025.4.6
|
|
4
4
|
Summary: Owl: Retirement planner with great wisdom
|
|
5
5
|
Project-URL: HomePage, https://github.com/mdlacasse/owl
|
|
6
6
|
Project-URL: Repository, https://github.com/mdlacasse/owl
|
|
@@ -885,7 +885,9 @@ assets to support, even with no estate being left.
|
|
|
885
885
|
- Image from [freepik](https://freepik.com)
|
|
886
886
|
- Optimization solver from [HiGHS](https://highs.dev)
|
|
887
887
|
- Streamlit Community Cloud [Streamlit](https://streamlit.io)
|
|
888
|
-
- Contributors: Josh (noimjosh@gmail.com) for Docker image code
|
|
888
|
+
- Contributors: Josh (noimjosh@gmail.com) for Docker image code,
|
|
889
|
+
Dale Seng (sengsational) for great insights and suggestions,
|
|
890
|
+
Robert E. Anderson (NH-RedAnt) for bug fixes and suggestions.
|
|
889
891
|
|
|
890
892
|
---------------------------------------------------------------------
|
|
891
893
|
|
|
@@ -182,7 +182,9 @@ assets to support, even with no estate being left.
|
|
|
182
182
|
- Image from [freepik](https://freepik.com)
|
|
183
183
|
- Optimization solver from [HiGHS](https://highs.dev)
|
|
184
184
|
- Streamlit Community Cloud [Streamlit](https://streamlit.io)
|
|
185
|
-
- Contributors: Josh (noimjosh@gmail.com) for Docker image code
|
|
185
|
+
- Contributors: Josh (noimjosh@gmail.com) for Docker image code,
|
|
186
|
+
Dale Seng (sengsational) for great insights and suggestions,
|
|
187
|
+
Robert E. Anderson (NH-RedAnt) for bug fixes and suggestions.
|
|
186
188
|
|
|
187
189
|
---------------------------------------------------------------------
|
|
188
190
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
Hi Mike,
|
|
3
|
+
|
|
4
|
+
Thank you so much for the income tax preparation. I have a few questions after reviewing the return:
|
|
5
|
+
|
|
6
|
+
- Roth conversion was made as an in-plan conversion from a 401k to a Roth-401k. Do we still need form 8606?
|
|
7
|
+
- Out of curiosity, Roth conversion was for $240,000.00 with 0.79 deamed coming from a designated Roth contribution. Why was the $1 been added as a taxable item in statement 4? This is a minor point (and therefore can stay as is). Just curiosity as I said.
|
|
8
|
+
- How do I pay your fees?
|
|
9
|
+
|
|
10
|
+
Questions for the future:
|
|
11
|
+
- You mentioned that the 2023 filing has to be corrected. Is it to my benefit or against it?
|
|
12
|
+
- I am planning to stop my consulting job at the end of May. Would it still be worth creating a Corporation for 5 months?
|
|
13
|
+
- I will probably move to FL later this year (I was in Atlanta for my daughter - she will likely move to CA shortly). I am planning to perform another large Roth conversion this year (preventing large RMDs). I will need your advice as to when to proceed.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
I submitted signed form 8879 through your portal.
|
|
17
|
+
|
|
18
|
+
Thanks again,
|
|
19
|
+
|
|
20
|
+
Martin
|
|
@@ -1122,16 +1122,17 @@ class Plan(object):
|
|
|
1122
1122
|
B.set0_Ub(_q1(Ce, n, Nn), self.sigmaBar_n[n])
|
|
1123
1123
|
|
|
1124
1124
|
# Roth conversions equalities/inequalities.
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1125
|
+
# This condition supercedes everything else.
|
|
1126
|
+
if "maxRothConversion" in options and options["maxRothConversion"] == "file":
|
|
1127
|
+
# self.mylog.vprint(f"Fixing Roth conversions to those from file {self.timeListsFileName}.")
|
|
1128
|
+
for i in range(Ni):
|
|
1129
|
+
for n in range(self.horizons[i]):
|
|
1130
|
+
rhs = self.myRothX_in[i][n]
|
|
1131
|
+
B.setRange(_q2(Cx, i, n, Ni, Nn), rhs, rhs)
|
|
1132
|
+
else:
|
|
1133
|
+
if "maxRothConversion" in options:
|
|
1133
1134
|
rhsopt = options["maxRothConversion"]
|
|
1134
|
-
assert isinstance(rhsopt, (int, float)), "Specified
|
|
1135
|
+
assert isinstance(rhsopt, (int, float)), "Specified maxRothConversion is not a number."
|
|
1135
1136
|
rhsopt *= units
|
|
1136
1137
|
if rhsopt < 0:
|
|
1137
1138
|
# self.mylog.vprint('Unlimited Roth conversions (<0)')
|
|
@@ -1143,27 +1144,28 @@ class Plan(object):
|
|
|
1143
1144
|
# Should we adjust Roth conversion cap with inflation?
|
|
1144
1145
|
B.set0_Ub(_q2(Cx, i, n, Ni, Nn), rhsopt)
|
|
1145
1146
|
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1147
|
+
# Process startRothConversions option.
|
|
1148
|
+
if "startRothConversions" in options:
|
|
1149
|
+
rhsopt = options["startRothConversions"]
|
|
1150
|
+
assert isinstance(rhsopt, (int, float)), "Specified startRothConversions is not a number."
|
|
1151
|
+
thisyear = date.today().year
|
|
1152
|
+
yearn = max(rhsopt - thisyear, 0)
|
|
1151
1153
|
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1154
|
+
for i in range(Ni):
|
|
1155
|
+
nstart = min(yearn, self.horizons[i])
|
|
1156
|
+
for n in range(0, nstart):
|
|
1157
|
+
B.set0_Ub(_q2(Cx, i, n, Ni, Nn), zero)
|
|
1158
|
+
|
|
1159
|
+
# Process noRothConversions option. Also valid when N_i == 1, why not?
|
|
1160
|
+
if "noRothConversions" in options and options["noRothConversions"] != "None":
|
|
1161
|
+
rhsopt = options["noRothConversions"]
|
|
1162
|
+
try:
|
|
1163
|
+
i_x = self.inames.index(rhsopt)
|
|
1164
|
+
except ValueError:
|
|
1165
|
+
raise ValueError(f"Unknown individual {rhsopt} for noRothConversions:")
|
|
1164
1166
|
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
+
for n in range(Nn):
|
|
1168
|
+
B.set0_Ub(_q2(Cx, i_x, n, Ni, Nn), zero)
|
|
1167
1169
|
|
|
1168
1170
|
# Impose withdrawal limits on taxable and tax-exempt accounts.
|
|
1169
1171
|
for i in range(Ni):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2025.04.06"
|
|
@@ -33,7 +33,9 @@ Copyright © 2024 - Martin-D. Lacasse
|
|
|
33
33
|
[odfpy](https://https://pypi.org/project/odfpy),
|
|
34
34
|
[toml](https://toml.io),
|
|
35
35
|
and [Streamlit](https://streamlit.io) for the front-end
|
|
36
|
-
- Contributors: Josh (noimjosh@gmail.com) for Docker image code
|
|
36
|
+
- Contributors: Josh (noimjosh@gmail.com) for Docker image code,
|
|
37
|
+
Dale Seng (sengsational) for great insights and suggestions,
|
|
38
|
+
Robert E. Anderson (NH-RedAnt) for bug fixes and suggestions.
|
|
37
39
|
|
|
38
40
|
#### :orange[Bugs and Feature Requests]
|
|
39
41
|
- Please submit bugs and feature requests through
|
|
@@ -282,6 +282,8 @@ button is toggled, in which case Roth conversions will not be optimized,
|
|
|
282
282
|
but will rather be performed according to
|
|
283
283
|
the `Roth conv` column on the
|
|
284
284
|
[Wages and Contributions](#wages-and-contributions) page.
|
|
285
|
+
A year from which Roth conversions can begin to be considered can also be selected: no Roth
|
|
286
|
+
conversions will be allowed before the year specified.
|
|
285
287
|
|
|
286
288
|
Calculations of Medicare and IRMAA can be turned on or off. This will typically speed up
|
|
287
289
|
the calculations by a factor of 2 to 3, which can be useful when running Monte Carlo simulations.
|
|
@@ -57,7 +57,7 @@ else:
|
|
|
57
57
|
helpmsg = "Do not perform Roth conversions before that year."
|
|
58
58
|
thisyear = date.today().year
|
|
59
59
|
kz.initKey("startRothConversions", thisyear)
|
|
60
|
-
ret = kz.getIntNum("Year to start Roth conversions", "startRothConversions", min_value=thisyear,
|
|
60
|
+
ret = kz.getIntNum("Year to start considering Roth conversions", "startRothConversions", min_value=thisyear,
|
|
61
61
|
disabled=fromFile, help=helpmsg)
|
|
62
62
|
if kz.getKey("status") == "married":
|
|
63
63
|
iname1 = kz.getKey("iname1")
|
|
@@ -409,11 +409,11 @@ def getAccountAllocationRatios():
|
|
|
409
409
|
|
|
410
410
|
|
|
411
411
|
def getPreviousMAGIs():
|
|
412
|
-
backMAGIs = [0
|
|
412
|
+
backMAGIs = [0., 0.]
|
|
413
413
|
for ii in range(2):
|
|
414
414
|
val = getKey(f"MAGI{ii}")
|
|
415
415
|
if val:
|
|
416
|
-
backMAGIs[ii] = val
|
|
416
|
+
backMAGIs[ii] = float(val)
|
|
417
417
|
|
|
418
418
|
return backMAGIs
|
|
419
419
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2025.04.01"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|