owlplanner 2025.11.5__tar.gz → 2025.11.9__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.11.5 → owlplanner-2025.11.9}/PKG-INFO +13 -8
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/README.md +7 -3
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/RELEASE_NOTES.md +5 -1
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/pyproject.toml +9 -5
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/plan.py +2 -2
- owlplanner-2025.11.9/src/owlplanner/version.py +1 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Documentation.py +4 -0
- owlplanner-2025.11.5/src/owlplanner/version.py +0 -1
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/.devcontainer/devcontainer.json +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/.flake8 +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/.gitattributes +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/.github/workflows/github-actions-runtests.yml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/.gitignore +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/.streamlit/config.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/.streamlit/fullconfig.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/INSTALL.md +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/LICENSE +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/USER_GUIDE.md +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docker/Dockerfile.bare +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docker/Dockerfile.static +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docker/README.md +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docker/buildentrypoint.sh +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docker/docker-compose.yml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docker/runentrypoint.sh +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/AD-taxDef.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/AD-taxFree.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/AD-taxable.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/Hist_Bequest.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/Hist_Spending.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/MC-tutorial2a.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/MC-tutorial2b.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/OwlUI.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/allocations.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/owl.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/piecewiseConstant.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/profile.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/ratesCorrelations.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/ratesPlot.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/savingsPlot.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/sourcesPlot.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/spendingPlot.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/taxIncomePlot.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/images/taxesPlot.png +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/owl.pdf +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/docs/owl.tex +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/case_drawdowncalc-comparison-1.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/case_jack+jill.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/case_joe.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/case_john+sally.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/case_jon+jane.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/case_kim+sam-bequest.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/case_kim+sam-spending.toml +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/jack+jill.xlsx +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/joe.xlsx +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/john+sally.xlsx +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/jon+jane.xlsx +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/kim+sam.xlsx +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/examples/template.xlsx +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/notebooks/john+sally.ipynb +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/notebooks/kim+sam.ipynb +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/notebooks/template.ipynb +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/notebooks/tutorial_1.ipynb +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/notebooks/tutorial_2.ipynb +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/notebooks/tutorial_3.ipynb +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/owlplanner.cmd +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/owlplanner.sh +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/pytest.ini +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/requirements.txt +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/__init__.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/abcapi.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/config.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/data/__init__.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/data/rates.csv +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/mylogging.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/plotting/__init__.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/plotting/base.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/plotting/factory.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/plotting/matplotlib_backend.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/plotting/plotly_backend.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/progress.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/rates.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/tax2025.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/tax2026.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/timelists.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/src/owlplanner/utils.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_logger.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_regressions.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_repro.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_toml_cases.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_ui_asset_allocation.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_ui_compare_summaries.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_ui_sskeys.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/tests/test_units.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/About_Owl.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Asset_Allocation.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Create_Case.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Current_Assets.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Fixed_Income.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Graphs.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Historical_Range.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Logs.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Monte_Carlo.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Optimization_Parameters.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Output_Files.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Quick_Start.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/README.md +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Rates_Selection.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Settings.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Wages_and_Contributions.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/Worksheets.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/__init__.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/main.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/owlbridge.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/progress.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/sskeys.py +0 -0
- {owlplanner-2025.11.5 → owlplanner-2025.11.9}/ui/tomlexamples.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: owlplanner
|
|
3
|
-
Version: 2025.11.
|
|
4
|
-
Summary: Owl: Retirement planner with great wisdom
|
|
3
|
+
Version: 2025.11.9
|
|
4
|
+
Summary: Owl - Optimal Wealth Lab: 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
|
|
7
7
|
Project-URL: Issues, https://github.com/mdlacasse/owl/issues
|
|
@@ -684,19 +684,20 @@ License: GNU GENERAL PUBLIC LICENSE
|
|
|
684
684
|
Public License instead of this License. But first, please read
|
|
685
685
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
686
686
|
License-File: LICENSE
|
|
687
|
-
Classifier: Development Status ::
|
|
687
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
688
688
|
Classifier: Intended Audience :: End Users/Desktop
|
|
689
689
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
690
690
|
Classifier: Operating System :: OS Independent
|
|
691
691
|
Classifier: Programming Language :: Python :: 3
|
|
692
692
|
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
693
|
-
Requires-Python: >=3.
|
|
693
|
+
Requires-Python: >=3.10
|
|
694
|
+
Requires-Dist: highspy
|
|
694
695
|
Requires-Dist: matplotlib
|
|
695
696
|
Requires-Dist: numpy
|
|
696
697
|
Requires-Dist: odfpy
|
|
697
698
|
Requires-Dist: openpyxl
|
|
698
699
|
Requires-Dist: pandas
|
|
699
|
-
Requires-Dist: plotly
|
|
700
|
+
Requires-Dist: plotly>=6.3
|
|
700
701
|
Requires-Dist: pulp
|
|
701
702
|
Requires-Dist: scipy
|
|
702
703
|
Requires-Dist: seaborn
|
|
@@ -750,13 +751,17 @@ your strategy under different market assumptions, helping to better understand y
|
|
|
750
751
|
|
|
751
752
|
-------------------------------------------------------------------------------------
|
|
752
753
|
## Purpose and vision
|
|
753
|
-
|
|
754
|
+
One goal of Owl is to provide a free and open-source ecosystem that has cutting-edge optimization capabilities,
|
|
754
755
|
allowing for the next generation of Python-literate retirees to experiment with their own financial future
|
|
755
|
-
while providing a codebase where they can learn and contribute.
|
|
756
|
+
while providing a codebase where they can learn and contribute. At the same time, an intuitive and easy-to-use
|
|
757
|
+
user interface based on Streamlit allows a broad set of users to benefit from the application as it only requires basic financial knowledge.
|
|
758
|
+
|
|
759
|
+
There are and were
|
|
756
760
|
good retirement optimizers in the recent past, but the vast majority of them are either proprietary platforms
|
|
757
761
|
collecting your data, or academic papers that share the results without really sharing the details of
|
|
758
762
|
the underlying mathematical models.
|
|
759
|
-
The algorithms in Owl rely on the open-source HiGHS linear programming solver
|
|
763
|
+
The algorithms in Owl rely on the open-source HiGHS linear programming solver and but they have also been ported to
|
|
764
|
+
other platforms such as Mosek and COIN-OR. The complete formulation and
|
|
760
765
|
detailed description of the underlying
|
|
761
766
|
mathematical model can be found [here](https://github.com/mdlacasse/Owl/blob/main/docs/owl.pdf).
|
|
762
767
|
|
|
@@ -44,13 +44,17 @@ your strategy under different market assumptions, helping to better understand y
|
|
|
44
44
|
|
|
45
45
|
-------------------------------------------------------------------------------------
|
|
46
46
|
## Purpose and vision
|
|
47
|
-
|
|
47
|
+
One goal of Owl is to provide a free and open-source ecosystem that has cutting-edge optimization capabilities,
|
|
48
48
|
allowing for the next generation of Python-literate retirees to experiment with their own financial future
|
|
49
|
-
while providing a codebase where they can learn and contribute.
|
|
49
|
+
while providing a codebase where they can learn and contribute. At the same time, an intuitive and easy-to-use
|
|
50
|
+
user interface based on Streamlit allows a broad set of users to benefit from the application as it only requires basic financial knowledge.
|
|
51
|
+
|
|
52
|
+
There are and were
|
|
50
53
|
good retirement optimizers in the recent past, but the vast majority of them are either proprietary platforms
|
|
51
54
|
collecting your data, or academic papers that share the results without really sharing the details of
|
|
52
55
|
the underlying mathematical models.
|
|
53
|
-
The algorithms in Owl rely on the open-source HiGHS linear programming solver
|
|
56
|
+
The algorithms in Owl rely on the open-source HiGHS linear programming solver and but they have also been ported to
|
|
57
|
+
other platforms such as Mosek and COIN-OR. The complete formulation and
|
|
54
58
|
detailed description of the underlying
|
|
55
59
|
mathematical model can be found [here](https://github.com/mdlacasse/Owl/blob/main/docs/owl.pdf).
|
|
56
60
|
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
### Version 2025.11.09
|
|
2
|
+
- Moved development status to production/stable in pyproject
|
|
3
|
+
- Made version propagate everywhere needed
|
|
4
|
+
- Added node limit on milp to avoid Streamlit server shutdown on memory consumption
|
|
5
|
+
|
|
1
6
|
### Version 2025.11.05
|
|
2
7
|
- Mentioning Owl as Optimal Wealth Lab
|
|
3
8
|
- Port to Streamlit 1.50 which broke many widgets
|
|
@@ -5,7 +10,6 @@
|
|
|
5
10
|
- Rework Docker to smaller Alpine image and fix docs
|
|
6
11
|
|
|
7
12
|
### Version 2025.07.01
|
|
8
|
-
|
|
9
13
|
Added:
|
|
10
14
|
- Settings option for menu position thanks to Streamlit 1.46 top and sidebar capabilities. Default is top.
|
|
11
15
|
- Net Investment Income Tax calculations in self-consistent loop.
|
|
@@ -2,20 +2,23 @@
|
|
|
2
2
|
requires = ["hatchling"]
|
|
3
3
|
build-backend = "hatchling.build"
|
|
4
4
|
|
|
5
|
+
[tool.hatch.version]
|
|
6
|
+
path = "src/owlplanner/version.py"
|
|
7
|
+
|
|
5
8
|
[project]
|
|
6
9
|
name = "owlplanner"
|
|
7
|
-
|
|
10
|
+
dynamic = ["version"]
|
|
8
11
|
authors = [
|
|
9
12
|
{ name="Martin-D. Lacasse", email="martin.d.lacasse@gmail.com" },
|
|
10
13
|
]
|
|
11
14
|
maintainers = [
|
|
12
15
|
{ name="Martin-D. Lacasse", email="martin.d.lacasse@gmail.com" },
|
|
13
16
|
]
|
|
14
|
-
description = "Owl: Retirement planner with great wisdom"
|
|
17
|
+
description = "Owl - Optimal Wealth Lab: Retirement planner with great wisdom"
|
|
15
18
|
readme = "README.md"
|
|
16
|
-
requires-python = ">=3.
|
|
19
|
+
requires-python = ">=3.10"
|
|
17
20
|
classifiers = [
|
|
18
|
-
"Development Status ::
|
|
21
|
+
"Development Status :: 5 - Production/Stable",
|
|
19
22
|
"Programming Language :: Python :: 3",
|
|
20
23
|
"Intended Audience :: End Users/Desktop",
|
|
21
24
|
"Topic :: Office/Business :: Financial :: Investment",
|
|
@@ -24,12 +27,13 @@ classifiers = [
|
|
|
24
27
|
"Programming Language :: Python :: 3",
|
|
25
28
|
]
|
|
26
29
|
dependencies = [
|
|
30
|
+
"highspy",
|
|
27
31
|
"matplotlib",
|
|
28
32
|
"numpy",
|
|
29
33
|
"odfpy",
|
|
30
34
|
"openpyxl",
|
|
31
35
|
"pandas",
|
|
32
|
-
"plotly",
|
|
36
|
+
"plotly>=6.3",
|
|
33
37
|
"pulp",
|
|
34
38
|
"seaborn",
|
|
35
39
|
"scipy",
|
|
@@ -1669,7 +1669,7 @@ class Plan(object):
|
|
|
1669
1669
|
self.prevMAGI = np.zeros(2)
|
|
1670
1670
|
if "previousMAGIs" in myoptions:
|
|
1671
1671
|
magi = myoptions["previousMAGIs"]
|
|
1672
|
-
if
|
|
1672
|
+
if len(magi) != 2:
|
|
1673
1673
|
raise ValueError("previousMAGIs must have 2 values.")
|
|
1674
1674
|
|
|
1675
1675
|
self.prevMAGI = self.optionsUnits * np.array(magi)
|
|
@@ -1786,7 +1786,7 @@ class Plan(object):
|
|
|
1786
1786
|
"disp": False,
|
|
1787
1787
|
"mip_rel_gap": 1e-7,
|
|
1788
1788
|
"presolve": True,
|
|
1789
|
-
|
|
1789
|
+
"node_limit": 1000000 # Limit search nodes for faster solutions
|
|
1790
1790
|
}
|
|
1791
1791
|
|
|
1792
1792
|
self._buildConstraints(objective, options)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2025.11.09"
|
|
@@ -20,6 +20,10 @@ with col1:
|
|
|
20
20
|
The goal of Owl is to provide a free and open-source ecosystem that has cutting-edge
|
|
21
21
|
optimization capabilities, allowing for the new generation of computer-literate retirees
|
|
22
22
|
to experiment with their own financial future while providing a codebase where they can learn and contribute.
|
|
23
|
+
At the same time, Streamlit provides an intuitive and easy-to-use
|
|
24
|
+
interface which allows a broad set of users to benefit from the application
|
|
25
|
+
as it only requires basic financial knowledge.
|
|
26
|
+
|
|
23
27
|
Strictly speaking, Owl is not a planning tool, but more an environment for exploring *what if* scenarios.
|
|
24
28
|
It provides different realizations of a financial strategy through the rigorous
|
|
25
29
|
mathematical optimization of relevant decision variables. Using a linear programming approach,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2025.11.05"
|
|
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
|
|
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
|