Full Code of dabeaz-course/python-mastery for AI

main a55856bf8985 cached
255 files
12.5 MB
243.4k tokens
1197 symbols
1 requests
Download .txt
Showing preview only (758K chars total). Download the full file or copy to clipboard to get everything.
Repository: dabeaz-course/python-mastery
Branch: main
Commit: a55856bf8985
Files: 255
Total size: 12.5 MB

Directory structure:
gitextract_qxj7p6fl/

├── .gitignore
├── Data/
│   ├── ctabus.csv
│   ├── dowstocks.csv
│   ├── missing.csv
│   ├── portfolio.csv
│   ├── portfolio2.csv
│   ├── portfolio3.csv
│   ├── portfolio_noheader.csv
│   ├── prices.csv
│   ├── stocksim.py
│   └── words.txt
├── Exercises/
│   ├── README.md
│   ├── ex1_1.md
│   ├── ex1_2.md
│   ├── ex1_3.md
│   ├── ex1_4.md
│   ├── ex1_5.md
│   ├── ex1_6.md
│   ├── ex2_1.md
│   ├── ex2_2.md
│   ├── ex2_3.md
│   ├── ex2_4.md
│   ├── ex2_5.md
│   ├── ex2_6.md
│   ├── ex3_1.md
│   ├── ex3_2.md
│   ├── ex3_3.md
│   ├── ex3_4.md
│   ├── ex3_5.md
│   ├── ex3_6.md
│   ├── ex3_7.md
│   ├── ex3_8.md
│   ├── ex4_1.md
│   ├── ex4_2.md
│   ├── ex4_3.md
│   ├── ex4_4.md
│   ├── ex5_1.md
│   ├── ex5_2.md
│   ├── ex5_3.md
│   ├── ex5_4.md
│   ├── ex5_5.md
│   ├── ex5_6.md
│   ├── ex6_1.md
│   ├── ex6_2.md
│   ├── ex6_3.md
│   ├── ex6_4.md
│   ├── ex6_5.md
│   ├── ex7_1.md
│   ├── ex7_2.md
│   ├── ex7_3.md
│   ├── ex7_4.md
│   ├── ex7_5.md
│   ├── ex7_6.md
│   ├── ex8_1.md
│   ├── ex8_2.md
│   ├── ex8_3.md
│   ├── ex8_4.md
│   ├── ex8_5.md
│   ├── ex8_6.md
│   ├── ex9_1.md
│   ├── ex9_2.md
│   ├── ex9_3.md
│   ├── ex9_4.md
│   ├── index.md
│   ├── soln1_1.md
│   ├── soln1_2.md
│   ├── soln1_3.md
│   ├── soln1_4.md
│   ├── soln1_5.md
│   ├── soln1_6.md
│   ├── soln2_1.md
│   ├── soln2_2.md
│   ├── soln2_3.md
│   ├── soln2_4.md
│   ├── soln2_5.md
│   ├── soln2_6.md
│   ├── soln3_1.md
│   ├── soln3_2.md
│   ├── soln3_3.md
│   ├── soln3_4.md
│   ├── soln3_5.md
│   ├── soln3_6.md
│   ├── soln3_7.md
│   ├── soln3_8.md
│   ├── soln4_1.md
│   ├── soln4_2.md
│   ├── soln4_3.md
│   ├── soln4_4.md
│   ├── soln5_1.md
│   ├── soln5_2.md
│   ├── soln5_3.md
│   ├── soln5_4.md
│   ├── soln5_5.md
│   ├── soln5_6.md
│   ├── soln6_1.md
│   ├── soln6_2.md
│   ├── soln6_3.md
│   ├── soln6_4.md
│   ├── soln6_5.md
│   ├── soln7_1.md
│   ├── soln7_2.md
│   ├── soln7_3.md
│   ├── soln7_4.md
│   ├── soln7_5.md
│   ├── soln7_6.md
│   ├── soln8_1.md
│   ├── soln8_2.md
│   ├── soln8_3.md
│   ├── soln8_4.md
│   ├── soln8_5.md
│   ├── soln8_6.md
│   ├── soln9_1.md
│   ├── soln9_2.md
│   ├── soln9_3.md
│   └── soln9_4.md
├── LICENSE.md
├── README.md
└── Solutions/
    ├── 1_1/
    │   └── art.py
    ├── 1_3/
    │   └── pcost.py
    ├── 1_4/
    │   └── pcost.py
    ├── 1_5/
    │   └── stock.py
    ├── 1_6/
    │   └── pcost.py
    ├── 2_1/
    │   └── readrides.py
    ├── 2_2/
    │   ├── cta.py
    │   ├── readport.py
    │   └── readrides.py
    ├── 2_4/
    │   └── mutint.py
    ├── 2_5/
    │   ├── cta.py
    │   └── readrides.py
    ├── 2_6/
    │   ├── colreader.py
    │   ├── cta.py
    │   └── reader.py
    ├── 3_1/
    │   └── stock.py
    ├── 3_2/
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_3/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_4/
    │   └── stock.py
    ├── 3_5/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_6/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_7/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_8/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 4_2/
    │   └── validate.py
    ├── 4_3/
    │   └── validate.py
    ├── 5_2/
    │   ├── reader.py
    │   └── stock.py
    ├── 5_3/
    │   ├── reader.py
    │   └── stock.py
    ├── 5_4/
    │   └── typedproperty.py
    ├── 5_5/
    │   └── reader.py
    ├── 5_6/
    │   ├── stock.py
    │   └── teststock.py
    ├── 6_1/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_2/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_3/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_4/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_5/
    │   └── validate.py
    ├── 7_1/
    │   ├── logcall.py
    │   ├── sample.py
    │   └── validate.py
    ├── 7_2/
    │   ├── logcall.py
    │   ├── sample.py
    │   ├── spam.py
    │   └── validate.py
    ├── 7_3/
    │   ├── reader.py
    │   ├── stock.py
    │   ├── structure.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 7_4/
    │   ├── stock.py
    │   ├── structure.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 7_5/
    │   └── mymeta.py
    ├── 7_6/
    │   ├── reader.py
    │   ├── stock.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 8_1/
    │   ├── follow.py
    │   ├── reader.py
    │   ├── stock.py
    │   ├── structure.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 8_2/
    │   ├── follow.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   ├── ticker.py
    │   └── validate.py
    ├── 8_3/
    │   ├── cofollow.py
    │   ├── coticker.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   └── validate.py
    ├── 8_4/
    │   ├── cofollow.py
    │   └── follow.py
    ├── 8_5/
    │   ├── multitask.py
    │   └── server.py
    ├── 8_6/
    │   ├── asyncserver.py
    │   ├── cofollow.py
    │   ├── coticker.py
    │   ├── server.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   └── validate.py
    ├── 9_1/
    │   └── simplemod.py
    ├── 9_2/
    │   ├── stock.py
    │   └── structly/
    │       ├── __init__.py
    │       ├── reader.py
    │       ├── structure.py
    │       ├── tableformat.py
    │       └── validate.py
    ├── 9_3/
    │   ├── stock.py
    │   └── structly/
    │       ├── __init__.py
    │       ├── reader.py
    │       ├── structure.py
    │       ├── tableformat/
    │       │   ├── __init__.py
    │       │   ├── formats/
    │       │   │   ├── __init__.py
    │       │   │   ├── csv.py
    │       │   │   ├── html.py
    │       │   │   └── text.py
    │       │   └── formatter.py
    │       └── validate.py
    ├── 9_4/
    │   ├── stock.py
    │   └── structly/
    │       ├── __init__.py
    │       ├── reader.py
    │       ├── structure.py
    │       ├── tableformat/
    │       │   ├── __init__.py
    │       │   ├── formats/
    │       │   │   ├── __init__.py
    │       │   │   ├── csv.py
    │       │   │   ├── html.py
    │       │   │   ├── text.py
    │       │   │   └── tsv.py
    │       │   └── formatter.py
    │       └── validate.py
    └── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
#   For a library or package, you might want to ignore these files since the code is
#   intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# poetry
#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
#   This is especially recommended for binary packages to ensure reproducibility, and is more
#   commonly ignored for libraries.
#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
#   in version control.
#   https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
#  and can be added to the global gitignore or merged into this file.  For a more nuclear
#  option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/


================================================
FILE: Data/ctabus.csv
================================================
[File too large to display: 11.8 MB]

================================================
FILE: Data/dowstocks.csv
================================================
"AA",39.48,"6/11/2007","9:36am",-0.18,39.67,39.69,39.45,181800
"AIG",71.38,"6/11/2007","9:36am",-0.15,71.29,71.60,71.15,195500
"AXP",62.58,"6/11/2007","9:36am",-0.46,62.79,63.00,62.57,935000
"BA",98.31,"6/11/2007","9:36am",+0.12,98.25,98.58,98.19,104800
"C",53.08,"6/11/2007","9:36am",-0.25,53.20,53.25,53.03,360900
"CAT",78.29,"6/11/2007","9:36am",-0.23,78.32,78.33,78.06,225400
"DD",50.75,"6/11/2007","9:36am",-0.38,51.13,51.14,50.69,96900
"DIS",34.20,"6/11/2007","9:35am",0.00,34.28,34.30,34.12,191000
"GE",37.23,"6/11/2007","9:36am",-0.09,37.07,37.27,37.05,694300
"GM",31.44,"6/11/2007","9:36am",+0.44,31.00,31.62,30.90,715429
"HD",37.67,"6/11/2007","9:35am",-0.28,37.78,37.83,37.62,218369
"HON",57.12,"6/11/2007","9:35am",-0.26,57.25,57.33,57.11,131100
"HPQ",45.81,"6/11/2007","9:36am",+0.11,45.80,45.85,45.46,303200
"IBM",102.86,"6/11/2007","9:35am",-0.21,102.87,102.99,102.50,151700
"INTC",21.84,"6/11/2007","9:40am",+0.01,21.70,21.85,21.69,2927268
"JNJ",62.25,"6/11/2007","9:35am",+0.12,62.89,62.89,62.15,343500
"JPM",50.35,"6/11/2007","9:36am",-0.06,50.41,50.49,50.27,351100
"KO",51.65,"6/11/2007","9:35am",-0.02,51.67,51.73,51.54,3981400
"MCD",51.11,"6/11/2007","9:35am",-0.30,51.47,51.47,51.00,169100
"MMM",85.60,"6/11/2007","9:35am",-0.34,85.94,85.98,85.50,190800
"MO",70.09,"6/11/2007","9:36am",-0.21,70.25,70.30,70.04,471200
"MRK",50.21,"6/11/2007","9:36am",+0.07,50.30,50.46,50.04,1453300
"MSFT",30.08,"6/11/2007","9:41am",+0.03,30.05,30.09,29.93,6166010
"PFE",26.40,"6/11/2007","9:36am",-0.12,26.50,26.50,26.34,835600
"PG",62.79,"6/11/2007","9:35am",-0.28,62.80,62.87,62.75,256000
"T",40.03,"6/11/2007","9:35am",-0.23,40.20,40.25,39.89,691400
"UTX",69.81,"6/11/2007","9:36am",-0.42,69.85,70.20,69.51,153900
"VZ",42.92,"6/11/2007","9:35am",-0.15,42.95,43.00,42.89,221000
"WMT",49.78,"6/11/2007","9:36am",-0.30,49.90,50.00,49.76,676200
"XOM",82.50,"6/11/2007","9:36am",-0.18,82.68,82.84,82.41,481200
"AA",39.59,"6/11/2007","9:40am",-0.07,39.67,39.69,39.43,252600
"AIG",71.46,"6/11/2007","9:40am",-0.07,71.29,71.60,71.15,276900
"AXP",62.71,"6/11/2007","9:40am",-0.33,62.79,63.00,62.42,1002100
"BA",98.31,"6/11/2007","9:40am",+0.12,98.25,98.58,98.17,149700
"C",53.14,"6/11/2007","9:40am",-0.19,53.20,53.25,53.02,546500
"CAT",78.49,"6/11/2007","9:40am",-0.03,78.32,78.49,78.06,262812
"DD",50.85,"6/11/2007","9:40am",-0.28,51.13,51.14,50.69,155000
"DIS",34.36,"6/11/2007","9:40am",+0.16,34.28,34.38,34.12,276900
"GE",37.30,"6/11/2007","9:40am",-0.02,37.07,37.32,37.05,1039900
"GM",31.40,"6/11/2007","9:40am",+0.40,31.00,31.62,30.90,1074079
"HD",37.72,"6/11/2007","9:40am",-0.23,37.78,37.83,37.62,321769
"HON",57.22,"6/11/2007","9:40am",-0.16,57.25,57.33,57.05,150400
"HPQ",45.954,"6/11/2007","9:40am",+0.254,45.80,45.98,45.46,424600
"IBM",102.95,"6/11/2007","9:40am",-0.12,102.87,102.99,102.50,229500
"INTC",21.85,"6/11/2007","9:46am",+0.02,21.70,21.86,21.69,3605793
"JNJ",62.42,"6/11/2007","9:40am",+0.29,62.89,62.89,62.15,433600
"JPM",50.42,"6/11/2007","9:40am",+0.01,50.41,50.49,50.27,461400
"KO",51.67,"6/11/2007","9:40am",0.00,51.67,51.73,51.54,4010650
"MCD",51.42,"6/11/2007","9:40am",+0.01,51.47,51.47,50.98,245800
"MMM",85.45,"6/11/2007","9:40am",-0.49,85.94,85.98,85.44,225500
"MO",69.95,"6/11/2007","9:40am",-0.35,70.25,70.30,69.95,543600
"MRK",50.58,"6/11/2007","9:40am",+0.44,50.30,50.63,50.04,1586100
"MSFT",30.14,"6/11/2007","9:46am",+0.09,30.05,30.15,29.93,6758871
"PFE",26.46,"6/11/2007","9:40am",-0.06,26.50,26.50,26.34,1101900
"PG",62.97,"6/11/2007","9:40am",-0.10,62.80,63.00,62.75,431246
"T",40.19,"6/11/2007","9:40am",-0.07,40.20,40.25,39.89,874100
"UTX",69.88,"6/11/2007","9:40am",-0.35,69.85,70.20,69.51,191800
"VZ",43.06,"6/11/2007","9:40am",-0.01,42.95,43.07,42.89,322700
"WMT",49.72,"6/11/2007","9:40am",-0.36,49.90,50.00,49.70,822700
"XOM",82.41,"6/11/2007","9:40am",-0.27,82.68,82.84,82.35,705500
"AA",39.78,"6/11/2007","9:46am",+0.12,39.67,39.7946,39.43,347300
"AIG",71.41,"6/11/2007","9:46am",-0.12,71.29,71.60,71.15,378000
"AXP",62.87,"6/11/2007","9:46am",-0.17,62.79,63.00,62.42,1033500
"BA",98.50,"6/11/2007","9:46am",+0.31,98.25,98.58,98.17,195100
"C",53.13,"6/11/2007","9:46am",-0.20,53.20,53.25,53.02,715514
"CAT",78.77,"6/11/2007","9:46am",+0.25,78.32,78.8128,78.06,329712
"DD",50.81,"6/11/2007","9:46am",-0.32,51.13,51.14,50.69,198300
"DIS",34.34,"6/11/2007","9:46am",+0.14,34.28,34.44,34.12,392500
"GE",37.27,"6/11/2007","9:46am",-0.05,37.07,37.34,37.05,1311900
"GM",31.42,"6/11/2007","9:46am",+0.42,31.00,31.62,30.90,1340279
"HD",37.75,"6/11/2007","9:46am",-0.20,37.78,37.83,37.62,459769
"HON",57.20,"6/11/2007","9:46am",-0.18,57.25,57.33,57.05,185700
"HPQ",46.14,"6/11/2007","9:46am",+0.44,45.80,46.15,45.46,797800
"IBM",103.39,"6/11/2007","9:46am",+0.32,102.87,103.47,102.50,413800
"INTC",21.85,"6/11/2007","9:50am",+0.02,21.70,21.93,21.69,4380516
"JNJ",62.52,"6/11/2007","9:46am",+0.39,62.89,62.89,62.15,548200
"JPM",50.48,"6/11/2007","9:46am",+0.07,50.41,50.55,50.27,657600
"KO",51.67,"6/11/2007","9:45am",0.00,51.67,51.77,51.54,4092550
"MCD",51.36,"6/11/2007","9:46am",-0.05,51.47,51.47,50.98,343719
"MMM",85.48,"6/11/2007","9:46am",-0.46,85.94,85.98,85.41,270900
"MO",70.00,"6/11/2007","9:46am",-0.30,70.25,70.30,69.88,723100
"MRK",50.50,"6/11/2007","9:46am",+0.36,50.30,50.63,50.04,1689100
"MSFT",30.175,"6/11/2007","9:50am",+0.125,30.05,30.20,29.93,7234309
"PFE",26.48,"6/11/2007","9:45am",-0.04,26.50,26.52,26.34,1363300
"PG",62.89,"6/11/2007","9:46am",-0.18,62.80,63.00,62.75,553446
"T",40.12,"6/11/2007","9:46am",-0.14,40.20,40.25,39.89,1073400
"UTX",69.92,"6/11/2007","9:46am",-0.31,69.85,70.20,69.51,244600
"VZ",43.09,"6/11/2007","9:46am",+0.02,42.95,43.17,42.89,515110
"WMT",49.78,"6/11/2007","9:46am",-0.30,49.90,50.00,49.65,949000
"XOM",82.60,"6/11/2007","9:46am",-0.08,82.68,82.84,82.35,934200
"AA",40.15,"6/11/2007","9:51am",+0.49,39.67,40.15,39.43,510630
"AIG",71.50,"6/11/2007","9:50am",-0.03,71.29,71.60,71.15,441900
"AXP",62.99,"6/11/2007","9:50am",-0.05,62.79,63.07,62.42,1067820
"BA",98.73,"6/11/2007","9:50am",+0.54,98.25,98.79,98.17,233900
"C",53.15,"6/11/2007","9:51am",-0.18,53.20,53.25,53.02,885114
"CAT",78.88,"6/11/2007","9:50am",+0.36,78.32,78.99,78.06,386652
"DD",51.13,"6/11/2007","9:50am",0.00,51.13,51.14,50.69,274100
"DIS",34.42,"6/11/2007","9:51am",+0.22,34.28,34.44,34.12,448200
"GE",37.35,"6/11/2007","9:50am",+0.03,37.07,37.37,37.05,1541100
"GM",31.28,"6/11/2007","9:50am",+0.28,31.00,31.62,30.90,1715679
"HD",37.74,"6/11/2007","9:51am",-0.21,37.78,37.83,37.62,553869
"HON",57.30,"6/11/2007","9:51am",-0.08,57.25,57.40,57.05,218000
"HPQ",46.26,"6/11/2007","9:51am",+0.56,45.80,46.26,45.46,1497780
"IBM",103.3781,"6/11/2007","9:50am",+0.3081,102.87,103.47,102.50,485800
"INTC",21.83,"6/11/2007","9:55am",0.00,21.70,21.93,21.69,4802496
"JNJ",62.68,"6/11/2007","9:51am",+0.55,62.89,62.89,62.15,756500
"JPM",50.50,"6/11/2007","9:50am",+0.09,50.41,50.55,50.27,851700
"KO",51.79,"6/11/2007","9:50am",+0.12,51.67,51.796,51.54,4175960
"MCD",51.39,"6/11/2007","9:50am",-0.02,51.47,51.47,50.98,407819
"MMM",85.74,"6/11/2007","9:50am",-0.20,85.94,85.98,85.41,311100
"MO",70.08,"6/11/2007","9:51am",-0.22,70.25,70.30,69.88,840100
"MRK",50.45,"6/11/2007","9:50am",+0.31,50.30,50.63,50.04,1830600
"MSFT",30.22,"6/11/2007","9:56am",+0.17,30.05,30.24,29.93,7724578
"PFE",26.45,"6/11/2007","9:51am",-0.07,26.50,26.52,26.34,1805950
"PG",63.10,"6/11/2007","9:50am",+0.03,62.80,63.10,62.75,715146
"T",40.16,"6/11/2007","9:50am",-0.10,40.20,40.25,39.89,1199500
"UTX",70.06,"6/11/2007","9:50am",-0.17,69.85,70.20,69.51,270900
"VZ",43.16,"6/11/2007","9:50am",+0.09,42.95,43.18,42.89,614810
"WMT",49.87,"6/11/2007","9:51am",-0.21,49.90,50.00,49.65,1181700
"XOM",82.77,"6/11/2007","9:50am",+0.09,82.68,82.86,82.35,1121100
"AA",39.97,"6/11/2007","9:55am",+0.31,39.67,40.18,39.43,598130
"AIG",71.43,"6/11/2007","9:55am",-0.10,71.29,71.60,71.15,487600
"AXP",62.89,"6/11/2007","9:55am",-0.15,62.79,63.07,62.42,1084520
"BA",98.66,"6/11/2007","9:56am",+0.47,98.25,98.79,98.17,265800
"C",53.14,"6/11/2007","9:56am",-0.19,53.20,53.25,53.02,954314
"CAT",78.87,"6/11/2007","9:55am",+0.35,78.32,78.99,78.06,425952
"DD",51.18,"6/11/2007","9:55am",+0.05,51.13,51.21,50.69,341500
"DIS",34.39,"6/11/2007","9:55am",+0.19,34.28,34.44,34.12,523200
"GE",37.39,"6/11/2007","9:56am",+0.07,37.07,37.40,37.05,1786900
"GM",31.31,"6/11/2007","9:55am",+0.31,31.00,31.62,30.90,2399379
"HD",37.75,"6/11/2007","9:55am",-0.20,37.78,37.83,37.62,622969
"HON",57.29,"6/11/2007","9:56am",-0.09,57.25,57.40,57.05,245000
"HPQ",46.25,"6/11/2007","9:56am",+0.55,45.80,46.27,45.46,1615680
"IBM",103.60,"6/11/2007","9:56am",+0.53,102.87,103.62,102.50,569900
"INTC",21.85,"6/11/2007","10:00am",+0.02,21.70,21.95,21.69,5440945
"JNJ",62.74,"6/11/2007","9:56am",+0.61,62.89,62.89,62.15,887700
"JPM",50.48,"6/11/2007","9:56am",+0.07,50.41,50.55,50.27,924300
"KO",51.63,"6/11/2007","9:56am",-0.04,51.67,51.82,51.54,4247360
"MCD",51.40,"6/11/2007","9:56am",-0.01,51.47,51.47,50.98,448219
"MMM",85.69,"6/11/2007","9:55am",-0.25,85.94,85.98,85.41,323200
"MO",70.10,"6/11/2007","9:56am",-0.20,70.25,70.30,69.88,932900
"MRK",50.38,"6/11/2007","9:55am",+0.24,50.30,50.63,50.04,1943600
"MSFT",30.20,"6/11/2007","10:01am",+0.15,30.05,30.24,29.93,8053754
"PFE",26.48,"6/11/2007","9:55am",-0.04,26.50,26.53,26.34,2029150
"PG",63.07,"6/11/2007","9:56am",0.00,62.80,63.10,62.75,786646
"T",40.08,"6/11/2007","9:56am",-0.18,40.20,40.25,39.89,1364200
"UTX",70.06,"6/11/2007","9:56am",-0.17,69.85,70.20,69.51,289300
"VZ",43.17,"6/11/2007","9:56am",+0.10,42.95,43.19,42.89,683810
"WMT",49.88,"6/11/2007","9:56am",-0.20,49.90,50.00,49.65,1321100
"XOM",82.68,"6/11/2007","9:56am",0.00,82.68,82.86,82.35,1235100
"AA",39.94,"6/11/2007","10:00am",+0.28,39.67,40.18,39.43,660280
"AIG",71.36,"6/11/2007","10:00am",-0.17,71.29,71.60,71.15,575042
"AXP",62.83,"6/11/2007","10:00am",-0.21,62.79,63.07,62.42,1110520
"BA",98.62,"6/11/2007","10:01am",+0.43,98.25,98.79,98.17,285700
"C",53.06,"6/11/2007","10:01am",-0.27,53.20,53.25,53.02,1030199
"CAT",78.66,"6/11/2007","10:00am",+0.14,78.32,78.99,78.06,452352
"DD",51.09,"6/11/2007","10:01am",-0.04,51.13,51.21,50.69,402900
"DIS",34.33,"6/11/2007","10:01am",+0.13,34.28,34.44,34.12,740300
"GE",37.41,"6/11/2007","10:01am",+0.09,37.07,37.41,37.05,2106900
"GM",31.29,"6/11/2007","10:01am",+0.29,31.00,31.62,30.90,2570679
"HD",37.76,"6/11/2007","10:00am",-0.19,37.78,37.83,37.62,683769
"HON",57.335,"6/11/2007","10:01am",-0.045,57.25,57.40,57.05,289100
"HPQ",46.25,"6/11/2007","10:01am",+0.55,45.80,46.29,45.46,1752080
"IBM",103.51,"6/11/2007","10:01am",+0.44,102.87,103.63,102.50,607300
"INTC",21.85,"6/11/2007","10:05am",+0.02,21.70,21.95,21.69,5955030
"JNJ",62.75,"6/11/2007","10:01am",+0.62,62.89,62.89,62.15,1031900
"JPM",50.45,"6/11/2007","10:00am",+0.04,50.41,50.55,50.27,1010000
"KO",51.55,"6/11/2007","10:00am",-0.12,51.67,51.82,51.54,4283460
"MCD",51.34,"6/11/2007","10:01am",-0.07,51.47,51.47,50.98,481919
"MMM",85.75,"6/11/2007","10:00am",-0.19,85.94,85.98,85.41,332600
"MO",70.07,"6/11/2007","10:00am",-0.23,70.25,70.30,69.88,1007630
"MRK",50.32,"6/11/2007","10:01am",+0.18,50.30,50.64,50.04,2165200
"MSFT",30.21,"6/11/2007","10:05am",+0.16,30.05,30.25,29.93,8448925
"PFE",26.45,"6/11/2007","10:01am",-0.07,26.50,26.53,26.34,2252150
"PG",63.02,"6/11/2007","10:01am",-0.05,62.80,63.10,62.75,867746
"T",40.05,"6/11/2007","10:01am",-0.21,40.20,40.25,39.89,1496200
"UTX",70.00,"6/11/2007","10:00am",-0.23,69.85,70.20,69.51,308500
"VZ",43.11,"6/11/2007","10:00am",+0.04,42.95,43.19,42.89,804110
"WMT",49.78,"6/11/2007","10:01am",-0.30,49.90,50.00,49.65,1378500
"XOM",82.71,"6/11/2007","10:00am",+0.03,82.68,82.86,82.35,1379100
"AA",39.92,"6/11/2007","10:05am",+0.26,39.67,40.18,39.43,693080
"AIG",71.29,"6/11/2007","10:05am",-0.24,71.29,71.60,71.15,630742
"AXP",62.74,"6/11/2007","10:05am",-0.30,62.79,63.07,62.42,1149120
"BA",98.47,"6/11/2007","10:06am",+0.28,98.25,98.79,98.17,306700
"C",52.97,"6/11/2007","10:06am",-0.36,53.20,53.25,52.92,1191699
"CAT",78.56,"6/11/2007","10:06am",+0.04,78.32,78.99,78.06,512752
"DD",51.068,"6/11/2007","10:05am",-0.062,51.13,51.21,50.69,490000
"DIS",34.29,"6/11/2007","10:05am",+0.09,34.28,34.44,34.12,790550
"GE",37.36,"6/11/2007","10:06am",+0.04,37.07,37.41,37.05,2388519
"GM",31.35,"6/11/2007","10:05am",+0.35,31.00,31.62,30.90,2770879
"HD",37.75,"6/11/2007","10:06am",-0.20,37.78,37.83,37.62,909569
"HON",57.22,"6/11/2007","10:06am",-0.16,57.25,57.40,57.05,307300
"HPQ",46.22,"6/11/2007","10:05am",+0.52,45.80,46.29,45.46,1904480
"IBM",103.57,"6/11/2007","10:05am",+0.50,102.87,103.63,102.50,666400
"INTC",21.83,"6/11/2007","10:10am",0.00,21.70,21.95,21.69,6319637
"JNJ",62.70,"6/11/2007","10:06am",+0.57,62.89,62.89,62.15,1138900
"JPM",50.35,"6/11/2007","10:05am",-0.06,50.41,50.55,50.27,1112900
"KO",51.57,"6/11/2007","10:06am",-0.10,51.67,51.82,51.53,4320060
"MCD",51.31,"6/11/2007","10:06am",-0.10,51.47,51.47,50.98,533219
"MMM",85.76,"6/11/2007","10:05am",-0.18,85.94,85.98,85.41,384000
"MO",69.99,"6/11/2007","10:05am",-0.31,70.25,70.30,69.88,1191130
"MRK",50.35,"6/11/2007","10:06am",+0.21,50.30,50.64,50.04,2250500
"MSFT",30.18,"6/11/2007","10:11am",+0.13,30.05,30.25,29.93,9049059
"PFE",26.41,"6/11/2007","10:05am",-0.11,26.50,26.53,26.34,2353550
"PG",63.03,"6/11/2007","10:06am",-0.04,62.80,63.10,62.75,920246
"T",40.04,"6/11/2007","10:06am",-0.22,40.20,40.25,39.89,1644100
"UTX",69.95,"6/11/2007","10:05am",-0.28,69.85,70.20,69.51,332000
"VZ",43.04,"6/11/2007","10:05am",-0.03,42.95,43.19,42.89,886910
"WMT",49.70,"6/11/2007","10:05am",-0.38,49.90,50.00,49.65,1450500
"XOM",82.8681,"6/11/2007","10:05am",+0.1881,82.68,82.89,82.35,1544600
"AA",39.91,"6/11/2007","10:11am",+0.25,39.67,40.18,39.43,755880
"AIG",71.29,"6/11/2007","10:11am",-0.24,71.29,71.60,71.15,706842
"AXP",62.79,"6/11/2007","10:10am",-0.25,62.79,63.07,62.42,1183320
"BA",98.45,"6/11/2007","10:11am",+0.26,98.25,98.79,98.17,344500
"C",52.926,"6/11/2007","10:11am",-0.404,53.20,53.25,52.91,1347199
"CAT",78.58,"6/11/2007","10:11am",+0.06,78.32,78.99,78.06,559652
"DD",50.999,"6/11/2007","10:11am",-0.131,51.13,51.21,50.69,542900
"DIS",34.29,"6/11/2007","10:11am",+0.09,34.28,34.44,34.12,836650
"GE",37.38,"6/11/2007","10:11am",+0.06,37.07,37.41,37.05,2643919
"GM",31.30,"6/11/2007","10:11am",+0.30,31.00,31.62,30.90,2943679
"HD",37.75,"6/11/2007","10:11am",-0.20,37.78,37.83,37.62,1015369
"HON",57.23,"6/11/2007","10:11am",-0.15,57.25,57.40,57.05,332200
"HPQ",46.18,"6/11/2007","10:11am",+0.48,45.80,46.29,45.46,2006780
"IBM",103.35,"6/11/2007","10:11am",+0.28,102.87,103.63,102.50,734000
"INTC",21.83,"6/11/2007","10:16am",0.00,21.70,21.95,21.69,6790042
"JNJ",62.71,"6/11/2007","10:11am",+0.58,62.89,62.89,62.15,1274000
"JPM",50.28,"6/11/2007","10:11am",-0.13,50.41,50.55,50.26,1187600
"KO",51.56,"6/11/2007","10:11am",-0.11,51.67,51.82,51.53,4370560
"MCD",51.25,"6/11/2007","10:11am",-0.16,51.47,51.47,50.98,587519
"MMM",85.78,"6/11/2007","10:10am",-0.16,85.94,85.98,85.41,414300
"MO",69.95,"6/11/2007","10:11am",-0.35,70.25,70.30,69.88,1273530
"MRK",50.29,"6/11/2007","10:11am",+0.15,50.30,50.64,50.04,2332500
"MSFT",30.14,"6/11/2007","10:16am",+0.09,30.05,30.25,29.93,9998935
"PFE",26.449,"6/11/2007","10:10am",-0.071,26.50,26.53,26.34,2551150
"PG",63.07,"6/11/2007","10:10am",0.00,62.80,63.10,62.75,1010846
"T",40.04,"6/11/2007","10:10am",-0.22,40.20,40.25,39.89,1922900
"UTX",69.91,"6/11/2007","10:11am",-0.32,69.85,70.20,69.51,354300
"VZ",43.10,"6/11/2007","10:10am",+0.03,42.95,43.19,42.89,998110
"WMT",49.73,"6/11/2007","10:11am",-0.35,49.90,50.00,49.65,1577400
"XOM",83.02,"6/11/2007","10:11am",+0.34,82.68,83.11,82.35,1789600
"AA",39.76,"6/11/2007","10:15am",+0.10,39.67,40.18,39.43,804580
"AIG",71.29,"6/11/2007","10:16am",-0.24,71.29,71.60,71.15,781442
"AXP",62.69,"6/11/2007","10:16am",-0.35,62.79,63.07,62.42,1212120
"BA",98.29,"6/11/2007","10:16am",+0.10,98.25,98.79,98.17,373200
"C",52.91,"6/11/2007","10:16am",-0.42,53.20,53.25,52.84,1455899
"CAT",78.51,"6/11/2007","10:16am",-0.01,78.32,78.99,78.06,607452
"DD",51.02,"6/11/2007","10:16am",-0.11,51.13,51.21,50.69,576600
"DIS",34.25,"6/11/2007","10:16am",+0.05,34.28,34.44,34.12,880150
"GE",37.32,"6/11/2007","10:16am",0.00,37.07,37.41,37.05,2784119
"GM",31.28,"6/11/2007","10:16am",+0.28,31.00,31.62,30.90,3270779
"HD",37.76,"6/11/2007","10:16am",-0.19,37.78,37.83,37.62,1141469
"HON",57.11,"6/11/2007","10:16am",-0.27,57.25,57.40,57.05,379600
"HPQ",46.06,"6/11/2007","10:16am",+0.36,45.80,46.29,45.46,2073280
"IBM",103.17,"6/11/2007","10:16am",+0.10,102.87,103.63,102.50,798600
"INTC",21.84,"6/11/2007","10:20am",+0.01,21.70,21.95,21.69,7235829
"JNJ",62.66,"6/11/2007","10:16am",+0.53,62.89,62.89,62.15,1412600
"JPM",50.23,"6/11/2007","10:16am",-0.18,50.41,50.55,50.20,1304200
"KO",51.52,"6/11/2007","10:16am",-0.15,51.67,51.82,51.50,4471160
"MCD",51.17,"6/11/2007","10:15am",-0.24,51.47,51.47,50.98,640119
"MMM",85.69,"6/11/2007","10:15am",-0.25,85.94,85.98,85.41,436200
"MO",69.90,"6/11/2007","10:15am",-0.40,70.25,70.30,69.88,1350130
"MRK",50.375,"6/11/2007","10:16am",+0.235,50.30,50.64,50.04,2501800
"MSFT",30.105,"6/11/2007","10:21am",+0.055,30.05,30.25,29.93,11615862
"PFE",26.43,"6/11/2007","10:16am",-0.09,26.50,26.53,26.34,2699150
"PG",63.03,"6/11/2007","10:15am",-0.04,62.80,63.10,62.75,1084346
"T",40.04,"6/11/2007","10:16am",-0.22,40.20,40.25,39.89,2049000
"UTX",69.80,"6/11/2007","10:16am",-0.43,69.85,70.20,69.51,390200
"VZ",43.12,"6/11/2007","10:16am",+0.05,42.95,43.19,42.89,1540810
"WMT",49.71,"6/11/2007","10:16am",-0.37,49.90,50.00,49.65,1700900
"XOM",82.79,"6/11/2007","10:16am",+0.11,82.68,83.11,82.35,1945300
"AA",39.7264,"6/11/2007","10:21am",+0.0664,39.67,40.18,39.43,860780
"AIG",71.28,"6/11/2007","10:21am",-0.25,71.29,71.60,71.15,826742
"AXP",62.775,"6/11/2007","10:21am",-0.265,62.79,63.07,62.42,1262720
"BA",98.17,"6/11/2007","10:21am",-0.02,98.25,98.79,98.15,420500
"C",52.89,"6/11/2007","10:20am",-0.44,53.20,53.25,52.84,1554299
"CAT",78.46,"6/11/2007","10:21am",-0.06,78.32,78.99,78.06,645152
"DD",51.02,"6/11/2007","10:20am",-0.11,51.13,51.21,50.69,616000
"DIS",34.29,"6/11/2007","10:21am",+0.09,34.28,34.44,34.12,961150
"GE",37.31,"6/11/2007","10:21am",-0.01,37.07,37.41,37.05,2994719
"GM",31.16,"6/11/2007","10:21am",+0.16,31.00,31.62,30.90,3450979
"HD",37.75,"6/11/2007","10:20am",-0.20,37.78,37.83,37.62,1239969
"HON",57.14,"6/11/2007","10:21am",-0.24,57.25,57.40,57.05,427800
"HPQ",46.08,"6/11/2007","10:21am",+0.38,45.80,46.29,45.46,2169080
"IBM",103.24,"6/11/2007","10:21am",+0.17,102.87,103.63,102.50,1110200
"INTC",21.85,"6/11/2007","10:26am",+0.02,21.70,21.95,21.69,7668158
"JNJ",62.65,"6/11/2007","10:21am",+0.52,62.89,62.89,62.15,1466978
"JPM",50.14,"6/11/2007","10:21am",-0.27,50.41,50.55,50.13,1391100
"KO",51.44,"6/11/2007","10:20am",-0.23,51.67,51.82,51.44,4528060
"MCD",51.19,"6/11/2007","10:20am",-0.22,51.47,51.47,50.98,694019
"MMM",85.58,"6/11/2007","10:20am",-0.36,85.94,85.98,85.41,455600
"MO",69.86,"6/11/2007","10:21am",-0.44,70.25,70.30,69.76,1542230
"MRK",50.34,"6/11/2007","10:21am",+0.20,50.30,50.64,50.04,2582400
"MSFT",30.10,"6/11/2007","10:26am",+0.05,30.05,30.25,29.93,12004109
"PFE",26.43,"6/11/2007","10:21am",-0.09,26.50,26.53,26.34,2986570
"PG",63.06,"6/11/2007","10:21am",-0.01,62.80,63.10,62.75,1165646
"T",40.04,"6/11/2007","10:20am",-0.22,40.20,40.25,39.89,2229600
"UTX",69.66,"6/11/2007","10:21am",-0.57,69.85,70.20,69.51,420400
"VZ",43.12,"6/11/2007","10:21am",+0.05,42.95,43.19,42.89,1615410
"WMT",49.65,"6/11/2007","10:21am",-0.43,49.90,50.00,49.65,1851200
"XOM",82.84,"6/11/2007","10:21am",+0.16,82.68,83.11,82.35,2132200
"AA",39.63,"6/11/2007","10:26am",-0.03,39.67,40.18,39.43,899080
"AIG",71.30,"6/11/2007","10:26am",-0.23,71.29,71.60,71.15,896542
"AXP",62.80,"6/11/2007","10:26am",-0.24,62.79,63.07,62.42,1296620
"BA",98.04,"6/11/2007","10:26am",-0.15,98.25,98.79,97.96,466900
"C",52.91,"6/11/2007","10:26am",-0.42,53.20,53.25,52.81,1672699
"CAT",78.37,"6/11/2007","10:26am",-0.15,78.32,78.99,78.06,704152
"DD",50.94,"6/11/2007","10:25am",-0.19,51.13,51.21,50.69,643200
"DIS",34.24,"6/11/2007","10:26am",+0.04,34.28,34.44,34.12,1025550
"GE",37.26,"6/11/2007","10:26am",-0.06,37.07,37.41,37.05,3290619
"GM",31.22,"6/11/2007","10:26am",+0.22,31.00,31.62,30.90,4096679
"HD",37.75,"6/11/2007","10:26am",-0.20,37.78,37.83,37.62,1559369
"HON",57.10,"6/11/2007","10:26am",-0.28,57.25,57.40,57.03,450900
"HPQ",46.10,"6/11/2007","10:26am",+0.40,45.80,46.29,45.46,2260680
"IBM",103.20,"6/11/2007","10:26am",+0.13,102.87,103.63,102.50,1147300
"INTC",21.84,"6/11/2007","10:31am",+0.01,21.70,21.95,21.69,8125254
"JNJ",62.55,"6/11/2007","10:26am",+0.42,62.89,62.89,62.15,1616778
"JPM",50.14,"6/11/2007","10:26am",-0.27,50.41,50.55,50.05,1498700
"KO",51.39,"6/11/2007","10:26am",-0.28,51.67,51.82,51.32,4607560
"MCD",51.17,"6/11/2007","10:25am",-0.24,51.47,51.47,50.98,740919
"MMM",85.51,"6/11/2007","10:26am",-0.43,85.94,85.98,85.41,478800
"MO",69.85,"6/11/2007","10:26am",-0.45,70.25,70.30,69.76,1670405
"MRK",50.32,"6/11/2007","10:25am",+0.18,50.30,50.64,50.04,2654700
"MSFT",30.09,"6/11/2007","10:31am",+0.04,30.05,30.25,29.93,12221463
"PFE",26.39,"6/11/2007","10:26am",-0.13,26.50,26.53,26.34,3224570
"PG",63.04,"6/11/2007","10:25am",-0.03,62.80,63.10,62.75,1243746
"T",40.001,"6/11/2007","10:26am",-0.259,40.20,40.25,39.89,2441800
"UTX",69.63,"6/11/2007","10:26am",-0.60,69.85,70.20,69.51,446700
"VZ",43.12,"6/11/2007","10:26am",+0.05,42.95,43.19,42.89,1681910
"WMT",49.595,"6/11/2007","10:26am",-0.485,49.90,50.00,49.57,1951400
"XOM",82.79,"6/11/2007","10:26am",+0.11,82.68,83.11,82.35,2330500
"AA",39.555,"6/11/2007","10:31am",-0.105,39.67,40.18,39.43,944980
"AIG",71.32,"6/11/2007","10:30am",-0.21,71.29,71.60,71.15,953042
"AXP",62.79,"6/11/2007","10:31am",-0.25,62.79,63.07,62.42,1329020
"BA",97.85,"6/11/2007","10:31am",-0.34,98.25,98.79,97.74,531200
"C",52.92,"6/11/2007","10:31am",-0.41,53.20,53.25,52.81,1746999
"CAT",78.43,"6/11/2007","10:30am",-0.09,78.32,78.99,78.06,751652
"DD",50.88,"6/11/2007","10:30am",-0.25,51.13,51.21,50.69,698200
"DIS",34.21,"6/11/2007","10:30am",+0.01,34.28,34.44,34.12,1097150
"GE",37.28,"6/11/2007","10:31am",-0.04,37.07,37.41,37.05,3653019
"GM",31.15,"6/11/2007","10:31am",+0.15,31.00,31.62,30.90,4256179
"HD",37.75,"6/11/2007","10:31am",-0.20,37.78,37.83,37.62,1712669
"HON",57.09,"6/11/2007","10:30am",-0.29,57.25,57.40,57.03,481100
"HPQ",46.08,"6/11/2007","10:30am",+0.38,45.80,46.29,45.46,2341480
"IBM",103.20,"6/11/2007","10:30am",+0.13,102.87,103.63,102.50,1182000
"INTC",21.85,"6/11/2007","10:36am",+0.02,21.70,21.95,21.69,8728776
"JNJ",62.59,"6/11/2007","10:31am",+0.46,62.89,62.89,62.15,1771778
"JPM",50.13,"6/11/2007","10:30am",-0.28,50.41,50.55,50.05,1552000
"KO",51.34,"6/11/2007","10:31am",-0.33,51.67,51.82,51.32,4669560
"MCD",51.20,"6/11/2007","10:30am",-0.21,51.47,51.47,50.98,779219
"MMM",85.54,"6/11/2007","10:30am",-0.40,85.94,85.98,85.41,502100
"MO",69.89,"6/11/2007","10:31am",-0.41,70.25,70.30,69.76,1759605
"MRK",50.35,"6/11/2007","10:30am",+0.21,50.30,50.64,50.04,2706300
"MSFT",30.11,"6/11/2007","10:36am",+0.06,30.05,30.25,29.93,12723552
"PFE",26.38,"6/11/2007","10:30am",-0.14,26.50,26.53,26.34,3420170
"PG",63.07,"6/11/2007","10:31am",0.00,62.80,63.10,62.75,1285746
"T",40.05,"6/11/2007","10:30am",-0.21,40.20,40.25,39.89,2609700
"UTX",69.60,"6/11/2007","10:31am",-0.63,69.85,70.20,69.51,500000
"VZ",43.15,"6/11/2007","10:30am",+0.08,42.95,43.19,42.89,1759910
"WMT",49.61,"6/11/2007","10:31am",-0.47,49.90,50.00,49.57,2038300
"XOM",82.69,"6/11/2007","10:31am",+0.01,82.68,83.11,82.35,2496800
"AA",39.56,"6/11/2007","10:36am",-0.10,39.67,40.18,39.43,999880
"AIG",71.37,"6/11/2007","10:36am",-0.16,71.29,71.60,71.15,991742
"AXP",62.89,"6/11/2007","10:36am",-0.15,62.79,63.07,62.42,1356220
"BA",98.00,"6/11/2007","10:36am",-0.19,98.25,98.79,97.74,561900
"C",52.97,"6/11/2007","10:36am",-0.36,53.20,53.25,52.81,1864099
"CAT",78.53,"6/11/2007","10:36am",+0.01,78.32,78.99,78.06,785752
"DD",50.85,"6/11/2007","10:35am",-0.28,51.13,51.21,50.69,754500
"DIS",34.22,"6/11/2007","10:36am",+0.02,34.28,34.44,34.12,1157550
"GE",37.30,"6/11/2007","10:36am",-0.02,37.07,37.41,37.05,3926919
"GM",31.15,"6/11/2007","10:36am",+0.15,31.00,31.62,30.90,4421279
"HD",37.76,"6/11/2007","10:36am",-0.19,37.78,37.83,37.62,1911069
"HON",57.08,"6/11/2007","10:36am",-0.30,57.25,57.40,57.00,530800
"HPQ",46.01,"6/11/2007","10:35am",+0.31,45.80,46.29,45.46,2464880
"IBM",103.19,"6/11/2007","10:36am",+0.12,102.87,103.63,102.50,1242400
"INTC",21.88,"6/11/2007","10:41am",+0.05,21.70,21.95,21.69,9039718
"JNJ",62.54,"6/11/2007","10:35am",+0.41,62.89,62.89,62.15,1848378
"JPM",50.17,"6/11/2007","10:36am",-0.24,50.41,50.55,50.05,1615800
"KO",51.37,"6/11/2007","10:35am",-0.30,51.67,51.82,51.32,4715160
"MCD",51.19,"6/11/2007","10:36am",-0.22,51.47,51.47,50.98,862419
"MMM",85.60,"6/11/2007","10:36am",-0.34,85.94,85.98,85.41,535100
"MO",69.90,"6/11/2007","10:36am",-0.40,70.25,70.30,69.76,1818105
"MRK",50.405,"6/11/2007","10:36am",+0.265,50.30,50.64,50.04,2773500
"MSFT",30.08,"6/11/2007","10:41am",+0.03,30.05,30.25,29.93,13110210
"PFE",26.37,"6/11/2007","10:36am",-0.15,26.50,26.53,26.34,3656096
"PG",63.07,"6/11/2007","10:36am",0.00,62.80,63.10,62.75,1344746
"T",40.03,"6/11/2007","10:36am",-0.23,40.20,40.25,39.89,2759900
"UTX",69.6875,"6/11/2007","10:36am",-0.5425,69.85,70.20,69.51,573400
"VZ",43.17,"6/11/2007","10:36am",+0.10,42.95,43.19,42.89,1809710
"WMT",49.71,"6/11/2007","10:36am",-0.37,49.90,50.00,49.56,2171500
"XOM",82.87,"6/11/2007","10:36am",+0.19,82.68,83.11,82.35,2657200
"AA",39.59,"6/11/2007","10:41am",-0.07,39.67,40.18,39.43,1035980
"AIG",71.38,"6/11/2007","10:41am",-0.15,71.29,71.60,71.15,1036342
"AXP",62.99,"6/11/2007","10:40am",-0.05,62.79,63.07,62.42,1401320
"BA",97.98,"6/11/2007","10:40am",-0.21,98.25,98.79,97.74,586200
"C",53.04,"6/11/2007","10:41am",-0.29,53.20,53.25,52.81,1974394
"CAT",78.47,"6/11/2007","10:40am",-0.05,78.32,78.99,78.06,811452
"DD",50.75,"6/11/2007","10:41am",-0.38,51.13,51.21,50.69,816700
"DIS",34.22,"6/11/2007","10:41am",+0.02,34.28,34.44,34.12,1264950
"GE",37.32,"6/11/2007","10:41am",0.00,37.07,37.41,37.05,4056919
"GM",31.15,"6/11/2007","10:41am",+0.15,31.00,31.62,30.90,4500679
"HD",37.74,"6/11/2007","10:40am",-0.21,37.78,37.83,37.62,1949569
"HON",57.05,"6/11/2007","10:40am",-0.33,57.25,57.40,57.00,566900
"HPQ",45.95,"6/11/2007","10:41am",+0.25,45.80,46.29,45.46,2574530
"IBM",103.23,"6/11/2007","10:40am",+0.16,102.87,103.63,102.50,1272000
"INTC",21.88,"6/11/2007","10:46am",+0.05,21.70,21.95,21.69,9537433
"JNJ",62.52,"6/11/2007","10:41am",+0.39,62.89,62.89,62.15,1896678
"JPM",50.18,"6/11/2007","10:41am",-0.23,50.41,50.55,50.05,1682000
"KO",51.38,"6/11/2007","10:40am",-0.29,51.67,51.82,51.32,4744560
"MCD",51.20,"6/11/2007","10:40am",-0.21,51.47,51.47,50.98,903219
"MMM",85.61,"6/11/2007","10:40am",-0.33,85.94,85.98,85.41,544900
"MO",69.95,"6/11/2007","10:40am",-0.35,70.25,70.30,69.76,1858005
"MRK",50.49,"6/11/2007","10:40am",+0.35,50.30,50.64,50.04,2889100
"MSFT",30.022,"6/11/2007","10:45am",-0.028,30.05,30.25,29.93,13503536
"PFE",26.365,"6/11/2007","10:40am",-0.155,26.50,26.53,26.34,3770896
"PG",63.08,"6/11/2007","10:41am",+0.01,62.80,63.12,62.75,1435146
"T",39.99,"6/11/2007","10:41am",-0.27,40.20,40.25,39.89,2921500
"UTX",69.77,"6/11/2007","10:41am",-0.46,69.85,70.20,69.51,589900
"VZ",43.19,"6/11/2007","10:40am",+0.12,42.95,43.19,42.89,1878010
"WMT",49.625,"6/11/2007","10:41am",-0.455,49.90,50.00,49.56,2239000
"XOM",82.89,"6/11/2007","10:40am",+0.21,82.68,83.11,82.35,2766800
"AA",39.54,"6/11/2007","10:46am",-0.12,39.67,40.18,39.43,1080380
"AIG",71.32,"6/11/2007","10:46am",-0.21,71.29,71.60,71.15,1071642
"AXP",62.85,"6/11/2007","10:46am",-0.19,62.79,63.07,62.42,1441520
"BA",98.00,"6/11/2007","10:45am",-0.19,98.25,98.79,97.74,632300
"C",52.95,"6/11/2007","10:46am",-0.38,53.20,53.25,52.81,2045194
"CAT",78.50,"6/11/2007","10:45am",-0.02,78.32,78.99,78.06,834252
"DD",50.64,"6/11/2007","10:46am",-0.49,51.13,51.21,50.63,893400
"DIS",34.21,"6/11/2007","10:45am",+0.01,34.28,34.44,34.12,1344850
"GE",37.2627,"6/11/2007","10:46am",-0.0573,37.07,37.41,37.05,4537419
"GM",31.13,"6/11/2007","10:45am",+0.13,31.00,31.62,30.90,4598979
"HD",37.73,"6/11/2007","10:46am",-0.22,37.78,37.83,37.62,2039969
"HON",57.05,"6/11/2007","10:45am",-0.33,57.25,57.40,57.00,611200
"HPQ",45.89,"6/11/2007","10:46am",+0.19,45.80,46.29,45.46,2729030
"IBM",103.19,"6/11/2007","10:46am",+0.12,102.87,103.63,102.50,1319400
"INTC",21.90,"6/11/2007","10:51am",+0.07,21.70,21.95,21.69,9897575
"JNJ",62.42,"6/11/2007","10:46am",+0.29,62.89,62.89,62.15,1948833
"JPM",50.20,"6/11/2007","10:46am",-0.21,50.41,50.55,50.05,1760600
"KO",51.38,"6/11/2007","10:46am",-0.29,51.67,51.82,51.32,4787060
"MCD",51.21,"6/11/2007","10:45am",-0.20,51.47,51.47,50.98,957919
"MMM",85.54,"6/11/2007","10:45am",-0.40,85.94,85.98,85.41,565800
"MO",69.96,"6/11/2007","10:45am",-0.34,70.25,70.30,69.76,1992005
"MRK",50.41,"6/11/2007","10:45am",+0.27,50.30,50.64,50.04,2985100
"MSFT",30.04,"6/11/2007","10:50am",-0.01,30.05,30.25,29.93,13852152
"PFE",26.37,"6/11/2007","10:46am",-0.15,26.50,26.53,26.34,4020496
"PG",63.02,"6/11/2007","10:45am",-0.05,62.80,63.12,62.75,1542146
"T",39.95,"6/11/2007","10:46am",-0.31,40.20,40.25,39.89,3119000
"UTX",69.72,"6/11/2007","10:45am",-0.51,69.85,70.20,69.51,611500
"VZ",43.18,"6/11/2007","10:45am",+0.11,42.95,43.20,42.89,1971710
"WMT",49.60,"6/11/2007","10:46am",-0.48,49.90,50.00,49.56,2280600
"XOM",82.72,"6/11/2007","10:46am",+0.04,82.68,83.11,82.35,2888400
"AA",39.65,"6/11/2007","10:50am",-0.01,39.67,40.18,39.43,1109080
"AIG",71.44,"6/11/2007","10:50am",-0.09,71.29,71.60,71.15,1102442
"AXP",62.83,"6/11/2007","10:50am",-0.21,62.79,63.07,62.42,1484920
"BA",98.11,"6/11/2007","10:51am",-0.08,98.25,98.79,97.74,653100
"C",53.01,"6/11/2007","10:51am",-0.32,53.20,53.25,52.81,2147094
"CAT",78.56,"6/11/2007","10:50am",+0.04,78.32,78.99,78.06,857252
"DD",50.78,"6/11/2007","10:50am",-0.35,51.13,51.21,50.62,931500
"DIS",34.24,"6/11/2007","10:51am",+0.04,34.28,34.44,34.12,1456950
"GE",37.29,"6/11/2007","10:51am",-0.03,37.07,37.41,37.05,6374978
"GM",31.17,"6/11/2007","10:50am",+0.17,31.00,31.62,30.90,4686579
"HD",37.745,"6/11/2007","10:51am",-0.205,37.78,37.83,37.62,2111769
"HON",57.14,"6/11/2007","10:51am",-0.24,57.25,57.40,57.00,672700
"HPQ",46.03,"6/11/2007","10:51am",+0.33,45.80,46.29,45.46,2822530
"IBM",103.39,"6/11/2007","10:51am",+0.32,102.87,103.63,102.50,1365400
"INTC",21.89,"6/11/2007","10:56am",+0.06,21.70,21.95,21.69,10794661
"JNJ",62.60,"6/11/2007","10:51am",+0.47,62.89,62.89,62.15,2051122
"JPM",50.25,"6/11/2007","10:50am",-0.16,50.41,50.55,50.05,1853000
"KO",51.46,"6/11/2007","10:51am",-0.21,51.67,51.82,51.32,4861660
"MCD",51.34,"6/11/2007","10:50am",-0.07,51.47,51.47,50.98,999019
"MMM",85.53,"6/11/2007","10:50am",-0.41,85.94,85.98,85.41,582200
"MO",70.0411,"6/11/2007","10:51am",-0.2589,70.25,70.30,69.76,2064105
"MRK",50.48,"6/11/2007","10:51am",+0.34,50.30,50.64,50.04,3053000
"MSFT",30.01,"6/11/2007","10:56am",-0.04,30.05,30.25,29.93,14553915
"PFE",26.385,"6/11/2007","10:51am",-0.135,26.50,26.53,26.34,4373096
"PG",63.04,"6/11/2007","10:51am",-0.03,62.80,63.12,62.75,1613346
"T",39.97,"6/11/2007","10:51am",-0.29,40.20,40.25,39.89,3263300
"UTX",69.79,"6/11/2007","10:51am",-0.44,69.85,70.20,69.51,629700
"VZ",43.19,"6/11/2007","10:50am",+0.12,42.95,43.20,42.89,2067610
"WMT",49.70,"6/11/2007","10:51am",-0.38,49.90,50.00,49.56,2349800
"XOM",82.73,"6/11/2007","10:51am",+0.05,82.68,83.11,82.35,2994800
"AA",39.67,"6/11/2007","10:56am",+0.01,39.67,40.18,39.43,1139080
"AIG",71.45,"6/11/2007","10:55am",-0.08,71.29,71.60,71.15,1141342
"AXP",62.94,"6/11/2007","10:56am",-0.10,62.79,63.07,62.42,1517420
"BA",98.18,"6/11/2007","10:56am",-0.01,98.25,98.79,97.74,695900
"C",53.02,"6/11/2007","10:56am",-0.31,53.20,53.25,52.81,2245494
"CAT",78.57,"6/11/2007","10:56am",+0.05,78.32,78.99,78.06,892252
"DD",50.8276,"6/11/2007","10:55am",-0.3024,51.13,51.21,50.62,991900
"DIS",34.23,"6/11/2007","10:56am",+0.03,34.28,34.44,34.12,1533350
"GE",37.34,"6/11/2007","10:56am",+0.02,37.07,37.41,37.05,6871678
"GM",31.20,"6/11/2007","10:56am",+0.20,31.00,31.62,30.90,4845779
"HD",37.74,"6/11/2007","10:56am",-0.21,37.78,37.83,37.62,2282669
"HON",57.17,"6/11/2007","10:56am",-0.21,57.25,57.40,57.00,700800
"HPQ",46.07,"6/11/2007","10:56am",+0.37,45.80,46.29,45.46,2941930
"IBM",103.48,"6/11/2007","10:56am",+0.41,102.87,103.63,102.50,1449900
"INTC",21.93,"6/11/2007","11:01am",+0.10,21.70,21.95,21.69,11463765
"JNJ",62.47,"6/11/2007","10:56am",+0.34,62.89,62.89,62.15,2184222
"JPM",50.27,"6/11/2007","10:56am",-0.14,50.41,50.55,50.05,1992300
"KO",51.45,"6/11/2007","10:56am",-0.22,51.67,51.82,51.32,4959242
"MCD",51.39,"6/11/2007","10:56am",-0.02,51.47,51.47,50.98,1065114
"MMM",85.58,"6/11/2007","10:56am",-0.36,85.94,85.98,85.41,603300
"MO",70.09,"6/11/2007","10:56am",-0.21,70.25,70.30,69.76,2152505
"MRK",50.45,"6/11/2007","10:56am",+0.31,50.30,50.64,50.04,3120700
"MSFT",29.985,"6/11/2007","11:01am",-0.065,30.05,30.25,29.93,15025412
"PFE",26.35,"6/11/2007","10:55am",-0.17,26.50,26.53,26.34,4707596
"PG",63.01,"6/11/2007","10:56am",-0.06,62.80,63.12,62.75,1804846
"T",40.01,"6/11/2007","10:56am",-0.25,40.20,40.25,39.89,3433900
"UTX",69.90,"6/11/2007","10:56am",-0.33,69.85,70.20,69.51,647800
"VZ",43.17,"6/11/2007","10:56am",+0.10,42.95,43.20,42.89,2246610
"WMT",49.61,"6/11/2007","10:56am",-0.47,49.90,50.00,49.56,2553200
"XOM",82.90,"6/11/2007","10:56am",+0.22,82.68,83.11,82.35,3157200
"AA",39.65,"6/11/2007","11:01am",-0.01,39.67,40.18,39.43,1162580
"AIG",71.46,"6/11/2007","11:01am",-0.07,71.29,71.60,71.15,1167442
"AXP",62.99,"6/11/2007","11:00am",-0.05,62.79,63.07,62.42,1532720
"BA",98.09,"6/11/2007","11:01am",-0.10,98.25,98.79,97.74,714300
"C",53.11,"6/11/2007","11:01am",-0.22,53.20,53.25,52.81,2344994
"CAT",78.52,"6/11/2007","11:00am",0.00,78.32,78.99,78.06,915752
"DD",50.75,"6/11/2007","11:01am",-0.38,51.13,51.21,50.62,1025100
"DIS",34.22,"6/11/2007","11:01am",+0.02,34.28,34.44,34.12,1567750
"GE",37.32,"6/11/2007","11:01am",0.00,37.07,37.41,37.05,7016378
"GM",31.22,"6/11/2007","11:01am",+0.22,31.00,31.62,30.90,4944879
"HD",37.73,"6/11/2007","11:01am",-0.22,37.78,37.83,37.62,2556369
"HON",57.10,"6/11/2007","11:01am",-0.28,57.25,57.40,57.00,794183
"HPQ",46.06,"6/11/2007","11:01am",+0.36,45.80,46.29,45.46,3023656
"IBM",103.37,"6/11/2007","11:01am",+0.30,102.87,103.63,102.50,1483400
"INTC",21.97,"6/11/2007","11:06am",+0.14,21.70,21.97,21.69,12553376
"JNJ",62.46,"6/11/2007","11:01am",+0.33,62.89,62.89,62.15,2309522
"JPM",50.32,"6/11/2007","11:01am",-0.09,50.41,50.55,50.05,2110500
"KO",51.42,"6/11/2007","11:01am",-0.25,51.67,51.82,51.32,5000442
"MCD",51.50,"6/11/2007","11:01am",+0.09,51.47,51.50,50.98,1190914
"MMM",85.62,"6/11/2007","11:00am",-0.32,85.94,85.98,85.41,620500
"MO",70.12,"6/11/2007","11:01am",-0.18,70.25,70.30,69.76,2246305
"MRK",50.505,"6/11/2007","11:01am",+0.365,50.30,50.64,50.04,3232600
"MSFT",30.02,"6/11/2007","11:06am",-0.03,30.05,30.25,29.93,15371602
"PFE",26.34,"6/11/2007","11:01am",-0.18,26.50,26.53,26.33,5134096
"PG",62.98,"6/11/2007","11:01am",-0.09,62.80,63.12,62.75,1854046
"T",40.02,"6/11/2007","11:01am",-0.24,40.20,40.25,39.89,3531300
"UTX",69.91,"6/11/2007","11:00am",-0.32,69.85,70.20,69.51,658800
"VZ",43.16,"6/11/2007","11:01am",+0.09,42.95,43.20,42.89,2288410
"WMT",49.59,"6/11/2007","11:01am",-0.49,49.90,50.00,49.56,2659033
"XOM",82.98,"6/11/2007","11:01am",+0.30,82.68,83.11,82.35,3296100
"AA",39.60,"6/11/2007","11:06am",-0.06,39.67,40.18,39.43,1189680
"AIG",71.49,"6/11/2007","11:06am",-0.04,71.29,71.60,71.15,1226342
"AXP",63.11,"6/11/2007","11:06am",+0.07,62.79,63.11,62.42,1576120
"BA",98.20,"6/11/2007","11:06am",+0.01,98.25,98.79,97.74,743800
"C",53.17,"6/11/2007","11:06am",-0.16,53.20,53.25,52.81,2445294
"CAT",78.70,"6/11/2007","11:06am",+0.18,78.32,78.99,78.06,950252
"DD",50.73,"6/11/2007","11:06am",-0.40,51.13,51.21,50.62,1165000
"DIS",34.24,"6/11/2007","11:06am",+0.04,34.28,34.44,34.12,1636250
"GE",37.3314,"6/11/2007","11:06am",+0.0114,37.07,37.41,37.05,7140328
"GM",31.19,"6/11/2007","11:06am",+0.19,31.00,31.62,30.90,5065479
"HD",37.72,"6/11/2007","11:06am",-0.23,37.78,37.83,37.62,2746169
"HON",57.04,"6/11/2007","11:06am",-0.34,57.25,57.40,57.00,851383
"HPQ",46.09,"6/11/2007","11:06am",+0.39,45.80,46.29,45.46,3113456
"IBM",103.35,"6/11/2007","11:05am",+0.28,102.87,103.63,102.50,1528300
"INTC",21.95,"6/11/2007","11:11am",+0.12,21.70,21.98,21.69,13630344
"JNJ",62.45,"6/11/2007","11:06am",+0.32,62.89,62.89,62.15,2409122
"JPM",50.38,"6/11/2007","11:06am",-0.03,50.41,50.55,50.05,2209200
"KO",51.44,"6/11/2007","11:05am",-0.23,51.67,51.82,51.32,5034642
"MCD",51.61,"6/11/2007","11:06am",+0.20,51.47,51.61,50.98,1307114
"MMM",85.66,"6/11/2007","11:06am",-0.28,85.94,85.98,85.41,642300
"MO",70.15,"6/11/2007","11:06am",-0.15,70.25,70.30,69.76,2298805
"MRK",50.52,"6/11/2007","11:06am",+0.38,50.30,50.64,50.04,3272300
"MSFT",30.06,"6/11/2007","11:11am",+0.01,30.05,30.25,29.93,15638561
"PFE",26.36,"6/11/2007","11:06am",-0.16,26.50,26.53,26.33,5407496
"PG",62.99,"6/11/2007","11:06am",-0.08,62.80,63.12,62.75,1906246
"T",40.01,"6/11/2007","11:06am",-0.25,40.20,40.25,39.89,3728000
"UTX",69.92,"6/11/2007","11:06am",-0.31,69.85,70.20,69.51,669300
"VZ",43.17,"6/11/2007","11:06am",+0.10,42.95,43.20,42.89,2322610
"WMT",49.55,"6/11/2007","11:06am",-0.53,49.90,50.00,49.55,2733633
"XOM",83.08,"6/11/2007","11:06am",+0.40,82.68,83.11,82.35,3448500
"AA",39.52,"6/11/2007","11:11am",-0.14,39.67,40.18,39.43,1258280
"AIG",71.50,"6/11/2007","11:11am",-0.03,71.29,71.60,71.15,1250442
"AXP",63.05,"6/11/2007","11:10am",+0.01,62.79,63.12,62.42,1588220
"BA",98.16,"6/11/2007","11:11am",-0.03,98.25,98.79,97.74,759800
"C",53.18,"6/11/2007","11:11am",-0.15,53.20,53.25,52.81,2614994
"CAT",78.82,"6/11/2007","11:11am",+0.30,78.32,78.99,78.06,992052
"DD",50.72,"6/11/2007","11:11am",-0.41,51.13,51.21,50.59,1241700
"DIS",34.22,"6/11/2007","11:11am",+0.02,34.28,34.44,34.12,1691750
"GE",37.36,"6/11/2007","11:11am",+0.04,37.07,37.41,37.05,7342028
"GM",31.14,"6/11/2007","11:10am",+0.14,31.00,31.62,30.90,5195679
"HD",37.74,"6/11/2007","11:11am",-0.21,37.78,37.83,37.62,2859969
"HON",57.08,"6/11/2007","11:10am",-0.30,57.25,57.40,57.00,888783
"HPQ",46.08,"6/11/2007","11:11am",+0.38,45.80,46.29,45.46,3164856
"IBM",103.34,"6/11/2007","11:11am",+0.27,102.87,103.63,102.50,1554100
"INTC",21.92,"6/11/2007","11:15am",+0.09,21.70,21.98,21.69,14546699
"JNJ",62.49,"6/11/2007","11:11am",+0.36,62.89,62.89,62.15,2467522
"JPM",50.39,"6/11/2007","11:11am",-0.02,50.41,50.55,50.05,2298000
"KO",51.46,"6/11/2007","11:11am",-0.21,51.67,51.82,51.32,5073542
"MCD",51.60,"6/11/2007","11:11am",+0.19,51.47,51.62,50.98,1438514
"MMM",85.70,"6/11/2007","11:11am",-0.24,85.94,85.98,85.41,673300
"MO",70.2306,"6/11/2007","11:11am",-0.0694,70.25,70.30,69.76,2382105
"MRK",50.46,"6/11/2007","11:11am",+0.32,50.30,50.64,50.04,3337000
"MSFT",30.04,"6/11/2007","11:16am",-0.01,30.05,30.25,29.93,15908978
"PFE",26.32,"6/11/2007","11:11am",-0.20,26.50,26.53,26.31,5832646
"PG",62.99,"6/11/2007","11:11am",-0.08,62.80,63.12,62.75,1960846
"T",40.001,"6/11/2007","11:11am",-0.259,40.20,40.25,39.89,3794300
"UTX",69.85,"6/11/2007","11:10am",-0.38,69.85,70.20,69.51,678300
"VZ",43.16,"6/11/2007","11:10am",+0.09,42.95,43.20,42.89,2358345
"WMT",49.64,"6/11/2007","11:11am",-0.44,49.90,50.00,49.55,2915433
"XOM",83.09,"6/11/2007","11:11am",+0.41,82.68,83.11,82.35,3609300
"AA",39.48,"6/11/2007","11:16am",-0.18,39.67,40.18,39.43,1290380
"AIG",71.42,"6/11/2007","11:16am",-0.11,71.29,71.60,71.15,1276442
"AXP",63.01,"6/11/2007","11:16am",-0.03,62.79,63.12,62.42,1616220
"BA",98.01,"6/11/2007","11:16am",-0.18,98.25,98.79,97.74,777300
"C",53.23,"6/11/2007","11:16am",-0.10,53.20,53.25,52.81,2793394
"CAT",78.65,"6/11/2007","11:16am",+0.13,78.32,78.99,78.06,1046952
"DD",50.70,"6/11/2007","11:16am",-0.43,51.13,51.21,50.59,1337600
"DIS",34.20,"6/11/2007","11:15am",0.00,34.28,34.44,34.12,1805250
"GE",37.35,"6/11/2007","11:16am",+0.03,37.07,37.41,37.05,7601178
"GM",31.10,"6/11/2007","11:15am",+0.10,31.00,31.62,30.90,5260279
"HD",37.73,"6/11/2007","11:16am",-0.22,37.78,37.83,37.62,2927469
"HON",56.965,"6/11/2007","11:16am",-0.415,57.25,57.40,56.93,940183
"HPQ",46.04,"6/11/2007","11:16am",+0.34,45.80,46.29,45.46,3255956
"IBM",103.24,"6/11/2007","11:16am",+0.17,102.87,103.63,102.50,1595900
"INTC",21.92,"6/11/2007","11:21am",+0.09,21.70,21.98,21.69,14851182
"JNJ",62.55,"6/11/2007","11:16am",+0.42,62.89,62.89,62.15,2628222
"JPM",50.32,"6/11/2007","11:16am",-0.09,50.41,50.55,50.05,2372200
"KO",51.46,"6/11/2007","11:16am",-0.21,51.67,51.82,51.32,5091242
"MCD",51.49,"6/11/2007","11:15am",+0.08,51.47,51.62,50.98,1719114
"MMM",85.57,"6/11/2007","11:15am",-0.37,85.94,85.98,85.41,691600
"MO",70.17,"6/11/2007","11:16am",-0.13,70.25,70.30,69.76,2466057
"MRK",50.52,"6/11/2007","11:16am",+0.38,50.30,50.64,50.04,3543600
"MSFT",30.025,"6/11/2007","11:20am",-0.025,30.05,30.25,29.93,16110835
"PFE",26.33,"6/11/2007","11:16am",-0.19,26.50,26.53,26.31,6034446
"PG",62.96,"6/11/2007","11:16am",-0.11,62.80,63.12,62.75,2028646
"T",39.97,"6/11/2007","11:16am",-0.29,40.20,40.25,39.89,3937400
"UTX",69.81,"6/11/2007","11:15am",-0.42,69.85,70.20,69.51,697600
"VZ",43.15,"6/11/2007","11:16am",+0.08,42.95,43.20,42.89,2414845
"WMT",49.63,"6/11/2007","11:16am",-0.45,49.90,50.00,49.55,3029233
"XOM",82.96,"6/11/2007","11:16am",+0.28,82.68,83.11,82.35,3750000
"AA",39.46,"6/11/2007","11:20am",-0.20,39.67,40.18,39.43,1318080
"AIG",71.37,"6/11/2007","11:20am",-0.16,71.29,71.60,71.15,1313142
"AXP",63.09,"6/11/2007","11:21am",+0.05,62.79,63.12,62.42,1639320
"BA",98.06,"6/11/2007","11:21am",-0.13,98.25,98.79,97.74,796300
"C",53.24,"6/11/2007","11:21am",-0.09,53.20,53.26,52.81,2937494
"CAT",78.72,"6/11/2007","11:21am",+0.20,78.32,78.99,78.06,1095252
"DD",50.67,"6/11/2007","11:21am",-0.46,51.13,51.21,50.59,1421500
"DIS",34.21,"6/11/2007","11:21am",+0.01,34.28,34.44,34.12,1882850
"GE",37.41,"6/11/2007","11:21am",+0.09,37.07,37.43,37.05,8394078
"GM",31.06,"6/11/2007","11:21am",+0.06,31.00,31.62,30.90,5321979
"HD",37.72,"6/11/2007","11:21am",-0.23,37.78,37.83,37.62,2989469
"HON",56.98,"6/11/2007","11:21am",-0.40,57.25,57.40,56.91,1018183
"HPQ",46.01,"6/11/2007","11:21am",+0.31,45.80,46.29,45.46,3347656
"IBM",103.27,"6/11/2007","11:21am",+0.20,102.87,103.63,102.50,1635600
"INTC",21.93,"6/11/2007","11:26am",+0.10,21.70,21.98,21.69,15018868
"JNJ",62.58,"6/11/2007","11:21am",+0.45,62.89,62.89,62.15,2706422
"JPM",50.30,"6/11/2007","11:21am",-0.11,50.41,50.55,50.05,2419700
"KO",51.45,"6/11/2007","11:20am",-0.22,51.67,51.82,51.32,5160942
"MCD",51.46,"6/11/2007","11:20am",+0.05,51.47,51.62,50.98,1812914
"MMM",85.47,"6/11/2007","11:21am",-0.47,85.94,85.98,85.41,710100
"MO",70.20,"6/11/2007","11:21am",-0.10,70.25,70.30,69.76,2517457
"MRK",50.48,"6/11/2007","11:21am",+0.34,50.30,50.64,50.04,3625200
"MSFT",30.07,"6/11/2007","11:26am",+0.02,30.05,30.25,29.93,16343142
"PFE",26.349,"6/11/2007","11:21am",-0.171,26.50,26.53,26.31,6275846
"PG",62.98,"6/11/2007","11:21am",-0.09,62.80,63.12,62.75,2075846
"T",39.99,"6/11/2007","11:21am",-0.27,40.20,40.25,39.89,4085900
"UTX",69.76,"6/11/2007","11:21am",-0.47,69.85,70.20,69.51,714000
"VZ",43.16,"6/11/2007","11:20am",+0.09,42.95,43.20,42.89,2522445
"WMT",49.63,"6/11/2007","11:21am",-0.45,49.90,50.00,49.55,3096833
"XOM",82.91,"6/11/2007","11:21am",+0.23,82.68,83.11,82.35,3880100
"AA",39.50,"6/11/2007","11:26am",-0.16,39.67,40.18,39.43,1352980
"AIG",71.37,"6/11/2007","11:26am",-0.16,71.29,71.60,71.15,1345042
"AXP",63.03,"6/11/2007","11:26am",-0.01,62.79,63.12,62.42,1654030
"BA",98.06,"6/11/2007","11:26am",-0.13,98.25,98.79,97.74,817500
"C",53.24,"6/11/2007","11:26am",-0.09,53.20,53.26,52.81,3004394
"CAT",78.75,"6/11/2007","11:26am",+0.23,78.32,78.99,78.06,1112652
"DD",50.80,"6/11/2007","11:26am",-0.33,51.13,51.21,50.59,1443900
"DIS",34.22,"6/11/2007","11:25am",+0.02,34.28,34.44,34.12,1977950
"GE",37.401,"6/11/2007","11:26am",+0.081,37.07,37.43,37.05,8549378
"GM",31.18,"6/11/2007","11:26am",+0.18,31.00,31.62,30.90,5486579
"HD",37.74,"6/11/2007","11:26am",-0.21,37.78,37.83,37.62,3055769
"HON",57.03,"6/11/2007","11:26am",-0.35,57.25,57.40,56.91,1098842
"HPQ",46.00,"6/11/2007","11:26am",+0.30,45.80,46.29,45.46,3418156
"IBM",103.33,"6/11/2007","11:26am",+0.26,102.87,103.63,102.50,1657200
"INTC",21.94,"6/11/2007","11:31am",+0.11,21.70,21.98,21.69,15378550
"JNJ",62.59,"6/11/2007","11:26am",+0.46,62.89,62.89,62.15,2772722
"JPM",50.38,"6/11/2007","11:26am",-0.03,50.41,50.55,50.05,2481600
"KO",51.45,"6/11/2007","11:26am",-0.22,51.67,51.82,51.32,5180942
"MCD",51.49,"6/11/2007","11:26am",+0.08,51.47,51.62,50.98,1867514
"MMM",85.45,"6/11/2007","11:25am",-0.49,85.94,85.98,85.39,738400
"MO",70.21,"6/11/2007","11:26am",-0.09,70.25,70.30,69.76,2582357
"MRK",50.55,"6/11/2007","11:26am",+0.41,50.30,50.64,50.04,3773900
"MSFT",30.05,"6/11/2007","11:31am",0.00,30.05,30.25,29.93,16793888
"PFE",26.34,"6/11/2007","11:26am",-0.18,26.50,26.53,26.31,6551746
"PG",62.99,"6/11/2007","11:26am",-0.08,62.80,63.12,62.75,2114846
"T",40.06,"6/11/2007","11:26am",-0.20,40.20,40.25,39.89,4212600
"UTX",69.73,"6/11/2007","11:25am",-0.50,69.85,70.20,69.51,725600
"VZ",43.16,"6/11/2007","11:26am",+0.09,42.95,43.20,42.89,2595445
"WMT",49.64,"6/11/2007","11:25am",-0.44,49.90,50.00,49.55,3167033
"XOM",82.89,"6/11/2007","11:26am",+0.21,82.68,83.11,82.35,4029000
"AA",39.47,"6/11/2007","11:31am",-0.19,39.67,40.18,39.43,1409980
"AIG",71.48,"6/11/2007","11:31am",-0.05,71.29,71.60,71.15,1424042
"AXP",63.07,"6/11/2007","11:30am",+0.03,62.79,63.14,62.42,1695430
"BA",98.00,"6/11/2007","11:31am",-0.19,98.25,98.79,97.74,865400
"C",53.31,"6/11/2007","11:31am",-0.02,53.20,53.31,52.81,3119094
"CAT",78.72,"6/11/2007","11:31am",+0.20,78.32,78.99,78.06,1140252
"DD",50.75,"6/11/2007","11:31am",-0.38,51.13,51.21,50.59,1474900
"DIS",34.20,"6/11/2007","11:30am",0.00,34.28,34.44,34.12,2013250
"GE",37.41,"6/11/2007","11:31am",+0.09,37.07,37.44,37.05,8715001
"GM",31.23,"6/11/2007","11:31am",+0.23,31.00,31.62,30.90,5548179
"HD",37.72,"6/11/2007","11:30am",-0.23,37.78,37.83,37.62,3183869
"HON",57.01,"6/11/2007","11:31am",-0.37,57.25,57.40,56.91,1290742
"HPQ",45.99,"6/11/2007","11:31am",+0.29,45.80,46.29,45.46,3514456
"IBM",103.31,"6/11/2007","11:31am",+0.24,102.87,103.63,102.50,1841300
"INTC",21.94,"6/11/2007","11:36am",+0.11,21.70,21.98,21.69,15795668
"JNJ",62.59,"6/11/2007","11:31am",+0.46,62.89,62.89,62.15,2811022
"JPM",50.41,"6/11/2007","11:30am",0.00,50.41,50.55,50.05,2553800
"KO",51.45,"6/11/2007","11:30am",-0.22,51.67,51.82,51.32,5207142
"MCD",51.47,"6/11/2007","11:30am",+0.06,51.47,51.62,50.98,1913314
"MMM",85.41,"6/11/2007","11:31am",-0.53,85.94,85.98,85.39,805100
"MO",70.36,"6/11/2007","11:31am",+0.06,70.25,70.36,69.76,2672857
"MRK",50.55,"6/11/2007","11:31am",+0.41,50.30,50.64,50.04,3841500
"MSFT",30.09,"6/11/2007","11:36am",+0.04,30.05,30.25,29.93,17107810
"PFE",26.35,"6/11/2007","11:31am",-0.17,26.50,26.53,26.31,6720346
"PG",62.98,"6/11/2007","11:31am",-0.09,62.80,63.12,62.75,2155746
"T",40.07,"6/11/2007","11:31am",-0.19,40.20,40.25,39.89,4436800
"UTX",69.74,"6/11/2007","11:31am",-0.49,69.85,70.20,69.51,757000
"VZ",43.18,"6/11/2007","11:31am",+0.11,42.95,43.22,42.89,2918545
"WMT",49.66,"6/11/2007","11:31am",-0.42,49.90,50.00,49.55,3258333
"XOM",82.92,"6/11/2007","11:31am",+0.24,82.68,83.11,82.35,4163200
"AA",39.50,"6/11/2007","11:36am",-0.16,39.67,40.18,39.43,1444680
"AIG",71.48,"6/11/2007","11:35am",-0.05,71.29,71.60,71.15,1468642
"AXP",63.0703,"6/11/2007","11:35am",+0.0303,62.79,63.14,62.42,1717830
"BA",98.0028,"6/11/2007","11:36am",-0.1872,98.25,98.79,97.74,951000
"C",53.34,"6/11/2007","11:36am",+0.01,53.20,53.37,52.81,3207894
"CAT",78.66,"6/11/2007","11:36am",+0.14,78.32,78.99,78.06,1150952
"DD",50.73,"6/11/2007","11:36am",-0.40,51.13,51.21,50.59,1500000
"DIS",34.19,"6/11/2007","11:36am",-0.01,34.28,34.44,34.12,2167150
"GE",37.38,"6/11/2007","11:36am",+0.06,37.07,37.44,37.05,9041801
"GM",31.25,"6/11/2007","11:35am",+0.25,31.00,31.62,30.90,5608979
"HD",37.75,"6/11/2007","11:36am",-0.20,37.78,37.83,37.62,3269369
"HON",56.98,"6/11/2007","11:36am",-0.40,57.25,57.40,56.91,1330742
"HPQ",45.94,"6/11/2007","11:36am",+0.24,45.80,46.29,45.46,3621556
"IBM",103.28,"6/11/2007","11:36am",+0.21,102.87,103.63,102.50,1859400
"INTC",21.97,"6/11/2007","11:41am",+0.14,21.70,21.98,21.69,16127869
"JNJ",62.56,"6/11/2007","11:35am",+0.43,62.89,62.89,62.15,2852322
"JPM",50.43,"6/11/2007","11:36am",+0.02,50.41,50.55,50.05,2656300
"KO",51.40,"6/11/2007","11:36am",-0.27,51.67,51.82,51.32,5232342
"MCD",51.47,"6/11/2007","11:35am",+0.06,51.47,51.62,50.98,1953314
"MMM",85.43,"6/11/2007","11:35am",-0.51,85.94,85.98,85.39,828900
"MO",70.39,"6/11/2007","11:35am",+0.09,70.25,70.48,69.76,2823257
"MRK",50.551,"6/11/2007","11:36am",+0.411,50.30,50.64,50.04,3911800
"MSFT",30.11,"6/11/2007","11:41am",+0.06,30.05,30.25,29.93,17353272
"PFE",26.38,"6/11/2007","11:36am",-0.14,26.50,26.53,26.31,6992796
"PG",62.93,"6/11/2007","11:35am",-0.14,62.80,63.12,62.75,2196846
"T",40.03,"6/11/2007","11:35am",-0.23,40.20,40.25,39.89,4610000
"UTX",69.77,"6/11/2007","11:35am",-0.46,69.85,70.20,69.51,788900
"VZ",43.18,"6/11/2007","11:35am",+0.11,42.95,43.22,42.89,2997845
"WMT",49.74,"6/11/2007","11:36am",-0.34,49.90,50.00,49.55,3415433
"XOM",83.04,"6/11/2007","11:36am",+0.36,82.68,83.11,82.35,4297200
"AA",39.53,"6/11/2007","11:41am",-0.13,39.67,40.18,39.43,1481180
"AIG",71.53,"6/11/2007","11:41am",0.00,71.29,71.60,71.15,1498042
"AXP",63.07,"6/11/2007","11:41am",+0.03,62.79,63.14,62.42,1760630
"BA",98.06,"6/11/2007","11:41am",-0.13,98.25,98.79,97.74,968400
"C",53.41,"6/11/2007","11:41am",+0.08,53.20,53.41,52.81,3275394
"CAT",78.72,"6/11/2007","11:41am",+0.20,78.32,78.99,78.06,1165852
"DD",50.77,"6/11/2007","11:41am",-0.36,51.13,51.21,50.59,1523000
"DIS",34.19,"6/11/2007","11:41am",-0.01,34.28,34.44,34.12,2223450
"GE",37.42,"6/11/2007","11:41am",+0.10,37.07,37.44,37.05,9239801
"GM",31.30,"6/11/2007","11:41am",+0.30,31.00,31.62,30.90,5699079
"HD",37.75,"6/11/2007","11:41am",-0.20,37.78,37.83,37.62,3307869
"HON",56.99,"6/11/2007","11:41am",-0.39,57.25,57.40,56.91,1376642
"HPQ",45.96,"6/11/2007","11:41am",+0.26,45.80,46.29,45.46,3706756
"IBM",103.44,"6/11/2007","11:41am",+0.37,102.87,103.63,102.50,1880700
"INTC",21.97,"6/11/2007","11:45am",+0.14,21.70,21.98,21.69,16406027
"JNJ",62.64,"6/11/2007","11:41am",+0.51,62.89,62.89,62.15,2899022
"JPM",50.50,"6/11/2007","11:41am",+0.09,50.41,50.55,50.05,2715800
"KO",51.45,"6/11/2007","11:41am",-0.22,51.67,51.82,51.32,5260042
"MCD",51.49,"6/11/2007","11:40am",+0.08,51.47,51.62,50.98,2029314
"MMM",85.52,"6/11/2007","11:41am",-0.42,85.94,85.98,85.39,843500
"MO",70.47,"6/11/2007","11:41am",+0.17,70.25,70.50,69.76,3705557
"MRK",50.65,"6/11/2007","11:41am",+0.51,50.30,50.65,50.04,4091400
"MSFT",30.135,"6/11/2007","11:46am",+0.085,30.05,30.25,29.93,17741848
"PFE",26.42,"6/11/2007","11:41am",-0.10,26.50,26.53,26.31,7347396
"PG",63.00,"6/11/2007","11:41am",-0.07,62.80,63.12,62.75,2256146
"T",40.09,"6/11/2007","11:41am",-0.17,40.20,40.25,39.89,4805400
"UTX",69.82,"6/11/2007","11:40am",-0.41,69.85,70.20,69.51,796500
"VZ",43.23,"6/11/2007","11:40am",+0.16,42.95,43.23,42.89,3077145
"WMT",49.81,"6/11/2007","11:41am",-0.27,49.90,50.00,49.55,3532333
"XOM",83.18,"6/11/2007","11:41am",+0.50,82.68,83.18,82.35,4455700
"AA",39.54,"6/11/2007","11:46am",-0.12,39.67,40.18,39.43,1499880
"AIG",71.59,"6/11/2007","11:45am",+0.06,71.29,71.61,71.15,1522942
"AXP",63.09,"6/11/2007","11:46am",+0.05,62.79,63.14,62.42,1799530
"BA",98.01,"6/11/2007","11:46am",-0.18,98.25,98.79,97.74,1016800
"C",53.48,"6/11/2007","11:46am",+0.15,53.20,53.52,52.81,3465694
"CAT",78.7346,"6/11/2007","11:45am",+0.2146,78.32,78.99,78.06,1189152
"DD",50.72,"6/11/2007","11:46am",-0.41,51.13,51.21,50.59,1542800
"DIS",34.202,"6/11/2007","11:46am",+0.002,34.28,34.44,34.12,2263250
"GE",37.43,"6/11/2007","11:46am",+0.11,37.07,37.44,37.05,9402901
"GM",31.30,"6/11/2007","11:46am",+0.30,31.00,31.62,30.90,5791779
"HD",37.74,"6/11/2007","11:46am",-0.21,37.78,37.83,37.62,3438769
"HON",57.01,"6/11/2007","11:45am",-0.37,57.25,57.40,56.91,1411942
"HPQ",45.99,"6/11/2007","11:46am",+0.29,45.80,46.29,45.46,3780456
"IBM",103.53,"6/11/2007","11:46am",+0.46,102.87,103.63,102.50,1931500
"INTC",21.98,"6/11/2007","11:51am",+0.15,21.70,21.98,21.69,16615722
"JNJ",62.64,"6/11/2007","11:45am",+0.51,62.89,62.89,62.15,2931522
"JPM",50.52,"6/11/2007","11:46am",+0.11,50.41,50.55,50.05,2820200
"KO",51.48,"6/11/2007","11:45am",-0.19,51.67,51.82,51.32,5289842
"MCD",51.54,"6/11/2007","11:45am",+0.13,51.47,51.62,50.98,2063014
"MMM",85.53,"6/11/2007","11:46am",-0.41,85.94,85.98,85.39,860900
"MO",70.30,"6/11/2007","11:46am",0.00,70.25,70.50,69.76,3796557
"MRK",50.73,"6/11/2007","11:46am",+0.59,50.30,50.74,50.04,4201600
"MSFT",30.1603,"6/11/2007","11:50am",+0.1103,30.05,30.25,29.93,18232994
"PFE",26.43,"6/11/2007","11:46am",-0.09,26.50,26.53,26.31,7612046
"PG",62.95,"6/11/2007","11:45am",-0.12,62.80,63.12,62.75,2315446
"T",40.14,"6/11/2007","11:46am",-0.12,40.20,40.25,39.89,4928500
"UTX",69.83,"6/11/2007","11:46am",-0.40,69.85,70.20,69.51,808300
"VZ",43.25,"6/11/2007","11:45am",+0.18,42.95,43.26,42.89,3194645
"WMT",49.81,"6/11/2007","11:46am",-0.27,49.90,50.00,49.55,3691733
"XOM",83.20,"6/11/2007","11:46am",+0.52,82.68,83.25,82.35,4596200
"AA",39.59,"6/11/2007","11:51am",-0.07,39.67,40.18,39.43,1549580
"AIG",71.62,"6/11/2007","11:51am",+0.09,71.29,71.68,71.15,1587442
"AXP",63.09,"6/11/2007","11:51am",+0.05,62.79,63.19,62.42,1825430
"BA",97.98,"6/11/2007","11:50am",-0.21,98.25,98.79,97.74,1036600
"C",53.52,"6/11/2007","11:50am",+0.19,53.20,53.57,52.81,3665594
"CAT",78.78,"6/11/2007","11:51am",+0.26,78.32,78.99,78.06,1234052
"DD",50.74,"6/11/2007","11:51am",-0.39,51.13,51.21,50.59,1579200
"DIS",34.23,"6/11/2007","11:51am",+0.03,34.28,34.44,34.12,2335050
"GE",37.469,"6/11/2007","11:51am",+0.149,37.07,37.48,37.05,9637101
"GM",31.31,"6/11/2007","11:50am",+0.31,31.00,31.62,30.90,5900779
"HD",37.77,"6/11/2007","11:51am",-0.18,37.78,37.83,37.62,3574469
"HON",56.99,"6/11/2007","11:50am",-0.39,57.25,57.40,56.91,1469142
"HPQ",46.0616,"6/11/2007","11:50am",+0.3616,45.80,46.29,45.46,3886556
"IBM",103.70,"6/11/2007","11:51am",+0.63,102.87,103.71,102.50,1993700
"INTC",22.01,"6/11/2007","11:56am",+0.18,21.70,22.01,21.69,17848980
"JNJ",62.719,"6/11/2007","11:51am",+0.589,62.89,62.89,62.15,3194722
"JPM",50.53,"6/11/2007","11:51am",+0.12,50.41,50.55,50.05,2963700
"KO",51.50,"6/11/2007","11:50am",-0.17,51.67,51.82,51.32,5313142
"MCD",51.52,"6/11/2007","11:51am",+0.11,51.47,51.62,50.98,2105814
"MMM",85.53,"6/11/2007","11:50am",-0.41,85.94,85.98,85.39,879300
"MO",70.43,"6/11/2007","11:50am",+0.13,70.25,70.50,69.76,3873057
"MRK",50.78,"6/11/2007","11:51am",+0.64,50.30,50.87,50.04,4316300
"MSFT",30.18,"6/11/2007","11:56am",+0.13,30.05,30.25,29.93,18458900
"PFE",26.50,"6/11/2007","11:51am",-0.02,26.50,26.53,26.31,7882446
"PG",63.04,"6/11/2007","11:50am",-0.03,62.80,63.12,62.75,2384246
"T",40.15,"6/11/2007","11:51am",-0.11,40.20,40.25,39.89,5143600
"UTX",69.85,"6/11/2007","11:50am",-0.38,69.85,70.20,69.51,824600
"VZ",43.29,"6/11/2007","11:51am",+0.22,42.95,43.30,42.89,3253445
"WMT",49.84,"6/11/2007","11:51am",-0.24,49.90,50.00,49.55,3812233
"XOM",83.26,"6/11/2007","11:51am",+0.58,82.68,83.35,82.35,4722700
"AA",39.62,"6/11/2007","11:56am",-0.04,39.67,40.18,39.43,1573080
"AIG",71.6254,"6/11/2007","11:56am",+0.0954,71.29,71.68,71.15,1630242
"AXP",63.14,"6/11/2007","11:56am",+0.10,62.79,63.19,62.42,1839830
"BA",97.97,"6/11/2007","11:55am",-0.22,98.25,98.79,97.74,1056000
"C",53.58,"6/11/2007","11:56am",+0.25,53.20,53.58,52.81,3892094
"CAT",78.76,"6/11/2007","11:55am",+0.24,78.32,78.99,78.06,1252852
"DD",50.73,"6/11/2007","11:56am",-0.40,51.13,51.21,50.59,1632600
"DIS",34.24,"6/11/2007","11:56am",+0.04,34.28,34.44,34.12,2414850
"GE",37.44,"6/11/2007","11:56am",+0.12,37.07,37.49,37.05,9766201
"GM",31.32,"6/11/2007","11:56am",+0.32,31.00,31.62,30.90,5949301
"HD",37.74,"6/11/2007","11:56am",-0.21,37.78,37.83,37.62,3692669
"HON",57.00,"6/11/2007","11:56am",-0.38,57.25,57.40,56.91,1521042
"HPQ",46.10,"6/11/2007","11:56am",+0.40,45.80,46.29,45.46,4001456
"IBM",103.62,"6/11/2007","11:56am",+0.55,102.87,103.71,102.50,2026100
"INTC",22.00,"6/11/2007","12:01pm",+0.17,21.70,22.01,21.69,18388938
"JNJ",62.66,"6/11/2007","11:55am",+0.53,62.89,62.89,62.15,3236322
"JPM",50.54,"6/11/2007","11:56am",+0.13,50.41,50.56,50.05,3019600
"KO",51.52,"6/11/2007","11:55am",-0.15,51.67,51.82,51.32,5345042
"MCD",51.53,"6/11/2007","11:56am",+0.12,51.47,51.62,50.98,2134514
"MMM",85.44,"6/11/2007","11:56am",-0.50,85.94,85.98,85.39,905400
"MO",70.42,"6/11/2007","11:56am",+0.12,70.25,70.50,69.76,3926257
"MRK",50.79,"6/11/2007","11:56am",+0.65,50.30,50.87,50.04,4401700
"MSFT",30.18,"6/11/2007","12:01pm",+0.13,30.05,30.25,29.93,18749244
"PFE",26.46,"6/11/2007","11:56am",-0.06,26.50,26.53,26.31,8528842
"PG",63.04,"6/11/2007","11:56am",-0.03,62.80,63.12,62.75,2418246
"T",40.16,"6/11/2007","11:56am",-0.10,40.20,40.25,39.89,5294500
"UTX",69.8227,"6/11/2007","11:56am",-0.4073,69.85,70.20,69.51,840000
"VZ",43.28,"6/11/2007","11:56am",+0.21,42.95,43.31,42.89,3317345
"WMT",49.87,"6/11/2007","11:56am",-0.21,49.90,50.00,49.55,3928833
"XOM",83.30,"6/11/2007","11:56am",+0.62,82.68,83.39,82.35,4932400
"AA",39.615,"6/11/2007","12:00pm",-0.045,39.67,40.18,39.43,1587980
"AIG",71.63,"6/11/2007","12:01pm",+0.10,71.29,71.68,71.15,1669942
"AXP",63.142,"6/11/2007","12:01pm",+0.102,62.79,63.19,62.42,1852230
"BA",98.00,"6/11/2007","12:01pm",-0.19,98.25,98.79,97.74,1079000
"C",53.53,"6/11/2007","12:01pm",+0.20,53.20,53.58,52.81,3992194
"CAT",78.76,"6/11/2007","12:01pm",+0.24,78.32,78.99,78.06,1270152
"DD",50.69,"6/11/2007","12:01pm",-0.44,51.13,51.21,50.59,1671400
"DIS",34.21,"6/11/2007","12:00pm",+0.01,34.28,34.44,34.12,2450550
"GE",37.425,"6/11/2007","12:01pm",+0.105,37.07,37.49,37.05,9895501
"GM",31.32,"6/11/2007","12:00pm",+0.32,31.00,31.62,30.90,5989901
"HD",37.75,"6/11/2007","12:01pm",-0.20,37.78,37.83,37.62,3816469
"HON",57.00,"6/11/2007","12:01pm",-0.38,57.25,57.40,56.91,1543942
"HPQ",46.12,"6/11/2007","12:01pm",+0.42,45.80,46.29,45.46,4076156
"IBM",103.63,"6/11/2007","12:00pm",+0.56,102.87,103.71,102.50,2060500
"INTC",21.99,"6/11/2007","12:06pm",+0.16,21.70,22.02,21.69,18564224
"JNJ",62.631,"6/11/2007","12:01pm",+0.501,62.89,62.89,62.15,3282922
"JPM",50.60,"6/11/2007","12:01pm",+0.19,50.41,50.60,50.05,3118700
"KO",51.53,"6/11/2007","12:00pm",-0.14,51.67,51.82,51.32,5393742
"MCD",51.50,"6/11/2007","12:01pm",+0.09,51.47,51.62,50.98,2171014
"MMM",85.43,"6/11/2007","12:00pm",-0.51,85.94,85.98,85.39,922700
"MO",70.40,"6/11/2007","12:01pm",+0.10,70.25,70.50,69.76,3957957
"MRK",50.7475,"6/11/2007","12:01pm",+0.6075,50.30,50.87,50.04,4475600
"MSFT",30.1597,"6/11/2007","12:06pm",+0.1097,30.05,30.25,29.93,18960388
"PFE",26.46,"6/11/2007","12:01pm",-0.06,26.50,26.53,26.31,8624142
"PG",63.03,"6/11/2007","12:01pm",-0.04,62.80,63.12,62.75,2475246
"T",40.20,"6/11/2007","12:01pm",-0.06,40.20,40.25,39.89,5445500
"UTX",69.83,"6/11/2007","12:00pm",-0.40,69.85,70.20,69.51,860200
"VZ",43.28,"6/11/2007","12:00pm",+0.21,42.95,43.31,42.89,3361245
"WMT",49.87,"6/11/2007","12:01pm",-0.21,49.90,50.00,49.55,4143733
"XOM",83.40,"6/11/2007","12:01pm",+0.72,82.68,83.46,82.35,5119800
"AA",39.61,"6/11/2007","12:06pm",-0.05,39.67,40.18,39.43,1627080
"AIG",71.68,"6/11/2007","12:06pm",+0.15,71.29,71.68,71.15,1706542
"AXP",63.0546,"6/11/2007","12:05pm",+0.0146,62.79,63.19,62.42,1880930
"BA",97.92,"6/11/2007","12:06pm",-0.27,98.25,98.79,97.74,1090100
"C",53.55,"6/11/2007","12:06pm",+0.22,53.20,53.65,52.81,4319594
"CAT",78.74,"6/11/2007","12:06pm",+0.22,78.32,78.99,78.06,1288152
"DD",50.70,"6/11/2007","12:06pm",-0.43,51.13,51.21,50.59,1732500
"DIS",34.22,"6/11/2007","12:06pm",+0.02,34.28,34.44,34.12,2493950
"GE",37.4227,"6/11/2007","12:06pm",+0.1027,37.07,37.49,37.05,10023701
"GM",31.32,"6/11/2007","12:06pm",+0.32,31.00,31.62,30.90,6029201
"HD",37.7401,"6/11/2007","12:06pm",-0.2099,37.78,37.83,37.62,3862469
"HON",57.00,"6/11/2007","12:06pm",-0.38,57.25,57.40,56.91,1627642
"HPQ",46.10,"6/11/2007","12:06pm",+0.40,45.80,46.29,45.46,4113656
"IBM",103.67,"6/11/2007","12:06pm",+0.60,102.87,103.71,102.50,2085800
"INTC",21.99,"6/11/2007","12:11pm",+0.16,21.70,22.02,21.69,18898568
"JNJ",62.62,"6/11/2007","12:06pm",+0.49,62.89,62.89,62.15,3318522
"JPM",50.60,"6/11/2007","12:06pm",+0.19,50.41,50.62,50.05,3165700
"KO",51.52,"6/11/2007","12:05pm",-0.15,51.67,51.82,51.32,5416242
"MCD",51.47,"6/11/2007","12:06pm",+0.06,51.47,51.62,50.98,2192514
"MMM",85.41,"6/11/2007","12:05pm",-0.53,85.94,85.98,85.39,941800
"MO",70.41,"6/11/2007","12:06pm",+0.11,70.25,70.50,69.76,3992557
"MRK",50.75,"6/11/2007","12:06pm",+0.61,50.30,50.87,50.04,4518500
"MSFT",30.13,"6/11/2007","12:11pm",+0.08,30.05,30.25,29.93,19296222
"PFE",26.43,"6/11/2007","12:06pm",-0.09,26.50,26.53,26.31,8765142
"PG",63.02,"6/11/2007","12:06pm",-0.05,62.80,63.12,62.75,2498846
"T",40.18,"6/11/2007","12:06pm",-0.08,40.20,40.25,39.89,5544800
"UTX",69.89,"6/11/2007","12:05pm",-0.34,69.85,70.20,69.51,873700
"VZ",43.32,"6/11/2007","12:06pm",+0.25,42.95,43.34,42.89,3454720
"WMT",49.84,"6/11/2007","12:06pm",-0.24,49.90,50.00,49.55,4217433
"XOM",83.40,"6/11/2007","12:06pm",+0.72,82.68,83.48,82.35,5317100
"AA",39.57,"6/11/2007","12:11pm",-0.09,39.67,40.18,39.43,1657480
"AIG",71.68,"6/11/2007","12:11pm",+0.15,71.29,71.70,71.15,1754142
"AXP",63.01,"6/11/2007","12:11pm",-0.03,62.79,63.19,62.42,1905230
"BA",97.856,"6/11/2007","12:11pm",-0.334,98.25,98.79,97.74,1115200
"C",53.57,"6/11/2007","12:11pm",+0.24,53.20,53.65,52.81,4395794
"CAT",78.82,"6/11/2007","12:10pm",+0.30,78.32,78.99,78.06,1308952
"DD",50.71,"6/11/2007","12:10pm",-0.42,51.13,51.21,50.59,1760700
"DIS",34.23,"6/11/2007","12:11pm",+0.03,34.28,34.44,34.12,2537850
"GE",37.4025,"6/11/2007","12:11pm",+0.0825,37.07,37.49,37.05,10173701
"GM",31.27,"6/11/2007","12:11pm",+0.27,31.00,31.62,30.90,6100601
"HD",37.75,"6/11/2007","12:11pm",-0.20,37.78,37.83,37.62,4021569
"HON",57.00,"6/11/2007","12:11pm",-0.38,57.25,57.40,56.91,1666742
"HPQ",46.08,"6/11/2007","12:10pm",+0.38,45.80,46.29,45.46,4173956
"IBM",103.56,"6/11/2007","12:11pm",+0.49,102.87,103.71,102.50,2111700
"INTC",21.98,"6/11/2007","12:16pm",+0.15,21.70,22.02,21.69,18999740
"JNJ",62.56,"6/11/2007","12:11pm",+0.43,62.89,62.89,62.15,3392622
"JPM",50.60,"6/11/2007","12:11pm",+0.19,50.41,50.62,50.05,3283000
"KO",51.53,"6/11/2007","12:11pm",-0.14,51.67,51.82,51.32,5438042
"MCD",51.455,"6/11/2007","12:11pm",+0.045,51.47,51.62,50.98,2250714
"MMM",85.32,"6/11/2007","12:11pm",-0.62,85.94,85.98,85.32,975500
"MO",70.38,"6/11/2007","12:11pm",+0.08,70.25,70.50,69.76,4010457
"MRK",50.75,"6/11/2007","12:10pm",+0.61,50.30,50.87,50.04,4599200
"MSFT",30.13,"6/11/2007","12:16pm",+0.08,30.05,30.25,29.93,19453430
"PFE",26.38,"6/11/2007","12:11pm",-0.14,26.50,26.53,26.31,9435387
"PG",63.01,"6/11/2007","12:11pm",-0.06,62.80,63.12,62.75,2550946
"T",40.13,"6/11/2007","12:11pm",-0.13,40.20,40.25,39.89,5619200
"UTX",69.89,"6/11/2007","12:11pm",-0.34,69.85,70.20,69.51,893500
"VZ",43.31,"6/11/2007","12:11pm",+0.24,42.95,43.34,42.89,3525820
"WMT",49.86,"6/11/2007","12:11pm",-0.22,49.90,50.00,49.55,4320433
"XOM",83.38,"6/11/2007","12:11pm",+0.70,82.68,83.48,82.35,5384300
"AA",39.51,"6/11/2007","12:15pm",-0.15,39.67,40.18,39.43,1707780
"AIG",71.68,"6/11/2007","12:16pm",+0.15,71.29,71.70,71.15,1797642
"AXP",62.98,"6/11/2007","12:15pm",-0.06,62.79,63.19,62.42,1919830
"BA",97.81,"6/11/2007","12:16pm",-0.38,98.25,98.79,97.74,1189800
"C",53.51,"6/11/2007","12:15pm",+0.18,53.20,53.65,52.81,4582294
"CAT",78.87,"6/11/2007","12:16pm",+0.35,78.32,78.99,78.06,1321852
"DD",50.69,"6/11/2007","12:16pm",-0.44,51.13,51.21,50.59,1790800
"DIS",34.21,"6/11/2007","12:16pm",+0.01,34.28,34.44,34.12,2586450
"GE",37.40,"6/11/2007","12:16pm",+0.08,37.07,37.49,37.05,10295201
"GM",31.27,"6/11/2007","12:16pm",+0.27,31.00,31.62,30.90,6373201
"HD",37.752,"6/11/2007","12:16pm",-0.198,37.78,37.83,37.62,4072169
"HON",57.00,"6/11/2007","12:16pm",-0.38,57.25,57.40,56.91,1683042
"HPQ",46.06,"6/11/2007","12:15pm",+0.36,45.80,46.29,45.46,4225556
"IBM",103.54,"6/11/2007","12:16pm",+0.47,102.87,103.71,102.50,2128600
"INTC",21.98,"6/11/2007","12:21pm",+0.15,21.70,22.02,21.69,19143976
"JNJ",62.57,"6/11/2007","12:16pm",+0.44,62.89,62.89,62.15,3439222
"JPM",50.59,"6/11/2007","12:16pm",+0.18,50.41,50.62,50.05,3372000
"KO",51.5418,"6/11/2007","12:16pm",-0.1282,51.67,51.82,51.32,5475442
"MCD",51.44,"6/11/2007","12:16pm",+0.03,51.47,51.62,50.98,2321914
"MMM",85.34,"6/11/2007","12:16pm",-0.60,85.94,85.98,85.32,985300
"MO",70.31,"6/11/2007","12:15pm",+0.01,70.25,70.50,69.76,4067257
"MRK",50.74,"6/11/2007","12:16pm",+0.60,50.30,50.87,50.04,4655400
"MSFT",30.10,"6/11/2007","12:21pm",+0.05,30.05,30.25,29.93,19617530
"PFE",26.38,"6/11/2007","12:16pm",-0.14,26.50,26.53,26.31,9916032
"PG",62.99,"6/11/2007","12:16pm",-0.08,62.80,63.12,62.75,2626746
"T",40.10,"6/11/2007","12:16pm",-0.16,40.20,40.25,39.89,5730400
"UTX",69.89,"6/11/2007","12:15pm",-0.34,69.85,70.20,69.51,919000
"VZ",43.252,"6/11/2007","12:16pm",+0.182,42.95,43.34,42.89,3563720
"WMT",49.882,"6/11/2007","12:16pm",-0.198,49.90,50.00,49.55,4432033
"XOM",83.37,"6/11/2007","12:16pm",+0.69,82.68,83.48,82.35,5492200
"AA",39.48,"6/11/2007","12:21pm",-0.18,39.67,40.18,39.43,1815880
"AIG",71.71,"6/11/2007","12:21pm",+0.18,71.29,71.71,71.15,1835142
"AXP",62.92,"6/11/2007","12:20pm",-0.12,62.79,63.19,62.42,1934230
"BA",97.79,"6/11/2007","12:21pm",-0.40,98.25,98.79,97.74,1228800
"C",53.53,"6/11/2007","12:21pm",+0.20,53.20,53.65,52.81,4665694
"CAT",78.84,"6/11/2007","12:20pm",+0.32,78.32,78.99,78.06,1332852
"DD",50.69,"6/11/2007","12:21pm",-0.44,51.13,51.21,50.59,1803100
"DIS",34.21,"6/11/2007","12:21pm",+0.01,34.28,34.44,34.12,2632250
"GE",37.41,"6/11/2007","12:21pm",+0.09,37.07,37.49,37.05,10406001
"GM",31.29,"6/11/2007","12:21pm",+0.29,31.00,31.62,30.90,6432201
"HD",37.75,"6/11/2007","12:20pm",-0.20,37.78,37.83,37.62,5032769
"HON",56.98,"6/11/2007","12:20pm",-0.40,57.25,57.40,56.91,1693442
"HPQ",46.03,"6/11/2007","12:21pm",+0.33,45.80,46.29,45.46,4304056
"IBM",103.56,"6/11/2007","12:20pm",+0.49,102.87,103.71,102.50,2151600
"INTC",21.963,"6/11/2007","12:26pm",+0.133,21.70,22.02,21.69,19623448
"JNJ",62.56,"6/11/2007","12:21pm",+0.43,62.89,62.89,62.15,3517522
"JPM",50.58,"6/11/2007","12:21pm",+0.17,50.41,50.62,50.05,3435300
"KO",51.52,"6/11/2007","12:21pm",-0.15,51.67,51.82,51.32,5546242
"MCD",51.40,"6/11/2007","12:20pm",-0.01,51.47,51.62,50.98,2357014
"MMM",85.33,"6/11/2007","12:20pm",-0.61,85.94,85.98,85.32,996200
"MO",70.27,"6/11/2007","12:21pm",-0.03,70.25,70.50,69.76,4106257
"MRK",50.72,"6/11/2007","12:21pm",+0.58,50.30,50.87,50.04,4713700
"MSFT",30.12,"6/11/2007","12:26pm",+0.07,30.05,30.25,29.93,19901670
"PFE",26.37,"6/11/2007","12:21pm",-0.15,26.50,26.53,26.31,10036232
"PG",63.01,"6/11/2007","12:20pm",-0.06,62.80,63.12,62.75,2656246
"T",40.09,"6/11/2007","12:21pm",-0.17,40.20,40.25,39.89,5849000
"UTX",69.80,"6/11/2007","12:20pm",-0.43,69.85,70.20,69.51,935600
"VZ",43.24,"6/11/2007","12:20pm",+0.17,42.95,43.34,42.89,3608620
"WMT",49.87,"6/11/2007","12:21pm",-0.21,49.90,50.00,49.55,4485833
"XOM",83.39,"6/11/2007","12:21pm",+0.71,82.68,83.48,82.35,5559000
"AA",39.49,"6/11/2007","12:26pm",-0.17,39.67,40.18,39.43,1856980
"AIG",71.73,"6/11/2007","12:26pm",+0.20,71.29,71.74,71.15,1875942
"AXP",62.90,"6/11/2007","12:26pm",-0.14,62.79,63.19,62.42,1944730
"BA",97.75,"6/11/2007","12:26pm",-0.44,98.25,98.79,97.74,1241700
"C",53.55,"6/11/2007","12:26pm",+0.22,53.20,53.65,52.81,4736994
"CAT",78.87,"6/11/2007","12:25pm",+0.35,78.32,78.99,78.06,1347152
"DD",50.70,"6/11/2007","12:26pm",-0.43,51.13,51.21,50.59,1812800
"DIS",34.20,"6/11/2007","12:26pm",0.00,34.28,34.44,34.12,2667150
"GE",37.41,"6/11/2007","12:26pm",+0.09,37.07,37.49,37.05,10594701
"GM",31.27,"6/11/2007","12:26pm",+0.27,31.00,31.62,30.90,6554401
"HD",37.73,"6/11/2007","12:26pm",-0.22,37.78,37.83,37.62,5061669
"HON",56.96,"6/11/2007","12:26pm",-0.42,57.25,57.40,56.91,1723242
"HPQ",46.02,"6/11/2007","12:26pm",+0.32,45.80,46.29,45.46,4379056
"IBM",103.64,"6/11/2007","12:26pm",+0.57,102.87,103.71,102.50,2198300
"INTC",21.97,"6/11/2007","12:31pm",+0.14,21.70,22.02,21.69,19931936
"JNJ",62.60,"6/11/2007","12:26pm",+0.47,62.89,62.89,62.15,3566938
"JPM",50.61,"6/11/2007","12:26pm",+0.20,50.41,50.62,50.05,3481000
"KO",51.55,"6/11/2007","12:26pm",-0.12,51.67,51.82,51.32,5589842
"MCD",51.37,"6/11/2007","12:26pm",-0.04,51.47,51.62,50.98,2377914
"MMM",85.33,"6/11/2007","12:25pm",-0.61,85.94,85.98,85.32,1000600
"MO",70.23,"6/11/2007","12:26pm",-0.07,70.25,70.50,69.76,4146657
"MRK",50.79,"6/11/2007","12:26pm",+0.65,50.30,50.87,50.04,4803500
"MSFT",30.145,"6/11/2007","12:31pm",+0.095,30.05,30.25,29.93,20108456
"PFE",26.38,"6/11/2007","12:26pm",-0.14,26.50,26.53,26.31,10177632
"PG",62.98,"6/11/2007","12:26pm",-0.09,62.80,63.12,62.75,2697146
"T",40.12,"6/11/2007","12:26pm",-0.14,40.20,40.25,39.89,5959900
"UTX",69.80,"6/11/2007","12:26pm",-0.43,69.85,70.20,69.51,946900
"VZ",43.23,"6/11/2007","12:26pm",+0.16,42.95,43.34,42.89,3648320
"WMT",49.90,"6/11/2007","12:26pm",-0.18,49.90,50.00,49.55,4562633
"XOM",83.43,"6/11/2007","12:26pm",+0.75,82.68,83.48,82.35,5652500
"AA",39.50,"6/11/2007","12:30pm",-0.16,39.67,40.18,39.43,1898080
"AIG",71.74,"6/11/2007","12:31pm",+0.21,71.29,71.74,71.15,1905942
"AXP",62.9008,"6/11/2007","12:31pm",-0.1392,62.79,63.19,62.42,1968730
"BA",97.67,"6/11/2007","12:30pm",-0.52,98.25,98.79,97.63,1294900
"C",53.57,"6/11/2007","12:31pm",+0.24,53.20,53.65,52.81,4767094
"CAT",78.89,"6/11/2007","12:31pm",+0.37,78.32,78.99,78.06,1360152
"DD",50.73,"6/11/2007","12:31pm",-0.40,51.13,51.21,50.59,1833000
"DIS",34.195,"6/11/2007","12:31pm",-0.005,34.28,34.44,34.12,2687550
"GE",37.41,"6/11/2007","12:31pm",+0.09,37.07,37.49,37.05,10633601
"GM",31.25,"6/11/2007","12:31pm",+0.25,31.00,31.62,30.90,6609301
"HD",37.74,"6/11/2007","12:30pm",-0.21,37.78,37.83,37.62,5089969
"HON",56.95,"6/11/2007","12:31pm",-0.43,57.25,57.40,56.91,1741042
"HPQ",46.02,"6/11/2007","12:30pm",+0.32,45.80,46.29,45.46,4453056
"IBM",103.67,"6/11/2007","12:31pm",+0.60,102.87,103.71,102.50,2226700
"INTC",21.96,"6/11/2007","12:36pm",+0.13,21.70,22.02,21.69,20005174
"JNJ",62.60,"6/11/2007","12:31pm",+0.47,62.89,62.89,62.15,3584438
"JPM",50.60,"6/11/2007","12:31pm",+0.19,50.41,50.62,50.05,3513000
"KO",51.56,"6/11/2007","12:30pm",-0.11,51.67,51.82,51.32,5620842
"MCD",51.34,"6/11/2007","12:31pm",-0.07,51.47,51.62,50.98,2442514
"MMM",85.28,"6/11/2007","12:30pm",-0.66,85.94,85.98,85.28,1017900
"MO",70.24,"6/11/2007","12:30pm",-0.06,70.25,70.50,69.76,4185257
"MRK",50.84,"6/11/2007","12:31pm",+0.70,50.30,50.87,50.04,4848100
"MSFT",30.14,"6/11/2007","12:36pm",+0.09,30.05,30.25,29.93,20198736
"PFE",26.39,"6/11/2007","12:31pm",-0.13,26.50,26.53,26.31,10293432
"PG",63.00,"6/11/2007","12:31pm",-0.07,62.80,63.12,62.75,2745846
"T",40.07,"6/11/2007","12:31pm",-0.19,40.20,40.25,39.89,6112900
"UTX",69.81,"6/11/2007","12:31pm",-0.42,69.85,70.20,69.51,958400
"VZ",43.27,"6/11/2007","12:31pm",+0.20,42.95,43.34,42.89,3693720
"WMT",49.92,"6/11/2007","12:31pm",-0.16,49.90,50.00,49.55,4676833
"XOM",83.46,"6/11/2007","12:31pm",+0.78,82.68,83.48,82.35,5711300
"AA",39.47,"6/11/2007","12:35pm",-0.19,39.67,40.18,39.43,1938380
"AIG",71.705,"6/11/2007","12:35pm",+0.175,71.29,71.76,71.15,1958142
"AXP",62.91,"6/11/2007","12:36pm",-0.13,62.79,63.19,62.42,1982630
"BA",97.65,"6/11/2007","12:35pm",-0.54,98.25,98.79,97.61,1324100
"C",53.56,"6/11/2007","12:36pm",+0.23,53.20,53.65,52.81,4843994
"CAT",78.82,"6/11/2007","12:36pm",+0.30,78.32,78.99,78.06,1381852
"DD",50.70,"6/11/2007","12:36pm",-0.43,51.13,51.21,50.59,1854300
"DIS",34.19,"6/11/2007","12:36pm",-0.01,34.28,34.44,34.12,2871150
"GE",37.41,"6/11/2007","12:36pm",+0.09,37.07,37.49,37.05,10703601
"GM",31.28,"6/11/2007","12:36pm",+0.28,31.00,31.62,30.90,6667301
"HD",37.74,"6/11/2007","12:35pm",-0.21,37.78,37.83,37.62,5127869
"HON",56.93,"6/11/2007","12:36pm",-0.45,57.25,57.40,56.91,1772242
"HPQ",46.01,"6/11/2007","12:35pm",+0.31,45.80,46.29,45.46,4478756
"IBM",103.70,"6/11/2007","12:36pm",+0.63,102.87,103.73,102.50,2253600
"INTC",21.96,"6/11/2007","12:41pm",+0.13,21.70,22.02,21.69,20062818
"JNJ",62.59,"6/11/2007","12:36pm",+0.46,62.89,62.89,62.15,3609538
"JPM",50.60,"6/11/2007","12:36pm",+0.19,50.41,50.62,50.05,3631000
"KO",51.58,"6/11/2007","12:36pm",-0.09,51.67,51.82,51.32,5643442
"MCD",51.37,"6/11/2007","12:36pm",-0.04,51.47,51.62,50.98,2479114
"MMM",85.34,"6/11/2007","12:36pm",-0.60,85.94,85.98,85.28,1032100
"MO",70.32,"6/11/2007","12:36pm",+0.02,70.25,70.50,69.76,4255057
"MRK",50.90,"6/11/2007","12:36pm",+0.76,50.30,50.91,50.04,4953900
"MSFT",30.13,"6/11/2007","12:41pm",+0.08,30.05,30.25,29.93,20258588
"PFE",26.41,"6/11/2007","12:36pm",-0.11,26.50,26.53,26.31,10510182
"PG",63.03,"6/11/2007","12:36pm",-0.04,62.80,63.12,62.75,2776446
"T",40.08,"6/11/2007","12:36pm",-0.18,40.20,40.25,39.89,6259175
"UTX",69.81,"6/11/2007","12:35pm",-0.42,69.85,70.20,69.51,964300
"VZ",43.28,"6/11/2007","12:36pm",+0.21,42.95,43.34,42.89,3720320
"WMT",49.94,"6/11/2007","12:36pm",-0.14,49.90,50.00,49.55,4837533
"XOM",83.45,"6/11/2007","12:36pm",+0.77,82.68,83.50,82.35,5799000
"AA",39.48,"6/11/2007","12:41pm",-0.18,39.67,40.18,39.43,1988580
"AIG",71.70,"6/11/2007","12:40pm",+0.17,71.29,71.76,71.15,2020642
"AXP",62.91,"6/11/2007","12:41pm",-0.13,62.79,63.19,62.42,1993830
"BA",97.73,"6/11/2007","12:40pm",-0.46,98.25,98.79,97.59,1344400
"C",53.52,"6/11/2007","12:41pm",+0.19,53.20,53.65,52.81,5118094
"CAT",78.88,"6/11/2007","12:41pm",+0.36,78.32,78.99,78.06,1400252
"DD",50.73,"6/11/2007","12:41pm",-0.40,51.13,51.21,50.59,1866700
"DIS",34.181,"6/11/2007","12:41pm",-0.019,34.28,34.44,34.12,2913850
"GE",37.42,"6/11/2007","12:41pm",+0.10,37.07,37.49,37.05,10856501
"GM",31.32,"6/11/2007","12:41pm",+0.32,31.00,31.62,30.90,6784901
"HD",37.75,"6/11/2007","12:41pm",-0.20,37.78,37.83,37.62,5186969
"HON",56.96,"6/11/2007","12:41pm",-0.42,57.25,57.40,56.91,1802642
"HPQ",46.01,"6/11/2007","12:41pm",+0.31,45.80,46.29,45.46,4507656
"IBM",103.74,"6/11/2007","12:40pm",+0.67,102.87,103.76,102.50,2288300
"INTC",21.96,"6/11/2007","12:46pm",+0.13,21.70,22.02,21.69,20169300
"JNJ",62.62,"6/11/2007","12:41pm",+0.49,62.89,62.89,62.15,3651538
"JPM",50.55,"6/11/2007","12:41pm",+0.14,50.41,50.62,50.05,3814700
"KO",51.56,"6/11/2007","12:40pm",-0.11,51.67,51.82,51.32,5678742
"MCD",51.40,"6/11/2007","12:41pm",-0.01,51.47,51.62,50.98,2510514
"MMM",85.33,"6/11/2007","12:40pm",-0.61,85.94,85.98,85.28,1043700
"MO",70.35,"6/11/2007","12:41pm",+0.05,70.25,70.50,69.76,4300857
"MRK",51.06,"6/11/2007","12:41pm",+0.92,50.30,51.07,50.04,5195700
"MSFT",30.13,"6/11/2007","12:46pm",+0.08,30.05,30.25,29.93,20422172
"PFE",26.41,"6/11/2007","12:41pm",-0.11,26.50,26.53,26.31,10595782
"PG",63.05,"6/11/2007","12:41pm",-0.02,62.80,63.12,62.75,2806346
"T",40.06,"6/11/2007","12:41pm",-0.20,40.20,40.25,39.89,6338875
"UTX",69.81,"6/11/2007","12:41pm",-0.42,69.85,70.20,69.51,968100
"VZ",43.28,"6/11/2007","12:41pm",+0.21,42.95,43.34,42.89,3802620
"WMT",49.92,"6/11/2007","12:41pm",-0.16,49.90,50.00,49.55,4964533
"XOM",83.55,"6/11/2007","12:41pm",+0.87,82.68,83.57,82.35,5902800
"AA",39.48,"6/11/2007","12:46pm",-0.18,39.67,40.18,39.43,2011580
"AIG",71.68,"6/11/2007","12:45pm",+0.15,71.29,71.76,71.15,2066242
"AXP",62.93,"6/11/2007","12:46pm",-0.11,62.79,63.19,62.42,2001530
"BA",97.68,"6/11/2007","12:46pm",-0.51,98.25,98.79,97.59,1387800
"C",53.54,"6/11/2007","12:46pm",+0.21,53.20,53.65,52.81,5168294
"CAT",78.87,"6/11/2007","12:46pm",+0.35,78.32,78.99,78.06,1416552
"DD",50.70,"6/11/2007","12:46pm",-0.43,51.13,51.21,50.59,1884900
"DIS",34.20,"6/11/2007","12:46pm",0.00,34.28,34.44,34.12,2958150
"GE",37.40,"6/11/2007","12:46pm",+0.08,37.07,37.49,37.05,10931901
"GM",31.29,"6/11/2007","12:46pm",+0.29,31.00,31.62,30.90,6930401
"HD",37.75,"6/11/2007","12:46pm",-0.20,37.78,37.83,37.62,5233269
"HON",56.99,"6/11/2007","12:46pm",-0.39,57.25,57.40,56.91,1827642
"HPQ",46.01,"6/11/2007","12:46pm",+0.31,45.80,46.29,45.46,4557656
"IBM",103.75,"6/11/2007","12:46pm",+0.68,102.87,103.78,102.50,2310700
"INTC",22.00,"6/11/2007","12:51pm",+0.17,21.70,22.02,21.69,20568860
"JNJ",62.59,"6/11/2007","12:46pm",+0.46,62.89,62.89,62.15,3702738
"JPM",50.57,"6/11/2007","12:46pm",+0.16,50.41,50.62,50.05,3902300
"KO",51.58,"6/11/2007","12:46pm",-0.09,51.67,51.82,51.32,5707242
"MCD",51.44,"6/11/2007","12:46pm",+0.03,51.47,51.62,50.98,2534014
"MMM",85.33,"6/11/2007","12:45pm",-0.61,85.94,85.98,85.28,1051300
"MO",70.32,"6/11/2007","12:46pm",+0.02,70.25,70.50,69.76,4330057
"MRK",50.97,"6/11/2007","12:46pm",+0.83,50.30,51.07,50.04,5430200
"MSFT",30.13,"6/11/2007","12:51pm",+0.08,30.05,30.25,29.93,20730214
"PFE",26.43,"6/11/2007","12:46pm",-0.09,26.50,26.53,26.31,10698282
"PG",63.05,"6/11/2007","12:46pm",-0.02,62.80,63.12,62.75,2909046
"T",40.06,"6/11/2007","12:46pm",-0.20,40.20,40.25,39.89,6387575
"UTX",69.81,"6/11/2007","12:46pm",-0.42,69.85,70.20,69.51,976200
"VZ",43.28,"6/11/2007","12:46pm",+0.21,42.95,43.34,42.89,3826420
"WMT",49.95,"6/11/2007","12:46pm",-0.13,49.90,50.00,49.55,5329433
"XOM",83.58,"6/11/2007","12:46pm",+0.90,82.68,83.59,82.35,5965700
"AA",39.48,"6/11/2007","12:51pm",-0.18,39.67,40.18,39.43,2052980
"AIG",71.67,"6/11/2007","12:51pm",+0.14,71.29,71.76,71.15,2109942
"AXP",62.90,"6/11/2007","12:50pm",-0.14,62.79,63.19,62.42,2024830
"BA",97.78,"6/11/2007","12:51pm",-0.41,98.25,98.79,97.59,1430600
"C",53.56,"6/11/2007","12:51pm",+0.23,53.20,53.65,52.81,5509594
"CAT",79.00,"6/11/2007","12:50pm",+0.48,78.32,79.00,78.06,1448852
"DD",50.71,"6/11/2007","12:51pm",-0.42,51.13,51.21,50.59,1916300
"DIS",34.192,"6/11/2007","12:50pm",-0.008,34.28,34.44,34.12,3022750
"GE",37.41,"6/11/2007","12:51pm",+0.09,37.07,37.49,37.05,11159401
"GM",31.38,"6/11/2007","12:51pm",+0.38,31.00,31.62,30.90,7135301
"HD",37.76,"6/11/2007","12:51pm",-0.19,37.78,37.83,37.62,5362369
"HON",57.05,"6/11/2007","12:51pm",-0.33,57.25,57.40,56.91,1871542
"HPQ",46.03,"6/11/2007","12:51pm",+0.33,45.80,46.29,45.46,4684356
"IBM",103.87,"6/11/2007","12:51pm",+0.80,102.87,103.89,102.50,2362500
"INTC",22.00,"6/11/2007","12:56pm",+0.17,21.70,22.02,21.69,20977118
"JNJ",62.58,"6/11/2007","12:51pm",+0.45,62.89,62.89,62.15,3790288
"JPM",50.60,"6/11/2007","12:51pm",+0.19,50.41,50.63,50.05,3966000
"KO",51.59,"6/11/2007","12:51pm",-0.08,51.67,51.82,51.32,5755942
"MCD",51.42,"6/11/2007","12:50pm",+0.01,51.47,51.62,50.98,2580014
"MMM",85.36,"6/11/2007","12:50pm",-0.58,85.94,85.98,85.28,1063300
"MO",70.37,"6/11/2007","12:51pm",+0.07,70.25,70.50,69.76,4395657
"MRK",50.97,"6/11/2007","12:51pm",+0.83,50.30,51.07,50.04,5527700
"MSFT",30.17,"6/11/2007","12:56pm",+0.12,30.05,30.25,29.93,21243952
"PFE",26.43,"6/11/2007","12:51pm",-0.09,26.50,26.53,26.31,10870382
"PG",63.04,"6/11/2007","12:51pm",-0.03,62.80,63.12,62.75,3002346
"T",40.01,"6/11/2007","12:51pm",-0.25,40.20,40.25,39.89,6578675
"UTX",69.88,"6/11/2007","12:50pm",-0.35,69.85,70.20,69.51,986100
"VZ",43.30,"6/11/2007","12:51pm",+0.23,42.95,43.34,42.89,3880620
"WMT",49.9786,"6/11/2007","12:51pm",-0.1014,49.90,50.00,49.55,5399333
"XOM",83.67,"6/11/2007","12:51pm",+0.99,82.68,83.67,82.35,6065100
"AA",39.50,"6/11/2007","12:56pm",-0.16,39.67,40.18,39.43,2111680
"AIG",71.68,"6/11/2007","12:56pm",+0.15,71.29,71.76,71.15,2166942
"AXP",63.00,"6/11/2007","12:56pm",-0.04,62.79,63.19,62.42,2038530
"BA",97.71,"6/11/2007","12:56pm",-0.48,98.25,98.79,97.59,1475700
"C",53.5614,"6/11/2007","12:56pm",+0.2314,53.20,53.65,52.81,5665694
"CAT",79.14,"6/11/2007","12:56pm",+0.62,78.32,79.14,78.06,1510252
"DD",50.79,"6/11/2007","12:56pm",-0.34,51.13,51.21,50.59,1934600
"DIS",34.20,"6/11/2007","12:56pm",0.00,34.28,34.44,34.12,3112050
"GE",37.47,"6/11/2007","12:56pm",+0.15,37.07,37.49,37.05,11425501
"GM",31.37,"6/11/2007","12:56pm",+0.37,31.00,31.62,30.90,7225026
"HD",37.77,"6/11/2007","12:56pm",-0.18,37.78,37.83,37.62,5433169
"HON",57.11,"6/11/2007","12:56pm",-0.27,57.25,57.40,56.91,1911042
"HPQ",46.07,"6/11/2007","12:55pm",+0.37,45.80,46.29,45.46,4729356
"IBM",103.97,"6/11/2007","12:56pm",+0.90,102.87,104.00,102.50,2444600
"INTC",22.00,"6/11/2007","1:01pm",+0.17,21.70,22.02,21.69,21559788
"JNJ",62.59,"6/11/2007","12:56pm",+0.46,62.89,62.89,62.15,3837538
"JPM",50.65,"6/11/2007","12:56pm",+0.24,50.41,50.65,50.05,4042900
"KO",51.67,"6/11/2007","12:56pm",0.00,51.67,51.82,51.32,5793842
"MCD",51.44,"6/11/2007","12:56pm",+0.03,51.47,51.62,50.98,2635114
"MMM",85.46,"6/11/2007","12:55pm",-0.48,85.94,85.98,85.28,1082400
"MO",70.35,"6/11/2007","12:56pm",+0.05,70.25,70.50,69.76,4427157
"MRK",50.96,"6/11/2007","12:56pm",+0.82,50.30,51.07,50.04,5634400
"MSFT",30.14,"6/11/2007","1:01pm",+0.09,30.05,30.25,29.93,21696948
"PFE",26.45,"6/11/2007","12:56pm",-0.07,26.50,26.53,26.31,11036032
"PG",63.08,"6/11/2007","12:56pm",+0.01,62.80,63.12,62.75,3066446
"T",40.04,"6/11/2007","12:56pm",-0.22,40.20,40.25,39.89,6709275
"UTX",69.92,"6/11/2007","12:56pm",-0.31,69.85,70.20,69.51,1008800
"VZ",43.32,"6/11/2007","12:56pm",+0.25,42.95,43.34,42.89,3928820
"WMT",50.01,"6/11/2007","12:56pm",-0.07,49.90,50.04,49.55,5568433
"XOM",83.66,"6/11/2007","12:56pm",+0.98,82.68,83.72,82.35,6158700
"AA",39.51,"6/11/2007","1:01pm",-0.15,39.67,40.18,39.43,2207380
"AIG",71.64,"6/11/2007","1:01pm",+0.11,71.29,71.76,71.15,2223342
"AXP",62.96,"6/11/2007","1:01pm",-0.08,62.79,63.19,62.42,2056230
"BA",97.65,"6/11/2007","1:01pm",-0.54,98.25,98.79,97.59,1502900
"C",53.58,"6/11/2007","1:01pm",+0.25,53.20,53.65,52.81,5805794
"CAT",79.07,"6/11/2007","1:00pm",+0.55,78.32,79.14,78.06,1532652
"DD",50.7784,"6/11/2007","1:01pm",-0.3516,51.13,51.21,50.59,1957300
"DIS",34.20,"6/11/2007","1:01pm",0.00,34.28,34.44,34.12,3159250
"GE",37.48,"6/11/2007","1:01pm",+0.16,37.07,37.49,37.05,11769301
"GM",31.34,"6/11/2007","1:01pm",+0.34,31.00,31.62,30.90,7327251
"HD",37.75,"6/11/2007","1:01pm",-0.20,37.78,37.83,37.62,5482469
"HON",56.98,"6/11/2007","1:01pm",-0.40,57.25,57.40,56.91,1964142
"HPQ",46.05,"6/11/2007","1:01pm",+0.35,45.80,46.29,45.46,4778356
"IBM",103.79,"6/11/2007","1:01pm",+0.72,102.87,104.00,102.50,2477300
"INTC",22.01,"6/11/2007","1:06pm",+0.18,21.70,22.02,21.69,21974040
"JNJ",62.55,"6/11/2007","1:01pm",+0.42,62.89,62.89,62.15,4653538
"JPM",50.64,"6/11/2007","1:01pm",+0.23,50.41,50.66,50.05,4113700
"KO",51.61,"6/11/2007","1:01pm",-0.06,51.67,51.82,51.32,5829142
"MCD",51.40,"6/11/2007","1:01pm",-0.01,51.47,51.62,50.98,2668014
"MMM",85.38,"6/11/2007","1:00pm",-0.56,85.94,85.98,85.28,1091500
"MO",70.29,"6/11/2007","1:01pm",-0.01,70.25,70.50,69.76,4483057
"MRK",50.95,"6/11/2007","1:01pm",+0.81,50.30,51.07,50.04,5728600
"MSFT",30.14,"6/11/2007","1:06pm",+0.09,30.05,30.25,29.93,21878754
"PFE",26.44,"6/11/2007","1:01pm",-0.08,26.50,26.53,26.31,11232332
"PG",63.01,"6/11/2007","1:01pm",-0.06,62.80,63.12,62.75,3117846
"T",40.03,"6/11/2007","1:01pm",-0.23,40.20,40.25,39.89,6799375
"UTX",69.90,"6/11/2007","1:00pm",-0.33,69.85,70.20,69.51,1060200
"VZ",43.25,"6/11/2007","1:01pm",+0.18,42.95,43.34,42.89,4008920
"WMT",50.01,"6/11/2007","1:01pm",-0.07,49.90,50.04,49.55,5777993
"XOM",83.57,"6/11/2007","1:01pm",+0.89,82.68,83.72,82.35,6284800
"AA",39.52,"6/11/2007","1:06pm",-0.14,39.67,40.18,39.43,2284880
"AIG",71.69,"6/11/2007","1:06pm",+0.16,71.29,71.76,71.15,2274642
"AXP",62.95,"6/11/2007","1:06pm",-0.09,62.79,63.19,62.42,2065330
"BA",97.65,"6/11/2007","1:06pm",-0.54,98.25,98.79,97.59,1513500
"C",53.57,"6/11/2007","1:06pm",+0.24,53.20,53.65,52.81,5889294
"CAT",79.07,"6/11/2007","1:05pm",+0.55,78.32,79.14,78.06,1549052
"DD",50.79,"6/11/2007","1:06pm",-0.34,51.13,51.21,50.59,1978300
"DIS",34.195,"6/11/2007","1:06pm",-0.005,34.28,34.44,34.12,3179550
"GE",37.48,"6/11/2007","1:06pm",+0.16,37.07,37.49,37.05,11921001
"GM",31.34,"6/11/2007","1:06pm",+0.34,31.00,31.62,30.90,7418551
"HD",37.75,"6/11/2007","1:06pm",-0.20,37.78,37.83,37.62,5559869
"HON",56.99,"6/11/2007","1:06pm",-0.39,57.25,57.40,56.91,2007542
"HPQ",46.0627,"6/11/2007","1:05pm",+0.3627,45.80,46.29,45.46,4829456
"IBM",103.76,"6/11/2007","1:05pm",+0.69,102.87,104.00,102.50,2503900
"INTC",22.04,"6/11/2007","1:11pm",+0.21,21.70,22.05,21.69,22780160
"JNJ",62.58,"6/11/2007","1:06pm",+0.45,62.89,62.89,62.15,4682578
"JPM",50.649,"6/11/2007","1:06pm",+0.239,50.41,50.66,50.05,4156000
"KO",51.68,"6/11/2007","1:06pm",+0.01,51.67,51.82,51.32,5958742
"MCD",51.38,"6/11/2007","1:06pm",-0.03,51.47,51.62,50.98,2710414
"MMM",85.40,"6/11/2007","1:05pm",-0.54,85.94,85.98,85.28,1115800
"MO",70.29,"6/11/2007","1:06pm",-0.01,70.25,70.50,69.76,4510357
"MRK",50.95,"6/11/2007","1:06pm",+0.81,50.30,51.07,50.04,5784900
"MSFT",30.16,"6/11/2007","1:11pm",+0.11,30.05,30.25,29.93,22141974
"PFE",26.50,"6/11/2007","1:06pm",-0.02,26.50,26.53,26.31,11587539
"PG",63.07,"6/11/2007","1:06pm",0.00,62.80,63.12,62.75,3192946
"T",40.13,"6/11/2007","1:06pm",-0.13,40.20,40.25,39.89,6957775
"UTX",69.91,"6/11/2007","1:06pm",-0.32,69.85,70.20,69.51,1075500
"VZ",43.2716,"6/11/2007","1:05pm",+0.2016,42.95,43.34,42.89,4057020
"WMT",50.07,"6/11/2007","1:06pm",-0.01,49.90,50.08,49.55,5985207
"XOM",83.53,"6/11/2007","1:06pm",+0.85,82.68,83.72,82.35,6388600
"AA",39.53,"6/11/2007","1:11pm",-0.13,39.67,40.18,39.43,2319180
"AIG",71.74,"6/11/2007","1:11pm",+0.21,71.29,71.76,71.15,2359542
"AXP",63.12,"6/11/2007","1:11pm",+0.08,62.79,63.19,62.42,2086730
"BA",97.75,"6/11/2007","1:11pm",-0.44,98.25,98.79,97.59,1556900
"C",53.67,"6/11/2007","1:11pm",+0.34,53.20,53.69,52.81,6010594
"CAT",79.17,"6/11/2007","1:11pm",+0.65,78.32,79.19,78.06,1577652
"DD",50.79,"6/11/2007","1:11pm",-0.34,51.13,51.21,50.59,2054300
"DIS",34.22,"6/11/2007","1:11pm",+0.02,34.28,34.44,34.12,3245950
"GE",37.53,"6/11/2007","1:11pm",+0.21,37.07,37.53,37.05,12200301
"GM",31.42,"6/11/2007","1:11pm",+0.42,31.00,31.62,30.90,7518551
"HD",37.78,"6/11/2007","1:11pm",-0.17,37.78,37.83,37.62,5639569
"HON",57.13,"6/11/2007","1:11pm",-0.25,57.25,57.40,56.91,2042642
"HPQ",46.12,"6/11/2007","1:11pm",+0.42,45.80,46.29,45.46,5833149
"IBM",103.86,"6/11/2007","1:11pm",+0.79,102.87,104.00,102.50,2536300
"INTC",22.05,"6/11/2007","1:16pm",+0.22,21.70,22.07,21.69,23218578
"JNJ",62.65,"6/11/2007","1:11pm",+0.52,62.89,62.89,62.15,4727878
"JPM",50.69,"6/11/2007","1:11pm",+0.28,50.41,50.695,50.05,4239700
"KO",51.74,"6/11/2007","1:11pm",+0.07,51.67,51.82,51.32,6054742
"MCD",51.44,"6/11/2007","1:11pm",+0.03,51.47,51.62,50.98,2762114
"MMM",85.53,"6/11/2007","1:11pm",-0.41,85.94,85.98,85.28,1145200
"MO",70.41,"6/11/2007","1:11pm",+0.11,70.25,70.50,69.76,4563257
"MRK",51.12,"6/11/2007","1:11pm",+0.98,50.30,51.13,50.04,5899900
"MSFT",30.17,"6/11/2007","1:16pm",+0.12,30.05,30.25,29.93,22399100
"PFE",26.5275,"6/11/2007","1:11pm",+0.0075,26.50,26.53,26.31,12044278
"PG",63.0995,"6/11/2007","1:11pm",+0.0295,62.80,63.12,62.75,3229446
"T",40.19,"6/11/2007","1:11pm",-0.07,40.20,40.25,39.89,7073875
"UTX",69.97,"6/11/2007","1:11pm",-0.26,69.85,70.20,69.51,1092400
"VZ",43.34,"6/11/2007","1:10pm",+0.27,42.95,43.34,42.88,4847820
"WMT",50.08,"6/11/2007","1:11pm",0.00,49.90,50.12,49.55,6200407
"XOM",83.66,"6/11/2007","1:11pm",+0.98,82.68,83.72,82.35,6490400
"AA",39.56,"6/11/2007","1:16pm",-0.10,39.67,40.18,39.43,2433580
"AIG",71.80,"6/11/2007","1:16pm",+0.27,71.29,71.83,71.15,2440996
"AXP",63.20,"6/11/2007","1:15pm",+0.16,62.79,63.21,62.42,2110030
"BA",97.85,"6/11/2007","1:16pm",-0.34,98.25,98.79,97.59,1590400
"C",53.679,"6/11/2007","1:16pm",+0.349,53.20,53.71,52.81,6103294
"CAT",79.35,"6/11/2007","1:16pm",+0.83,78.32,79.39,78.06,1651052
"DD",50.85,"6/11/2007","1:16pm",-0.28,51.13,51.21,50.59,2111497
"DIS",34.21,"6/11/2007","1:15pm",+0.01,34.28,34.44,34.12,3343750
"GE",37.535,"6/11/2007","1:16pm",+0.215,37.07,37.54,37.05,12385801
"GM",31.45,"6/11/2007","1:16pm",+0.45,31.00,31.62,30.90,7588451
"HD",37.77,"6/11/2007","1:16pm",-0.18,37.78,37.83,37.62,5820967
"HON",57.11,"6/11/2007","1:16pm",-0.27,57.25,57.40,56.91,2057642
"HPQ",46.12,"6/11/2007","1:16pm",+0.42,45.80,46.29,45.46,5922449
"IBM",103.83,"6/11/2007","1:16pm",+0.76,102.87,104.00,102.50,2579600
"INTC",22.06,"6/11/2007","1:21pm",+0.23,21.70,22.08,21.69,23707494
"JNJ",62.64,"6/11/2007","1:16pm",+0.51,62.89,62.89,62.15,4771978
"JPM",50.75,"6/11/2007","1:16pm",+0.34,50.41,50.78,50.05,4349600
"KO",51.73,"6/11/2007","1:16pm",+0.06,51.67,51.82,51.32,6085542
"MCD",51.47,"6/11/2007","1:16pm",+0.06,51.47,51.62,50.98,2786414
"MMM",85.56,"6/11/2007","1:16pm",-0.38,85.94,85.98,85.28,1180100
"MO",70.37,"6/11/2007","1:16pm",+0.07,70.25,70.50,69.76,4636857
"MRK",51.15,"6/11/2007","1:16pm",+1.01,50.30,51.16,50.04,6009400
"MSFT",30.14,"6/11/2007","1:21pm",+0.09,30.05,30.25,29.93,23011740
"PFE",26.51,"6/11/2007","1:16pm",-0.01,26.50,26.54,26.31,12225128
"PG",63.10,"6/11/2007","1:16pm",+0.03,62.80,63.12,62.75,3329546
"T",40.22,"6/11/2007","1:16pm",-0.04,40.20,40.26,39.89,7235875
"UTX",69.95,"6/11/2007","1:16pm",-0.28,69.85,70.20,69.51,1122100
"VZ",43.37,"6/11/2007","1:16pm",+0.30,42.95,43.38,42.88,4953820
"WMT",50.04,"6/11/2007","1:16pm",-0.04,49.90,50.12,49.55,6345707
"XOM",83.58,"6/11/2007","1:16pm",+0.90,82.68,83.72,82.35,6598900
"AA",39.58,"6/11/2007","1:21pm",-0.08,39.67,40.18,39.43,2500980
"AIG",71.90,"6/11/2007","1:21pm",+0.37,71.29,71.89,71.15,2494796
"AXP",63.22,"6/11/2007","1:21pm",+0.18,62.79,63.25,62.42,2135530
"BA",97.81,"6/11/2007","1:20pm",-0.38,98.25,98.79,97.59,1608700
"C",53.76,"6/11/2007","1:21pm",+0.43,53.20,53.77,52.81,6249294
"CAT",79.45,"6/11/2007","1:21pm",+0.93,78.32,79.45,78.06,1689152
"DD",50.89,"6/11/2007","1:21pm",-0.24,51.13,51.21,50.59,2132297
"DIS",34.23,"6/11/2007","1:20pm",+0.03,34.28,34.44,34.12,3370250
"GE",37.53,"6/11/2007","1:21pm",+0.21,37.07,37.56,37.05,12700001
"GM",31.43,"6/11/2007","1:21pm",+0.43,31.00,31.62,30.90,7705751
"HD",37.76,"6/11/2007","1:21pm",-0.19,37.78,37.83,37.62,5879467
"HON",57.17,"6/11/2007","1:21pm",-0.21,57.25,57.40,56.91,2107242
"HPQ",46.17,"6/11/2007","1:21pm",+0.47,45.80,46.29,45.46,5961749
"IBM",103.81,"6/11/2007","1:21pm",+0.74,102.87,104.00,102.50,2608100
"INTC",22.04,"6/11/2007","1:26pm",+0.21,21.70,22.08,21.69,24314782
"JNJ",62.66,"6/11/2007","1:21pm",+0.53,62.89,62.89,62.15,4802578
"JPM",50.83,"6/11/2007","1:21pm",+0.42,50.41,50.84,50.05,4419800
"KO",51.79,"6/11/2007","1:21pm",+0.12,51.67,51.82,51.32,6135742
"MCD",51.48,"6/11/2007","1:21pm",+0.07,51.47,51.62,50.98,2853314
"MMM",85.64,"6/11/2007","1:21pm",-0.30,85.94,85.98,85.28,1258800
"MO",70.41,"6/11/2007","1:21pm",+0.11,70.25,70.50,69.76,4723085
"MRK",51.22,"6/11/2007","1:21pm",+1.08,50.30,51.23,50.04,6148300
"MSFT",30.1301,"6/11/2007","1:25pm",+0.0801,30.05,30.25,29.93,23292696
"PFE",26.50,"6/11/2007","1:21pm",-0.02,26.50,26.54,26.31,12653153
"PG",63.10,"6/11/2007","1:21pm",+0.03,62.80,63.12,62.75,3736946
"T",40.28,"6/11/2007","1:21pm",+0.02,40.20,40.29,39.89,7365200
"UTX",70.02,"6/11/2007","1:21pm",-0.21,69.85,70.20,69.51,1158800
"VZ",43.43,"6/11/2007","1:21pm",+0.36,42.95,43.44,42.88,5053620
"WMT",50.02,"6/11/2007","1:21pm",-0.06,49.90,50.12,49.55,6585307
"XOM",83.66,"6/11/2007","1:21pm",+0.98,82.68,83.72,82.35,6705800
"AA",39.52,"6/11/2007","1:26pm",-0.14,39.67,40.18,39.43,2540480
"AIG",71.85,"6/11/2007","1:26pm",+0.32,71.29,71.90,71.15,2549996
"AXP",63.18,"6/11/2007","1:26pm",+0.14,62.79,63.26,62.42,2157330
"BA",97.71,"6/11/2007","1:26pm",-0.48,98.25,98.79,97.59,1636600
"C",53.72,"6/11/2007","1:26pm",+0.39,53.20,53.77,52.81,6427294
"CAT",79.20,"6/11/2007","1:26pm",+0.68,78.32,79.46,78.06,1768752
"DD",50.86,"6/11/2007","1:26pm",-0.27,51.13,51.21,50.59,2150397
"DIS",34.22,"6/11/2007","1:26pm",+0.02,34.28,34.44,34.12,3496150
"GE",37.50,"6/11/2007","1:26pm",+0.18,37.07,37.56,37.05,12934301
"GM",31.40,"6/11/2007","1:26pm",+0.40,31.00,31.62,30.90,7805351
"HD",37.75,"6/11/2007","1:26pm",-0.20,37.78,37.83,37.62,5995967
"HON",57.20,"6/11/2007","1:26pm",-0.18,57.25,57.40,56.91,2149442
"HPQ",46.14,"6/11/2007","1:26pm",+0.44,45.80,46.29,45.46,6019149
"IBM",103.70,"6/11/2007","1:26pm",+0.63,102.87,104.00,102.50,2638000
"INTC",22.04,"6/11/2007","1:31pm",+0.21,21.70,22.08,21.69,24406300
"JNJ",62.63,"6/11/2007","1:26pm",+0.50,62.89,62.89,62.15,4835178
"JPM",50.81,"6/11/2007","1:26pm",+0.40,50.41,50.84,50.05,4480900
"KO",51.78,"6/11/2007","1:26pm",+0.11,51.67,51.85,51.32,6233852
"MCD",51.44,"6/11/2007","1:26pm",+0.03,51.47,51.62,50.98,2881414
"MMM",85.62,"6/11/2007","1:26pm",-0.32,85.94,85.98,85.28,1282500
"MO",70.36,"6/11/2007","1:26pm",+0.06,70.25,70.50,69.76,4767885
"MRK",51.23,"6/11/2007","1:26pm",+1.09,50.30,51.27,50.04,6334000
"MSFT",30.12,"6/11/2007","1:31pm",+0.07,30.05,30.25,29.93,23578844
"PFE",26.50,"6/11/2007","1:26pm",-0.02,26.50,26.54,26.31,14778927
"PG",63.09,"6/11/2007","1:26pm",+0.02,62.80,63.12,62.75,3928946
"T",40.31,"6/11/2007","1:26pm",+0.05,40.20,40.33,39.89,7505100
"UTX",69.98,"6/11/2007","1:26pm",-0.25,69.85,70.20,69.51,1210900
"VZ",43.40,"6/11/2007","1:26pm",+0.33,42.95,43.45,42.88,5123120
"WMT",49.96,"6/11/2007","1:26pm",-0.12,49.90,50.12,49.55,6687607
"XOM",83.57,"6/11/2007","1:26pm",+0.89,82.68,83.72,82.35,6797200
"AA",39.53,"6/11/2007","1:31pm",-0.13,39.67,40.18,39.43,2572580
"AIG",71.85,"6/11/2007","1:31pm",+0.32,71.29,71.90,71.15,2602596
"AXP",63.26,"6/11/2007","1:31pm",+0.22,62.79,63.26,62.42,2172130
"BA",97.82,"6/11/2007","1:31pm",-0.37,98.25,98.79,97.59,1659000
"C",53.74,"6/11/2007","1:31pm",+0.41,53.20,53.77,52.81,6462694
"CAT",79.20,"6/11/2007","1:31pm",+0.68,78.32,79.46,78.06,1829052
"DD",50.85,"6/11/2007","1:31pm",-0.28,51.13,51.21,50.59,2171097
"DIS",34.24,"6/11/2007","1:31pm",+0.04,34.28,34.44,34.12,3579950
"GE",37.52,"6/11/2007","1:31pm",+0.20,37.07,37.56,37.05,13012501
"GM",31.42,"6/11/2007","1:31pm",+0.42,31.00,31.62,30.90,7927151
"HD",37.76,"6/11/2007","1:31pm",-0.19,37.78,37.83,37.62,6189667
"HON",57.21,"6/11/2007","1:31pm",-0.17,57.25,57.40,56.91,2172142
"HPQ",46.14,"6/11/2007","1:31pm",+0.44,45.80,46.29,45.46,6057949
"IBM",103.63,"6/11/2007","1:31pm",+0.56,102.87,104.00,102.50,2660504
"INTC",22.04,"6/11/2007","1:36pm",+0.21,21.70,22.08,21.69,24689632
"JNJ",62.61,"6/11/2007","1:31pm",+0.48,62.89,62.89,62.15,4868578
"JPM",50.80,"6/11/2007","1:31pm",+0.39,50.41,50.84,50.05,4526800
"KO",51.75,"6/11/2007","1:31pm",+0.08,51.67,51.85,51.32,6294152
"MCD",51.43,"6/11/2007","1:31pm",+0.02,51.47,51.62,50.98,2901114
"MMM",85.59,"6/11/2007","1:31pm",-0.35,85.94,85.98,85.28,1297000
"MO",70.34,"6/11/2007","1:31pm",+0.04,70.25,70.50,69.76,4818885
"MRK",51.24,"6/11/2007","1:31pm",+1.10,50.30,51.27,50.04,6438900
"MSFT",30.125,"6/11/2007","1:36pm",+0.075,30.05,30.25,29.93,23983122
"PFE",26.51,"6/11/2007","1:31pm",-0.01,26.50,26.54,26.31,14886127
"PG",63.08,"6/11/2007","1:31pm",+0.01,62.80,63.13,62.75,3971046
"T",40.31,"6/11/2007","1:31pm",+0.05,40.20,40.33,39.89,7610100
"UTX",70.05,"6/11/2007","1:31pm",-0.18,69.85,70.20,69.51,1239200
"VZ",43.39,"6/11/2007","1:31pm",+0.32,42.95,43.45,42.88,5198120
"WMT",50.00,"6/11/2007","1:31pm",-0.08,49.90,50.12,49.55,6808307
"XOM",83.60,"6/11/2007","1:31pm",+0.92,82.68,83.72,82.35,6858500
"AA",39.54,"6/11/2007","1:36pm",-0.12,39.67,40.18,39.43,2615380
"AIG",71.90,"6/11/2007","1:36pm",+0.37,71.29,71.90,71.15,2648396
"AXP",63.27,"6/11/2007","1:36pm",+0.23,62.79,63.28,62.42,2187930
"BA",97.88,"6/11/2007","1:36pm",-0.31,98.25,98.79,97.59,1700700
"C",53.73,"6/11/2007","1:36pm",+0.40,53.20,53.77,52.81,6558794
"CAT",79.20,"6/11/2007","1:36pm",+0.68,78.32,79.46,78.06,1869352
"DD",50.89,"6/11/2007","1:36pm",-0.24,51.13,51.21,50.59,2184797
"DIS",34.22,"6/11/2007","1:36pm",+0.02,34.28,34.44,34.12,3654250
"GE",37.51,"6/11/2007","1:36pm",+0.19,37.07,37.56,37.05,13175301
"GM",31.45,"6/11/2007","1:36pm",+0.45,31.00,31.62,30.90,8227251
"HD",37.76,"6/11/2007","1:36pm",-0.19,37.78,37.83,37.62,6273567
"HON",57.24,"6/11/2007","1:36pm",-0.14,57.25,57.40,56.91,2203642
"HPQ",46.17,"6/11/2007","1:36pm",+0.47,45.80,46.29,45.46,6121849
"IBM",103.59,"6/11/2007","1:36pm",+0.52,102.87,104.00,102.50,2702104
"INTC",22.02,"6/11/2007","1:41pm",+0.19,21.70,22.08,21.69,25010946
"JNJ",62.60,"6/11/2007","1:36pm",+0.47,62.89,62.89,62.15,4923778
"JPM",50.77,"6/11/2007","1:36pm",+0.36,50.41,50.84,50.05,4660900
"KO",51.79,"6/11/2007","1:36pm",+0.12,51.67,51.85,51.32,6365852
"MCD",51.42,"6/11/2007","1:36pm",+0.01,51.47,51.62,50.98,2935214
"MMM",85.57,"6/11/2007","1:36pm",-0.37,85.94,85.98,85.28,1313500
"MO",70.37,"6/11/2007","1:36pm",+0.07,70.25,70.50,69.76,4877785
"MRK",51.24,"6/11/2007","1:36pm",+1.10,50.30,51.28,50.04,6515500
"MSFT",30.12,"6/11/2007","1:41pm",+0.07,30.05,30.25,29.93,24255316
"PFE",26.491,"6/11/2007","1:36pm",-0.029,26.50,26.54,26.31,15109927
"PG",63.12,"6/11/2007","1:36pm",+0.05,62.80,63.13,62.75,4002446
"T",40.30,"6/11/2007","1:36pm",+0.04,40.20,40.33,39.89,7712400
"UTX",70.10,"6/11/2007","1:36pm",-0.13,69.85,70.20,69.51,1247400
"VZ",43.40,"6/11/2007","1:36pm",+0.33,42.95,43.45,42.88,5341720
"WMT",49.95,"6/11/2007","1:36pm",-0.13,49.90,50.12,49.55,6914407
"XOM",83.56,"6/11/2007","1:36pm",+0.88,82.68,83.72,82.35,6917800
"AA",39.53,"6/11/2007","1:41pm",-0.13,39.67,40.18,39.43,2647380
"AIG",71.87,"6/11/2007","1:41pm",+0.34,71.29,71.90,71.15,2686796
"AXP",63.28,"6/11/2007","1:41pm",+0.24,62.79,63.32,62.42,2205330
"BA",97.82,"6/11/2007","1:41pm",-0.37,98.25,98.79,97.59,1725200
"C",53.67,"6/11/2007","1:41pm",+0.34,53.20,53.77,52.81,6740594
"CAT",79.11,"6/11/2007","1:41pm",+0.59,78.32,79.46,78.06,1880652
"DD",50.861,"6/11/2007","1:41pm",-0.269,51.13,51.21,50.59,2199797
"DIS",34.21,"6/11/2007","1:41pm",+0.01,34.28,34.44,34.12,3734350
"GE",37.52,"6/11/2007","1:41pm",+0.20,37.07,37.56,37.05,13566001
"GM",31.47,"6/11/2007","1:41pm",+0.47,31.00,31.62,30.90,8330251
"HD",37.75,"6/11/2007","1:41pm",-0.20,37.78,37.83,37.62,6627167
"HON",57.17,"6/11/2007","1:41pm",-0.21,57.25,57.40,56.91,2246142
"HPQ",46.14,"6/11/2007","1:41pm",+0.44,45.80,46.29,45.46,6190049
"IBM",103.54,"6/11/2007","1:41pm",+0.47,102.87,104.00,102.50,2715404
"INTC",22.02,"6/11/2007","1:46pm",+0.19,21.70,22.08,21.69,25285316
"JNJ",62.54,"6/11/2007","1:41pm",+0.41,62.89,62.89,62.15,5098378
"JPM",50.77,"6/11/2007","1:41pm",+0.36,50.41,50.84,50.05,5025900
"KO",51.725,"6/11/2007","1:41pm",+0.055,51.67,51.85,51.32,6390552
"MCD",51.391,"6/11/2007","1:41pm",-0.019,51.47,51.62,50.98,2972614
"MMM",85.58,"6/11/2007","1:41pm",-0.36,85.94,85.98,85.28,1337300
"MO",70.29,"6/11/2007","1:41pm",-0.01,70.25,70.50,69.76,4907285
"MRK",51.21,"6/11/2007","1:41pm",+1.07,50.30,51.28,50.04,6587800
"MSFT",30.13,"6/11/2007","1:46pm",+0.08,30.05,30.25,29.93,24497374
"PFE",26.49,"6/11/2007","1:41pm",-0.03,26.50,26.54,26.31,15538627
"PG",63.13,"6/11/2007","1:41pm",+0.06,62.80,63.14,62.75,4048446
"T",40.31,"6/11/2007","1:41pm",+0.05,40.20,40.34,39.89,7832500
"UTX",70.07,"6/11/2007","1:41pm",-0.16,69.85,70.20,69.51,1264700
"VZ",43.38,"6/11/2007","1:41pm",+0.31,42.95,43.45,42.88,5395220
"WMT",49.90,"6/11/2007","1:41pm",-0.18,49.90,50.12,49.55,7009107
"XOM",83.53,"6/11/2007","1:41pm",+0.85,82.68,83.72,82.35,7007700
"AA",39.55,"6/11/2007","1:46pm",-0.11,39.67,40.18,39.43,2672280
"AIG",71.88,"6/11/2007","1:46pm",+0.35,71.29,71.90,71.15,2724196
"AXP",63.28,"6/11/2007","1:46pm",+0.24,62.79,63.32,62.42,2214330
"BA",97.98,"6/11/2007","1:46pm",-0.21,98.25,98.79,97.59,1773500
"C",53.61,"6/11/2007","1:46pm",+0.28,53.20,53.77,52.81,6867594
"CAT",79.07,"6/11/2007","1:46pm",+0.55,78.32,79.46,78.06,1923652
"DD",50.86,"6/11/2007","1:46pm",-0.27,51.13,51.21,50.59,2221297
"DIS",34.201,"6/11/2007","1:46pm",+0.001,34.28,34.44,34.12,3795650
"GE",37.52,"6/11/2007","1:46pm",+0.20,37.07,37.56,37.05,13711301
"GM",31.50,"6/11/2007","1:46pm",+0.50,31.00,31.62,30.90,8678851
"HD",37.77,"6/11/2007","1:46pm",-0.18,37.78,37.83,37.62,6687867
"HON",57.162,"6/11/2007","1:46pm",-0.218,57.25,57.40,56.91,2293142
"HPQ",46.13,"6/11/2007","1:46pm",+0.43,45.80,46.29,45.46,6259749
"IBM",103.57,"6/11/2007","1:46pm",+0.50,102.87,104.00,102.50,2740104
"INTC",22.02,"6/11/2007","1:51pm",+0.19,21.70,22.08,21.69,25632092
"JNJ",62.54,"6/11/2007","1:46pm",+0.41,62.89,62.89,62.15,5147978
"JPM",50.80,"6/11/2007","1:46pm",+0.39,50.41,50.84,50.05,5114400
"KO",51.75,"6/11/2007","1:46pm",+0.08,51.67,51.85,51.32,6441352
"MCD",51.40,"6/11/2007","1:46pm",-0.01,51.47,51.62,50.98,3049814
"MMM",85.59,"6/11/2007","1:46pm",-0.35,85.94,85.98,85.28,1347600
"MO",70.28,"6/11/2007","1:46pm",-0.02,70.25,70.50,69.76,4959585
"MRK",51.18,"6/11/2007","1:46pm",+1.04,50.30,51.28,50.04,6651700
"MSFT",30.11,"6/11/2007","1:51pm",+0.06,30.05,30.25,29.93,24742128
"PFE",26.44,"6/11/2007","1:46pm",-0.08,26.50,26.54,26.31,15813727
"PG",63.12,"6/11/2007","1:46pm",+0.05,62.80,63.14,62.75,4099546
"T",40.3073,"6/11/2007","1:46pm",+0.0473,40.20,40.34,39.89,7901800
"UTX",70.10,"6/11/2007","1:46pm",-0.13,69.85,70.20,69.51,1284300
"VZ",43.42,"6/11/2007","1:46pm",+0.35,42.95,43.45,42.88,5473215
"WMT",49.94,"6/11/2007","1:46pm",-0.14,49.90,50.12,49.55,7155307
"XOM",83.66,"6/11/2007","1:46pm",+0.98,82.68,83.72,82.35,7157900
"AA",39.55,"6/11/2007","1:51pm",-0.11,39.67,40.18,39.43,2705680
"AIG",71.84,"6/11/2007","1:51pm",+0.31,71.29,71.90,71.15,2760896
"AXP",63.245,"6/11/2007","1:51pm",+0.205,62.79,63.32,62.42,2226930
"BA",97.96,"6/11/2007","1:51pm",-0.23,98.25,98.79,97.59,1793700
"C",53.63,"6/11/2007","1:51pm",+0.30,53.20,53.77,52.81,6926294
"CAT",79.04,"6/11/2007","1:51pm",+0.52,78.32,79.46,78.06,1958652
"DD",50.83,"6/11/2007","1:51pm",-0.30,51.13,51.21,50.59,2232897
"DIS",34.20,"6/11/2007","1:50pm",0.00,34.28,34.44,34.12,3823150
"GE",37.52,"6/11/2007","1:51pm",+0.20,37.07,37.56,37.05,13797801
"GM",31.47,"6/11/2007","1:51pm",+0.47,31.00,31.62,30.90,8801851
"HD",37.77,"6/11/2007","1:51pm",-0.18,37.78,37.83,37.62,6761167
"HON",57.13,"6/11/2007","1:51pm",-0.25,57.25,57.40,56.91,2327542
"HPQ",46.12,"6/11/2007","1:51pm",+0.42,45.80,46.29,45.46,6316649
"IBM",103.55,"6/11/2007","1:51pm",+0.48,102.87,104.00,102.50,2777904
"INTC",22.03,"6/11/2007","1:56pm",+0.20,21.70,22.08,21.69,26065954
"JNJ",62.53,"6/11/2007","1:51pm",+0.40,62.89,62.89,62.15,5210478
"JPM",50.81,"6/11/2007","1:51pm",+0.40,50.41,50.84,50.05,5222100
"KO",51.75,"6/11/2007","1:51pm",+0.08,51.67,51.85,51.32,6558652
"MCD",51.39,"6/11/2007","1:51pm",-0.02,51.47,51.62,50.98,3074814
"MMM",85.548,"6/11/2007","1:51pm",-0.392,85.94,85.98,85.28,1372000
"MO",70.27,"6/11/2007","1:50pm",-0.03,70.25,70.50,69.76,4986985
"MRK",51.16,"6/11/2007","1:51pm",+1.02,50.30,51.28,50.04,6821600
"MSFT",30.13,"6/11/2007","1:56pm",+0.08,30.05,30.25,29.93,24970772
"PFE",26.448,"6/11/2007","1:51pm",-0.072,26.50,26.54,26.31,16248877
"PG",63.13,"6/11/2007","1:51pm",+0.06,62.80,63.14,62.75,4157646
"T",40.31,"6/11/2007","1:51pm",+0.05,40.20,40.34,39.89,8018500
"UTX",70.15,"6/11/2007","1:51pm",-0.08,69.85,70.20,69.51,1321400
"VZ",43.44,"6/11/2007","1:51pm",+0.37,42.95,43.45,42.88,5538015
"WMT",49.86,"6/11/2007","1:51pm",-0.22,49.90,50.12,49.55,7285407
"XOM",83.56,"6/11/2007","1:51pm",+0.88,82.68,83.72,82.35,7364600
"AA",39.53,"6/11/2007","1:56pm",-0.13,39.67,40.18,39.43,2721380
"AIG",71.7918,"6/11/2007","1:56pm",+0.2618,71.29,71.90,71.15,2817696
"AXP",63.20,"6/11/2007","1:56pm",+0.16,62.79,63.32,62.42,2237230
"BA",97.89,"6/11/2007","1:56pm",-0.30,98.25,98.79,97.59,1808600
"C",53.60,"6/11/2007","1:56pm",+0.27,53.20,53.77,52.81,7078394
"CAT",79.02,"6/11/2007","1:56pm",+0.50,78.32,79.46,78.06,1980452
"DD",50.83,"6/11/2007","1:56pm",-0.30,51.13,51.21,50.59,2245697
"DIS",34.195,"6/11/2007","1:56pm",-0.005,34.28,34.44,34.12,3863950
"GE",37.52,"6/11/2007","1:56pm",+0.20,37.07,37.56,37.05,13986001
"GM",31.49,"6/11/2007","1:56pm",+0.49,31.00,31.62,30.90,8849851
"HD",37.75,"6/11/2007","1:56pm",-0.20,37.78,37.83,37.62,6819267
"HON",57.11,"6/11/2007","1:56pm",-0.27,57.25,57.40,56.91,2354542
"HPQ",46.122,"6/11/2007","1:56pm",+0.422,45.80,46.29,45.46,6380249
"IBM",103.53,"6/11/2007","1:56pm",+0.46,102.87,104.00,102.50,2802904
"INTC",22.01,"6/11/2007","2:01pm",+0.18,21.70,22.08,21.69,26445260
"JNJ",62.52,"6/11/2007","1:56pm",+0.39,62.89,62.89,62.15,5265678
"JPM",50.77,"6/11/2007","1:56pm",+0.36,50.41,50.84,50.05,5291300
"KO",51.7619,"6/11/2007","1:56pm",+0.0919,51.67,51.85,51.32,6606152
"MCD",51.36,"6/11/2007","1:56pm",-0.05,51.47,51.62,50.98,3110114
"MMM",85.53,"6/11/2007","1:56pm",-0.41,85.94,85.98,85.28,1402100
"MO",70.27,"6/11/2007","1:56pm",-0.03,70.25,70.50,69.76,5016285
"MRK",51.11,"6/11/2007","1:56pm",+0.97,50.30,51.28,50.04,6899000
"MSFT",30.12,"6/11/2007","2:01pm",+0.07,30.05,30.25,29.93,25277544
"PFE",26.44,"6/11/2007","1:56pm",-0.08,26.50,26.54,26.31,16455677
"PG",63.13,"6/11/2007","1:56pm",+0.06,62.80,63.15,62.75,4256946
"T",40.28,"6/11/2007","1:56pm",+0.02,40.20,40.34,39.89,8132800
"UTX",70.154,"6/11/2007","1:56pm",-0.076,69.85,70.20,69.51,1344300
"VZ",43.47,"6/11/2007","1:56pm",+0.40,42.95,43.47,42.88,5621815
"WMT",49.88,"6/11/2007","1:56pm",-0.20,49.90,50.12,49.55,7420907
"XOM",83.52,"6/11/2007","1:56pm",+0.84,82.68,83.72,82.35,7459300
"AA",39.491,"6/11/2007","2:01pm",-0.169,39.67,40.18,39.43,2763280
"AIG",71.77,"6/11/2007","2:01pm",+0.24,71.29,71.90,71.15,2879896
"AXP",63.17,"6/11/2007","2:01pm",+0.13,62.79,63.32,62.42,2261630
"BA",97.83,"6/11/2007","2:01pm",-0.36,98.25,98.79,97.59,1833100
"C",53.55,"6/11/2007","2:01pm",+0.22,53.20,53.77,52.81,7307094
"CAT",79.00,"6/11/2007","2:01pm",+0.48,78.32,79.46,78.06,2025552
"DD",50.85,"6/11/2007","2:01pm",-0.28,51.13,51.21,50.59,2277197
"DIS",34.20,"6/11/2007","2:01pm",0.00,34.28,34.44,34.12,3931450
"GE",37.51,"6/11/2007","2:01pm",+0.19,37.07,37.56,37.05,14260601
"GM",31.50,"6/11/2007","2:01pm",+0.50,31.00,31.62,30.90,8948751
"HD",37.75,"6/11/2007","2:01pm",-0.20,37.78,37.83,37.62,7227367
"HON",57.13,"6/11/2007","2:01pm",-0.25,57.25,57.40,56.91,2422142
"HPQ",46.08,"6/11/2007","2:01pm",+0.38,45.80,46.29,45.46,6426249
"IBM",103.51,"6/11/2007","2:01pm",+0.44,102.87,104.00,102.50,2839204
"INTC",22.02,"6/11/2007","2:06pm",+0.19,21.70,22.08,21.69,26751104
"JNJ",62.50,"6/11/2007","2:01pm",+0.37,62.89,62.89,62.15,5350858
"JPM",50.70,"6/11/2007","2:01pm",+0.29,50.41,50.84,50.05,5396400
"KO",51.76,"6/11/2007","2:01pm",+0.09,51.67,51.85,51.32,6660752
"MCD",51.3727,"6/11/2007","2:01pm",-0.0373,51.47,51.62,50.98,3168414
"MMM",85.58,"6/11/2007","2:01pm",-0.36,85.94,85.98,85.28,1440600
"MO",70.24,"6/11/2007","2:01pm",-0.06,70.25,70.50,69.76,5077085
"MRK",51.09,"6/11/2007","2:01pm",+0.95,50.30,51.28,50.04,6995800
"MSFT",30.12,"6/11/2007","2:06pm",+0.07,30.05,30.25,29.93,25466984
"PFE",26.44,"6/11/2007","2:01pm",-0.08,26.50,26.54,26.31,16750477
"PG",63.12,"6/11/2007","2:01pm",+0.05,62.80,63.15,62.75,4334646
"T",40.27,"6/11/2007","2:01pm",+0.01,40.20,40.34,39.89,8457200
"UTX",70.11,"6/11/2007","2:01pm",-0.12,69.85,70.20,69.51,1362600
"VZ",43.46,"6/11/2007","2:01pm",+0.39,42.95,43.47,42.88,5698015
"WMT",49.79,"6/11/2007","2:01pm",-0.29,49.90,50.12,49.55,7569507
"XOM",83.43,"6/11/2007","2:01pm",+0.75,82.68,83.72,82.35,7716900
"AA",39.50,"6/11/2007","2:06pm",-0.16,39.67,40.18,39.43,2841280
"AIG",71.85,"6/11/2007","2:06pm",+0.32,71.29,71.90,71.15,2945096
"AXP",63.23,"6/11/2007","2:06pm",+0.19,62.79,63.32,62.42,2280130
"BA",97.92,"6/11/2007","2:06pm",-0.27,98.25,98.79,97.59,1847000
"C",53.56,"6/11/2007","2:06pm",+0.23,53.20,53.77,52.81,7466394
"CAT",79.11,"6/11/2007","2:06pm",+0.59,78.32,79.46,78.06,2048252
"DD",50.86,"6/11/2007","2:06pm",-0.27,51.13,51.21,50.59,2309597
"DIS",34.19,"6/11/2007","2:06pm",-0.01,34.28,34.44,34.12,3986950
"GE",37.51,"6/11/2007","2:06pm",+0.19,37.07,37.56,37.05,14444801
"GM",31.50,"6/11/2007","2:06pm",+0.50,31.00,31.62,30.90,9108451
"HD",37.75,"6/11/2007","2:06pm",-0.20,37.78,37.83,37.62,7407867
"HON",57.11,"6/11/2007","2:06pm",-0.27,57.25,57.40,56.91,2462942
"HPQ",46.08,"6/11/2007","2:06pm",+0.38,45.80,46.29,45.46,6509849
"IBM",103.54,"6/11/2007","2:06pm",+0.47,102.87,104.00,102.50,2861904
"INTC",22.03,"6/11/2007","2:11pm",+0.20,21.70,22.08,21.69,26974348
"JNJ",62.50,"6/11/2007","2:06pm",+0.37,62.89,62.89,62.15,5513358
"JPM",50.65,"6/11/2007","2:06pm",+0.24,50.41,50.84,50.05,5565600
"KO",51.77,"6/11/2007","2:06pm",+0.10,51.67,51.85,51.32,6687652
"MCD",51.41,"6/11/2007","2:06pm",0.00,51.47,51.62,50.98,3209614
"MMM",85.53,"6/11/2007","2:06pm",-0.41,85.94,85.98,85.28,1470200
"MO",70.29,"6/11/2007","2:06pm",-0.01,70.25,70.50,69.76,5107185
"MRK",51.05,"6/11/2007","2:06pm",+0.91,50.30,51.28,50.04,7162100
"MSFT",30.13,"6/11/2007","2:11pm",+0.08,30.05,30.25,29.93,25965886
"PFE",26.44,"6/11/2007","2:06pm",-0.08,26.50,26.54,26.31,17179996
"PG",63.14,"6/11/2007","2:06pm",+0.07,62.80,63.15,62.75,4427046
"T",40.26,"6/11/2007","2:06pm",0.00,40.20,40.34,39.89,8620800
"UTX",70.12,"6/11/2007","2:06pm",-0.11,69.85,70.20,69.51,1386800
"VZ",43.44,"6/11/2007","2:06pm",+0.37,42.95,43.47,42.88,5829840
"WMT",49.83,"6/11/2007","2:06pm",-0.25,49.90,50.12,49.55,7695307
"XOM",83.44,"6/11/2007","2:06pm",+0.76,82.68,83.72,82.35,7916100
"AA",39.53,"6/11/2007","2:11pm",-0.13,39.67,40.18,39.43,2880880
"AIG",71.98,"6/11/2007","2:11pm",+0.45,71.29,71.99,71.15,3103496
"AXP",63.38,"6/11/2007","2:11pm",+0.34,62.79,63.39,62.42,2308630
"BA",97.93,"6/11/2007","2:11pm",-0.26,98.25,98.79,97.59,1881100
"C",53.72,"6/11/2007","2:11pm",+0.39,53.20,53.77,52.81,7588294
"CAT",79.19,"6/11/2007","2:11pm",+0.67,78.32,79.46,78.06,2131352
"DD",50.90,"6/11/2007","2:11pm",-0.23,51.13,51.21,50.59,2340097
"DIS",34.21,"6/11/2007","2:11pm",+0.01,34.28,34.44,34.12,4058750
"GE",37.57,"6/11/2007","2:11pm",+0.25,37.07,37.57,37.05,14734801
"GM",31.57,"6/11/2007","2:11pm",+0.57,31.00,31.62,30.90,9594251
"HD",37.76,"6/11/2007","2:11pm",-0.19,37.78,37.83,37.62,7474967
"HON",57.19,"6/11/2007","2:11pm",-0.19,57.25,57.40,56.91,2592542
"HPQ",46.15,"6/11/2007","2:11pm",+0.45,45.80,46.29,45.46,6633249
"IBM",103.59,"6/11/2007","2:11pm",+0.52,102.87,104.00,102.50,2884504
"INTC",22.01,"6/11/2007","2:16pm",+0.18,21.70,22.08,21.69,27482520
"JNJ",62.53,"6/11/2007","2:11pm",+0.40,62.89,62.89,62.15,5618158
"JPM",50.74,"6/11/2007","2:11pm",+0.33,50.41,50.84,50.05,5728500
"KO",51.79,"6/11/2007","2:11pm",+0.12,51.67,51.85,51.32,6761552
"MCD",51.50,"6/11/2007","2:11pm",+0.09,51.47,51.62,50.98,3260114
"MMM",85.57,"6/11/2007","2:11pm",-0.37,85.94,85.98,85.28,1508200
"MO",70.34,"6/11/2007","2:11pm",+0.04,70.25,70.50,69.76,5156485
"MRK",51.21,"6/11/2007","2:11pm",+1.07,50.30,51.28,50.04,7355400
"MSFT",30.16,"6/11/2007","2:16pm",+0.11,30.05,30.25,29.93,26411778
"PFE",26.48,"6/11/2007","2:11pm",-0.04,26.50,26.54,26.31,17302396
"PG",63.1819,"6/11/2007","2:11pm",+0.1119,62.80,63.19,62.75,4533846
"T",40.25,"6/11/2007","2:11pm",-0.01,40.20,40.34,39.89,8839900
"UTX",70.20,"6/11/2007","2:11pm",-0.03,69.85,70.20,69.51,1410200
"VZ",43.49,"6/11/2007","2:11pm",+0.42,42.95,43.49,42.88,5904936
"WMT",49.882,"6/11/2007","2:11pm",-0.198,49.90,50.12,49.55,7831607
"XOM",83.51,"6/11/2007","2:11pm",+0.83,82.68,83.72,82.35,8147200
"AA",39.49,"6/11/2007","2:16pm",-0.17,39.67,40.18,39.43,2953380
"AIG",71.90,"6/11/2007","2:16pm",+0.37,71.29,72.03,71.15,3208796
"AXP",63.31,"6/11/2007","2:16pm",+0.27,62.79,63.42,62.42,2337730
"BA",97.92,"6/11/2007","2:16pm",-0.27,98.25,98.79,97.59,1921100
"C",53.65,"6/11/2007","2:16pm",+0.32,53.20,53.77,52.81,7685194
"CAT",79.08,"6/11/2007","2:16pm",+0.56,78.32,79.46,78.06,2163952
"DD",50.86,"6/11/2007","2:16pm",-0.27,51.13,51.21,50.59,2355597
"DIS",34.20,"6/11/2007","2:16pm",0.00,34.28,34.44,34.12,4227650
"GE",37.54,"6/11/2007","2:16pm",+0.22,37.07,37.61,37.05,15329801
"GM",31.63,"6/11/2007","2:16pm",+0.63,31.00,31.64,30.90,9900251
"HD",37.75,"6/11/2007","2:16pm",-0.20,37.78,37.83,37.62,7614667
"HON",57.16,"6/11/2007","2:16pm",-0.22,57.25,57.40,56.91,2626742
"HPQ",46.14,"6/11/2007","2:16pm",+0.44,45.80,46.29,45.46,6705149
"IBM",103.48,"6/11/2007","2:16pm",+0.41,102.87,104.00,102.50,2932004
"INTC",22.01,"6/11/2007","2:21pm",+0.18,21.70,22.08,21.69,27617028
"JNJ",62.49,"6/11/2007","2:16pm",+0.36,62.89,62.89,62.15,5748158
"JPM",50.71,"6/11/2007","2:16pm",+0.30,50.41,50.84,50.05,5968400
"KO",51.75,"6/11/2007","2:16pm",+0.08,51.67,51.85,51.32,6798052
"MCD",51.40,"6/11/2007","2:16pm",-0.01,51.47,51.62,50.98,3310514
"MMM",85.53,"6/11/2007","2:16pm",-0.41,85.94,85.98,85.28,1531600
"MO",70.33,"6/11/2007","2:16pm",+0.03,70.25,70.50,69.76,5204085
"MRK",51.17,"6/11/2007","2:16pm",+1.03,50.30,51.28,50.04,7421000
"MSFT",30.18,"6/11/2007","2:21pm",+0.13,30.05,30.25,29.93,26830224
"PFE",26.46,"6/11/2007","2:16pm",-0.06,26.50,26.54,26.31,17549496
"PG",63.18,"6/11/2007","2:16pm",+0.11,62.80,63.20,62.75,4586346
"T",40.30,"6/11/2007","2:16pm",+0.04,40.20,40.34,39.89,9022910
"UTX",70.192,"6/11/2007","2:16pm",-0.038,69.85,70.25,69.51,1444200
"VZ",43.52,"6/11/2007","2:16pm",+0.45,42.95,43.535,42.88,6098036
"WMT",49.85,"6/11/2007","2:16pm",-0.23,49.90,50.12,49.55,7900607
"XOM",83.37,"6/11/2007","2:16pm",+0.69,82.68,83.85,82.35,8845100
"AA",39.46,"6/11/2007","2:21pm",-0.20,39.67,40.18,39.43,3029880
"AIG",71.92,"6/11/2007","2:21pm",+0.39,71.29,72.03,71.15,3245196
"AXP",63.35,"6/11/2007","2:21pm",+0.31,62.79,63.42,62.42,2353430
"BA",97.97,"6/11/2007","2:21pm",-0.22,98.25,98.79,97.59,1944500
"C",53.69,"6/11/2007","2:21pm",+0.36,53.20,53.77,52.81,7757194
"CAT",79.12,"6/11/2007","2:21pm",+0.60,78.32,79.46,78.06,2214452
"DD",50.899,"6/11/2007","2:21pm",-0.231,51.13,51.21,50.59,2373297
"DIS",34.23,"6/11/2007","2:21pm",+0.03,34.28,34.44,34.12,4262150
"GE",37.52,"6/11/2007","2:21pm",+0.20,37.07,37.61,37.05,15596301
"GM",31.68,"6/11/2007","2:21pm",+0.68,31.00,31.69,30.90,10286001
"HD",37.7618,"6/11/2007","2:21pm",-0.1882,37.78,37.83,37.62,7739967
"HON",57.28,"6/11/2007","2:21pm",-0.10,57.25,57.40,56.91,2699742
"HPQ",46.16,"6/11/2007","2:21pm",+0.46,45.80,46.29,45.46,6773849
"IBM",103.47,"6/11/2007","2:21pm",+0.40,102.87,104.00,102.50,2958304
"INTC",22.008,"6/11/2007","2:26pm",+0.178,21.70,22.08,21.69,28003456
"JNJ",62.53,"6/11/2007","2:21pm",+0.40,62.89,62.89,62.15,5814358
"JPM",50.721,"6/11/2007","2:21pm",+0.311,50.41,50.84,50.05,6057700
"KO",51.77,"6/11/2007","2:21pm",+0.10,51.67,51.85,51.32,6832552
"MCD",51.37,"6/11/2007","2:21pm",-0.04,51.47,51.62,50.98,3514114
"MMM",85.58,"6/11/2007","2:21pm",-0.36,85.94,85.98,85.28,1584600
"MO",70.39,"6/11/2007","2:21pm",+0.09,70.25,70.50,69.76,5237185
"MRK",51.25,"6/11/2007","2:21pm",+1.11,50.30,51.28,50.04,7541700
"MSFT",30.18,"6/11/2007","2:26pm",+0.13,30.05,30.25,29.93,27263748
"PFE",26.45,"6/11/2007","2:21pm",-0.07,26.50,26.54,26.31,17743896
"PG",63.17,"6/11/2007","2:21pm",+0.10,62.80,63.20,62.75,4649246
"T",40.36,"6/11/2007","2:21pm",+0.10,40.20,40.37,39.89,9204010
"UTX",70.20,"6/11/2007","2:21pm",-0.03,69.85,70.25,69.51,1518400
"VZ",43.57,"6/11/2007","2:21pm",+0.50,42.95,43.58,42.88,6405057
"WMT",49.84,"6/11/2007","2:21pm",-0.24,49.90,50.12,49.55,7979707
"XOM",83.46,"6/11/2007","2:21pm",+0.78,82.68,83.85,82.35,9131100
"AA",39.46,"6/11/2007","2:26pm",-0.20,39.67,40.18,39.43,3106580
"AIG",71.92,"6/11/2007","2:26pm",+0.39,71.29,72.03,71.15,3332596
"AXP",63.34,"6/11/2007","2:26pm",+0.30,62.79,63.42,62.42,2372530
"BA",97.92,"6/11/2007","2:26pm",-0.27,98.25,98.79,97.59,1972600
"C",53.68,"6/11/2007","2:26pm",+0.35,53.20,53.77,52.81,7862194
"CAT",79.06,"6/11/2007","2:26pm",+0.54,78.32,79.46,78.06,2621452
"DD",50.85,"6/11/2007","2:26pm",-0.28,51.13,51.21,50.59,2400597
"DIS",34.21,"6/11/2007","2:26pm",+0.01,34.28,34.44,34.12,4329650
"GE",37.48,"6/11/2007","2:26pm",+0.16,37.07,37.61,37.05,15908401
"GM",31.76,"6/11/2007","2:26pm",+0.76,31.00,31.77,30.90,10673201
"HD",37.76,"6/11/2007","2:26pm",-0.19,37.78,37.83,37.62,7797367
"HON",57.23,"6/11/2007","2:26pm",-0.15,57.25,57.40,56.91,2798642
"HPQ",46.16,"6/11/2007","2:26pm",+0.46,45.80,46.29,45.46,6850349
"IBM",103.52,"6/11/2007","2:26pm",+0.45,102.87,104.00,102.50,2994204
"INTC",22.01,"6/11/2007","2:31pm",+0.18,21.70,22.08,21.69,28166784
"JNJ",62.52,"6/11/2007","2:26pm",+0.39,62.89,62.89,62.15,5858958
"JPM",50.72,"6/11/2007","2:26pm",+0.31,50.41,50.84,50.05,6141900
"KO",51.80,"6/11/2007","2:26pm",+0.13,51.67,51.85,51.32,6873652
"MCD",51.37,"6/11/2007","2:26pm",-0.04,51.47,51.62,50.98,3549714
"MMM",85.55,"6/11/2007","2:26pm",-0.39,85.94,85.98,85.28,1616200
"MO",70.3611,"6/11/2007","2:26pm",+0.0611,70.25,70.50,69.76,5288885
"MRK",51.26,"6/11/2007","2:26pm",+1.12,50.30,51.28,50.04,7641900
"MSFT",30.18,"6/11/2007","2:31pm",+0.13,30.05,30.25,29.93,27477918
"PFE",26.45,"6/11/2007","2:26pm",-0.07,26.50,26.54,26.31,17889796
"PG",63.13,"6/11/2007","2:26pm",+0.06,62.80,63.20,62.75,4759446
"T",40.43,"6/11/2007","2:26pm",+0.17,40.20,40.47,39.89,9441710
"UTX",70.15,"6/11/2007","2:26pm",-0.08,69.85,70.25,69.51,1552400
"VZ",43.58,"6/11/2007","2:26pm",+0.51,42.95,43.61,42.88,6495057
"WMT",49.82,"6/11/2007","2:26pm",-0.26,49.90,50.12,49.55,8014807
"XOM",83.40,"6/11/2007","2:26pm",+0.72,82.68,83.85,82.35,9250000
"AA",39.43,"6/11/2007","2:31pm",-0.23,39.67,40.18,39.42,3146680
"AIG",71.88,"6/11/2007","2:31pm",+0.35,71.29,72.03,71.15,3377696
"AXP",63.30,"6/11/2007","2:31pm",+0.26,62.79,63.42,62.42,2396630
"BA",97.83,"6/11/2007","2:31pm",-0.36,98.25,98.79,97.59,1992300
"C",53.64,"6/11/2007","2:31pm",+0.31,53.20,53.77,52.81,7963894
"CAT",79.00,"6/11/2007","2:31pm",+0.48,78.32,79.46,78.06,2657252
"DD",50.85,"6/11/2007","2:31pm",-0.28,51.13,51.21,50.59,2419197
"DIS",34.20,"6/11/2007","2:31pm",0.00,34.28,34.44,34.12,4416950
"GE",37.48,"6/11/2007","2:31pm",+0.16,37.07,37.61,37.05,16180901
"GM",31.74,"6/11/2007","2:31pm",+0.74,31.00,31.77,30.90,10859101
"HD",37.76,"6/11/2007","2:31pm",-0.19,37.78,37.83,37.62,8074667
"HON",57.20,"6/11/2007","2:31pm",-0.18,57.25,57.40,56.91,2836642
"HPQ",46.15,"6/11/2007","2:31pm",+0.45,45.80,46.29,45.46,6906449
"IBM",103.46,"6/11/2007","2:31pm",+0.39,102.87,104.00,102.50,3014104
"INTC",22.01,"6/11/2007","2:36pm",+0.18,21.70,22.08,21.69,28623660
"JNJ",62.48,"6/11/2007","2:31pm",+0.35,62.89,62.89,62.15,5916458
"JPM",50.68,"6/11/2007","2:31pm",+0.27,50.41,50.84,50.05,6212400
"KO",51.75,"6/11/2007","2:31pm",+0.08,51.67,51.85,51.32,6921352
"MCD",51.31,"6/11/2007","2:31pm",-0.10,51.47,51.62,50.98,3570814
"MMM",85.56,"6/11/2007","2:31pm",-0.38,85.94,85.98,85.28,1632000
"MO",70.34,"6/11/2007","2:31pm",+0.04,70.25,70.50,69.76,5316285
"MRK",51.25,"6/11/2007","2:31pm",+1.11,50.30,51.35,50.04,7816300
"MSFT",30.18,"6/11/2007","2:36pm",+0.13,30.05,30.25,29.93,27776860
"PFE",26.43,"6/11/2007","2:31pm",-0.09,26.50,26.54,26.31,18072696
"PG",63.09,"6/11/2007","2:31pm",+0.02,62.80,63.20,62.75,4849346
"T",40.37,"6/11/2007","2:31pm",+0.11,40.20,40.47,39.89,9632910
"UTX",70.15,"6/11/2007","2:31pm",-0.08,69.85,70.25,69.51,1566500
"VZ",43.53,"6/11/2007","2:31pm",+0.46,42.95,43.61,42.88,6607457
"WMT",49.77,"6/11/2007","2:31pm",-0.31,49.90,50.12,49.55,8080507
"XOM",83.35,"6/11/2007","2:31pm",+0.67,82.68,83.85,82.35,9365400
"AA",39.39,"6/11/2007","2:36pm",-0.27,39.67,40.18,39.38,3233280
"AIG",71.87,"6/11/2007","2:36pm",+0.34,71.29,72.03,71.15,3455896
"AXP",63.22,"6/11/2007","2:36pm",+0.18,62.79,63.42,62.42,2427730
"BA",97.77,"6/11/2007","2:36pm",-0.42,98.25,98.79,97.59,2005500
"C",53.63,"6/11/2007","2:36pm",+0.30,53.20,53.77,52.81,8024794
"CAT",79.01,"6/11/2007","2:36pm",+0.49,78.32,79.46,78.06,2680952
"DD",50.83,"6/11/2007","2:36pm",-0.30,51.13,51.21,50.59,2435997
"DIS",34.19,"6/11/2007","2:36pm",-0.01,34.28,34.44,34.12,4466950
"GE",37.44,"6/11/2007","2:36pm",+0.12,37.07,37.61,37.05,16472401
"GM",31.70,"6/11/2007","2:36pm",+0.70,31.00,31.79,30.90,11121251
"HD",37.75,"6/11/2007","2:36pm",-0.20,37.78,37.83,37.62,8123767
"HON",57.16,"6/11/2007","2:36pm",-0.22,57.25,57.40,56.91,2882942
"HPQ",46.15,"6/11/2007","2:36pm",+0.45,45.80,46.29,45.46,6971049
"IBM",103.42,"6/11/2007","2:36pm",+0.35,102.87,104.00,102.50,3050204
"INTC",22.0203,"6/11/2007","2:41pm",+0.1903,21.70,22.08,21.69,28975326
"JNJ",62.48,"6/11/2007","2:36pm",+0.35,62.89,62.89,62.15,5985258
"JPM",50.67,"6/11/2007","2:36pm",+0.26,50.41,50.84,50.05,6275300
"KO",51.75,"6/11/2007","2:36pm",+0.08,51.67,51.85,51.32,7031052
"MCD",51.33,"6/11/2007","2:36pm",-0.08,51.47,51.62,50.98,3605014
"MMM",85.47,"6/11/2007","2:36pm",-0.47,85.94,85.98,85.28,1656600
"MO",70.33,"6/11/2007","2:36pm",+0.03,70.25,70.50,69.76,5350885
"MRK",51.20,"6/11/2007","2:36pm",+1.06,50.30,51.35,50.04,7984900
"MSFT",30.18,"6/11/2007","2:41pm",+0.13,30.05,30.25,29.93,30696744
"PFE",26.44,"6/11/2007","2:36pm",-0.08,26.50,26.54,26.31,18273796
"PG",63.09,"6/11/2007","2:36pm",+0.02,62.80,63.20,62.75,4902446
"T",40.29,"6/11/2007","2:36pm",+0.03,40.20,40.47,39.89,9901810
"UTX",70.11,"6/11/2007","2:36pm",-0.12,69.85,70.25,69.51,1589000
"VZ",43.50,"6/11/2007","2:36pm",+0.43,42.95,43.61,42.88,6714857
"WMT",49.76,"6/11/2007","2:36pm",-0.32,49.90,50.12,49.55,8135107
"XOM",83.33,"6/11/2007","2:36pm",+0.65,82.68,83.85,82.35,9480100
"AA",39.39,"6/11/2007","2:41pm",-0.27,39.67,40.18,39.34,3314380
"AIG",71.89,"6/11/2007","2:41pm",+0.36,71.29,72.03,71.15,3656596
"AXP",63.23,"6/11/2007","2:41pm",+0.19,62.79,63.42,62.42,2445430
"BA",97.74,"6/11/2007","2:41pm",-0.45,98.25,98.79,97.59,2031200
"C",53.68,"6/11/2007","2:41pm",+0.35,53.20,53.77,52.81,8087994
"CAT",79.04,"6/11/2007","2:41pm",+0.52,78.32,79.46,78.06,2712552
"DD",50.81,"6/11/2007","2:41pm",-0.32,51.13,51.21,50.59,2447897
"DIS",34.19,"6/11/2007","2:41pm",-0.01,34.28,34.44,34.12,4526150
"GE",37.47,"6/11/2007","2:41pm",+0.15,37.07,37.61,37.05,16819600
"GM",31.65,"6/11/2007","2:41pm",+0.65,31.00,31.79,30.90,11306951
"HD",37.76,"6/11/2007","2:41pm",-0.19,37.78,37.83,37.62,8189567
"HON",57.13,"6/11/2007","2:41pm",-0.25,57.25,57.40,56.91,2913842
"HPQ",46.13,"6/11/2007","2:41pm",+0.43,45.80,46.29,45.46,7057949
"IBM",103.44,"6/11/2007","2:41pm",+0.37,102.87,104.00,102.50,3087004
"INTC",22.02,"6/11/2007","2:46pm",+0.19,21.70,22.08,21.69,29252326
"JNJ",62.48,"6/11/2007","2:41pm",+0.35,62.89,62.89,62.15,6046058
"JPM",50.71,"6/11/2007","2:41pm",+0.30,50.41,50.84,50.05,6338800
"KO",51.76,"6/11/2007","2:41pm",+0.09,51.67,51.85,51.32,7064552
"MCD",51.29,"6/11/2007","2:41pm",-0.12,51.47,51.62,50.98,3648414
"MMM",85.50,"6/11/2007","2:41pm",-0.44,85.94,85.98,85.28,1687900
"MO",70.34,"6/11/2007","2:41pm",+0.04,70.25,70.50,69.76,5406985
"MRK",51.18,"6/11/2007","2:41pm",+1.04,50.30,51.35,50.04,8103700
"MSFT",30.22,"6/11/2007","2:46pm",+0.17,30.05,30.25,29.93,31209364
"PFE",26.43,"6/11/2007","2:41pm",-0.09,26.50,26.54,26.31,18438496
"PG",63.11,"6/11/2007","2:41pm",+0.04,62.80,63.20,62.75,4959446
"T",40.27,"6/11/2007","2:41pm",+0.01,40.20,40.47,39.89,10050710
"UTX",70.11,"6/11/2007","2:41pm",-0.12,69.85,70.25,69.51,1626700
"VZ",43.50,"6/11/2007","2:41pm",+0.43,42.95,43.61,42.88,6863457
"WMT",49.79,"6/11/2007","2:41pm",-0.29,49.90,50.12,49.55,8245307
"XOM",83.37,"6/11/2007","2:41pm",+0.69,82.68,83.85,82.35,9563400
"AA",39.33,"6/11/2007","2:46pm",-0.33,39.67,40.18,39.30,3399080
"AIG",71.86,"6/11/2007","2:46pm",+0.33,71.29,72.03,71.15,3740596
"AXP",63.20,"6/11/2007","2:46pm",+0.16,62.79,63.42,62.42,2463030
"BA",97.78,"6/11/2007","2:46pm",-0.41,98.25,98.79,97.59,2065200
"C",53.67,"6/11/2007","2:46pm",+0.34,53.20,53.77,52.81,8200694
"CAT",79.00,"6/11/2007","2:46pm",+0.48,78.32,79.46,78.06,2725452
"DD",50.80,"6/11/2007","2:46pm",-0.33,51.13,51.21,50.59,2457797
"DIS",34.20,"6/11/2007","2:46pm",0.00,34.28,34.44,34.12,4601150
"GE",37.48,"6/11/2007","2:46pm",+0.16,37.07,37.61,37.05,17056300
"GM",31.65,"6/11/2007","2:46pm",+0.65,31.00,31.79,30.90,11359851
"HD",37.75,"6/11/2007","2:46pm",-0.20,37.78,37.83,37.62,8424967
"HON",57.18,"6/11/2007","2:46pm",-0.20,57.25,57.40,56.91,2949842
"HPQ",46.13,"6/11/2007","2:46pm",+0.43,45.80,46.29,45.46,7195349
"IBM",103.49,"6/11/2007","2:46pm",+0.42,102.87,104.00,102.50,3126604
"INTC",22.02,"6/11/2007","2:51pm",+0.19,21.70,22.08,21.69,29404310
"JNJ",62.485,"6/11/2007","2:46pm",+0.355,62.89,62.89,62.15,6102358
"JPM",50.70,"6/11/2007","2:46pm",+0.29,50.41,50.84,50.05,6395400
"KO",51.73,"6/11/2007","2:46pm",+0.06,51.67,51.85,51.32,7104652
"MCD",51.32,"6/11/2007","2:46pm",-0.09,51.47,51.62,50.98,3708627
"MMM",85.50,"6/11/2007","2:46pm",-0.44,85.94,85.98,85.28,1710200
"MO",70.28,"6/11/2007","2:46pm",-0.02,70.25,70.50,69.76,5450985
"MRK",51.19,"6/11/2007","2:46pm",+1.05,50.30,51.35,50.04,8188500
"MSFT",30.16,"6/11/2007","2:51pm",+0.11,30.05,30.25,29.93,31914788
"PFE",26.435,"6/11/2007","2:46pm",-0.085,26.50,26.54,26.31,18623136
"PG",63.11,"6/11/2007","2:46pm",+0.04,62.80,63.20,62.75,5034546
"T",40.29,"6/11/2007","2:46pm",+0.03,40.20,40.47,39.89,10311910
"UTX",70.19,"6/11/2007","2:46pm",-0.04,69.85,70.25,69.51,1662900
"VZ",43.52,"6/11/2007","2:46pm",+0.45,42.95,43.61,42.88,6914257
"WMT",49.76,"6/11/2007","2:46pm",-0.32,49.90,50.12,49.55,8356278
"XOM",83.30,"6/11/2007","2:46pm",+0.62,82.68,83.85,82.35,9689200
"AA",39.33,"6/11/2007","2:51pm",-0.33,39.67,40.18,39.30,3443580
"AIG",71.85,"6/11/2007","2:51pm",+0.32,71.29,72.03,71.15,3833496
"AXP",63.26,"6/11/2007","2:51pm",+0.22,62.79,63.42,62.42,2483430
"BA",97.66,"6/11/2007","2:51pm",-0.53,98.25,98.79,97.59,2085200
"C",53.68,"6/11/2007","2:51pm",+0.35,53.20,53.77,52.81,8317394
"CAT",78.99,"6/11/2007","2:51pm",+0.47,78.32,79.46,78.06,2746952
"DD",50.80,"6/11/2007","2:51pm",-0.33,51.13,51.21,50.59,2480397
"DIS",34.18,"6/11/2007","2:51pm",-0.02,34.28,34.44,34.12,4641650
"GE",37.48,"6/11/2007","2:51pm",+0.16,37.07,37.61,37.05,17252900
"GM",31.62,"6/11/2007","2:51pm",+0.62,31.00,31.79,30.90,11456251
"HD",37.741,"6/11/2007","2:51pm",-0.209,37.78,37.83,37.62,8530067
"HON",57.17,"6/11/2007","2:51pm",-0.21,57.25,57.40,56.91,2989342
"HPQ",46.08,"6/11/2007","2:51pm",+0.38,45.80,46.29,45.46,7295183
"IBM",103.49,"6/11/2007","2:51pm",+0.42,102.87,104.00,102.50,3205604
"INTC",22.03,"6/11/2007","2:56pm",+0.20,21.70,22.08,21.69,29768528
"JNJ",62.45,"6/11/2007","2:51pm",+0.32,62.89,62.89,62.15,6158558
"JPM",50.71,"6/11/2007","2:51pm",+0.30,50.41,50.84,50.05,6486400
"KO",51.76,"6/11/2007","2:51pm",+0.09,51.67,51.85,51.32,7135652
"MCD",51.30,"6/11/2007","2:51pm",-0.11,51.47,51.62,50.98,3729927
"MMM",85.48,"6/11/2007","2:51pm",-0.46,85.94,85.98,85.28,1732900
"MO",70.21,"6/11/2007","2:51pm",-0.09,70.25,70.50,69.76,5501285
"MRK",51.09,"6/11/2007","2:51pm",+0.95,50.30,51.35,50.04,8318900
"MSFT",30.16,"6/11/2007","2:56pm",+0.11,30.05,30.25,29.93,32355638
"PFE",26.43,"6/11/2007","2:51pm",-0.09,26.50,26.54,26.31,18879636
"PG",63.16,"6/11/2007","2:51pm",+0.09,62.80,63.20,62.75,5127246
"T",40.21,"6/11/2007","2:51pm",-0.05,40.20,40.47,39.89,10570410
"UTX",70.15,"6/11/2007","2:51pm",-0.08,69.85,70.25,69.51,1681200
"VZ",43.49,"6/11/2007","2:51pm",+0.42,42.95,43.61,42.88,6963457
"WMT",49.755,"6/11/2007","2:51pm",-0.325,49.90,50.12,49.55,8428278
"XOM",83.24,"6/11/2007","2:51pm",+0.56,82.68,83.85,82.35,9787800
"AA",39.32,"6/11/2007","2:56pm",-0.34,39.67,40.18,39.30,3480480
"AIG",71.86,"6/11/2007","2:56pm",+0.33,71.29,72.03,71.15,3935896
"AXP",63.31,"6/11/2007","2:56pm",+0.27,62.79,63.42,62.42,2509230
"BA",97.78,"6/11/2007","2:56pm",-0.41,98.25,98.79,97.59,2114200
"C",53.70,"6/11/2007","2:56pm",+0.37,53.20,53.77,52.81,8402494
"CAT",79.08,"6/11/2007","2:56pm",+0.56,78.32,79.46,78.06,2766652
"DD",50.84,"6/11/2007","2:56pm",-0.29,51.13,51.21,50.59,2498497
"DIS",34.20,"6/11/2007","2:56pm",0.00,34.28,34.44,34.12,4680250
"GE",37.53,"6/11/2007","2:56pm",+0.21,37.07,37.61,37.05,17452700
"GM",31.682,"6/11/2007","2:56pm",+0.682,31.00,31.79,30.90,11603351
"HD",37.76,"6/11/2007","2:56pm",-0.19,37.78,37.83,37.62,8595367
"HON",57.23,"6/11/2007","2:56pm",-0.15,57.25,57.40,56.91,3114842
"HPQ",46.091,"6/11/2007","2:56pm",+0.391,45.80,46.29,45.46,7387583
"IBM",103.53,"6/11/2007","2:56pm",+0.46,102.87,104.00,102.50,3228704
"INTC",22.02,"6/11/2007","3:01pm",+0.19,21.70,22.08,21.69,30262880
"JNJ",62.53,"6/11/2007","2:56pm",+0.40,62.89,62.89,62.15,6280508
"JPM",50.71,"6/11/2007","2:56pm",+0.30,50.41,50.84,50.05,6635200
"KO",51.82,"6/11/2007","2:56pm",+0.15,51.67,51.85,51.32,7174352
"MCD",51.35,"6/11/2007","2:56pm",-0.06,51.47,51.62,50.98,3766527
"MMM",85.51,"6/11/2007","2:56pm",-0.43,85.94,85.98,85.28,1757600
"MO",70.30,"6/11/2007","2:56pm",0.00,70.25,70.50,69.76,5597885
"MRK",51.15,"6/11/2007","2:56pm",+1.01,50.30,51.35,50.04,8391000
"MSFT",30.16,"6/11/2007","3:01pm",+0.11,30.05,30.25,29.93,32950134
"PFE",26.43,"6/11/2007","2:56pm",-0.09,26.50,26.54,26.31,19031536
"PG",63.12,"6/11/2007","2:56pm",+0.05,62.80,63.21,62.75,5284846
"T",40.26,"6/11/2007","2:56pm",0.00,40.20,40.47,39.89,10708610
"UTX",70.21,"6/11/2007","2:56pm",-0.02,69.85,70.27,69.51,1705800
"VZ",43.53,"6/11/2007","2:56pm",+0.46,42.95,43.61,42.88,7015557
"WMT",49.85,"6/11/2007","2:56pm",-0.23,49.90,50.12,49.55,8513478
"XOM",83.315,"6/11/2007","2:56pm",+0.635,82.68,83.85,82.35,9892200
"AA",39.308,"6/11/2007","3:01pm",-0.352,39.67,40.18,39.30,3525080
"AIG",71.88,"6/11/2007","3:01pm",+0.35,71.29,72.03,71.15,4037796
"AXP",63.33,"6/11/2007","3:01pm",+0.29,62.79,63.42,62.42,2525030
"BA",97.69,"6/11/2007","3:01pm",-0.50,98.25,98.79,97.59,2139700
"C",53.6917,"6/11/2007","3:01pm",+0.3617,53.20,53.77,52.81,8489294
"CAT",79.06,"6/11/2007","3:01pm",+0.54,78.32,79.46,78.06,2812752
"DD",50.82,"6/11/2007","3:01pm",-0.31,51.13,51.21,50.59,2531197
"DIS",34.20,"6/11/2007","3:01pm",0.00,34.28,34.44,34.12,4838550
"GE",37.56,"6/11/2007","3:01pm",+0.24,37.07,37.61,37.05,17708200
"GM",31.71,"6/11/2007","3:01pm",+0.71,31.00,31.79,30.90,11810951
"HD",37.75,"6/11/2007","3:01pm",-0.20,37.78,37.83,37.62,8889067
"HON",57.16,"6/11/2007","3:01pm",-0.22,57.25,57.40,56.91,3138242
"HPQ",46.09,"6/11/2007","3:01pm",+0.39,45.80,46.29,45.46,7434383
"IBM",103.49,"6/11/2007","3:01pm",+0.42,102.87,104.00,102.50,3267604
"INTC",22.01,"6/11/2007","3:06pm",+0.18,21.70,22.08,21.69,30788464
"JNJ",62.53,"6/11/2007","3:01pm",+0.40,62.89,62.89,62.15,6335808
"JPM",50.68,"6/11/2007","3:01pm",+0.27,50.41,50.84,50.05,6741800
"KO",51.81,"6/11/2007","3:01pm",+0.14,51.67,51.85,51.32,7223752
"MCD",51.28,"6/11/2007","3:01pm",-0.13,51.47,51.62,50.98,3825627
"MMM",85.47,"6/11/2007","3:01pm",-0.47,85.94,85.98,85.28,1780900
"MO",70.26,"6/11/2007","3:01pm",-0.04,70.25,70.50,69.76,5686085
"MRK",51.14,"6/11/2007","3:01pm",+1.00,50.30,51.35,50.04,8454600
"MSFT",30.16,"6/11/2007","3:06pm",+0.11,30.05,30.25,29.93,33439226
"PFE",26.42,"6/11/2007","3:01pm",-0.10,26.50,26.54,26.31,19178536
"PG",63.09,"6/11/2007","3:01pm",+0.02,62.80,63.21,62.75,5381146
"T",40.26,"6/11/2007","3:01pm",0.00,40.20,40.47,39.89,10923510
"UTX",70.21,"6/11/2007","3:01pm",-0.02,69.85,70.27,69.51,1741900
"VZ",43.54,"6/11/2007","3:01pm",+0.47,42.95,43.61,42.88,7071957
"WMT",49.7901,"6/11/2007","3:01pm",-0.2899,49.90,50.12,49.55,8630878
"XOM",83.29,"6/11/2007","3:01pm",+0.61,82.68,83.85,82.35,9962400
"AA",39.33,"6/11/2007","3:06pm",-0.33,39.67,40.18,39.25,3559780
"AIG",71.87,"6/11/2007","3:06pm",+0.34,71.29,72.03,71.15,4096696
"AXP",63.30,"6/11/2007","3:06pm",+0.26,62.79,63.42,62.42,2545430
"BA",97.70,"6/11/2007","3:06pm",-0.49,98.25,98.79,97.58,2170600
"C",53.66,"6/11/2007","3:06pm",+0.33,53.20,53.77,52.81,8668794
"CAT",79.0221,"6/11/2007","3:06pm",+0.5021,78.32,79.46,78.06,2871952
"DD",50.84,"6/11/2007","3:06pm",-0.29,51.13,51.21,50.59,2564597
"DIS",34.20,"6/11/2007","3:06pm",0.00,34.28,34.44,34.12,4903050
"GE",37.54,"6/11/2007","3:06pm",+0.22,37.07,37.61,37.05,17946600
"GM",31.76,"6/11/2007","3:06pm",+0.76,31.00,31.79,30.90,11923751
"HD",37.76,"6/11/2007","3:06pm",-0.19,37.78,37.83,37.62,9002967
"HON",57.17,"6/11/2007","3:06pm",-0.21,57.25,57.40,56.91,3177742
"HPQ",46.10,"6/11/2007","3:06pm",+0.40,45.80,46.29,45.46,7517183
"IBM",103.49,"6/11/2007","3:06pm",+0.42,102.87,104.00,102.50,3306904
"INTC",22.03,"6/11/2007","3:11pm",+0.20,21.70,22.08,21.69,31162120
"JNJ",62.50,"6/11/2007","3:06pm",+0.37,62.89,62.89,62.15,6420308
"JPM",50.65,"6/11/2007","3:06pm",+0.24,50.41,50.84,50.05,6851800
"KO",51.80,"6/11/2007","3:06pm",+0.13,51.67,51.85,51.32,7265152
"MCD",51.29,"6/11/2007","3:06pm",-0.12,51.47,51.62,50.98,3892827
"MMM",85.55,"6/11/2007","3:06pm",-0.39,85.94,85.98,85.28,1819600
"MO",70.23,"6/11/2007","3:06pm",-0.07,70.25,70.50,69.76,5764585
"MRK",51.12,"6/11/2007","3:06pm",+0.98,50.30,51.35,50.04,8577100
"MSFT",30.16,"6/11/2007","3:11pm",+0.11,30.05,30.25,29.93,34219296
"PFE",26.41,"6/11/2007","3:06pm",-0.11,26.50,26.54,26.31,19446136
"PG",63.07,"6/11/2007","3:06pm",0.00,62.80,63.21,62.75,5533446
"T",40.23,"6/11/2007","3:06pm",-0.03,40.20,40.47,39.89,11134010
"UTX",70.22,"6/11/2007","3:06pm",-0.01,69.85,70.27,69.51,1781800
"VZ",43.54,"6/11/2007","3:06pm",+0.47,42.95,43.61,42.88,7163857
"WMT",49.795,"6/11/2007","3:06pm",-0.285,49.90,50.12,49.55,8740778
"XOM",83.31,"6/11/2007","3:06pm",+0.63,82.68,83.85,82.35,10075100
"AA",39.37,"6/11/2007","3:11pm",-0.29,39.67,40.18,39.25,3601080
"AIG",71.86,"6/11/2007","3:11pm",+0.33,71.29,72.03,71.15,4171396
"AXP",63.28,"6/11/2007","3:11pm",+0.24,62.79,63.42,62.42,2572030
"BA",97.70,"6/11/2007","3:11pm",-0.49,98.25,98.79,97.58,2202300
"C",53.60,"6/11/2007","3:11pm",+0.27,53.20,53.77,52.81,8910394
"CAT",79.10,"6/11/2007","3:11pm",+0.58,78.32,79.46,78.06,2926952
"DD",50.84,"6/11/2007","3:11pm",-0.29,51.13,51.21,50.59,2592497
"DIS",34.195,"6/11/2007","3:11pm",-0.005,34.28,34.44,34.12,5006550
"GE",37.56,"6/11/2007","3:11pm",+0.24,37.07,37.61,37.05,18148100
"GM",31.81,"6/11/2007","3:11pm",+0.81,31.00,31.82,30.90,12211151
"HD",37.74,"6/11/2007","3:11pm",-0.21,37.78,37.83,37.62,9075667
"HON",57.24,"6/11/2007","3:11pm",-0.14,57.25,57.40,56.91,3219242
"HPQ",46.12,"6/11/2007","3:11pm",+0.42,45.80,46.29,45.46,7596783
"IBM",103.52,"6/11/2007","3:11pm",+0.45,102.87,104.00,102.50,3347004
"INTC",22.03,"6/11/2007","3:16pm",+0.20,21.70,22.08,21.69,31499736
"JNJ",62.48,"6/11/2007","3:11pm",+0.35,62.89,62.89,62.15,6626708
"JPM",50.64,"6/11/2007","3:11pm",+0.23,50.41,50.84,50.05,6957100
"KO",51.80,"6/11/2007","3:11pm",+0.13,51.67,51.85,51.32,7305952
"MCD",51.28,"6/11/2007","3:11pm",-0.13,51.47,51.62,50.98,3951227
"MMM",85.52,"6/11/2007","3:11pm",-0.42,85.94,85.98,85.28,1844000
"MO",70.26,"6/11/2007","3:11pm",-0.04,70.25,70.50,69.76,5802685
"MRK",51.19,"6/11/2007","3:11pm",+1.05,50.30,51.35,50.04,8710500
"MSFT",30.14,"6/11/2007","3:16pm",+0.09,30.05,30.25,29.93,35084560
"PFE",26.42,"6/11/2007","3:11pm",-0.10,26.50,26.54,26.31,19904950
"PG",63.08,"6/11/2007","3:11pm",+0.01,62.80,63.21,62.75,5640146
"T",40.25,"6/11/2007","3:11pm",-0.01,40.20,40.47,39.89,11272135
"UTX",70.21,"6/11/2007","3:11pm",-0.02,69.85,70.27,69.51,1802900
"VZ",43.56,"6/11/2007","3:11pm",+0.49,42.95,43.61,42.88,7294957
"WMT",49.83,"6/11/2007","3:11pm",-0.25,49.90,50.12,49.55,8885778
"XOM",83.3328,"6/11/2007","3:11pm",+0.6528,82.68,83.85,82.35,10226000
"AA",39.36,"6/11/2007","3:16pm",-0.30,39.67,40.18,39.25,3628080
"AIG",71.86,"6/11/2007","3:16pm",+0.33,71.29,72.03,71.15,4253196
"AXP",63.27,"6/11/2007","3:16pm",+0.23,62.79,63.42,62.42,2599530
"BA",97.62,"6/11/2007","3:16pm",-0.57,98.25,98.79,97.58,2240000
"C",53.63,"6/11/2007","3:16pm",+0.30,53.20,53.77,52.81,9064594
"CAT",79.1263,"6/11/2007","3:16pm",+0.6063,78.32,79.46,78.06,2961952
"DD",50.84,"6/11/2007","3:16pm",-0.29,51.13,51.21,50.59,2614197
"DIS",34.19,"6/11/2007","3:16pm",-0.01,34.28,34.44,34.12,5055750
"GE",37.58,"6/11/2007","3:16pm",+0.26,37.07,37.61,37.05,18410300
"GM",31.79,"6/11/2007","3:16pm",+0.79,31.00,31.82,30.90,12429251
"HD",37.73,"6/11/2007","3:16pm",-0.22,37.78,37.83,37.62,9252867
"HON",57.22,"6/11/2007","3:16pm",-0.16,57.25,57.40,56.91,3267342
"HPQ",46.13,"6/11/2007","3:16pm",+0.43,45.80,46.29,45.46,7732283
"IBM",103.52,"6/11/2007","3:16pm",+0.45,102.87,104.00,102.50,3390804
"INTC",22.03,"6/11/2007","3:21pm",+0.20,21.70,22.08,21.69,31747072
"JNJ",62.46,"6/11/2007","3:16pm",+0.33,62.89,62.89,62.15,6718808
"JPM",50.66,"6/11/2007","3:16pm",+0.25,50.41,50.84,50.05,7077000
"KO",51.81,"6/11/2007","3:16pm",+0.14,51.67,51.85,51.32,7356152
"MCD",51.28,"6/11/2007","3:16pm",-0.13,51.47,51.62,50.98,4004827
"MMM",85.50,"6/11/2007","3:16pm",-0.44,85.94,85.98,85.28,1863700
"MO",70.24,"6/11/2007","3:16pm",-0.06,70.25,70.50,69.76,5895585
"MRK",51.17,"6/11/2007","3:16pm",+1.03,50.30,51.35,50.04,8885200
"MSFT",30.18,"6/11/2007","3:21pm",+0.13,30.05,30.25,29.93,35482676
"PFE",26.41,"6/11/2007","3:16pm",-0.11,26.50,26.54,26.31,20145150
"PG",63.07,"6/11/2007","3:16pm",0.00,62.80,63.21,62.75,5824046
"T",40.24,"6/11/2007","3:16pm",-0.02,40.20,40.47,39.89,11393435
"UTX",70.20,"6/11/2007","3:16pm",-0.03,69.85,70.27,69.51,1819800
"VZ",43.56,"6/11/2007","3:16pm",+0.49,42.95,43.61,42.88,7465357
"WMT",49.79,"6/11/2007","3:16pm",-0.29,49.90,50.12,49.55,9009578
"XOM",83.29,"6/11/2007","3:16pm",+0.61,82.68,83.85,82.35,10323500
"AA",39.41,"6/11/2007","3:21pm",-0.25,39.67,40.18,39.25,3683980
"AIG",71.87,"6/11/2007","3:21pm",+0.34,71.29,72.03,71.15,4342596
"AXP",63.28,"6/11/2007","3:21pm",+0.24,62.79,63.42,62.42,2631030
"BA",97.79,"6/11/2007","3:21pm",-0.40,98.25,98.79,97.58,2283500
"C",53.67,"6/11/2007","3:21pm",+0.34,53.20,53.77,52.81,9345794
"CAT",79.18,"6/11/2007","3:21pm",+0.66,78.32,79.46,78.06,3018652
"DD",50.85,"6/11/2007","3:21pm",-0.28,51.13,51.21,50.59,2681597
"DIS",34.189,"6/11/2007","3:21pm",-0.011,34.28,34.44,34.12,5129050
"GE",37.59,"6/11/2007","3:21pm",+0.27,37.07,37.61,37.05,18759500
"GM",31.83,"6/11/2007","3:21pm",+0.83,31.00,31.84,30.90,12621451
"HD",37.74,"6/11/2007","3:21pm",-0.21,37.78,37.83,37.62,9337467
"HON",57.25,"6/11/2007","3:21pm",-0.13,57.25,57.40,56.91,3305486
"HPQ",46.15,"6/11/2007","3:21pm",+0.45,45.80,46.29,45.46,7875783
"IBM",103.58,"6/11/2007","3:21pm",+0.51,102.87,104.00,102.50,3430404
"INTC",22.03,"6/11/2007","3:26pm",+0.20,21.70,22.08,21.69,32604206
"JNJ",62.44,"6/11/2007","3:21pm",+0.31,62.89,62.89,62.15,6819808
"JPM",50.68,"6/11/2007","3:21pm",+0.27,50.41,50.84,50.05,7182200
"KO",51.80,"6/11/2007","3:21pm",+0.13,51.67,51.85,51.32,7430852
"MCD",51.288,"6/11/2007","3:21pm",-0.122,51.47,51.62,50.98,4044427
"MMM",85.54,"6/11/2007","3:21pm",-0.40,85.94,85.98,85.28,1903500
"MO",70.28,"6/11/2007","3:21pm",-0.02,70.25,70.50,69.76,5949185
"MRK",51.13,"6/11/2007","3:21pm",+0.99,50.30,51.35,50.04,9078900
"MSFT",30.15,"6/11/2007","3:26pm",+0.10,30.05,30.25,29.93,36214532
"PFE",26.44,"6/11/2007","3:21pm",-0.08,26.50,26.54,26.31,20502150
"PG",63.10,"6/11/2007","3:21pm",+0.03,62.80,63.21,62.75,5930246
"T",40.26,"6/11/2007","3:21pm",0.00,40.20,40.47,39.89,11546235
"UTX",70.28,"6/11/2007","3:21pm",+0.05,69.85,70.27,69.51,1852300
"VZ",43.58,"6/11/2007","3:21pm",+0.51,42.95,43.61,42.88,7563557
"WMT",49.82,"6/11/2007","3:21pm",-0.26,49.90,50.12,49.55,9134278
"XOM",83.37,"6/11/2007","3:21pm",+0.69,82.68,83.85,82.35,10394600
"AA",39.36,"6/11/2007","3:26pm",-0.30,39.67,40.18,39.25,3734180
"AIG",71.85,"6/11/2007","3:26pm",+0.32,71.29,72.03,71.15,4412096
"AXP",63.26,"6/11/2007","3:26pm",+0.22,62.79,63.42,62.42,2656530
"BA",97.75,"6/11/2007","3:26pm",-0.44,98.25,98.79,97.58,2318700
"C",53.65,"6/11/2007","3:26pm",+0.32,53.20,53.77,52.81,9469794
"CAT",79.14,"6/11/2007","3:26pm",+0.62,78.32,79.46,78.06,3063152
"DD",50.85,"6/11/2007","3:26pm",-0.28,51.13,51.21,50.59,2734497
"DIS",34.20,"6/11/2007","3:26pm",0.00,34.28,34.44,34.12,5218750
"GE",37.61,"6/11/2007","3:26pm",+0.29,37.07,37.61,37.05,19343000
"GM",31.88,"6/11/2007","3:26pm",+0.88,31.00,31.90,30.90,12954222
"HD",37.7382,"6/11/2007","3:26pm",-0.2118,37.78,37.83,37.62,9712367
"HON",57.23,"6/11/2007","3:26pm",-0.15,57.25,57.40,56.91,3354186
"HPQ",46.15,"6/11/2007","3:26pm",+0.45,45.80,46.29,45.46,7964983
"IBM",103.48,"6/11/2007","3:26pm",+0.41,102.87,104.00,102.50,3487304
"INTC",22.05,"6/11/2007","3:31pm",+0.22,21.70,22.08,21.69,33024848
"JNJ",62.38,"6/11/2007","3:26pm",+0.25,62.89,62.89,62.15,6981631
"JPM",50.65,"6/11/2007","3:26pm",+0.24,50.41,50.84,50.05,7366500
"KO",51.78,"6/11/2007","3:26pm",+0.11,51.67,51.85,51.32,7479252
"MCD",51.21,"6/11/2007","3:26pm",-0.20,51.47,51.62,50.98,4117427
"MMM",85.55,"6/11/2007","3:26pm",-0.39,85.94,85.98,85.28,1925800
"MO",70.2525,"6/11/2007","3:26pm",-0.0475,70.25,70.50,69.76,6009485
"MRK",51.09,"6/11/2007","3:26pm",+0.95,50.30,51.35,50.04,9266600
"MSFT",30.165,"6/11/2007","3:31pm",+0.115,30.05,30.25,29.93,36431612
"PFE",26.40,"6/11/2007","3:26pm",-0.12,26.50,26.54,26.31,20767150
"PG",63.08,"6/11/2007","3:26pm",+0.01,62.80,63.21,62.75,5987546
"T",40.25,"6/11/2007","3:26pm",-0.01,40.20,40.47,39.88,13610435
"UTX",70.25,"6/11/2007","3:26pm",+0.02,69.85,70.30,69.51,1883100
"VZ",43.58,"6/11/2007","3:26pm",+0.51,42.95,43.61,42.88,7711757
"WMT",49.80,"6/11/2007","3:26pm",-0.28,49.90,50.12,49.55,9419178
"XOM",83.2854,"6/11/2007","3:26pm",+0.6054,82.68,83.85,82.35,10509700
"AA",39.37,"6/11/2007","3:31pm",-0.29,39.67,40.18,39.25,3767480
"AIG",71.84,"6/11/2007","3:31pm",+0.31,71.29,72.03,71.15,4469996
"AXP",63.27,"6/11/2007","3:31pm",+0.23,62.79,63.42,62.42,2681730
"BA",97.66,"6/11/2007","3:31pm",-0.53,98.25,98.79,97.58,2347600
"C",53.63,"6/11/2007","3:31pm",+0.30,53.20,53.77,52.81,9570094
"CAT",79.15,"6/11/2007","3:31pm",+0.63,78.32,79.46,78.06,3108752
"DD",50.83,"6/11/2007","3:31pm",-0.30,51.13,51.21,50.59,2758297
"DIS",34.20,"6/11/2007","3:31pm",0.00,34.28,34.44,34.12,5359050
"GE",37.61,"6/11/2007","3:31pm",+0.29,37.07,37.61,37.05,19495200
"GM",31.83,"6/11/2007","3:31pm",+0.83,31.00,31.90,30.90,13338922
"HD",37.7275,"6/11/2007","3:31pm",-0.2225,37.78,37.83,37.62,9833219
"HON",57.23,"6/11/2007","3:31pm",-0.15,57.25,57.40,56.91,3411886
"HPQ",46.16,"6/11/2007","3:31pm",+0.46,45.80,46.29,45.46,8108883
"IBM",103.48,"6/11/2007","3:31pm",+0.41,102.87,104.00,102.50,3582104
"INTC",22.02,"6/11/2007","3:36pm",+0.19,21.70,22.08,21.69,33811596
"JNJ",62.38,"6/11/2007","3:31pm",+0.25,62.89,62.89,62.15,7072531
"JPM",50.6225,"6/11/2007","3:31pm",+0.2125,50.41,50.84,50.05,7423100
"KO",51.78,"6/11/2007","3:31pm",+0.11,51.67,51.85,51.32,7527052
"MCD",51.17,"6/11/2007","3:31pm",-0.24,51.47,51.62,50.98,4207427
"MMM",85.50,"6/11/2007","3:31pm",-0.44,85.94,85.98,85.28,1954000
"MO",70.26,"6/11/2007","3:31pm",-0.04,70.25,70.50,69.76,6068285
"MRK",51.15,"6/11/2007","3:31pm",+1.01,50.30,51.35,50.04,9411500
"MSFT",30.14,"6/11/2007","3:36pm",+0.09,30.05,30.25,29.93,37331996
"PFE",26.40,"6/11/2007","3:31pm",-0.12,26.50,26.54,26.31,21355550
"PG",63.11,"6/11/2007","3:31pm",+0.04,62.80,63.21,62.75,6055546
"T",40.24,"6/11/2007","3:31pm",-0.02,40.20,40.47,39.88,13730535
"UTX",70.26,"6/11/2007","3:31pm",+0.03,69.85,70.30,69.51,1985400
"VZ",43.58,"6/11/2007","3:31pm",+0.51,42.95,43.61,42.88,7833157
"WMT",49.80,"6/11/2007","3:31pm",-0.28,49.90,50.12,49.55,9490578
"XOM",83.275,"6/11/2007","3:31pm",+0.595,82.68,83.85,82.35,10612200
"AA",39.30,"6/11/2007","3:36pm",-0.36,39.67,40.18,39.25,3811480
"AIG",71.77,"6/11/2007","3:36pm",+0.24,71.29,72.03,71.15,4581496
"AXP",63.155,"6/11/2007","3:36pm",+0.115,62.79,63.42,62.42,2721130
"BA",97.56,"6/11/2007","3:36pm",-0.63,98.25,98.79,97.55,2383000
"C",53.54,"6/11/2007","3:36pm",+0.21,53.20,53.77,52.81,11390094
"CAT",79.04,"6/11/2007","3:36pm",+0.52,78.32,79.46,78.06,3145152
"DD",50.76,"6/11/2007","3:36pm",-0.37,51.13,51.21,50.59,2813297
"DIS",34.18,"6/11/2007","3:36pm",-0.02,34.28,34.44,34.12,5431250
"GE",37.58,"6/11/2007","3:36pm",+0.26,37.07,37.61,37.05,19977600
"GM",31.79,"6/11/2007","3:36pm",+0.79,31.00,31.90,30.90,13573622
"HD",37.72,"6/11/2007","3:36pm",-0.23,37.78,37.83,37.62,10373519
"HON",57.18,"6/11/2007","3:36pm",-0.20,57.25,57.40,56.91,3490736
"HPQ",46.10,"6/11/2007","3:36pm",+0.40,45.80,46.29,45.46,8224783
"IBM",103.36,"6/11/2007","3:36pm",+0.29,102.87,104.00,102.50,3667004
"INTC",22.02,"6/11/2007","3:41pm",+0.19,21.70,22.08,21.69,34379072
"JNJ",62.33,"6/11/2007","3:36pm",+0.20,62.89,62.89,62.15,7231131
"JPM",50.58,"6/11/2007","3:36pm",+0.17,50.41,50.84,50.05,7580900
"KO",51.73,"6/11/2007","3:36pm",+0.06,51.67,51.85,51.32,7588352
"MCD",51.17,"6/11/2007","3:36pm",-0.24,51.47,51.62,50.98,4327427
"MMM",85.42,"6/11/2007","3:36pm",-0.52,85.94,85.98,85.28,1997700
"MO",70.24,"6/11/2007","3:36pm",-0.06,70.25,70.50,69.76,6182685
"MRK",51.15,"6/11/2007","3:36pm",+1.01,50.30,51.35,50.04,9552400
"MSFT",30.11,"6/11/2007","3:41pm",+0.06,30.05,30.25,29.93,37726620
"PFE",26.41,"6/11/2007","3:36pm",-0.11,26.50,26.54,26.31,21924450
"PG",63.0627,"6/11/2007","3:36pm",-0.0073,62.80,63.21,62.75,6121146
"T",40.23,"6/11/2007","3:36pm",-0.03,40.20,40.47,39.88,13995835
"UTX",70.17,"6/11/2007","3:36pm",-0.06,69.85,70.30,69.51,2031100
"VZ",43.55,"6/11/2007","3:36pm",+0.48,42.95,43.61,42.88,7990757
"WMT",49.811,"6/11/2007","3:36pm",-0.269,49.90,50.12,49.55,9655678
"XOM",83.17,"6/11/2007","3:36pm",+0.49,82.68,83.85,82.35,10797200
"AA",39.28,"6/11/2007","3:41pm",-0.38,39.67,40.18,39.25,3906080
"AIG",71.73,"6/11/2007","3:41pm",+0.20,71.29,72.03,71.15,4691496
"AXP",63.15,"6/11/2007","3:41pm",+0.11,62.79,63.42,62.42,2766030
"BA",97.50,"6/11/2007","3:41pm",-0.69,98.25,98.79,97.48,2453500
"C",53.51,"6/11/2007","3:41pm",+0.18,53.20,53.77,52.81,11535394
"CAT",78.98,"6/11/2007","3:41pm",+0.46,78.32,79.46,78.06,3172952
"DD",50.73,"6/11/2007","3:41pm",-0.40,51.13,51.21,50.59,2869897
"DIS",34.18,"6/11/2007","3:41pm",-0.02,34.28,34.44,34.12,5648050
"GE",37.58,"6/11/2007","3:41pm",+0.26,37.07,37.61,37.05,20658300
"GM",31.73,"6/11/2007","3:41pm",+0.73,31.00,31.90,30.90,13983822
"HD",37.72,"6/11/2007","3:41pm",-0.23,37.78,37.83,37.62,10596819
"HON",57.16,"6/11/2007","3:41pm",-0.22,57.25,57.40,56.91,3548036
"HPQ",46.072,"6/11/2007","3:41pm",+0.372,45.80,46.29,45.46,8398683
"IBM",103.38,"6/11/2007","3:41pm",+0.31,102.87,104.00,102.50,3741504
"INTC",21.992,"6/11/2007","3:46pm",+0.162,21.70,22.08,21.69,35566072
"JNJ",62.29,"6/11/2007","3:41pm",+0.16,62.89,62.89,62.15,7444481
"JPM",50.59,"6/11/2007","3:41pm",+0.18,50.41,50.84,50.05,7794800
"KO",51.74,"6/11/2007","3:41pm",+0.07,51.67,51.85,51.32,7758670
"MCD",51.25,"6/11/2007","3:41pm",-0.16,51.47,51.62,50.98,4427195
"MMM",85.50,"6/11/2007","3:41pm",-0.44,85.94,85.98,85.28,2066900
"MO",70.25,"6/11/2007","3:41pm",-0.05,70.25,70.50,69.76,6272385
"MRK",51.14,"6/11/2007","3:41pm",+1.00,50.30,51.35,50.04,9785300
"MSFT",30.08,"6/11/2007","3:46pm",+0.03,30.05,30.25,29.93,38740488
"PFE",26.43,"6/11/2007","3:41pm",-0.09,26.50,26.54,26.31,22573150
"PG",63.06,"6/11/2007","3:41pm",-0.01,62.80,63.21,62.75,6204746
"T",40.25,"6/11/2007","3:41pm",-0.01,40.20,40.47,39.88,14297535
"UTX",70.12,"6/11/2007","3:41pm",-0.11,69.85,70.30,69.51,2068500
"VZ",43.56,"6/11/2007","3:41pm",+0.49,42.95,43.61,42.88,8283057
"WMT",49.85,"6/11/2007","3:41pm",-0.23,49.90,50.12,49.55,9905878
"XOM",83.1801,"6/11/2007","3:41pm",+0.5001,82.68,83.85,82.35,10980200
"AA",39.28,"6/11/2007","3:46pm",-0.38,39.67,40.18,39.21,4013480
"AIG",71.74,"6/11/2007","3:46pm",+0.21,71.29,72.03,71.15,4893496
"AXP",63.13,"6/11/2007","3:46pm",+0.09,62.79,63.42,62.42,2811230
"BA",97.50,"6/11/2007","3:46pm",-0.69,98.25,98.79,97.44,2545100
"C",53.47,"6/11/2007","3:46pm",+0.14,53.20,53.77,52.81,11812294
"CAT",78.98,"6/11/2007","3:46pm",+0.46,78.32,79.46,78.06,3228752
"DD",50.78,"6/11/2007","3:46pm",-0.35,51.13,51.21,50.59,2971197
"DIS",34.17,"6/11/2007","3:46pm",-0.03,34.28,34.44,34.12,5764350
"GE",37.53,"6/11/2007","3:46pm",+0.21,37.07,37.6202,37.05,21261200
"GM",31.74,"6/11/2007","3:46pm",+0.74,31.00,31.90,30.90,14221022
"HD",37.69,"6/11/2007","3:46pm",-0.26,37.78,37.83,37.62,10829419
"HON",57.13,"6/11/2007","3:46pm",-0.25,57.25,57.40,56.91,3612436
"HPQ",46.06,"6/11/2007","3:46pm",+0.36,45.80,46.29,45.46,8528683
"IBM",103.37,"6/11/2007","3:46pm",+0.30,102.87,104.00,102.50,3846604
"INTC",21.97,"6/11/2007","3:51pm",+0.14,21.70,22.08,21.69,37733764
"JNJ",62.28,"6/11/2007","3:46pm",+0.15,62.89,62.89,62.15,7592281
"JPM",50.57,"6/11/2007","3:46pm",+0.16,50.41,50.84,50.05,7987300
"KO",51.71,"6/11/2007","3:46pm",+0.04,51.67,51.85,51.32,7854570
"MCD",51.31,"6/11/2007","3:46pm",-0.10,51.47,51.62,50.98,4569195
"MMM",85.41,"6/11/2007","3:46pm",-0.53,85.94,85.98,85.28,2120500
"MO",70.24,"6/11/2007","3:46pm",-0.06,70.25,70.50,69.76,6364785
"MRK",51.11,"6/11/2007","3:46pm",+0.97,50.30,51.35,50.04,9941300
"MSFT",30.04,"6/11/2007","3:51pm",-0.01,30.05,30.25,29.93,41124800
"PFE",26.41,"6/11/2007","3:46pm",-0.11,26.50,26.54,26.31,23036750
"PG",63.05,"6/11/2007","3:46pm",-0.02,62.80,63.21,62.75,6374346
"T",40.21,"6/11/2007","3:46pm",-0.05,40.20,40.47,39.88,15620735
"UTX",70.19,"6/11/2007","3:46pm",-0.04,69.85,70.30,69.51,2171000
"VZ",43.569,"6/11/2007","3:46pm",+0.499,42.95,43.61,42.88,8442057
"WMT",49.85,"6/11/2007","3:46pm",-0.23,49.90,50.12,49.55,10081678
"XOM",83.14,"6/11/2007","3:46pm",+0.46,82.68,83.85,82.35,11246800
"AA",39.29,"6/11/2007","3:51pm",-0.37,39.67,40.18,39.21,4132380
"AIG",71.62,"6/11/2007","3:51pm",+0.09,71.29,72.03,71.15,5038729
"AXP",63.09,"6/11/2007","3:51pm",+0.05,62.79,63.42,62.42,2861530
"BA",97.49,"6/11/2007","3:51pm",-0.70,98.25,98.79,97.43,3063600
"C",53.42,"6/11/2007","3:51pm",+0.09,53.20,53.77,52.81,12267394
"CAT",78.78,"6/11/2007","3:51pm",+0.26,78.32,79.46,78.06,3287352
"DD",50.73,"6/11/2007","3:51pm",-0.40,51.13,51.21,50.59,3033697
"DIS",34.135,"6/11/2007","3:51pm",-0.065,34.28,34.44,34.12,5919350
"GE",37.49,"6/11/2007","3:51pm",+0.17,37.07,37.6202,37.05,21532000
"GM",31.72,"6/11/2007","3:51pm",+0.72,31.00,31.90,30.90,14377693
"HD",37.67,"6/11/2007","3:51pm",-0.28,37.78,37.83,37.62,11229419
"HON",57.04,"6/11/2007","3:51pm",-0.34,57.25,57.40,56.91,3682536
"HPQ",46.00,"6/11/2007","3:51pm",+0.30,45.80,46.29,45.46,8652383
"IBM",103.20,"6/11/2007","3:51pm",+0.13,102.87,104.00,102.50,3934104
"INTC",21.97,"6/11/2007","3:56pm",+0.14,21.70,22.08,21.69,38481016
"JNJ",62.22,"6/11/2007","3:51pm",+0.09,62.89,62.89,62.15,7738581
"JPM",50.48,"6/11/2007","3:51pm",+0.07,50.41,50.84,50.05,8466180
"KO",51.65,"6/11/2007","3:51pm",-0.02,51.67,51.85,51.32,7921870
"MCD",51.26,"6/11/2007","3:51pm",-0.15,51.47,51.62,50.98,5379392
"MMM",85.26,"6/11/2007","3:51pm",-0.68,85.94,85.98,85.28,2179200
"MO",70.22,"6/11/2007","3:51pm",-0.08,70.25,70.50,69.76,6468485
"MRK",51.09,"6/11/2007","3:51pm",+0.95,50.30,51.35,50.04,10126700
"MSFT",30.04,"6/11/2007","3:56pm",-0.01,30.05,30.25,29.93,45401260
"PFE",26.36,"6/11/2007","3:51pm",-0.16,26.50,26.54,26.31,23619450
"PG",63.01,"6/11/2007","3:51pm",-0.06,62.80,63.21,62.75,6447846
"T",40.14,"6/11/2007","3:51pm",-0.12,40.20,40.47,39.88,15842235
"UTX",70.19,"6/11/2007","3:51pm",-0.04,69.85,70.30,69.51,2300500
"VZ",43.51,"6/11/2007","3:51pm",+0.44,42.95,43.61,42.88,8663757
"WMT",49.81,"6/11/2007","3:51pm",-0.27,49.90,50.12,49.55,10280178
"XOM",82.99,"6/11/2007","3:51pm",+0.31,82.68,83.85,82.35,11476800
"AA",39.29,"6/11/2007","3:56pm",-0.37,39.67,40.18,39.21,4279480
"AIG",71.63,"6/11/2007","3:56pm",+0.10,71.29,72.03,71.15,5259629
"AXP",63.06,"6/11/2007","3:56pm",+0.02,62.79,63.42,62.42,2932030
"BA",97.48,"6/11/2007","3:56pm",-0.71,98.25,98.79,97.43,3134100
"C",53.46,"6/11/2007","3:56pm",+0.13,53.20,53.77,52.81,12689394
"CAT",78.76,"6/11/2007","3:56pm",+0.24,78.32,79.46,78.06,3364652
"DD",50.70,"6/11/2007","3:56pm",-0.43,51.13,51.21,50.59,3120297
"DIS",34.16,"6/11/2007","3:56pm",-0.04,34.28,34.44,34.12,6061350
"GE",37.47,"6/11/2007","3:56pm",+0.15,37.07,37.6202,37.05,22045900
"GM",31.72,"6/11/2007","3:56pm",+0.72,31.00,31.90,30.90,14702993
"HD",37.67,"6/11/2007","3:56pm",-0.28,37.78,37.83,37.62,11654819
"HON",56.95,"6/11/2007","3:56pm",-0.43,57.25,57.40,56.91,3802936
"HPQ",45.93,"6/11/2007","3:56pm",+0.23,45.80,46.29,45.46,11355083
"IBM",103.01,"6/11/2007","3:56pm",-0.06,102.87,104.00,102.50,4096804
"INTC",21.93,"6/11/2007","4:01pm",+0.10,21.70,22.08,21.69,40860336
"JNJ",62.29,"6/11/2007","3:56pm",+0.16,62.89,62.89,62.15,7933681
"JPM",50.43,"6/11/2007","3:56pm",+0.02,50.41,50.84,50.05,8654880
"KO",51.66,"6/11/2007","3:56pm",-0.01,51.67,51.85,51.32,7987870
"MCD",51.30,"6/11/2007","3:56pm",-0.11,51.47,51.62,50.98,5548192
"MMM",85.18,"6/11/2007","3:56pm",-0.76,85.94,85.98,85.17,2274500
"MO",70.22,"6/11/2007","3:56pm",-0.08,70.25,70.50,69.76,6635085
"MRK",51.06,"6/11/2007","3:56pm",+0.92,50.30,51.35,50.04,10461500
"MSFT",30.02,"6/11/2007","4:00pm",-0.03,30.05,30.25,29.93,46709236
"PFE",26.37,"6/11/2007","3:56pm",-0.15,26.50,26.54,26.31,24178850
"PG",63.02,"6/11/2007","3:56pm",-0.05,62.80,63.21,62.75,6576946
"T",40.0918,"6/11/2007","3:56pm",-0.1682,40.20,40.47,39.88,16125935
"UTX",70.17,"6/11/2007","3:56pm",-0.06,69.85,70.30,69.51,2406200
"VZ",43.48,"6/11/2007","3:56pm",+0.41,42.95,43.61,42.88,9009057
"WMT",49.79,"6/11/2007","3:56pm",-0.29,49.90,50.12,49.55,10441378
"XOM",82.96,"6/11/2007","3:56pm",+0.28,82.68,83.85,82.35,11744600
"AA",39.30,"6/11/2007","4:01pm",-0.36,39.67,40.18,39.14,4516480
"AIG",71.65,"6/11/2007","4:00pm",+0.12,71.29,72.03,71.15,5942029
"AXP",63.06,"6/11/2007","4:00pm",+0.02,62.79,63.42,62.42,3050830
"BA",97.55,"6/11/2007","4:00pm",-0.64,98.25,98.79,97.42,3300500
"C",53.47,"6/11/2007","4:01pm",+0.14,53.20,53.77,52.81,13457894
"CAT",78.75,"6/11/2007","4:00pm",+0.23,78.32,79.46,78.06,3456552
"DD",50.73,"6/11/2007","3:59pm",-0.40,51.13,51.21,50.59,3162997
"DIS",34.15,"6/11/2007","3:59pm",-0.05,34.28,34.44,34.12,6162650
"GE",37.46,"6/11/2007","4:01pm",+0.14,37.07,37.6202,37.05,23163100
"GM",31.77,"6/11/2007","4:00pm",+0.77,31.00,31.90,30.90,15223093
"HD",37.71,"6/11/2007","4:00pm",-0.24,37.78,37.83,37.62,12074119
"HON",57.02,"6/11/2007","3:59pm",-0.36,57.25,57.40,56.91,3911336
"HPQ",45.89,"6/11/2007","4:00pm",+0.19,45.80,46.29,45.46,11960883
"IBM",103.22,"6/11/2007","4:01pm",+0.15,102.87,104.00,102.50,4668204
"INTC",21.93,"6/11/2007","4:01pm",+0.10,21.70,22.08,21.69,41134284
"JNJ",62.27,"6/11/2007","4:00pm",+0.14,62.89,62.89,62.15,8452146
"JPM",50.45,"6/11/2007","4:00pm",+0.04,50.41,50.84,50.05,8869280
"KO",51.65,"6/11/2007","3:59pm",-0.02,51.67,51.85,51.32,8049770
"MCD",51.25,"6/11/2007","4:01pm",-0.16,51.47,51.62,50.98,5969292
"MMM",85.30,"6/11/2007","4:01pm",-0.64,85.94,85.98,85.17,2454400
"MO",70.22,"6/11/2007","4:00pm",-0.08,70.25,70.50,69.76,6887785
"MRK",51.09,"6/11/2007","3:59pm",+0.95,50.30,51.35,50.04,10623065
"MSFT",30.02,"6/11/2007","4:00pm",-0.03,30.05,30.25,29.93,46924636
"PFE",26.37,"6/11/2007","4:00pm",-0.15,26.50,26.54,26.31,25287450
"PG",63.05,"6/11/2007","4:00pm",-0.02,62.80,63.21,62.75,6920246
"T",40.12,"6/11/2007","4:00pm",-0.14,40.20,40.47,39.88,16712535
"UTX",70.18,"6/11/2007","4:00pm",-0.05,69.85,70.30,69.51,2660900
"VZ",43.47,"6/11/2007","3:59pm",+0.40,42.95,43.61,42.88,9156827
"WMT",49.81,"6/11/2007","4:00pm",-0.27,49.90,50.12,49.55,10924878
"XOM",83.06,"6/11/2007","4:00pm",+0.38,82.68,83.85,82.35,12427710

================================================
FILE: Data/missing.csv
================================================
name,shares,price
"AA",15,39.48
"AXP",10,62.58
"BA",5,98.31
"C",,53.08
"CAT",15,78.29
"DD",10,50.75
"DIS",50,N/A
"GE",,37.23
"GM",15,31.44
"HD",20,37.67
"HPQ",5,45.81
"IBM",10,102.86
"INTC",,21.84
"JNJ",20,62.25
"JPM",10,50.35
"KO",5,51.65
"MCD",,51.11
"MMM",10,85.60
"MO",,70.09
"MRK",5,50.21
"MSFT",20,30.08
"PFE",,26.40
"PG",5,62.79
"T",10,40.03
"UTX",8,69.81
"VZ",,42.92
"WMT",10,49.78
"XOM",15,82.50


================================================
FILE: Data/portfolio.csv
================================================
name,shares,price
"AA",100,32.20
"IBM",50,91.10
"CAT",150,83.44
"MSFT",200,51.23
"GE",95,40.37
"MSFT",50,65.10
"IBM",100,70.44


================================================
FILE: Data/portfolio2.csv
================================================
name,shares,price
"AA",50,27.10
"HPQ",250,43.15
"MSFT",25,50.15
"GE",125,52.10


================================================
FILE: Data/portfolio3.csv
================================================
"AA",15,39.48
"AXP",10,62.58
"BA",5,98.31
"C",-,53.08
"CAT",15,78.29
"DD",10,50.75
"DIS",-,N/A
"GE",-,37.23
"GM",15,31.44
"HD",20,37.67
"HPQ",5,45.81
"IBM",10,102.86
"INTC",-,21.84
"JNJ",20,62.25
"JPM",10,50.35
"KO",5,51.65
"MCD",-,51.11
"MMM",10,85.60
"MO",-,70.09
"MRK",5,50.21
"MSFT",20,30.08
"PFE",-,26.40
"PG",5,62.79
"T",10,40.03
"UTX",8,69.81
"VZ",-,42.92
"WMT",10,49.78
"XOM",15,82.50


================================================
FILE: Data/portfolio_noheader.csv
================================================
"AA",100,32.20
"IBM",50,91.10
"CAT",150,83.44
"MSFT",200,51.23
"GE",95,40.37
"MSFT",50,65.10
"IBM",100,70.44


================================================
FILE: Data/prices.csv
================================================
"AA",9.22
"AXP",24.85
"BA",44.85
"BAC",11.27
"C",3.72
"CAT",35.46
"CVX",66.67
"DD",28.47
"DIS",24.22
"GE",13.48
"GM",0.75
"HD",23.16
"HPQ",34.35
"IBM",106.28
"INTC",15.72
"JNJ",55.16
"JPM",36.90
"KFT",26.11
"KO",49.16
"MCD",58.99
"MMM",57.10
"MRK",27.58
"MSFT",20.89
"PFE",15.19
"PG",51.94
"T",24.79
"UTX",52.61
"VZ",29.26
"WMT",49.74
"XOM",69.35


================================================
FILE: Data/stocksim.py
================================================
#!/usr/bin/env python
# stocksim.py
#
# Stock market simulator.  This simulator creates stock market
# data and provides it in several different ways:
#
#    1. Makes periodic updates to a log file stocklog.dat
#
# The purpose of this module is to provide data to the user
# in different ways in order to write interesting Python examples

import math
import time
import threading
try:
    import queue
except ImportError:
    import Queue as queue

history_file = "dowstocks.csv"

# Convert a time string such as "4:00pm" to minutes past midnight
def minutes(tm):
    am_pm = tm[-2:]
    fields = tm[:-2].split(":")
    hour = int(fields[0])
    minute = int(fields[1])
    if hour == 12:
       hour = 0
    if am_pm == 'pm':
       hour += 12
    return hour*60 + minute

# Convert time in minutes to a format string
def minutes_to_str(m):
    frac,m = math.modf(m)
    hours = m//60
    minutes = m % 60
    seconds = frac * 60
    return "%02d:%02d.%02.f" % (hours,minutes,seconds)

# Read the stock history file as a list of lists
def read_history(filename):
    result = []
    for line in open(filename):
        str_fields = line.strip().split(",")
        fields = [eval(x) for x in str_fields]
        fields[3] = minutes(fields[3])
        result.append(fields)
    return result

# Format CSV record
def csv_record(fields):
    s = '"%s",%0.2f,"%s","%s",%0.2f,%0.2f,%0.2f,%0.2f,%d' % tuple(fields)
    return s

class StockTrack(object):
    def __init__(self,name):
        self.name    = name
        self.history = []
        self.price   = 0
        self.time    = 0
        self.index   = 0
        self.open    = 0
        self.low     = 0
        self.high    = 0
        self.volume  = 0
        self.initial = 0
        self.change  = 0
        self.date    = ""
    def add_data(self,record):
        self.history.append(record)
    def reset(self,time):
        self.time = time
        # Sort the history by time
        self.history.sort(key=lambda t:t[3])
        # Find the first entry who's time is behind the given time
        self.index = 0
        while self.index < len(self.history):
            if self.history[self.index][3] > time:
                break
            self.index += 1
        self.open = self.history[0][5]
        self.initial = self.history[0][1] - self.history[0][4]
        self.date = self.history[0][2]
        self.update()
        self.low = self.price
        self.high = self.price

    # Calculate interpolated value of a given field based on
    # current time
    def interpolate(self,field):
        first = self.history[self.index][field]
        next  = self.history[self.index+1][field]
        first_t = self.history[self.index][3]
        next_t = self.history[self.index+1][3]
        try:
            slope = (next - first)/(next_t-first_t)
            return first + slope*(self.time - first_t)
        except ZeroDivisionError:
            return first

    # Update all computed values
    def update(self):
        self.price = round(self.interpolate(1),2)
        self.volume = int(self.interpolate(-1))
        if self.price < self.low:
            self.low = self.price
        if self.price >= self.high:
            self.high = self.price
        self.change = self.price - self.initial
        
    # Increment the time by a delta
    def incr(self,dt):
        self.time += dt
        if self.index < (len(self.history) - 2):
            while self.index < (len(self.history) - 2) and self.time >= self.history[self.index+1][3]:
                self.index += 1
        self.update()

    def make_record(self):
        return [self.name,round(self.price,2),self.date,minutes_to_str(self.time),round(self.change,2),self.open,round(self.high,2),
                round(self.low,2),self.volume]

class MarketSimulator(object):
    def __init__(self):
        self.stocks = { }
        self.prices = { }
        self.time = 0
        self.observers = []
    def register(self,observer):
        self.observers.append(observer)

    def publish(self,record):
        for obj in self.observers:
            obj.update(record)
    def add_history(self,filename):
        hist = read_history(filename)
        for record in hist:
            if record[0] not in self.stocks:
                self.stocks[record[0]] = StockTrack(record[0])
            self.stocks[record[0]].add_data(record) 

    def reset(self,time):
        self.time = time
        for s in list(self.stocks.values()):
            s.reset(time)

    # Run forever.  Dt is in seconds
    def run(self,dt):
        for s in self.stocks:
            self.prices[s] = self.stocks[s].price
            self.publish(self.stocks[s].make_record())
        while self.time < 1000:
            for s in self.stocks:
                self.stocks[s].incr(dt/60.0)    # Increment is in minutes
                if self.stocks[s].price != self.prices[s]:
                    self.prices[s] = self.stocks[s].price
                    self.publish(self.stocks[s].make_record())
            time.sleep(dt)
            self.time += (dt/60.0)


class BasicPrinter(object):
    def update(self,record):
        print(csv_record(record))

class LogPrinter(object):
    def __init__(self,filename):
        self.f = open(filename,"w")
    def update(self,record):
        self.f.write(csv_record(record)+"\n")
        self.f.flush()

m = MarketSimulator()
m.add_history(history_file)
m.reset(minutes("9:30am"))
m.register(BasicPrinter())
m.register(LogPrinter("stocklog.csv"))
m.run(1)


   


================================================
FILE: Data/words.txt
================================================
look into my eyes
look into my eyes
the eyes the eyes the eyes
not around the eyes 
don't look around the eyes
look into my eyes you're under


================================================
FILE: Exercises/README.md
================================================
# Advanced Python Mastery

Copyright (C) 2007-2023 
David Beazley (dave@dabeaz.com) 
http://www.dabeaz.com

Welcome to the Python Mastery course. This
directory, `pythonmaster` is where you find support files
related to the class exercises.  It is also where you will be doing
your work.

This course requires the use of Python 3.6 or newer.  If you are
using Python 2, most of the material still applies, but you will
have to make minor code modifications here and there. 

- [`PythonMastery.pdf`](../PythonMastery.pdf) is a PDF that contains
all of the presentation slides.

- The [`Exercises/`](index.md) folder is where you
find all the class exercises.

- The [`Data/`](../Data/) folder is where you find data files, scripts, and
other files used by the exercises.

- The [`Solutions/`](../Solutions/) folder contains complete solution code for
various exercises.  Each problem has its own directory.  For example,
the solution to exercise 3.2 can be found in the [`Solutions/3_2/`](../Solutions/3_2/) directory.

Every attempt has been made to make sure exercises work.  However, it's 
possible that you will find typos or minor mistakes. If you find any
errors, please let me know so that I can fix them for future editions
of the course.







================================================
FILE: Exercises/ex1_1.md
================================================
\[ [Index](index.md) | []() | [Exercise 1.2](ex1_2.md) \]

# Exercise 1.1

*Objectives:*

- Make sure Python is installed correctly on your machine
- Start the interactive interpreter
- Edit and run a small program

*Files Created:* `art.py`

## (a) Launch Python

Start Python3 on your machine.  Make sure you can type simple
statements such as the "hello world" program:

```python
>>> print('Hello World')
Hello World
>>>
```

In much of this course, you'll want to make sure you can work from
the interactive REPL like this.   If you're working from a different
environment such as IPython or Jupyter Notebooks, that's fine.

## (b) Some Generative Art

Create the following program and put it in a file called `art.py`:

```python
# art.py

import sys
import random

chars = '\|/'

def draw(rows, columns):
    for r in rows:
        print(''.join(random.choice(chars) for _ in range(columns)))

if __name__ == '__main__':
    if len(sys.argv) != 3:
        raise SystemExit("Usage: art.py rows columns")
    draw(int(sys.argv[1]), int(sys.argv[2]))
```

Make sure you can run this program from the command line or a terminal.

```
bash % python3 art.py 10 20
```

If you run the above command, you'll get a crash and traceback message.
Go fix the problem and run the program again.  You should get output like
this:

```
bash % python3 art.py 10 20
||||/\||//\//\|||\|\
///||\/||\//|\\|\\/\
|\////|//|||\//|/\||
|//\||\/|\///|\|\|/|
|/|//|/|/|\\/\/\||//
|\/\|\//\\//\|\||\\/
|||\\\\/\\\|/||||\/|
\\||\\\|\||||////\\|
//\//|/|\\|\//\|||\/
\\\|/\\|/|\\\|/|/\/|
bash %
```

### Important Note

It is absolutely essential that you are able to edit, run, and debug
ordinary Python programs for the rest of this course.  The choice
of editor, IDE, or operating system doesn't matter as long as you
are able to experiment interactively and create normal Python source
files that can execute from the command line.


\[ [Solution](soln1_1.md) | [Index](index.md) | [Exercise 1.2](ex1_2.md) \]



----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex1_2.md
================================================
\[ [Index](index.md) | [Exercise 1.1](ex1_1.md) | [Exercise 1.3](ex1_3.md) \]


# Exercise 1.2

*Objectives:*

- Manipulate various built-in Python objects

*Files Created:* None

## Part 1 : Numbers

Numerical calculations work about like you would expect in Python.
For example:

```python
>>> 3 + 4*5
23
>>> 23.45 / 1e-02
2345.0
>>>
```

Be aware that integer division is different in Python 2 and Python 3. 

```python
>>> 7 / 4      # In python 2, this truncates to 1
1.75           
>>> 7 // 4     # Truncating division
1 
>>> 
```

If you want Python 3 behavior in Python 2, do this:

```python
>>> from __future__ import division
>>> 7 / 4
1.75
>>> 7 // 4      # Truncating division
1
>>>
```

Numbers have a small set of methods, many of which are actually quite
recent and overlooked by even experienced Python programmers.  Try some of them.

```python
>>> x = 1172.5
>>> x.as_integer_ratio()
(2345, 2)
>>> x.is_integer()
False
>>> y = 12345
>>> y.numerator
12345
>>> y.denominator
1
>>> y.bit_length()
14
>>> 
```

## Part 2 : String Manipulation

Define a string containing a series of stock ticker symbols like this:

```python
>>> symbols = 'AAPL IBM MSFT YHOO SCO'
```

Now, let's experiment with different string operations:

### (a) Extracting individual characters and substrings

Strings are arrays of characters.  Try extracting a few characters:

```python
>>> symbols[0]
'A'
>>> symbols[1]
'A'
>>> symbols[2]
'P'
>>> symbols[-1]        # Last character
'O'
>>> symbols[-2]        # 2nd from last character
'C'
>>>
```

Try taking a few slices:

```python
>>> symbols[:4]
'AAPL'
>>> symbols[-3:]
'SCO'
>>> symbols[5:8]
'IBM'
>>>
```

### (b) Strings as read-only objects

Strings are read-only.   Verify this by trying to change the first character of `symbols` to a lower-case 'a'. 

```python
>>> symbols[0] = 'a'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> 
```

### (c) String concatenation

Although string data is read-only, you can always reassign a variable to a newly created string.   
Try the following statement which concatenates a new symbol "GOOG" to the end of `symbols`:

```python
>>> symbols += ' GOOG'             
>>> symbols
... look at the result ...
```

Now, try adding "HPQ" to the beginning of `symbols` like this:

```python
>>> symbols = 'HPQ ' + symbols     
>>> symbols
... look at the result ...
```

It should be noted in both of these examples, the original string `symbols` is _NOT_
being modified "in place."  Instead, a completely new string is created.  The variable name `symbols` is
just bound to the result.  Afterwards, the old string is destroyed since it's not being used anymore.


### (d) Membership testing (substring testing)

Experiment with the `in` operator to check for substrings.  At
the interactive prompt, try these operations:

```python
>>> 'IBM' in symbols
True
>>> 'AA' in symbols
True
>>> 'CAT' in symbols
False
>>>
```

Make sure you understand why the check for "AA" returned `True`.

### (e) String Methods

At the Python interactive prompt, try experimenting with some of the
string methods. 

```python
>>> symbols.lower()
'hpq aapl ibm msft yhoo sco goog'
>>> symbols       
'HPQ AAPL IBM MSFT YHOO SCO GOOG'
```

Remember, strings are always read-only.  If you want to save the result of an operation, you
need to place it in a variable:

```python
>>> lowersyms = symbols.lower()
>>> lowersyms
'hpq aapl ibm msft yhoo sco goog'
>>>
```

Try some more operations:

```python
>>> symbols.find('MSFT')
13
>>> symbols[13:17]
'MSFT'
>>> symbols = symbols.replace('SCO','')
>>> symbols
'HPQ AAPL IBM MSFT YHOO  GOOG'
>>>
```

## Part 3 : List Manipulation

In the first part, you worked with strings containing stock symbols.  For example:

```python
>>> symbols = 'HPQ AAPL IBM MSFT YHOO  GOOG'
>>>
```

Define the above variable and split it into a list of names using the `split()` operation of strings:

```python
>>> symlist = symbols.split()
>>> symlist
['HPQ', 'AAPL', 'IBM', 'MSFT', 'YHOO', 'GOOG' ]
>>>
```

### (a) Extracting and reassigning list elements

Lists work like arrays where you can look up and
modify elements by numerical index.   Try a few lookups:

```python
>>> symlist[0]
'HPQ'
>>> symlist[1]
'AAPL'
>>> symlist[-1]
'GOOG'
>>> symlist[-2]
'YHOO'
>>>
```

Try reassigning one of the items:

```python
>>> symlist[2] = 'AIG'
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG' ]
>>>
```

### (b) Looping over list items

The `for` loop works by looping over data in a sequence such as a list.   Check this out
by typing the following loop and watching what happens:

```python
>>> for s in symlist:
        print('s =', s)

... look at the output ...
```

### (c) Membership tests

Use the `in` operator to check if `'AIG'`,`'AA'`, and `'CAT'` are in the list of symbols.

```python
>>> 'AIG' in symlist
True
>>> 'AA' in symlist
False
>>>
```

### (d) Appending, inserting, and deleting items

Use the `append()` method to add the symbol `'RHT'` to end of `symlist`.  

```python
>>> symlist.append('RHT')
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>> 
```

Use the `insert()` method to
insert the symbol `'AA'` as the second item in the list.

```python
>>> symlist.insert(1,'AA')
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>>
```

Use the `remove()` method to remove `'MSFT'` from the list. 

```python
>>> symlist.remove('MSFT')
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT']
```

Try calling `remove()` again to see what happens if the item can't be found.

```python
>>> symlist.remove('MSFT')
... watch what happens ...
>>>
```

Use the `index()` method to find the position of `'YHOO'` in the list.

```python
>>> symlist.index('YHOO')
4
>>> symlist[4]
'YHOO'
>>>
```

### (e) List sorting

Want to sort a list?  Use the `sort()` method.  Try it out:

```python
>>> symlist.sort()
>>> symlist
['AA', 'AAPL', 'AIG', 'GOOG', 'HPQ', 'RHT', 'YHOO']
>>>
```

Want to sort in reverse?  Try this:

```python
>>> symlist.sort(reverse=True)
>>> symlist
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>>
```

Note: Sorting a list modifies its contents "in-place."  That is, the
elements of the list are shuffled around, but no new list is created
as a result.


### (f) Lists of anything

Lists can contain any kind of object, including other lists (e.g., nested
lists).  Try this out:

```python
>>> nums = [101,102,103]
>>> items = [symlist, nums]
>>> items
[['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA'], [101, 102, 103]]
```

Pay close attention to the above output.  `items` is a list
with two elements. Each element is list.

Try some nested list lookups:

```python
>>> items[0]
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>> items[0][1]
'RHT'
>>> items[0][1][2]
'T'
>>> items[1]
[101, 102, 103]
>>> items[1][1]
102
>>>
```

## Part 4 : Dictionaries

In last few parts, you've simply worked with stock symbols.   However,
suppose you wanted to map stock symbols to other data such as the
price?  Use a dictionary:

```python
>>> prices = { 'IBM': 91.1, 'GOOG': 490.1, 'AAPL':312.23 }
>>>
```

A dictionary maps keys to values.  Here's how to access:

```python
>>> prices['IBM']
91.1
>>> prices['IBM'] = 123.45
>>> prices['HPQ'] = 26.15
>>> prices
{'GOOG': 490.1, 'AAPL': 312.23, 'IBM': 123.45, 'HPQ': 26.15}
>>>
```

To get a list of keys, use this:

```python
>>> list(prices)
['GOOG', 'AAPL', 'IBM', 'HPQ']
>>>
```

To delete a value, use `del`

```python
>>> del prices['AAPL']
>>> prices
{'GOOG': 490.1, 'IBM': 123.45, 'HPQ': 26.15}
>>>
```


\[ [Solution](soln1_2.md) | [Index](index.md) | [Exercise 1.1](ex1_1.md) | [Exercise 1.3](ex1_3.md) \]

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex1_3.md
================================================
\[ [Index](index.md) | [Exercise 1.2](ex1_2.md) | [Exercise 1.4](ex1_4.md) \]

# Exercise 1.3

*Objectives:*

- Review basic file I/O

*Files Created:* `pcost.py`

## (a) Working with files

The file `Data/portfolio.dat` contains a list of lines with information
on a portfolio of stocks.  The file looks like this:

```
AA 100 32.20
IBM 50 91.10
CAT 150 83.44
MSFT 200 51.23
GE 95 40.37
MSFT 50 65.10
IBM 100 70.44
```

The first column is the stock name, the second column is the number of
shares, and the third column is the purchase price of a single share. 

Write a program called `pcost.py` that opens this file, reads
all lines, and calculates how much it cost to purchase all of the shares
in the portfolio. To do this, compute the sum of the second column
multiplied by the third column.

\[ [Solution](soln1_3.md) | [Index](index.md) | [Exercise 1.2](ex1_2.md) | [Exercise 1.4](ex1_4.md) \]

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex1_4.md
================================================
\[ [Index](index.md) | [Exercise 1.3](ex1_3.md) | [Exercise 1.5](ex1_5.md) \]

# Exercise 1.4

*Objectives:*

- Review of how to define simple functions
- Exception handling

*Files Created:* None

*Files Modified:* `pcost.py`

## (a) Defining a function

Take the program `pcost.py` that you wrote in the last exercise and
convert it into a function `portfolio_cost(filename)` that takes a
filename as input, reads the portfolio data in that file, and returns
the total cost of the portfolio as a floating point number. Once you
written the function, have your program call the function by simply
adding this statement at the end:

```python
print(portfolio_cost('Data/portfolio.dat'))
```

Run your program and make sure it produces the same output as
before.


## (b) Adding Error Handling

When writing programs that process data, it is common to encounter
errors related to bad data (malformed, missing fields, etc.).  Modify
your `pcost.py` program to read the data file `Data/portfolio3.dat`
and run it (hint: it should crash).

Modify your function slightly so that it is able to recover from lines
with bad data.  For example, the conversion functions `int()` and
`float()` raise a `ValueError` exception if they can't convert the
input.  Use `try` and `except` to catch and print a warning message
about lines that can't be parsed.  For example:

```
Couldn't parse: 'C - 53.08\n'
Reason: invalid literal for int() with base 10: '-'
Couldn't parse: 'DIS - 34.20\n'
Reason: invalid literal for int() with base 10: '-'
...
```

Try running your program on the `Data/portfolio3.dat` file
again.   It should run successfully despite printed warning messages.

## (c) Interactive Experimentation

Run your `pcost.py` program and call the
`portfolio_cost()` function directly from the interactive
interpreter.

```python
>>> portfolio_cost('Data/portfolio.dat')
44671.15
>>> portfolio_cost('Data/portfolio2.dat')
19908.75
>>>
```

Note: To do this, you might have to run python using the `-i`
option.  For example:

```
bash % python3 -i pcost.py
```

We are going to be writing a lot of programs where you define
functions and experiment interactively.  Make sure you know how to do
this.

\[ [Solution](soln1_4.md) | [Index](index.md) | [Exercise 1.3](ex1_3.md) | [Exercise 1.5](ex1_5.md) \]

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex1_5.md
================================================
\[ [Index](index.md) | [Exercise 1.4](ex1_4.md) | [Exercise 1.6](ex1_6.md) \]

# Exercise 1.5

*Objectives:*

- Review of how to define a simple object

*Files Created:* `stock.py`

## (a) Defining a simple object

Create a file `stock.py` and define the following class:

```python
class Stock:
    def __init__(self, name, shares, price):
        self.name = name
        self.shares = shares
        self.price = price
    def cost(self):
        return self.shares * self.price
```

Once you have done this, run your program and experiment with your new
`Stock` object:

```python
>>> s = Stock('GOOG',100,490.10)
>>> s.name
'GOOG'
>>> s.shares
100
>>> s.price
490.1
>>> s.cost()
49010.0
>>> print('%10s %10d %10.2f' % (s.name, s.shares, s.price))
      GOOG        100     490.10
>>> t = Stock('IBM', 50, 91.5)
>>> t.cost()
4575.0
>>> 
```

\[ [Solution](soln1_5.md) | [Index](index.md) | [Exercise 1.4](ex1_4.md) | [Exercise 1.6](ex1_6.md) \]

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex1_6.md
================================================
\[ [Index](index.md) | [Exercise 1.5](ex1_5.md) | [Exercise 2.1](ex2_1.md) \]

# Exercise 1.6

*Objectives:*

- Defining modules
- Using the import statement

*Files Created:* None

**Note:**
For this exercise involving modules, it is
critically important to make sure you are running Python in a proper
environment.  You may need to check the value of `sys.path` if you 
can't get import statements to work.  Ask for assistance if everything
seems broken.

Before starting this exercise, first restart your Python interpreter session.  If using IDLE, click on
the shell window and look for a menu option "Shell > Restart Shell".   You should get a message like this:

```python
>>> ##################== RESTART ##################==
>>> 
```

If you are using Unix, simply exit Python and restart the interpreter.

## (a) Using the import statement

In previous exercises, you wrote two programs `pcost.py` and
`stock.py`.   Use the `import` statement to load these
programs and use their functionality:

```python
>>> import pcost
44671.15
>>> pcost.portfolio_cost('Data/portfolio2.dat')
19908.75
>>> from stock import Stock
>>> s = Stock('GOOG', 100, 490.10)
>>> s.name
'GOOG'
>>> s.cost()
49010.0
>>>
```

If you can't get the above statements to work, you might have placed
your programs in a funny directory.  Make sure you are running Python
in the same directory as your files or that the directory is included
on `sys.path`.


## (b) Main Module

In your `pcost.py` program, the last statement called a
function and printed out the result.  Modify the program so that this
step only occurs if the program is run as the main program.  Now,
try running the program two ways:

First, run the program as main:

```
bash % python3 pcost.py
44671.25
bash %
```

Next, run the program as a library import.  You should not see any
output.

```python
>>> import pcost
>>>
```

\[ [Solution](soln1_6.md) | [Index](index.md) | [Exercise 1.5](ex1_5.md) | [Exercise 2.1](ex2_1.md) \]

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex2_1.md
================================================
\[ [Index](index.md) | [Exercise 1.6](ex1_6.md) | [Exercise 2.2](ex2_2.md) \]

# Exercise 2.1

*Objectives:*

- Figure out the most memory-efficient way to store a lot of data.
- Learn about different ways of representing records including tuples,
dictionaries, classes, and named tuples.

In this exercise, we look at different choices for representing data
structures with an eye towards memory use and efficiency.  A lot of
people use Python to perform various kinds of data analysis so knowing
about different options and their tradeoffs is useful information.

## (a) Stuck on the bus

The file `Data/ctabus.csv` is a CSV file containing
daily ridership data for the Chicago Transit Authority (CTA) bus
system from January 1, 2001 to August 31, 2013.  It contains
approximately 577000 rows of data.  Use Python to view a few lines
of data to see what it looks like:

```python
>>> f = open('Data/ctabus.csv')
>>> next(f)
'route,date,daytype,rides\n'
>>> next(f)
'3,01/01/2001,U,7354\n'
>>> next(f)
'4,01/01/2001,U,9288\n'
>>>
```

There are 4 columns of data.

- route: Column 0.  The bus route name.
- date: Column 1.  A date string of the form MM/DD/YYYY.
- daytype: Column 2. A day type code (U=Sunday/Holiday, A=Saturday, W=Weekday)
- rides: Column 3. Total number of riders (integer)

The `rides` column records the total number of people who boarded a
bus on that route on a given day. Thus, from the example, 7354 people
rode the number 3 bus on January 1, 2001.

## (b) Basic memory use of text

Let's get a baseline of the memory required to work with this
datafile.  First, restart Python and try a very simple experiment of
simply grabbing the file and storing its data in a single string:

```python
>>> # --- RESTART 
>>> import tracemalloc
>>> f = open('Data/ctabus.csv')
>>> tracemalloc.start()
>>> data = f.read()
>>> len(data)
12361039
>>> current, peak = tracemalloc.get_traced_memory()
>>> current
12369664
>>> peak
24730766
>>> 
```

Your results might vary somewhat, but you should see current
memory use in the range of 12MB with a peak of 24MB.

What happens if you read the entire file into a list of strings
instead?  Restart Python and try this:

```python
>>> # --- RESTART
>>> import tracemalloc
>>> f = open('Data/ctabus.csv')
>>> tracemalloc.start()
>>> lines = f.readlines()
>>> len(lines)
577564
>>> current, peak = tracemalloc.get_traced_memory()
>>> current
45828030
>>> peak
45867371
>>> 
```

You should see the memory use go up significantly into the range of 40-50MB.
Point to ponder: what might be the source of that extra overhead?

## (c) A List of Tuples

In practice, you might read the data into a list and convert each line
into some other data structure.  Here is a program `readrides.py` that
reads the entire file into a list of tuples using the `csv` module:

```python
# readrides.py

import csv

def read_rides_as_tuples(filename):
    '''
    Read the bus ride data as a list of tuples
    '''
    records = []
    with open(filename) as f:
        rows = csv.reader(f)
        headings = next(rows)     # Skip headers
        for row in rows:
            route = row[0]
            date = row[1]
            daytype = row[2]
            rides = int(row[3])
            record = (route, date, daytype, rides)
            records.append(record)
    return records

if __name__ == '__main__':
    import tracemalloc
    tracemalloc.start()
    rows = read_rides_as_tuples('Data/ctabus.csv')
    print('Memory Use: Current %d, Peak %d' % tracemalloc.get_traced_memory())
```

Run this program using `python3 -i readrides.py` and look at the
resulting contents of `rows`. You should get a list of tuples like
this:

```python
>>> len(rows)
577563
>>> rows[0]
('3', '01/01/2001', 'U', 7354)
>>> rows[1]
('4', '01/01/2001', 'U', 9288)
```

Look at the resulting memory use. It should be substantially higher
than in part (b).

## (d) Memory Use of Other Data Structures

Python has many different choices for representing data structures.
For example:

```python
# A tuple
row = (route, date, daytype, rides)

# A dictionary
row = {
    'route': route,
    'date': date,
    'daytype': daytype,
    'rides': rides,
}

# A class
class Row:
    def __init__(self, route, date, daytype, rides):
        self.route = route
        self.date = date
        self.daytype = daytype
        self.rides = rides

# A named tuple
from collections import namedtuple
Row = namedtuple('Row', ['route', 'date', 'daytype', 'rides'])

# A class with __slots__
class Row:
    __slots__ = ['route', 'date', 'daytype', 'rides']
    def __init__(self, route, date, daytype, rides):
        self.route = route
        self.date = date
        self.daytype = daytype
        self.rides = rides
```
Your task is as follows:  Create different versions of the `read_rides()` function
that use each of these data structures to represent a single row of data.
Then, find out the resulting memory use of each option.   Find out which
approach offers the most efficient storage if you were working with a lot 
of data all at once.

\[ [Solution](soln2_1.md) | [Index](index.md) | [Exercise 1.6](ex1_6.md) | [Exercise 2.2](ex2_2.md) \]

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex2_2.md
================================================
\[ [Index](index.md) | [Exercise 2.1](ex2_1.md) | [Exercise 2.3](ex2_3.md) \]

# Exercise 2.2

*Objectives:*

- Work with various containers
- List/Set/Dict Comprehensions
- Collections module
- Data analysis challenge

Most Python programmers are generally familiar with lists, dictionaries,
tuples, and other basic datatypes. In this exercise, we'll put that
knowledge to work to solve various data analysis problems.

## (a) Preliminaries

To get started, let's review some basics with a slightly simpler dataset--
a portfolio of stock holdings. Create a file `readport.py` and put this
code in it:

```python
# readport.py

import csv

# A function that reads a file into a list of dicts
def read_portfolio(filename):
    portfolio = []
    with open(filename) as f:
        rows = csv.reader(f)
        headers = next(rows)
        for row in rows:
            record = {
                'name' : row[0],
                'shares' : int(row[1]),
                'price' : float(row[2])
            }
            portfolio.append(record)
    return portfolio
```

This file reads some simple stock market data in the file `Data/portfolio.csv`.  Use
the function to read the file and look at the results:

```python
>>> portfolio = read_portfolio('Data/portfolio.csv')
>>> from pprint import pprint
>>> pprint(portfolio)
[{'name': 'AA', 'price': 32.2, 'shares': 100},
 {'name': 'IBM', 'price': 91.1, 'shares': 50},
 {'name': 'CAT', 'price': 83.44, 'shares': 150},
 {'name': 'MSFT', 'price': 51.23, 'shares': 200},
 {'name': 'GE', 'price': 40.37, 'shares': 95},
 {'name': 'MSFT', 'price': 65.1, 'shares': 50},
 {'name': 'IBM', 'price': 70.44, 'shares': 100}]
>>>
```

In this data, each row consists of a stock name, a number of held
shares, and a purchase price.   There are multiple entries for
certain stock names such as MSFT and IBM.

## (b) Comprehensions

List, set, and dictionary comprehensions can be a useful tool for manipulating
data.  For example, try these operations:

```python
>>> # Find all holdings more than 100 shares
>>> [s for s in portfolio if s['shares'] > 100]
[{'name': 'CAT', 'shares': 150, 'price': 83.44}, 
 {'name': 'MSFT', 'shares': 200, 'price': 51.23}]

>>> # Compute total cost (shares * price)
>>> sum([s['shares']*s['price'] for s in portfolio])
44671.15
>>>

>>> # Find all unique stock names (set)
>>> { s['name'] for s in portfolio }
{'MSFT', 'IBM', 'AA', 'GE', 'CAT'}
>>>

>>> # Count the total shares of each of stock
>>> totals = { s['name']: 0 for s in portfolio }
>>> for s in portfolio:
        totals[s['name']] += s['shares']

>>> totals
{'AA': 100, 'IBM': 150, 'CAT': 150, 'MSFT': 250, 'GE': 95}
>>> 
```

## (c) Collections

The `collections` module has a variety of classes for more specialized data
manipulation.  For example, the last example could be solved with a `Counter` like this:

```python
>>> from collections import Counter
>>> totals = Counter()
>>> for s in portfolio:
        totals[s['name']] += s['shares']

>>> totals
Counter({'MSFT': 250, 'IBM': 150, 'CAT': 150, 'AA': 100, 'GE': 95})
>>>
```

Counters are interesting in that they support other kinds of operations such as ranking
and mathematics.  For example:

```python
>>> # Get the two most common holdings
>>> totals.most_common(2)
[('MSFT', 250), ('IBM', 150)]
>>>

>>> # Adding counters together
>>> more = Counter()
>>> more['IBM'] = 75
>>> more['AA'] = 200
>>> more['ACME'] = 30
>>> more
Counter({'AA': 200, 'IBM': 75, 'ACME': 30})
>>> totals
Counter({'MSFT': 250, 'IBM': 150, 'CAT': 150, 'AA': 100, 'GE': 95})
>>> totals + more
Counter({'AA': 300, 'MSFT': 250, 'IBM': 225, 'CAT': 150, 'GE': 95, 'ACME': 30})
>>> 
```

The `defaultdict` object can be used to group data.  For example, suppose
you want to make it easy to find all matching entries for a given name such as
IBM.  Try this:

```python
>>> from collections import defaultdict
>>> byname = defaultdict(list)
>>> for s in portfolio:
        byname[s['name']].append(s)

>>> byname['IBM']
[{'name': 'IBM', 'shares': 50, 'price': 91.1}, {'name': 'IBM', 'shares': 100, 'price': 70.44}]
>>> byname['AA']
[{'name': 'AA', 'shares': 100, 'price': 32.2}]
>>>
```

The key feature that makes this work is that a defaultdict
automatically initializes elements for you--allowing an insertion of a
new element and an `append()` operation to be combined together.

## (d) Data Analysis Challenge

In the last exercise you just wrote some code to read CSV-data related
to the Chicago Transit Authority.  For example, you can grab the data
as dictionaries like this:

```python
>>> import readrides
>>> rows = readrides.read_rides_as_dicts('Data/ctabus.csv')
>>>
```

It would be a shame to do all of that work and then do nothing with
the data.

In this exercise, your task is this: write a program to answer the
following three questions:

1. How many bus routes exist in Chicago?

2. How many people rode the number 22 bus on February 2, 2011?  What about any route on any date of your choosing?

3. What is the total number of rides taken on each bus route?

4. What five bus routes had the greatest ten-year increase in ridership from 2001 to 2011?

You are free to use any technique whatsoever to answer the above
questions as long as it's part of the Python standard library (i.e.,
built-in datatypes, standard library modules, etc.). 

\[ [Solution](soln2_2.md) | [Index](index.md) | [Exercise 2.1](ex2_1.md) | [Exercise 2.3](ex2_3.md) \]

----
`>>>` Advanced Python Mastery  
`...` A course by [dabeaz](https://www.dabeaz.com)  
`...` Copyright 2007-2023  

![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png). This work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)


================================================
FILE: Exercises/ex2_3.md
================================================
\[ [Index](index.md) | [Exercise 2.2](ex2_2.md) | [Exercise 2.4](ex2_4.md) \]

# Exercise 2.3

*Objectives:*

- Iterate like a pro

*Files Modified:* None.

Iteration is an essential Python skill.  In this exercise, we look at
a number of common iteration idioms.

Start the exercise by grabbing some rows of data from a CSV file.

```python
>>> import csv
>>> f = open('Data/portfolio.csv')
>>> f_csv = csv.reader(f)
>>> headers = next(f_csv)
>>> headers
['name', 'shares', 'price']
>>> rows = list(f_csv)
>>> from pprint import pprint
>>> pprint(rows)
[['AA', '100', '32.20'],
 ['IBM', '50', '91.10'],
 ['CAT', '150', '83.44'],
 ['MSFT', '200', '51.23'],
 ['GE', '95', '40.37'],
 ['MSFT', '50', '65.10'],
 ['IBM', '100', '70.44']]
>>>
```

## (a) Basic Iteration and Unpacking

The `for` statement iterates over any sequence of data. For example:

```python
>>> for row in rows:
        print(row)

['AA', '100', '32.20']
['IBM', '50', '91.10']
['CAT', '150', '83.44']
['MSFT', '200', '51.23']
['GE', '95', '40.37']
['MSFT', '50', '65.10']
['IBM', '100', '70.44']
>>>
```

Unpack the values into separate variables if you need to:

```python
>>> for name, shares, price in rows:
        print(name, shares, price)

AA 100 32.20
IBM 50 91.10
CAT 150 83.44
MSFT 200 51.23
GE 95 40.37
MSFT 50 65.10
IBM 100 70.44
>>>
```

It's somewhat common to use `_` or `__` as a throw-away variable if you don't care
about one or more of the values.  For example:

```python
>>> for name, _, price in rows:
        print(name, price)

AA 32.20
IBM 91.10
CAT 83.44
MSFT 51
Download .txt
gitextract_qxj7p6fl/

├── .gitignore
├── Data/
│   ├── ctabus.csv
│   ├── dowstocks.csv
│   ├── missing.csv
│   ├── portfolio.csv
│   ├── portfolio2.csv
│   ├── portfolio3.csv
│   ├── portfolio_noheader.csv
│   ├── prices.csv
│   ├── stocksim.py
│   └── words.txt
├── Exercises/
│   ├── README.md
│   ├── ex1_1.md
│   ├── ex1_2.md
│   ├── ex1_3.md
│   ├── ex1_4.md
│   ├── ex1_5.md
│   ├── ex1_6.md
│   ├── ex2_1.md
│   ├── ex2_2.md
│   ├── ex2_3.md
│   ├── ex2_4.md
│   ├── ex2_5.md
│   ├── ex2_6.md
│   ├── ex3_1.md
│   ├── ex3_2.md
│   ├── ex3_3.md
│   ├── ex3_4.md
│   ├── ex3_5.md
│   ├── ex3_6.md
│   ├── ex3_7.md
│   ├── ex3_8.md
│   ├── ex4_1.md
│   ├── ex4_2.md
│   ├── ex4_3.md
│   ├── ex4_4.md
│   ├── ex5_1.md
│   ├── ex5_2.md
│   ├── ex5_3.md
│   ├── ex5_4.md
│   ├── ex5_5.md
│   ├── ex5_6.md
│   ├── ex6_1.md
│   ├── ex6_2.md
│   ├── ex6_3.md
│   ├── ex6_4.md
│   ├── ex6_5.md
│   ├── ex7_1.md
│   ├── ex7_2.md
│   ├── ex7_3.md
│   ├── ex7_4.md
│   ├── ex7_5.md
│   ├── ex7_6.md
│   ├── ex8_1.md
│   ├── ex8_2.md
│   ├── ex8_3.md
│   ├── ex8_4.md
│   ├── ex8_5.md
│   ├── ex8_6.md
│   ├── ex9_1.md
│   ├── ex9_2.md
│   ├── ex9_3.md
│   ├── ex9_4.md
│   ├── index.md
│   ├── soln1_1.md
│   ├── soln1_2.md
│   ├── soln1_3.md
│   ├── soln1_4.md
│   ├── soln1_5.md
│   ├── soln1_6.md
│   ├── soln2_1.md
│   ├── soln2_2.md
│   ├── soln2_3.md
│   ├── soln2_4.md
│   ├── soln2_5.md
│   ├── soln2_6.md
│   ├── soln3_1.md
│   ├── soln3_2.md
│   ├── soln3_3.md
│   ├── soln3_4.md
│   ├── soln3_5.md
│   ├── soln3_6.md
│   ├── soln3_7.md
│   ├── soln3_8.md
│   ├── soln4_1.md
│   ├── soln4_2.md
│   ├── soln4_3.md
│   ├── soln4_4.md
│   ├── soln5_1.md
│   ├── soln5_2.md
│   ├── soln5_3.md
│   ├── soln5_4.md
│   ├── soln5_5.md
│   ├── soln5_6.md
│   ├── soln6_1.md
│   ├── soln6_2.md
│   ├── soln6_3.md
│   ├── soln6_4.md
│   ├── soln6_5.md
│   ├── soln7_1.md
│   ├── soln7_2.md
│   ├── soln7_3.md
│   ├── soln7_4.md
│   ├── soln7_5.md
│   ├── soln7_6.md
│   ├── soln8_1.md
│   ├── soln8_2.md
│   ├── soln8_3.md
│   ├── soln8_4.md
│   ├── soln8_5.md
│   ├── soln8_6.md
│   ├── soln9_1.md
│   ├── soln9_2.md
│   ├── soln9_3.md
│   └── soln9_4.md
├── LICENSE.md
├── README.md
└── Solutions/
    ├── 1_1/
    │   └── art.py
    ├── 1_3/
    │   └── pcost.py
    ├── 1_4/
    │   └── pcost.py
    ├── 1_5/
    │   └── stock.py
    ├── 1_6/
    │   └── pcost.py
    ├── 2_1/
    │   └── readrides.py
    ├── 2_2/
    │   ├── cta.py
    │   ├── readport.py
    │   └── readrides.py
    ├── 2_4/
    │   └── mutint.py
    ├── 2_5/
    │   ├── cta.py
    │   └── readrides.py
    ├── 2_6/
    │   ├── colreader.py
    │   ├── cta.py
    │   └── reader.py
    ├── 3_1/
    │   └── stock.py
    ├── 3_2/
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_3/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_4/
    │   └── stock.py
    ├── 3_5/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_6/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_7/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 3_8/
    │   ├── reader.py
    │   ├── stock.py
    │   └── tableformat.py
    ├── 4_2/
    │   └── validate.py
    ├── 4_3/
    │   └── validate.py
    ├── 5_2/
    │   ├── reader.py
    │   └── stock.py
    ├── 5_3/
    │   ├── reader.py
    │   └── stock.py
    ├── 5_4/
    │   └── typedproperty.py
    ├── 5_5/
    │   └── reader.py
    ├── 5_6/
    │   ├── stock.py
    │   └── teststock.py
    ├── 6_1/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_2/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_3/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_4/
    │   ├── stock.py
    │   ├── structure.py
    │   └── teststock.py
    ├── 6_5/
    │   └── validate.py
    ├── 7_1/
    │   ├── logcall.py
    │   ├── sample.py
    │   └── validate.py
    ├── 7_2/
    │   ├── logcall.py
    │   ├── sample.py
    │   ├── spam.py
    │   └── validate.py
    ├── 7_3/
    │   ├── reader.py
    │   ├── stock.py
    │   ├── structure.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 7_4/
    │   ├── stock.py
    │   ├── structure.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 7_5/
    │   └── mymeta.py
    ├── 7_6/
    │   ├── reader.py
    │   ├── stock.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 8_1/
    │   ├── follow.py
    │   ├── reader.py
    │   ├── stock.py
    │   ├── structure.py
    │   ├── teststock.py
    │   └── validate.py
    ├── 8_2/
    │   ├── follow.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   ├── ticker.py
    │   └── validate.py
    ├── 8_3/
    │   ├── cofollow.py
    │   ├── coticker.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   └── validate.py
    ├── 8_4/
    │   ├── cofollow.py
    │   └── follow.py
    ├── 8_5/
    │   ├── multitask.py
    │   └── server.py
    ├── 8_6/
    │   ├── asyncserver.py
    │   ├── cofollow.py
    │   ├── coticker.py
    │   ├── server.py
    │   ├── structure.py
    │   ├── tableformat.py
    │   └── validate.py
    ├── 9_1/
    │   └── simplemod.py
    ├── 9_2/
    │   ├── stock.py
    │   └── structly/
    │       ├── __init__.py
    │       ├── reader.py
    │       ├── structure.py
    │       ├── tableformat.py
    │       └── validate.py
    ├── 9_3/
    │   ├── stock.py
    │   └── structly/
    │       ├── __init__.py
    │       ├── reader.py
    │       ├── structure.py
    │       ├── tableformat/
    │       │   ├── __init__.py
    │       │   ├── formats/
    │       │   │   ├── __init__.py
    │       │   │   ├── csv.py
    │       │   │   ├── html.py
    │       │   │   └── text.py
    │       │   └── formatter.py
    │       └── validate.py
    ├── 9_4/
    │   ├── stock.py
    │   └── structly/
    │       ├── __init__.py
    │       ├── reader.py
    │       ├── structure.py
    │       ├── tableformat/
    │       │   ├── __init__.py
    │       │   ├── formats/
    │       │   │   ├── __init__.py
    │       │   │   ├── csv.py
    │       │   │   ├── html.py
    │       │   │   ├── text.py
    │       │   │   └── tsv.py
    │       │   └── formatter.py
    │       └── validate.py
    └── README.md
Download .txt
SYMBOL INDEX (1197 symbols across 127 files)

FILE: Data/stocksim.py
  function minutes (line 23) | def minutes(tm):
  function minutes_to_str (line 35) | def minutes_to_str(m):
  function read_history (line 43) | def read_history(filename):
  function csv_record (line 53) | def csv_record(fields):
  class StockTrack (line 57) | class StockTrack(object):
    method __init__ (line 58) | def __init__(self,name):
    method add_data (line 71) | def add_data(self,record):
    method reset (line 73) | def reset(self,time):
    method interpolate (line 92) | def interpolate(self,field):
    method update (line 104) | def update(self):
    method incr (line 114) | def incr(self,dt):
    method make_record (line 121) | def make_record(self):
  class MarketSimulator (line 125) | class MarketSimulator(object):
    method __init__ (line 126) | def __init__(self):
    method register (line 131) | def register(self,observer):
    method publish (line 134) | def publish(self,record):
    method add_history (line 137) | def add_history(self,filename):
    method reset (line 144) | def reset(self,time):
    method run (line 150) | def run(self,dt):
  class BasicPrinter (line 164) | class BasicPrinter(object):
    method update (line 165) | def update(self,record):
  class LogPrinter (line 168) | class LogPrinter(object):
    method __init__ (line 169) | def __init__(self,filename):
    method update (line 171) | def update(self,record):

FILE: Solutions/1_1/art.py
  function draw (line 8) | def draw(rows, columns):

FILE: Solutions/1_4/pcost.py
  function portfolio_cost (line 3) | def portfolio_cost(filename):

FILE: Solutions/1_5/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 4) | def __init__(self, name, shares, price):
    method cost (line 8) | def cost(self):

FILE: Solutions/1_6/pcost.py
  function portfolio_cost (line 3) | def portfolio_cost(filename):

FILE: Solutions/2_1/readrides.py
  function read_rides_as_tuples (line 5) | def read_rides_as_tuples(filename):
  function read_rides_as_dicts (line 22) | def read_rides_as_dicts(filename):
  class Row (line 44) | class Row:
    method __init__ (line 47) | def __init__(self, route, date, daytype, rides):
  function read_rides_as_instances (line 57) | def read_rides_as_instances(filename):

FILE: Solutions/2_2/readport.py
  function read_portfolio (line 6) | def read_portfolio(filename):

FILE: Solutions/2_2/readrides.py
  function read_rides_as_tuples (line 5) | def read_rides_as_tuples(filename):
  function read_rides_as_dicts (line 22) | def read_rides_as_dicts(filename):
  class Row (line 44) | class Row:
    method __init__ (line 47) | def __init__(self, route, date, daytype, rides):
  function read_rides_as_instances (line 57) | def read_rides_as_instances(filename):

FILE: Solutions/2_4/mutint.py
  class MutInt (line 8) | class MutInt:
    method __init__ (line 11) | def __init__(self, value):
    method __str__ (line 14) | def __str__(self):
    method __repr__ (line 17) | def __repr__(self):
    method __format__ (line 20) | def __format__(self, fmt):
    method __add__ (line 24) | def __add__(self, other):
    method __iadd__ (line 36) | def __iadd__(self, other):
    method __eq__ (line 47) | def __eq__(self, other):
    method __lt__ (line 56) | def __lt__(self, other):
    method __int__ (line 65) | def __int__(self):
    method __float__ (line 68) | def __float__(self):

FILE: Solutions/2_5/readrides.py
  function read_rides_as_tuples (line 6) | def read_rides_as_tuples(filename):
  function read_rides_as_dicts (line 23) | def read_rides_as_dicts(filename):
  class Row (line 45) | class Row:
    method __init__ (line 47) | def __init__(self, route, date, daytype, rides):
  function read_rides_as_instances (line 53) | def read_rides_as_instances(filename):
  function read_rides_as_columns (line 71) | def read_rides_as_columns(filename):
  class RideData (line 92) | class RideData(collections.abc.Sequence):
    method __init__ (line 93) | def __init__(self):
    method __len__ (line 100) | def __len__(self):
    method append (line 104) | def append(self, d):
    method __getitem__ (line 110) | def __getitem__(self, index):
  function read_rides_as_dicts (line 117) | def read_rides_as_dicts(filename):

FILE: Solutions/2_6/colreader.py
  class DataCollection (line 7) | class DataCollection(collections.abc.Sequence):
    method __init__ (line 8) | def __init__(self, columns):
    method __len__ (line 12) | def __len__(self):
    method __getitem__ (line 15) | def __getitem__(self, index):
  function read_csv_as_columns (line 20) | def read_csv_as_columns(filename, types):

FILE: Solutions/2_6/reader.py
  function read_csv_as_dicts (line 5) | def read_csv_as_dicts(filename, types):

FILE: Solutions/3_1/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 4) | def __init__(self, name, shares, price):
    method cost (line 9) | def cost(self):
    method sell (line 12) | def sell(self, nshares):
  function read_portfolio (line 15) | def read_portfolio(filename):
  function print_portfolio (line 29) | def print_portfolio(portfolio):

FILE: Solutions/3_2/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 4) | def __init__(self, name, shares, price):
    method cost (line 9) | def cost(self):
    method sell (line 12) | def sell(self, nshares):
  function read_portfolio (line 16) | def read_portfolio(filename):

FILE: Solutions/3_2/tableformat.py
  function print_table (line 4) | def print_table(records, fields):

FILE: Solutions/3_3/reader.py
  function read_csv_as_dicts (line 5) | def read_csv_as_dicts(filename, types):
  function read_csv_as_instances (line 18) | def read_csv_as_instances(filename, cls):

FILE: Solutions/3_3/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 5) | def __init__(self, name, shares, price):
    method from_row (line 11) | def from_row(cls, row):
    method cost (line 15) | def cost(self):
    method sell (line 18) | def sell(self, nshares):
  function read_portfolio (line 21) | def read_portfolio(filename):

FILE: Solutions/3_3/tableformat.py
  function print_table (line 4) | def print_table(records, fields):

FILE: Solutions/3_4/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method from_row (line 12) | def from_row(cls, row):
    method shares (line 17) | def shares(self):
    method shares (line 20) | def shares(self, value):
    method price (line 28) | def price(self):
    method price (line 31) | def price(self, value):
    method cost (line 39) | def cost(self):
    method sell (line 42) | def sell(self, nshares):

FILE: Solutions/3_5/reader.py
  function read_csv_as_dicts (line 5) | def read_csv_as_dicts(filename, types):
  function read_csv_as_instances (line 18) | def read_csv_as_instances(filename, cls):

FILE: Solutions/3_5/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method from_row (line 12) | def from_row(cls, row):
    method shares (line 17) | def shares(self):
    method shares (line 20) | def shares(self, value):
    method price (line 28) | def price(self):
    method price (line 31) | def price(self, value):
    method cost (line 39) | def cost(self):
    method sell (line 42) | def sell(self, nshares):

FILE: Solutions/3_5/tableformat.py
  function print_table (line 3) | def print_table(records, fields, formatter):
  class TableFormatter (line 9) | class TableFormatter:
    method headings (line 10) | def headings(self, headers):
    method row (line 13) | def row(self, rowdata):
  class TextTableFormatter (line 16) | class TextTableFormatter(TableFormatter):
    method headings (line 17) | def headings(self, headers):
    method row (line 21) | def row(self, rowdata):
  class CSVTableFormatter (line 24) | class CSVTableFormatter(TableFormatter):
    method headings (line 25) | def headings(self, headers):
    method row (line 28) | def row(self, rowdata):
  class HTMLTableFormatter (line 31) | class HTMLTableFormatter(TableFormatter):
    method headings (line 32) | def headings(self, headers):
    method row (line 38) | def row(self, rowdata):
  function create_formatter (line 44) | def create_formatter(name):

FILE: Solutions/3_6/reader.py
  function read_csv_as_dicts (line 5) | def read_csv_as_dicts(filename, types):
  function read_csv_as_instances (line 18) | def read_csv_as_instances(filename, cls):

FILE: Solutions/3_6/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method __repr__ (line 11) | def __repr__(self):
    method __eq__ (line 15) | def __eq__(self, other):
    method from_row (line 20) | def from_row(cls, row):
    method shares (line 25) | def shares(self):
    method shares (line 28) | def shares(self, value):
    method price (line 36) | def price(self):
    method price (line 39) | def price(self, value):
    method cost (line 47) | def cost(self):
    method sell (line 50) | def sell(self, nshares):

FILE: Solutions/3_6/tableformat.py
  function print_table (line 3) | def print_table(records, fields, formatter):
  class TableFormatter (line 9) | class TableFormatter:
    method headings (line 10) | def headings(self, headers):
    method row (line 13) | def row(self, rowdata):
  class TextTableFormatter (line 16) | class TextTableFormatter(TableFormatter):
    method headings (line 17) | def headings(self, headers):
    method row (line 21) | def row(self, rowdata):
  class CSVTableFormatter (line 24) | class CSVTableFormatter(TableFormatter):
    method headings (line 25) | def headings(self, headers):
    method row (line 28) | def row(self, rowdata):
  class HTMLTableFormatter (line 31) | class HTMLTableFormatter(TableFormatter):
    method headings (line 32) | def headings(self, headers):
    method row (line 38) | def row(self, rowdata):
  function create_formatter (line 44) | def create_formatter(name):

FILE: Solutions/3_7/reader.py
  class CSVParser (line 6) | class CSVParser(ABC):
    method parse (line 8) | def parse(self, filename):
    method make_record (line 19) | def make_record(self, headers, row):
  class DictCSVParser (line 22) | class DictCSVParser(CSVParser):
    method __init__ (line 23) | def __init__(self, types):
    method make_record (line 26) | def make_record(self, headers, row):
  class InstanceCSVParser (line 29) | class InstanceCSVParser(CSVParser):
    method __init__ (line 30) | def __init__(self, cls):
    method make_record (line 33) | def make_record(self, headers, row):
  function read_csv_as_dicts (line 36) | def read_csv_as_dicts(filename, types):
  function read_csv_as_instances (line 40) | def read_csv_as_instances(filename, cls):

FILE: Solutions/3_7/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method __repr__ (line 11) | def __repr__(self):
    method __eq__ (line 15) | def __eq__(self, other):
    method from_row (line 20) | def from_row(cls, row):
    method shares (line 25) | def shares(self):
    method shares (line 28) | def shares(self, value):
    method price (line 36) | def price(self):
    method price (line 39) | def price(self, value):
    method cost (line 47) | def cost(self):
    method sell (line 50) | def sell(self, nshares):

FILE: Solutions/3_7/tableformat.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class TextTableFormatter (line 22) | class TextTableFormatter(TableFormatter):
    method headings (line 23) | def headings(self, headers):
    method row (line 27) | def row(self, rowdata):
  class CSVTableFormatter (line 30) | class CSVTableFormatter(TableFormatter):
    method headings (line 31) | def headings(self, headers):
    method row (line 34) | def row(self, rowdata):
  class HTMLTableFormatter (line 37) | class HTMLTableFormatter(TableFormatter):
    method headings (line 38) | def headings(self, headers):
    method row (line 44) | def row(self, rowdata):
  function create_formatter (line 50) | def create_formatter(name):

FILE: Solutions/3_8/reader.py
  class CSVParser (line 6) | class CSVParser(ABC):
    method parse (line 8) | def parse(self, filename):
    method make_record (line 19) | def make_record(self, headers, row):
  class DictCSVParser (line 22) | class DictCSVParser(CSVParser):
    method __init__ (line 23) | def __init__(self, types):
    method make_record (line 26) | def make_record(self, headers, row):
  class InstanceCSVParser (line 29) | class InstanceCSVParser(CSVParser):
    method __init__ (line 30) | def __init__(self, cls):
    method make_record (line 33) | def make_record(self, headers, row):
  function read_csv_as_dicts (line 36) | def read_csv_as_dicts(filename, types):
  function read_csv_as_instances (line 40) | def read_csv_as_instances(filename, cls):

FILE: Solutions/3_8/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method __repr__ (line 11) | def __repr__(self):
    method __eq__ (line 15) | def __eq__(self, other):
    method from_row (line 20) | def from_row(cls, row):
    method shares (line 25) | def shares(self):
    method shares (line 28) | def shares(self, value):
    method price (line 36) | def price(self):
    method price (line 39) | def price(self, value):
    method cost (line 47) | def cost(self):
    method sell (line 50) | def sell(self, nshares):
  class PortfolioFormatter (line 67) | class PortfolioFormatter(ColumnFormatMixin, TextTableFormatter):
  class PortfolioFormatter (line 73) | class PortfolioFormatter(UpperHeadersMixin, TextTableFormatter):

FILE: Solutions/3_8/tableformat.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class TextTableFormatter (line 23) | class TextTableFormatter(TableFormatter):
    method headings (line 24) | def headings(self, headers):
    method row (line 28) | def row(self, rowdata):
  class CSVTableFormatter (line 31) | class CSVTableFormatter(TableFormatter):
    method headings (line 32) | def headings(self, headers):
    method row (line 35) | def row(self, rowdata):
  class HTMLTableFormatter (line 38) | class HTMLTableFormatter(TableFormatter):
    method headings (line 39) | def headings(self, headers):
    method row (line 45) | def row(self, rowdata):
  class ColumnFormatMixin (line 51) | class ColumnFormatMixin:
    method row (line 53) | def row(self, rowdata):
  class UpperHeadersMixin (line 57) | class UpperHeadersMixin:
    method headings (line 58) | def headings(self, headers):
  function create_formatter (line 61) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/4_2/validate.py
  class Validator (line 1) | class Validator:
    method check (line 3) | def check(cls, value):
  class Typed (line 6) | class Typed(Validator):
    method check (line 9) | def check(cls, value):
  class Integer (line 14) | class Integer(Typed):
  class Float (line 17) | class Float(Typed):
  class String (line 20) | class String(Typed):
  class Positive (line 23) | class Positive(Validator):
    method check (line 25) | def check(cls, value):
  class NonEmpty (line 30) | class NonEmpty(Validator):
    method check (line 32) | def check(cls, value):
  class PositiveInteger (line 37) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 40) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 43) | class NonEmptyString(String, NonEmpty):
  function add (line 48) | def add(x, y):
  class Stock (line 53) | class Stock:
    method __init__ (line 55) | def __init__(self, name, shares, price):
    method __repr__ (line 60) | def __repr__(self):
    method shares (line 64) | def shares(self):
    method shares (line 67) | def shares(self, value):
    method price (line 71) | def price(self):
    method price (line 74) | def price(self, value):
    method cost (line 78) | def cost(self):
    method sell (line 81) | def sell(self, nshares):

FILE: Solutions/4_3/validate.py
  class Validator (line 1) | class Validator:
    method __init__ (line 2) | def __init__(self, name=None):
    method __set_name__ (line 5) | def __set_name__(self, cls, name):
    method check (line 9) | def check(cls, value):
    method __set__ (line 12) | def __set__(self, instance, value):
  class Typed (line 15) | class Typed(Validator):
    method check (line 18) | def check(cls, value):
  class Integer (line 23) | class Integer(Typed):
  class Float (line 26) | class Float(Typed):
  class String (line 29) | class String(Typed):
  class Positive (line 32) | class Positive(Validator):
    method check (line 34) | def check(cls, value):
  class NonEmpty (line 39) | class NonEmpty(Validator):
    method check (line 41) | def check(cls, value):
  class PositiveInteger (line 46) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 49) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 52) | class NonEmptyString(String, NonEmpty):
  function add (line 57) | def add(x, y):
  class Stock (line 62) | class Stock:
    method __init__ (line 66) | def __init__(self, name, shares, price):
    method __repr__ (line 71) | def __repr__(self):
    method cost (line 75) | def cost(self):
    method sell (line 78) | def sell(self, nshares):

FILE: Solutions/5_2/reader.py
  class CSVParser (line 8) | class CSVParser(ABC):
    method parse (line 10) | def parse(self, filename):
    method make_record (line 26) | def make_record(self, headers, row):
  class DictCSVParser (line 29) | class DictCSVParser(CSVParser):
    method __init__ (line 30) | def __init__(self, types):
    method make_record (line 33) | def make_record(self, headers, row):
  class InstanceCSVParser (line 36) | class InstanceCSVParser(CSVParser):
    method __init__ (line 37) | def __init__(self, cls):
    method make_record (line 40) | def make_record(self, headers, row):
  function read_csv_as_dicts (line 43) | def read_csv_as_dicts(filename, types):
  function read_csv_as_instances (line 47) | def read_csv_as_instances(filename, cls):

FILE: Solutions/5_2/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method __repr__ (line 11) | def __repr__(self):
    method __eq__ (line 15) | def __eq__(self, other):
    method from_row (line 20) | def from_row(cls, row):
    method shares (line 25) | def shares(self):
    method shares (line 28) | def shares(self, value):
    method price (line 36) | def price(self):
    method price (line 39) | def price(self, value):
    method cost (line 47) | def cost(self):
    method sell (line 50) | def sell(self, nshares):

FILE: Solutions/5_3/reader.py
  function convert_csv (line 5) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 11) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 17) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 22) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 29) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/5_3/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method __repr__ (line 11) | def __repr__(self):
    method __eq__ (line 15) | def __eq__(self, other):
    method from_row (line 20) | def from_row(cls, row):
    method shares (line 25) | def shares(self):
    method shares (line 28) | def shares(self, value):
    method price (line 36) | def price(self):
    method price (line 39) | def price(self, value):
    method cost (line 47) | def cost(self):
    method sell (line 50) | def sell(self, nshares):

FILE: Solutions/5_4/typedproperty.py
  function typedproperty (line 3) | def typedproperty(name, expected_type):
  class Stock (line 25) | class Stock:
    method __init__ (line 29) | def __init__(self, name, shares, price):

FILE: Solutions/5_5/reader.py
  function convert_csv (line 8) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 22) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 26) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 30) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 37) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/5_6/stock.py
  class Stock (line 3) | class Stock:
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method __repr__ (line 11) | def __repr__(self):
    method __eq__ (line 15) | def __eq__(self, other):
    method from_row (line 20) | def from_row(cls, row):
    method shares (line 25) | def shares(self):
    method shares (line 28) | def shares(self, value):
    method price (line 36) | def price(self):
    method price (line 39) | def price(self, value):
    method cost (line 47) | def cost(self):
    method sell (line 50) | def sell(self, nshares):

FILE: Solutions/5_6/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/6_1/stock.py
  class Stock (line 5) | class Stock(Structure):
    method cost (line 9) | def cost(self):
    method sell (line 12) | def sell(self, nshares):

FILE: Solutions/6_1/structure.py
  class Structure (line 3) | class Structure:
    method __init__ (line 5) | def __init__(self, *args):
    method __setattr__ (line 11) | def __setattr__(self, name, value):
    method __repr__ (line 17) | def __repr__(self):

FILE: Solutions/6_1/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/6_2/stock.py
  class Stock (line 5) | class Stock(Structure):
    method __init__ (line 7) | def __init__(self, name, shares, price):
    method cost (line 11) | def cost(self):
    method sell (line 14) | def sell(self, nshares):

FILE: Solutions/6_2/structure.py
  class Structure (line 5) | class Structure:
    method _init (line 9) | def _init():
    method __setattr__ (line 16) | def __setattr__(self, name, value):
    method __repr__ (line 22) | def __repr__(self):

FILE: Solutions/6_2/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/6_3/stock.py
  class Stock (line 5) | class Stock(Structure):
    method __init__ (line 6) | def __init__(self, name, shares, price):
    method cost (line 10) | def cost(self):
    method sell (line 13) | def sell(self, nshares):

FILE: Solutions/6_3/structure.py
  class Structure (line 6) | class Structure:
    method _init (line 10) | def _init():
    method __setattr__ (line 17) | def __setattr__(self, name, value):
    method __repr__ (line 23) | def __repr__(self):
    method set_fields (line 28) | def set_fields(cls):

FILE: Solutions/6_3/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/6_4/stock.py
  class Stock (line 5) | class Stock(Structure):
    method cost (line 9) | def cost(self):
    method sell (line 12) | def sell(self, nshares):

FILE: Solutions/6_4/structure.py
  class Structure (line 3) | class Structure:
    method __setattr__ (line 6) | def __setattr__(self, name, value):
    method __repr__ (line 12) | def __repr__(self):
    method create_init (line 17) | def create_init(cls):

FILE: Solutions/6_4/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/6_5/validate.py
  class Validator (line 1) | class Validator:
    method __init__ (line 2) | def __init__(self, name=None):
    method __set_name__ (line 5) | def __set_name__(self, cls, name):
    method check (line 9) | def check(cls, value):
    method __set__ (line 12) | def __set__(self, instance, value):
  class Typed (line 15) | class Typed(Validator):
    method check (line 18) | def check(cls, value):
  class Integer (line 23) | class Integer(Typed):
  class Float (line 26) | class Float(Typed):
  class String (line 29) | class String(Typed):
  class Positive (line 32) | class Positive(Validator):
    method check (line 34) | def check(cls, value):
  class NonEmpty (line 39) | class NonEmpty(Validator):
    method check (line 41) | def check(cls, value):
  class PositiveInteger (line 46) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 49) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 52) | class NonEmptyString(String, NonEmpty):
  class ValidatedFunction (line 57) | class ValidatedFunction:
    method __init__ (line 58) | def __init__(self, func):
    method __call__ (line 64) | def __call__(self, *args, **kwargs):
  function add (line 79) | def add(x:Integer, y:Integer) -> Integer:
  class Stock (line 84) | class Stock:
    method __init__ (line 88) | def __init__(self, name, shares, price):
    method __repr__ (line 93) | def __repr__(self):
    method cost (line 97) | def cost(self):
    method sell (line 100) | def sell(self, nshares):

FILE: Solutions/7_1/logcall.py
  function logged (line 3) | def logged(func):

FILE: Solutions/7_1/sample.py
  function add (line 6) | def add(x,y):
  function sub (line 10) | def sub(x,y):

FILE: Solutions/7_1/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
  class Typed (line 17) | class Typed(Validator):
    method check (line 20) | def check(cls, value):
  class Integer (line 25) | class Integer(Typed):
  class Float (line 28) | class Float(Typed):
  class String (line 31) | class String(Typed):
  class Positive (line 34) | class Positive(Validator):
    method check (line 36) | def check(cls, value):
  class NonEmpty (line 41) | class NonEmpty(Validator):
    method check (line 43) | def check(cls, value):
  class PositiveInteger (line 48) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 51) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 54) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 60) | def isvalidator(item):
  function validated (line 63) | def validated(func):
  function add (line 102) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 106) | def div(x:Integer, y:Integer) -> Integer:
  class Stock (line 109) | class Stock:
    method __init__ (line 113) | def __init__(self, name, shares, price):
    method __repr__ (line 118) | def __repr__(self):
    method cost (line 122) | def cost(self):
    method sell (line 126) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/7_2/logcall.py
  function logformat (line 5) | def logformat(fmt):

FILE: Solutions/7_2/sample.py
  function add (line 6) | def add(x,y):
  function sub (line 10) | def sub(x,y):
  function mul (line 14) | def mul(x,y):

FILE: Solutions/7_2/spam.py
  class Spam (line 3) | class Spam:
    method instance_method (line 5) | def instance_method(self):
    method class_method (line 10) | def class_method(cls):
    method static_method (line 15) | def static_method():
    method property_method (line 20) | def property_method(self):

FILE: Solutions/7_2/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
  class Typed (line 17) | class Typed(Validator):
    method check (line 20) | def check(cls, value):
  class Integer (line 25) | class Integer(Typed):
  class Float (line 28) | class Float(Typed):
  class String (line 31) | class String(Typed):
  class Positive (line 34) | class Positive(Validator):
    method check (line 36) | def check(cls, value):
  class NonEmpty (line 41) | class NonEmpty(Validator):
    method check (line 43) | def check(cls, value):
  class PositiveInteger (line 48) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 51) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 54) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 61) | def isvalidator(item):
  function validated (line 64) | def validated(func):
  function enforce (line 101) | def enforce(**annotations):
  function add (line 136) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 140) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 144) | def sub(x, y):
  class Stock (line 147) | class Stock:
    method __init__ (line 151) | def __init__(self, name, shares, price):
    method __repr__ (line 156) | def __repr__(self):
    method cost (line 160) | def cost(self):
    method sell (line 164) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/7_3/reader.py
  function convert_csv (line 8) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 22) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 26) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 30) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 37) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/7_3/stock.py
  class Stock (line 6) | class Stock(Structure):
    method cost (line 12) | def cost(self):
    method sell (line 15) | def sell(self, nshares: PositiveInteger):

FILE: Solutions/7_3/structure.py
  class Structure (line 5) | class Structure:
    method __setattr__ (line 9) | def __setattr__(self, name, value):
    method __repr__ (line 15) | def __repr__(self):
    method from_row (line 20) | def from_row(cls, row):
    method create_init (line 25) | def create_init(cls):
    method __init_subclass__ (line 38) | def __init_subclass__(cls):
  function validate_attributes (line 42) | def validate_attributes(cls):

FILE: Solutions/7_3/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/7_3/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
  class Typed (line 17) | class Typed(Validator):
    method check (line 20) | def check(cls, value):
  class Integer (line 25) | class Integer(Typed):
  class Float (line 28) | class Float(Typed):
  class String (line 31) | class String(Typed):
  class Positive (line 34) | class Positive(Validator):
    method check (line 36) | def check(cls, value):
  class NonEmpty (line 41) | class NonEmpty(Validator):
    method check (line 43) | def check(cls, value):
  class PositiveInteger (line 48) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 51) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 54) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 60) | def isvalidator(item):
  function validated (line 63) | def validated(func):
  function enforce (line 100) | def enforce(**annotations):
  function add (line 135) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 139) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 143) | def sub(x, y):
  class Stock (line 146) | class Stock:
    method __init__ (line 150) | def __init__(self, name, shares, price):
    method __repr__ (line 155) | def __repr__(self):
    method cost (line 159) | def cost(self):
    method sell (line 163) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/7_4/stock.py
  class Stock (line 6) | class Stock(Structure):
    method cost (line 12) | def cost(self):
    method sell (line 15) | def sell(self, nshares: PositiveInteger):

FILE: Solutions/7_4/structure.py
  class Structure (line 5) | class Structure:
    method __setattr__ (line 9) | def __setattr__(self, name, value):
    method __repr__ (line 15) | def __repr__(self):
    method from_row (line 20) | def from_row(cls, row):
    method create_init (line 25) | def create_init(cls):
    method __init_subclass__ (line 38) | def __init_subclass__(cls):
  function validate_attributes (line 42) | def validate_attributes(cls):
  function typed_structure (line 71) | def typed_structure(clsname, **validators):

FILE: Solutions/7_4/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/7_4/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
  class Typed (line 17) | class Typed(Validator):
    method check (line 20) | def check(cls, value):
  class Positive (line 33) | class Positive(Validator):
    method check (line 35) | def check(cls, value):
  class NonEmpty (line 40) | class NonEmpty(Validator):
    method check (line 42) | def check(cls, value):
  class PositiveInteger (line 47) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 50) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 53) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 59) | def isvalidator(item):
  function validated (line 62) | def validated(func):
  function enforce (line 99) | def enforce(**annotations):
  function add (line 134) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 138) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 142) | def sub(x, y):
  class Stock (line 145) | class Stock:
    method __init__ (line 149) | def __init__(self, name, shares, price):
    method __repr__ (line 154) | def __repr__(self):
    method cost (line 158) | def cost(self):
    method sell (line 162) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/7_5/mymeta.py
  class mytype (line 3) | class mytype(type):
    method __new__ (line 5) | def __new__(meta, name, bases, __dict__):
  class myobject (line 11) | class myobject(metaclass=mytype):
  class Stock (line 14) | class Stock(myobject):
    method __init__ (line 15) | def __init__(self,name,shares,price):
    method cost (line 19) | def cost(self):
    method sell (line 21) | def sell(self,nshares):
  class MyStock (line 24) | class MyStock(Stock):

FILE: Solutions/7_6/reader.py
  function convert_csv (line 8) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 22) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 26) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 30) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 37) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/7_6/stock.py
  class Stock (line 5) | class Stock(Structure):
    method cost (line 11) | def cost(self):
    method sell (line 14) | def sell(self, nshares: PositiveInteger):

FILE: Solutions/7_6/structure.py
  class StructureMeta (line 6) | class StructureMeta(type):
    method __prepare__ (line 8) | def __prepare__(meta, clsname, bases):
    method __new__ (line 12) | def __new__(meta, name, bases, methods):
  class Structure (line 16) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 20) | def __setattr__(self, name, value):
    method __repr__ (line 26) | def __repr__(self):
    method from_row (line 31) | def from_row(cls, row):
    method create_init (line 37) | def create_init(cls):
    method __init_subclass__ (line 50) | def __init_subclass__(cls):
  function validate_attributes (line 54) | def validate_attributes(cls):
  function typed_structure (line 83) | def typed_structure(clsname, **validators):

FILE: Solutions/7_6/tableformat.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class TextTableFormatter (line 22) | class TextTableFormatter(TableFormatter):
    method headings (line 23) | def headings(self, headers):
    method row (line 27) | def row(self, rowdata):
  class CSVTableFormatter (line 30) | class CSVTableFormatter(TableFormatter):
    method headings (line 31) | def headings(self, headers):
    method row (line 34) | def row(self, rowdata):
  class HTMLTableFormatter (line 37) | class HTMLTableFormatter(TableFormatter):
    method headings (line 38) | def headings(self, headers):
    method row (line 44) | def row(self, rowdata):
  class ColumnFormatMixin (line 50) | class ColumnFormatMixin:
    method row (line 52) | def row(self, rowdata):
  class UpperHeadersMixin (line 56) | class UpperHeadersMixin:
    method headings (line 57) | def headings(self, headers):
  function create_formatter (line 60) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/7_6/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/7_6/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/8_1/follow.py
  function follow (line 5) | def follow(filename):

FILE: Solutions/8_1/reader.py
  function convert_csv (line 8) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 22) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 26) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 30) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 37) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/8_1/stock.py
  class Stock (line 6) | class Stock(Structure):
    method cost (line 12) | def cost(self):
    method sell (line 15) | def sell(self, nshares):

FILE: Solutions/8_1/structure.py
  class StructureMeta (line 6) | class StructureMeta(type):
    method __prepare__ (line 8) | def __prepare__(meta, clsname, bases):
    method __new__ (line 12) | def __new__(meta, name, bases, methods):
  class Structure (line 16) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 20) | def __setattr__(self, name, value):
    method __repr__ (line 26) | def __repr__(self):
    method __iter__ (line 30) | def __iter__(self):
    method __eq__ (line 34) | def __eq__(self, other):
    method from_row (line 38) | def from_row(cls, row):
    method create_init (line 44) | def create_init(cls):
    method __init_subclass__ (line 57) | def __init_subclass__(cls):
  function validate_attributes (line 61) | def validate_attributes(cls):
  function typed_structure (line 90) | def typed_structure(clsname, **validators):

FILE: Solutions/8_1/teststock.py
  class TestStock (line 6) | class TestStock(unittest.TestCase):
    method test_create (line 7) | def test_create(self):
    method test_create_keyword (line 13) | def test_create_keyword(self):
    method test_cost (line 19) | def test_cost(self):
    method test_sell (line 23) | def test_sell(self):
    method test_from_row (line 28) | def test_from_row(self):
    method test_repr (line 34) | def test_repr(self):
    method test_eq (line 38) | def test_eq(self):
    method test_shares_badtype (line 44) | def test_shares_badtype(self):
    method test_shares_badvalue (line 49) | def test_shares_badvalue(self):
    method test_price_badtype (line 54) | def test_price_badtype(self):
    method test_price_badvalue (line 59) | def test_price_badvalue(self):
    method test_bad_attribute (line 64) | def test_bad_attribute(self):

FILE: Solutions/8_1/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/8_2/follow.py
  function follow (line 6) | def follow(filename):

FILE: Solutions/8_2/structure.py
  class StructureMeta (line 6) | class StructureMeta(type):
    method __prepare__ (line 8) | def __prepare__(meta, clsname, bases):
    method __new__ (line 12) | def __new__(meta, name, bases, methods):
  class Structure (line 16) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 20) | def __setattr__(self, name, value):
    method __repr__ (line 26) | def __repr__(self):
    method __iter__ (line 30) | def __iter__(self):
    method __eq__ (line 34) | def __eq__(self, other):
    method from_row (line 38) | def from_row(cls, row):
    method create_init (line 43) | def create_init(cls):
    method __init_subclass__ (line 56) | def __init_subclass__(cls):
  function validate_attributes (line 60) | def validate_attributes(cls):
  function typed_structure (line 89) | def typed_structure(clsname, **validators):

FILE: Solutions/8_2/tableformat.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class TextTableFormatter (line 22) | class TextTableFormatter(TableFormatter):
    method headings (line 23) | def headings(self, headers):
    method row (line 27) | def row(self, rowdata):
  class CSVTableFormatter (line 30) | class CSVTableFormatter(TableFormatter):
    method headings (line 31) | def headings(self, headers):
    method row (line 34) | def row(self, rowdata):
  class HTMLTableFormatter (line 37) | class HTMLTableFormatter(TableFormatter):
    method headings (line 38) | def headings(self, headers):
    method row (line 44) | def row(self, rowdata):
  class ColumnFormatMixin (line 50) | class ColumnFormatMixin:
    method row (line 52) | def row(self, rowdata):
  class UpperHeadersMixin (line 56) | class UpperHeadersMixin:
    method headings (line 57) | def headings(self, headers):
  function create_formatter (line 60) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/8_2/ticker.py
  class Ticker (line 4) | class Ticker(Structure):

FILE: Solutions/8_2/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/8_3/cofollow.py
  function follow (line 5) | def follow(filename, target):
  function consumer (line 18) | def consumer(func):
  function printer (line 28) | def printer():

FILE: Solutions/8_3/coticker.py
  class Ticker (line 4) | class Ticker(Structure):
  function to_csv (line 20) | def to_csv(target):
  function create_ticker (line 31) | def create_ticker(target):
  function negchange (line 37) | def negchange(target):
  function ticker (line 44) | def ticker(fmt, fields):

FILE: Solutions/8_3/structure.py
  class StructureMeta (line 6) | class StructureMeta(type):
    method __prepare__ (line 8) | def __prepare__(meta, clsname, bases):
    method __new__ (line 12) | def __new__(meta, name, bases, methods):
  class Structure (line 16) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 20) | def __setattr__(self, name, value):
    method __repr__ (line 26) | def __repr__(self):
    method __iter__ (line 30) | def __iter__(self):
    method __eq__ (line 34) | def __eq__(self, other):
    method from_row (line 38) | def from_row(cls, row):
    method create_init (line 43) | def create_init(cls):
    method __init_subclass__ (line 56) | def __init_subclass__(cls):
  function validate_attributes (line 60) | def validate_attributes(cls):
  function typed_structure (line 89) | def typed_structure(clsname, **validators):

FILE: Solutions/8_3/tableformat.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class TextTableFormatter (line 22) | class TextTableFormatter(TableFormatter):
    method headings (line 23) | def headings(self, headers):
    method row (line 27) | def row(self, rowdata):
  class CSVTableFormatter (line 30) | class CSVTableFormatter(TableFormatter):
    method headings (line 31) | def headings(self, headers):
    method row (line 34) | def row(self, rowdata):
  class HTMLTableFormatter (line 37) | class HTMLTableFormatter(TableFormatter):
    method headings (line 38) | def headings(self, headers):
    method row (line 44) | def row(self, rowdata):
  class ColumnFormatMixin (line 50) | class ColumnFormatMixin:
    method row (line 52) | def row(self, rowdata):
  class UpperHeadersMixin (line 56) | class UpperHeadersMixin:
    method headings (line 57) | def headings(self, headers):
  function create_formatter (line 60) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/8_3/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/8_4/cofollow.py
  function follow (line 6) | def follow(filename,target):
  function consumer (line 19) | def consumer(func):
  function printer (line 29) | def printer():

FILE: Solutions/8_4/follow.py
  function follow (line 5) | def follow(filename):
  function splitter (line 21) | def splitter(lines):
  function make_records (line 26) | def make_records(rows,names):
  function unquote (line 30) | def unquote(records,keylist):
  function convert (line 36) | def convert(records,converter,keylist):
  function parse_stock_data (line 42) | def parse_stock_data(lines):

FILE: Solutions/8_5/multitask.py
  function run (line 6) | def run():
  function countdown (line 15) | def countdown(n):
  function countup (line 21) | def countup(n):

FILE: Solutions/8_5/server.py
  function run (line 11) | def run():
  function tcp_server (line 31) | def tcp_server(address, handler):
  function echo_handler (line 41) | def echo_handler(client, address):

FILE: Solutions/8_6/asyncserver.py
  function run (line 12) | def run():
  class GenSocket (line 32) | class GenSocket:
    method __init__ (line 33) | def __init__(self, sock):
    method accept (line 37) | def accept(self):
    method recv (line 43) | def recv(self, maxsize):
    method send (line 48) | def send(self, data):
    method __getattr__ (line 52) | def __getattr__(self, name):
  function tcp_server (line 55) | async def tcp_server(address, handler):
  function echo_handler (line 64) | async def echo_handler(client, address):

FILE: Solutions/8_6/cofollow.py
  function follow (line 6) | def follow(filename,target):
  function receive (line 16) | def receive(expected_type):
  function consumer (line 24) | def consumer(func):
  function printer (line 34) | def printer():

FILE: Solutions/8_6/coticker.py
  class Ticker (line 5) | class Ticker(Structure):
  function to_csv (line 21) | def to_csv(target):
  function create_ticker (line 32) | def create_ticker(target):
  function negchange (line 38) | def negchange(target):
  function ticker (line 45) | def ticker(fmt, fields):

FILE: Solutions/8_6/server.py
  function run (line 11) | def run():
  class GenSocket (line 31) | class GenSocket:
    method __init__ (line 32) | def __init__(self, sock):
    method accept (line 35) | def accept(self):
    method recv (line 40) | def recv(self, maxsize):
    method send (line 44) | def send(self, data):
    method __getattr__ (line 48) | def __getattr__(self, name):
  function tcp_server (line 51) | def tcp_server(address, handler):
  function echo_handler (line 60) | def echo_handler(client, address):

FILE: Solutions/8_6/structure.py
  class StructureMeta (line 6) | class StructureMeta(type):
    method __prepare__ (line 8) | def __prepare__(meta, clsname, bases):
    method __new__ (line 12) | def __new__(meta, name, bases, methods):
  class Structure (line 16) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 20) | def __setattr__(self, name, value):
    method __repr__ (line 26) | def __repr__(self):
    method __iter__ (line 30) | def __iter__(self):
    method __eq__ (line 34) | def __eq__(self, other):
    method from_row (line 38) | def from_row(cls, row):
    method create_init (line 43) | def create_init(cls):
    method __init_subclass__ (line 56) | def __init_subclass__(cls):
  function validate_attributes (line 60) | def validate_attributes(cls):
  function typed_structure (line 89) | def typed_structure(clsname, **validators):

FILE: Solutions/8_6/tableformat.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class TextTableFormatter (line 22) | class TextTableFormatter(TableFormatter):
    method headings (line 23) | def headings(self, headers):
    method row (line 27) | def row(self, rowdata):
  class CSVTableFormatter (line 30) | class CSVTableFormatter(TableFormatter):
    method headings (line 31) | def headings(self, headers):
    method row (line 34) | def row(self, rowdata):
  class HTMLTableFormatter (line 37) | class HTMLTableFormatter(TableFormatter):
    method headings (line 38) | def headings(self, headers):
    method row (line 44) | def row(self, rowdata):
  class ColumnFormatMixin (line 50) | class ColumnFormatMixin:
    method row (line 52) | def row(self, rowdata):
  class UpperHeadersMixin (line 56) | class UpperHeadersMixin:
    method headings (line 57) | def headings(self, headers):
  function create_formatter (line 60) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/8_6/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/9_1/simplemod.py
  function foo (line 6) | def foo():
  class Spam (line 10) | class Spam:
    method yow (line 11) | def yow(self):

FILE: Solutions/9_2/stock.py
  class Stock (line 5) | class Stock(Structure):
    method cost (line 11) | def cost(self):
    method sell (line 14) | def sell(self, nshares: PositiveInteger):

FILE: Solutions/9_2/structly/reader.py
  function convert_csv (line 8) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 22) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 26) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 30) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 37) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/9_2/structly/structure.py
  class StructureMeta (line 6) | class StructureMeta(type):
    method __prepare__ (line 8) | def __prepare__(meta, clsname, bases):
    method __new__ (line 12) | def __new__(meta, name, bases, methods):
  class Structure (line 16) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 20) | def __setattr__(self, name, value):
    method __repr__ (line 26) | def __repr__(self):
    method __iter__ (line 30) | def __iter__(self):
    method __eq__ (line 34) | def __eq__(self, other):
    method from_row (line 38) | def from_row(cls, row):
    method create_init (line 43) | def create_init(cls):
    method __init_subclass__ (line 56) | def __init_subclass__(cls):
  function validate_attributes (line 60) | def validate_attributes(cls):
  function typed_structure (line 89) | def typed_structure(clsname, **validators):

FILE: Solutions/9_2/structly/tableformat.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class TextTableFormatter (line 23) | class TextTableFormatter(TableFormatter):
    method headings (line 24) | def headings(self, headers):
    method row (line 28) | def row(self, rowdata):
  class CSVTableFormatter (line 31) | class CSVTableFormatter(TableFormatter):
    method headings (line 32) | def headings(self, headers):
    method row (line 35) | def row(self, rowdata):
  class HTMLTableFormatter (line 38) | class HTMLTableFormatter(TableFormatter):
    method headings (line 39) | def headings(self, headers):
    method row (line 45) | def row(self, rowdata):
  class ColumnFormatMixin (line 51) | class ColumnFormatMixin:
    method row (line 53) | def row(self, rowdata):
  class UpperHeadersMixin (line 57) | class UpperHeadersMixin:
    method headings (line 58) | def headings(self, headers):
  function create_formatter (line 61) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/9_2/structly/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/9_3/stock.py
  class Stock (line 5) | class Stock(Structure):
    method cost (line 11) | def cost(self):
    method sell (line 14) | def sell(self, nshares: PositiveInteger):

FILE: Solutions/9_3/structly/reader.py
  function convert_csv (line 8) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 22) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 26) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 30) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 37) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/9_3/structly/structure.py
  class StructureMeta (line 8) | class StructureMeta(type):
    method __prepare__ (line 10) | def __prepare__(meta, clsname, bases):
    method __new__ (line 14) | def __new__(meta, name, bases, methods):
  class Structure (line 18) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 22) | def __setattr__(self, name, value):
    method __repr__ (line 28) | def __repr__(self):
    method __iter__ (line 32) | def __iter__(self):
    method __eq__ (line 36) | def __eq__(self, other):
    method from_row (line 40) | def from_row(cls, row):
    method create_init (line 45) | def create_init(cls):
    method __init_subclass__ (line 58) | def __init_subclass__(cls):
  function validate_attributes (line 62) | def validate_attributes(cls):
  function typed_structure (line 91) | def typed_structure(clsname, **validators):

FILE: Solutions/9_3/structly/tableformat/formats/csv.py
  class CSVTableFormatter (line 5) | class CSVTableFormatter(TableFormatter):
    method headings (line 6) | def headings(self, headers):
    method row (line 9) | def row(self, rowdata):

FILE: Solutions/9_3/structly/tableformat/formats/html.py
  class HTMLTableFormatter (line 5) | class HTMLTableFormatter(TableFormatter):
    method headings (line 6) | def headings(self, headers):
    method row (line 12) | def row(self, rowdata):

FILE: Solutions/9_3/structly/tableformat/formats/text.py
  class TextTableFormatter (line 5) | class TextTableFormatter(TableFormatter):
    method headings (line 6) | def headings(self, headers):
    method row (line 10) | def row(self, rowdata):

FILE: Solutions/9_3/structly/tableformat/formatter.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method headings (line 15) | def headings(self, headers):
    method row (line 19) | def row(self, rowdata):
  class ColumnFormatMixin (line 26) | class ColumnFormatMixin:
    method row (line 28) | def row(self, rowdata):
  class UpperHeadersMixin (line 32) | class UpperHeadersMixin:
    method headings (line 33) | def headings(self, headers):
  function create_formatter (line 36) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/9_3/structly/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):

FILE: Solutions/9_4/stock.py
  class Stock (line 5) | class Stock(Structure):
    method cost (line 11) | def cost(self):
    method sell (line 14) | def sell(self, nshares: PositiveInteger):

FILE: Solutions/9_4/structly/reader.py
  function convert_csv (line 8) | def convert_csv(lines, converter, *, headers=None):
  function csv_as_dicts (line 22) | def csv_as_dicts(lines, types, *, headers=None):
  function csv_as_instances (line 26) | def csv_as_instances(lines, cls, *, headers=None):
  function read_csv_as_dicts (line 30) | def read_csv_as_dicts(filename, types, *, headers=None):
  function read_csv_as_instances (line 37) | def read_csv_as_instances(filename, cls, *, headers=None):

FILE: Solutions/9_4/structly/structure.py
  class StructureMeta (line 8) | class StructureMeta(type):
    method __prepare__ (line 10) | def __prepare__(meta, clsname, bases):
    method __new__ (line 14) | def __new__(meta, name, bases, methods):
  class Structure (line 18) | class Structure(metaclass=StructureMeta):
    method __setattr__ (line 22) | def __setattr__(self, name, value):
    method __repr__ (line 28) | def __repr__(self):
    method __iter__ (line 32) | def __iter__(self):
    method __eq__ (line 36) | def __eq__(self, other):
    method from_row (line 40) | def from_row(cls, row):
    method create_init (line 45) | def create_init(cls):
    method __init_subclass__ (line 58) | def __init_subclass__(cls):
  function validate_attributes (line 62) | def validate_attributes(cls):
  function typed_structure (line 91) | def typed_structure(clsname, **validators):

FILE: Solutions/9_4/structly/tableformat/formats/csv.py
  class CSVTableFormatter (line 5) | class CSVTableFormatter(TableFormatter):
    method headings (line 6) | def headings(self, headers):
    method row (line 9) | def row(self, rowdata):

FILE: Solutions/9_4/structly/tableformat/formats/html.py
  class HTMLTableFormatter (line 5) | class HTMLTableFormatter(TableFormatter):
    method headings (line 6) | def headings(self, headers):
    method row (line 12) | def row(self, rowdata):

FILE: Solutions/9_4/structly/tableformat/formats/text.py
  class TextTableFormatter (line 5) | class TextTableFormatter(TableFormatter):
    method headings (line 6) | def headings(self, headers):
    method row (line 10) | def row(self, rowdata):

FILE: Solutions/9_4/structly/tableformat/formats/tsv.py
  class TSVTableFormatter (line 5) | class TSVTableFormatter(TableFormatter):
    method headings (line 6) | def headings(self, headers):
    method row (line 8) | def row(self, rowdata):

FILE: Solutions/9_4/structly/tableformat/formatter.py
  function print_table (line 4) | def print_table(records, fields, formatter):
  class TableFormatter (line 13) | class TableFormatter(ABC):
    method __init_subclass__ (line 17) | def __init_subclass__(cls):
    method headings (line 22) | def headings(self, headers):
    method row (line 26) | def row(self, rowdata):
  class ColumnFormatMixin (line 29) | class ColumnFormatMixin:
    method row (line 31) | def row(self, rowdata):
  class UpperHeadersMixin (line 35) | class UpperHeadersMixin:
    method headings (line 36) | def headings(self, headers):
  function create_formatter (line 39) | def create_formatter(name, column_formats=None, upper_headers=False):

FILE: Solutions/9_4/structly/validate.py
  class Validator (line 3) | class Validator:
    method __init__ (line 4) | def __init__(self, name=None):
    method __set_name__ (line 7) | def __set_name__(self, cls, name):
    method check (line 11) | def check(cls, value):
    method __set__ (line 14) | def __set__(self, instance, value):
    method __init_subclass__ (line 20) | def __init_subclass__(cls):
  class Typed (line 23) | class Typed(Validator):
    method check (line 26) | def check(cls, value):
  class Positive (line 39) | class Positive(Validator):
    method check (line 41) | def check(cls, value):
  class NonEmpty (line 46) | class NonEmpty(Validator):
    method check (line 48) | def check(cls, value):
  class PositiveInteger (line 53) | class PositiveInteger(Integer, Positive):
  class PositiveFloat (line 56) | class PositiveFloat(Float, Positive):
  class NonEmptyString (line 59) | class NonEmptyString(String, NonEmpty):
  function isvalidator (line 65) | def isvalidator(item):
  function validated (line 68) | def validated(func):
  function enforce (line 105) | def enforce(**annotations):
  function add (line 140) | def add(x:Integer, y:Integer) -> Integer:
  function div (line 144) | def div(x:Integer, y:Integer) -> Integer:
  function sub (line 148) | def sub(x, y):
  class Stock (line 151) | class Stock:
    method __init__ (line 155) | def __init__(self, name, shares, price):
    method __repr__ (line 160) | def __repr__(self):
    method cost (line 164) | def cost(self):
    method sell (line 168) | def sell(self, nshares:PositiveInteger):
Condensed preview — 255 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (771K chars).
[
  {
    "path": ".gitignore",
    "chars": 3078,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
  },
  {
    "path": "Data/dowstocks.csv",
    "chars": 155272,
    "preview": "\"AA\",39.48,\"6/11/2007\",\"9:36am\",-0.18,39.67,39.69,39.45,181800\r\n\"AIG\",71.38,\"6/11/2007\",\"9:36am\",-0.15,71.29,71.60,71.15"
  },
  {
    "path": "Data/missing.csv",
    "chars": 405,
    "preview": "name,shares,price\n\"AA\",15,39.48\n\"AXP\",10,62.58\n\"BA\",5,98.31\n\"C\",,53.08\n\"CAT\",15,78.29\n\"DD\",10,50.75\n\"DIS\",50,N/A\n\"GE\",,3"
  },
  {
    "path": "Data/portfolio.csv",
    "chars": 127,
    "preview": "name,shares,price\n\"AA\",100,32.20\n\"IBM\",50,91.10\n\"CAT\",150,83.44\n\"MSFT\",200,51.23\n\"GE\",95,40.37\n\"MSFT\",50,65.10\n\"IBM\",100"
  },
  {
    "path": "Data/portfolio2.csv",
    "chars": 79,
    "preview": "name,shares,price\n\"AA\",50,27.10\n\"HPQ\",250,43.15\n\"MSFT\",25,50.15\n\"GE\",125,52.10\n"
  },
  {
    "path": "Data/portfolio3.csv",
    "chars": 393,
    "preview": "\"AA\",15,39.48\n\"AXP\",10,62.58\n\"BA\",5,98.31\n\"C\",-,53.08\n\"CAT\",15,78.29\n\"DD\",10,50.75\n\"DIS\",-,N/A\n\"GE\",-,37.23\n\"GM\",15,31.4"
  },
  {
    "path": "Data/portfolio_noheader.csv",
    "chars": 109,
    "preview": "\"AA\",100,32.20\n\"IBM\",50,91.10\n\"CAT\",150,83.44\n\"MSFT\",200,51.23\n\"GE\",95,40.37\n\"MSFT\",50,65.10\n\"IBM\",100,70.44\n"
  },
  {
    "path": "Data/prices.csv",
    "chars": 377,
    "preview": "\"AA\",9.22\r\n\"AXP\",24.85\r\n\"BA\",44.85\r\n\"BAC\",11.27\r\n\"C\",3.72\r\n\"CAT\",35.46\r\n\"CVX\",66.67\r\n\"DD\",28.47\r\n\"DIS\",24.22\r\n\"GE\",13.48"
  },
  {
    "path": "Data/stocksim.py",
    "chars": 5512,
    "preview": "#!/usr/bin/env python\n# stocksim.py\n#\n# Stock market simulator.  This simulator creates stock market\n# data and provides"
  },
  {
    "path": "Data/words.txt",
    "chars": 142,
    "preview": "look into my eyes\nlook into my eyes\nthe eyes the eyes the eyes\nnot around the eyes \ndon't look around the eyes\nlook into"
  },
  {
    "path": "Exercises/README.md",
    "chars": 1251,
    "preview": "# Advanced Python Mastery\n\nCopyright (C) 2007-2023 \nDavid Beazley (dave@dabeaz.com) \nhttp://www.dabeaz.com\n\nWelcome to t"
  },
  {
    "path": "Exercises/ex1_1.md",
    "chars": 2317,
    "preview": "\\[ [Index](index.md) | []() | [Exercise 1.2](ex1_2.md) \\]\n\n# Exercise 1.1\n\n*Objectives:*\n\n- Make sure Python is installe"
  },
  {
    "path": "Exercises/ex1_2.md",
    "chars": 8077,
    "preview": "\\[ [Index](index.md) | [Exercise 1.1](ex1_1.md) | [Exercise 1.3](ex1_3.md) \\]\n\n\n# Exercise 1.2\n\n*Objectives:*\n\n- Manipul"
  },
  {
    "path": "Exercises/ex1_3.md",
    "chars": 1226,
    "preview": "\\[ [Index](index.md) | [Exercise 1.2](ex1_2.md) | [Exercise 1.4](ex1_4.md) \\]\n\n# Exercise 1.3\n\n*Objectives:*\n\n- Review b"
  },
  {
    "path": "Exercises/ex1_4.md",
    "chars": 2622,
    "preview": "\\[ [Index](index.md) | [Exercise 1.3](ex1_3.md) | [Exercise 1.5](ex1_5.md) \\]\n\n# Exercise 1.4\n\n*Objectives:*\n\n- Review o"
  },
  {
    "path": "Exercises/ex1_5.md",
    "chars": 1273,
    "preview": "\\[ [Index](index.md) | [Exercise 1.4](ex1_4.md) | [Exercise 1.6](ex1_6.md) \\]\n\n# Exercise 1.5\n\n*Objectives:*\n\n- Review o"
  },
  {
    "path": "Exercises/ex1_6.md",
    "chars": 2303,
    "preview": "\\[ [Index](index.md) | [Exercise 1.5](ex1_5.md) | [Exercise 2.1](ex2_1.md) \\]\n\n# Exercise 1.6\n\n*Objectives:*\n\n- Defining"
  },
  {
    "path": "Exercises/ex2_1.md",
    "chars": 5480,
    "preview": "\\[ [Index](index.md) | [Exercise 1.6](ex1_6.md) | [Exercise 2.2](ex2_2.md) \\]\n\n# Exercise 2.1\n\n*Objectives:*\n\n- Figure o"
  },
  {
    "path": "Exercises/ex2_2.md",
    "chars": 5750,
    "preview": "\\[ [Index](index.md) | [Exercise 2.1](ex2_1.md) | [Exercise 2.3](ex2_3.md) \\]\n\n# Exercise 2.2\n\n*Objectives:*\n\n- Work wit"
  },
  {
    "path": "Exercises/ex2_3.md",
    "chars": 8617,
    "preview": "\\[ [Index](index.md) | [Exercise 2.2](ex2_2.md) | [Exercise 2.4](ex2_4.md) \\]\n\n# Exercise 2.3\n\n*Objectives:*\n\n- Iterate "
  },
  {
    "path": "Exercises/ex2_4.md",
    "chars": 10575,
    "preview": "\\[ [Index](index.md) | [Exercise 2.3](ex2_3.md) | [Exercise 2.5](ex2_5.md) \\]\n\n# Exercise 2.4\n\n*Objectives:*\n\n- Make a n"
  },
  {
    "path": "Exercises/ex2_5.md",
    "chars": 9371,
    "preview": "\\[ [Index](index.md) | [Exercise 2.4](ex2_4.md) | [Exercise 2.6](ex2_6.md) \\]\n\n# Exercise 2.5\n\n*Objectives:*\n\n- Look at "
  },
  {
    "path": "Exercises/ex2_6.md",
    "chars": 8825,
    "preview": "\\[ [Index](index.md) | [Exercise 2.5](ex2_5.md) | [Exercise 3.1](ex3_1.md) \\]\n\n# Exercise 2.6\n\n*Objectives:*\n\n- Explore "
  },
  {
    "path": "Exercises/ex3_1.md",
    "chars": 2863,
    "preview": "\\[ [Index](index.md) | [Exercise 2.6](ex2_6.md) | [Exercise 3.2](ex3_2.md) \\]\n\n# Exercise 3.1\n\n*Objectives:*\n\n- Define a"
  },
  {
    "path": "Exercises/ex3_2.md",
    "chars": 4581,
    "preview": "\\[ [Index](index.md) | [Exercise 3.1](ex3_1.md) | [Exercise 3.3](ex3_3.md) \\]\n\n# Exercise 3.2\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex3_3.md",
    "chars": 6684,
    "preview": "\\[ [Index](index.md) | [Exercise 3.2](ex3_2.md) | [Exercise 3.4](ex3_4.md) \\]\n\n# Exercise 3.3\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex3_4.md",
    "chars": 3987,
    "preview": "\\[ [Index](index.md) | [Exercise 3.3](ex3_3.md) | [Exercise 3.5](ex3_5.md) \\]\n\n# Exercise 3.4\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex3_5.md",
    "chars": 7023,
    "preview": "\\[ [Index](index.md) | [Exercise 3.4](ex3_4.md) | [Exercise 3.6](ex3_6.md) \\]\n\n# Exercise 3.5\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex3_6.md",
    "chars": 5242,
    "preview": "\\[ [Index](index.md) | [Exercise 3.5](ex3_5.md) | [Exercise 3.7](ex3_7.md) \\]\n\n# Exercise 3.6\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex3_7.md",
    "chars": 4547,
    "preview": "\\[ [Index](index.md) | [Exercise 3.6](ex3_6.md) | [Exercise 3.8](ex3_8.md) \\]\n\n# Exercise 3.7\n\n*Objectives:*\n\n- Type che"
  },
  {
    "path": "Exercises/ex3_8.md",
    "chars": 8571,
    "preview": "\\[ [Index](index.md) | [Exercise 3.7](ex3_7.md) | [Exercise 4.1](ex4_1.md) \\]\n\n# Exercise 3.8\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex4_1.md",
    "chars": 3805,
    "preview": "\\[ [Index](index.md) | [Exercise 3.8](ex3_8.md) | [Exercise 4.2](ex4_2.md) \\]\n\n# Exercise 4.1\n\n*Objectives:*\n\n- Learn mo"
  },
  {
    "path": "Exercises/ex4_2.md",
    "chars": 7557,
    "preview": "\\[ [Index](index.md) | [Exercise 4.1](ex4_1.md) | [Exercise 4.3](ex4_3.md) \\]\n\n# Exercise 4.2\n\n*Objectives:*\n\n- Learn mo"
  },
  {
    "path": "Exercises/ex4_3.md",
    "chars": 5641,
    "preview": "\\[ [Index](index.md) | [Exercise 4.2](ex4_2.md) | [Exercise 4.4](ex4_4.md) \\]\n\n# Exercise 4.3\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex4_4.md",
    "chars": 4832,
    "preview": "\\[ [Index](index.md) | [Exercise 4.3](ex4_3.md) | [Exercise 5.1](ex5_1.md) \\]\n\n# Exercise 4.4\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex5_1.md",
    "chars": 5830,
    "preview": "\\[ [Index](index.md) | [Exercise 4.4](ex4_4.md) | [Exercise 5.2](ex5_2.md) \\]\n\n# Exercise 5.1\n\n*Objectives:*\n\n- Explore "
  },
  {
    "path": "Exercises/ex5_2.md",
    "chars": 3439,
    "preview": "\\[ [Index](index.md) | [Exercise 5.1](ex5_1.md) | [Exercise 5.3](ex5_3.md) \\]\n\n# Exercise 5.2\n\n*Objectives:*\n\n- Returnin"
  },
  {
    "path": "Exercises/ex5_3.md",
    "chars": 2935,
    "preview": "\\[ [Index](index.md) | [Exercise 5.2](ex5_2.md) | [Exercise 5.4](ex5_4.md) \\]\n\n# Exercise 5.3\n\n*Objectives:*\n\n- Higher o"
  },
  {
    "path": "Exercises/ex5_4.md",
    "chars": 3649,
    "preview": "\\[ [Index](index.md) | [Exercise 5.3](ex5_3.md) | [Exercise 5.5](ex5_5.md) \\]\n\n# Exercise 5.4\n\n*Objectives:*\n\n- Learn mo"
  },
  {
    "path": "Exercises/ex5_5.md",
    "chars": 3947,
    "preview": "\\[ [Index](index.md) | [Exercise 5.4](ex5_4.md) | [Exercise 5.6](ex5_6.md) \\]\n\n# Exercise 5.5\n\n*Objectives:*\n\n- Learn mo"
  },
  {
    "path": "Exercises/ex5_6.md",
    "chars": 3288,
    "preview": "\\[ [Index](index.md) | [Exercise 5.5](ex5_5.md) | [Exercise 6.1](ex6_1.md) \\]\n\n# Exercise 5.6\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex6_1.md",
    "chars": 4759,
    "preview": "\\[ [Index](index.md) | [Exercise 5.6](ex5_6.md) | [Exercise 6.2](ex6_2.md) \\]\n\n# Exercise 6.1\n\n*Objectives:*\n\n- Learn mo"
  },
  {
    "path": "Exercises/ex6_2.md",
    "chars": 5405,
    "preview": "\\[ [Index](index.md) | [Exercise 6.1](ex6_1.md) | [Exercise 6.3](ex6_3.md) \\]\n\n# Exercise 6.2\n\n*Objectives:*\n\n- Learn mo"
  },
  {
    "path": "Exercises/ex6_3.md",
    "chars": 4151,
    "preview": "\\[ [Index](index.md) | [Exercise 6.2](ex6_2.md) | [Exercise 6.4](ex6_4.md) \\]\n\n# Exercise 6.3\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex6_4.md",
    "chars": 3743,
    "preview": "\\[ [Index](index.md) | [Exercise 6.3](ex6_3.md) | [Exercise 6.5](ex6_5.md) \\]\n\n# Exercise 6.4\n\n*Objectives:*\n\n- Learn to"
  },
  {
    "path": "Exercises/ex6_5.md",
    "chars": 3938,
    "preview": "\\[ [Index](index.md) | [Exercise 6.4](ex6_4.md) | [Exercise 7.1](ex7_1.md) \\]\n\n# Exercise 6.5\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex7_1.md",
    "chars": 3280,
    "preview": "\\[ [Index](index.md) | [Exercise 6.5](ex6_5.md) | [Exercise 7.2](ex7_2.md) \\]\n\n# Exercise 7.1\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex7_2.md",
    "chars": 4257,
    "preview": "\\[ [Index](index.md) | [Exercise 7.1](ex7_1.md) | [Exercise 7.3](ex7_3.md) \\]\n\n# Exercise 7.2\n\n*Objectives:*\n\n- Decorato"
  },
  {
    "path": "Exercises/ex7_3.md",
    "chars": 6742,
    "preview": "\\[ [Index](index.md) | [Exercise 7.2](ex7_2.md) | [Exercise 7.4](ex7_4.md) \\]\n\n# Exercise 7.3\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex7_4.md",
    "chars": 4116,
    "preview": "\\[ [Index](index.md) | [Exercise 7.3](ex7_3.md) | [Exercise 7.5](ex7_5.md) \\]\n\n# Exercise 7.4\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex7_5.md",
    "chars": 2479,
    "preview": "\\[ [Index](index.md) | [Exercise 7.4](ex7_4.md) | [Exercise 7.6](ex7_6.md) \\]\n\n# Exercise 7.5\n\n*Objectives:*\n\n- Create y"
  },
  {
    "path": "Exercises/ex7_6.md",
    "chars": 5383,
    "preview": "\\[ [Index](index.md) | [Exercise 7.5](ex7_5.md) | [Exercise 8.1](ex8_1.md) \\]\n\n# Exercise 7.6\n\n*Objectives:*\n\n- Metaclas"
  },
  {
    "path": "Exercises/ex8_1.md",
    "chars": 7342,
    "preview": "\\[ [Index](index.md) | [Exercise 7.6](ex7_6.md) | [Exercise 8.2](ex8_2.md) \\]\n\n# Exercise 8.1\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex8_2.md",
    "chars": 4307,
    "preview": "\\[ [Index](index.md) | [Exercise 8.1](ex8_1.md) | [Exercise 8.3](ex8_3.md) \\]\n\n# Exercise 8.2\n\n*Objectives:*\n\n- Using ge"
  },
  {
    "path": "Exercises/ex8_3.md",
    "chars": 3751,
    "preview": "\\[ [Index](index.md) | [Exercise 8.2](ex8_2.md) | [Exercise 8.4](ex8_4.md) \\]\n\n# Exercise 8.3\n\n*Objectives:*\n\n- Using co"
  },
  {
    "path": "Exercises/ex8_4.md",
    "chars": 4338,
    "preview": "\\[ [Index](index.md) | [Exercise 8.3](ex8_3.md) | [Exercise 8.5](ex8_5.md) \\]\n\n# Exercise 8.4\n\n*Objectives:*\n\n- Managing"
  },
  {
    "path": "Exercises/ex8_5.md",
    "chars": 5488,
    "preview": "\\[ [Index](index.md) | [Exercise 8.4](ex8_4.md) | [Exercise 8.6](ex8_6.md) \\]\n\n# Exercise 8.5\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex8_6.md",
    "chars": 5538,
    "preview": "\\[ [Index](index.md) | [Exercise 8.5](ex8_5.md) | [Exercise 9.1](ex9_1.md) \\]\n\n# Exercise 8.6\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex9_1.md",
    "chars": 4288,
    "preview": "\\[ [Index](index.md) | [Exercise 8.6](ex8_6.md) | [Exercise 9.2](ex9_2.md) \\]\n\n# Exercise 9.1\n\n*Objectives:*\n\n- A review"
  },
  {
    "path": "Exercises/ex9_2.md",
    "chars": 2131,
    "preview": "\\[ [Index](index.md) | [Exercise 9.1](ex9_1.md) | [Exercise 9.3](ex9_3.md) \\]\n\n# Exercise 9.2\n\n*Objectives:*\n\n- Learn ho"
  },
  {
    "path": "Exercises/ex9_3.md",
    "chars": 6007,
    "preview": "\\[ [Index](index.md) | [Exercise 9.2](ex9_2.md) | [Exercise 9.4](ex9_4.md) \\]\n\n# Exercise 9.3\n\n*Objectives:*\n\n- Learn ab"
  },
  {
    "path": "Exercises/ex9_4.md",
    "chars": 5450,
    "preview": "\\[ [Index](index.md) | [Exercise 9.3](ex9_3.md) | []() \\]\n\n# Exercise 9.4\n\n*Objectives:*\n\n- Explore circular imports\n- D"
  },
  {
    "path": "Exercises/index.md",
    "chars": 2415,
    "preview": "# Advanced Python Mastery Exercises\n\nCopyright (C) 2007-2023  \nDavid M. Beazley  \nhttps://www.dabeaz.com\n\nThis page cont"
  },
  {
    "path": "Exercises/soln1_1.md",
    "chars": 66,
    "preview": "# Exercise 1.1 - Solution\n\nCheck [here](../Solutions/1_1/art.py)\n\n"
  },
  {
    "path": "Exercises/soln1_2.md",
    "chars": 86,
    "preview": "# Exercise 1.2 - Solution\n\nSolution code is shown in the exercise.\n\n\n[Back](ex1_2.md)\n"
  },
  {
    "path": "Exercises/soln1_3.md",
    "chars": 317,
    "preview": "# Exercise 1.3 - Solution\n\n```python\n# pcost.py\n\ntotal_cost = 0.0\n\nwith open('Data/portfolio.dat', 'r') as f:\n    for li"
  },
  {
    "path": "Exercises/soln1_4.md",
    "chars": 1055,
    "preview": "# Exercise 1.4 - Solution\n\n## (a) Defining a function\n\n```python\n# pcost.py\n\ndef portfolio_cost(filename):\n    total_cos"
  },
  {
    "path": "Exercises/soln1_5.md",
    "chars": 97,
    "preview": "# Exercise 1.5 - Solution\n\nThe solution is shown in the exercise description.\n\n\n[Back](ex1_5.md)\n"
  },
  {
    "path": "Exercises/soln1_6.md",
    "chars": 679,
    "preview": "# Exercise 1.6 - Solution\n\n## (b) Main Module\n\n```python\n# pcost.py\n\ndef portfolio_cost(filename):\n    total_cost = 0.0\n"
  },
  {
    "path": "Exercises/soln2_1.md",
    "chars": 2308,
    "preview": "# Exercise 2.1 - Solution\n\n```python\n# readrides.py\n\nimport csv\n\ndef read_rides_as_tuples(filename):\n    '''\n    Read th"
  },
  {
    "path": "Exercises/soln2_2.md",
    "chars": 1434,
    "preview": "# Exercise 2.2 - Solution\n\nThere is no official solution for this exercise--you need rely on your\ncurrent Python knowled"
  },
  {
    "path": "Exercises/soln2_3.md",
    "chars": 108,
    "preview": "# Exercise 2.3 - Solution\n\nWork through the exercise. Code is given in the description.\n\n\n\n[Back](ex2_3.md)\n"
  },
  {
    "path": "Exercises/soln2_4.md",
    "chars": 1946,
    "preview": "# Exercise 2.4 - Solution\n\n```python\n# mutint.py\n\nfrom functools import total_ordering\n\n@total_ordering\nclass MutInt:\n  "
  },
  {
    "path": "Exercises/soln2_5.md",
    "chars": 3603,
    "preview": "# Exercise 2.5 - Solution\n\nHere is a version of `readrides.py` with changes for parts (c) and (d).\n\n```python\n# readride"
  },
  {
    "path": "Exercises/soln2_6.md",
    "chars": 499,
    "preview": "# Exercise 2.6 - Solution\n\n```python\n# reader.py\n\nimport csv\nfrom collections import defaultdict\n\ndef read_csv_as_dicts("
  },
  {
    "path": "Exercises/soln3_1.md",
    "chars": 1093,
    "preview": "# Exercise 3.1 - Solution\n\n```python\n# stock.py\n\nclass Stock:\n    def __init__(self, name, shares, price):\n        self."
  },
  {
    "path": "Exercises/soln3_2.md",
    "chars": 364,
    "preview": "# Exercise 3.2 - Solution\n\n(c) Table Formatter\n\n```python\n# tableformat.py\n\n# Print a table\ndef print_table(records, fie"
  },
  {
    "path": "Exercises/soln3_3.md",
    "chars": 1972,
    "preview": "# Exercise 3.3 - Solution\n\n```python\n# stock.py\n\nclass Stock:\n    types = (str, int, float)\n    def __init__(self, name,"
  },
  {
    "path": "Exercises/soln3_4.md",
    "chars": 4511,
    "preview": "# Exercise 3.4 - Solution\n\n## (a) Private attributes\n\n```python\n# stock.py\n\nclass Stock:\n    _types = (str, int, float)\n"
  },
  {
    "path": "Exercises/soln3_5.md",
    "chars": 1553,
    "preview": "# Exercise 3.5 - Solution\n\n```python\n# tableformat.py\n\ndef print_table(records, fields, formatter):\n    formatter.headin"
  },
  {
    "path": "Exercises/soln3_6.md",
    "chars": 643,
    "preview": "# Exercise 3.6 - Solution\n\n## (a) Better output for printing objects\n\n```python\n# stock.py\n\nclass Stock:\n    ...\n\n    de"
  },
  {
    "path": "Exercises/soln3_7.md",
    "chars": 1776,
    "preview": "\n# Exercise 3.7 - Solution\n\n## (a) Interfaces\n\n```python\n# tableformat.py\n\ndef print_table(records, fields, formatter):\n"
  },
  {
    "path": "Exercises/soln3_8.md",
    "chars": 2261,
    "preview": "# Exercise 3.8 - Solution\n\n```python\n# tableformat.py\nfrom abc import ABC, abstractmethod\n\ndef print_table(records, fiel"
  },
  {
    "path": "Exercises/soln4_1.md",
    "chars": 80,
    "preview": "# Exercise 4.1 - Solution\n\nNo solution.  Just follow along.\n\n\n\n[Back](ex4_1.md)\n"
  },
  {
    "path": "Exercises/soln4_2.md",
    "chars": 2016,
    "preview": "# Exercise 4.2 - Solution\n\nHere is the validator code in its entirety:\n\n```python\nclass Validator:\n    @classmethod\n    "
  },
  {
    "path": "Exercises/soln4_3.md",
    "chars": 1910,
    "preview": "# Exercise 4.3 - Solution\n\n```python\nclass Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    d"
  },
  {
    "path": "Exercises/soln4_4.md",
    "chars": 78,
    "preview": "# Exercise 4.4 - Solution\n\nCode is given in the exercise.\n\n\n\n[Back](ex4_4.md)\n"
  },
  {
    "path": "Exercises/soln5_1.md",
    "chars": 1328,
    "preview": "# Exercise 5.1 - Solution\n\nThis is a partial solution that does not include type-hints. \n\n```python\n# reader.py\n\nimport "
  },
  {
    "path": "Exercises/soln5_2.md",
    "chars": 85,
    "preview": "# Exercise 5.2 - Solution\n\nNone. Just work through the exercise.\n\n\n\n[Back](ex5_2.md)\n"
  },
  {
    "path": "Exercises/soln5_3.md",
    "chars": 1430,
    "preview": "# Exercise 5.3 - Solution\n\n## (a) Higher order functions\n\n```python\n# reader.py\n\nimport csv\n\ndef convert_csv(lines, conv"
  },
  {
    "path": "Exercises/soln5_4.md",
    "chars": 875,
    "preview": "# Exercise 5.4 - Solution\n\n```python\n# typedproperty.py\n\ndef typedproperty(name, expected_type):\n    private_name = '_' "
  },
  {
    "path": "Exercises/soln5_5.md",
    "chars": 1359,
    "preview": "# Exercise 5.5 - Solution\n\n```python\n# reader.py\n\nimport csv\nimport logging\n\nlog = logging.getLogger(__name__)\n\ndef conv"
  },
  {
    "path": "Exercises/soln5_6.md",
    "chars": 3470,
    "preview": "# Exercise 5.6 - Solution\n\n## (b) Unit testing\n\n```python\n# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock("
  },
  {
    "path": "Exercises/soln6_1.md",
    "chars": 936,
    "preview": "# Exercise 6.1 - Solution\n\n## (a) Simplified Structures\n\n```python\n# structure.py\n\nclass Structure:\n    _fields = ()\n   "
  },
  {
    "path": "Exercises/soln6_2.md",
    "chars": 724,
    "preview": "# Exercise 6.2 - Solution\n\n```python\n# structure.py\n\nimport sys\n\nclass Structure:\n    _fields = ()\n\n    @staticmethod\n  "
  },
  {
    "path": "Exercises/soln6_3.md",
    "chars": 1208,
    "preview": "# Exercise 6.3 - Solution\n\n```python\n# structure.py\n\nimport sys\nimport inspect\n\nclass Structure:\n    _fields = ()\n\n    @"
  },
  {
    "path": "Exercises/soln6_4.md",
    "chars": 1173,
    "preview": "# Exercise 6.4 - Solution\n\n```python\n# structure.py\n\nclass Structure:\n    _fields = ()\n\n    def __setattr__(self, name, "
  },
  {
    "path": "Exercises/soln6_5.md",
    "chars": 814,
    "preview": "# Exercise 6.5 - Solution\n\n```python\n# validate.py\n...\n\nfrom inspect import signature\n\nclass ValidatedFunction:\n    def "
  },
  {
    "path": "Exercises/soln7_1.md",
    "chars": 1056,
    "preview": "# Exercise 7.1 - Solution\n\n```python\n# validate.py\n...\n\nfrom inspect import signature\n\ndef validated(func):\n    sig = si"
  },
  {
    "path": "Exercises/soln7_2.md",
    "chars": 3443,
    "preview": "# Exercise 7.2 - Solution\n\n## (a) Copying Metadata\n\n```python\n# logcall.py\n\nfrom functools import wraps\n\ndef logged(func"
  },
  {
    "path": "Exercises/soln7_3.md",
    "chars": 2164,
    "preview": "# Exercise 7.3 - Solution\n\nHere's a full version of the `structure.py` file.   \n\n```python\n# structure.py\n\nfrom validate"
  },
  {
    "path": "Exercises/soln7_4.md",
    "chars": 110,
    "preview": "# Exercise 7.4 - Solution\n\nAll of the solution code is given in the exercise description.\n\n\n\n[Back](ex7_4.md)\n"
  },
  {
    "path": "Exercises/soln7_5.md",
    "chars": 88,
    "preview": "# Exercise 7.5 - Solution\n\nNothing here.  Just follow the exercise.\n\n\n\n[Back](ex7_5.md)\n"
  },
  {
    "path": "Exercises/soln7_6.md",
    "chars": 2583,
    "preview": "# Exercise 7.6 - Solution\n\n```python\n# structure.py\n\nfrom validate import Validator, validated\nfrom collections import C"
  },
  {
    "path": "Exercises/soln8_1.md",
    "chars": 1496,
    "preview": "# Exercise 8.1 - Solution\n\n## (b) Adding Iteration to Objects\n\n```python\n# structure.py\n...\n        \nclass Structure(met"
  },
  {
    "path": "Exercises/soln8_2.md",
    "chars": 729,
    "preview": "# Exercise 8.2 - Solution\n\n```python\n# ticker.py\nfrom structure import Structure\n\nclass Ticker(Structure):\n    name = St"
  },
  {
    "path": "Exercises/soln8_3.md",
    "chars": 1569,
    "preview": "# Exercise 8.3 - Solution\n\n```python\n# coticker.py\nfrom structure import Structure\nfrom validate import String, Integer,"
  },
  {
    "path": "Exercises/soln8_4.md",
    "chars": 101,
    "preview": "# Exercise 8.4 - Solution\n\nAll of the code is given in the exercise description.\n\n\n\n[Back](ex8_4.md)\n"
  },
  {
    "path": "Exercises/soln8_5.md",
    "chars": 1692,
    "preview": "# Exercise 8.5 - Solution\n\n## (b) Generators as Tasks Serving Network Connections\n\nHere's the complete code.\n\n```python\n"
  },
  {
    "path": "Exercises/soln8_6.md",
    "chars": 4689,
    "preview": "# Exercise 8.6 - Solution\n\n## (a) Receiving Messages\n\n```python\n# coticker.py\nfrom structure import Structure\nfrom valid"
  },
  {
    "path": "Exercises/soln9_1.md",
    "chars": 86,
    "preview": "# Exercise 9.1 - Solution\n\nNone.  Just follow the exercise steps.\n\n\n\n[Back](ex9_1.md)\n"
  },
  {
    "path": "Exercises/soln9_2.md",
    "chars": 463,
    "preview": "# Exercise 9.2 - Solution\n\n## (a) Making a package\n\nYou don't need to modify much source code.   Just make a directory w"
  },
  {
    "path": "Exercises/soln9_3.md",
    "chars": 2886,
    "preview": "# Exercise 9.3 - Solution\n\n## (a) Controlling Exported Symbols\n\n```python\n# structure.py\n\n__all__ = ['Structure']\n...\n``"
  },
  {
    "path": "Exercises/soln9_4.md",
    "chars": 1592,
    "preview": "# Exercise 9.4 - Solution\n\n```python\n# tableformat.py\nfrom abc import ABC, abstractmethod\n\ndef print_table(records, fiel"
  },
  {
    "path": "LICENSE.md",
    "chars": 18532,
    "preview": "## creative commons\n\n# Attribution-ShareAlike 4.0 International\n\nCreative Commons Corporation (“Creative Commons”) is no"
  },
  {
    "path": "README.md",
    "chars": 6214,
    "preview": "# Advanced Python Mastery\n\nA course by David Beazley (https://www.dabeaz.com)  \nCopyright (C) 2007-2024  \n\n## Synopsis\n\n"
  },
  {
    "path": "Solutions/1_1/art.py",
    "chars": 326,
    "preview": "# art.py\n\nimport sys\nimport random\n\nchars = '\\|/'\n\ndef draw(rows, columns):\n    for r in range(rows):\n        print(''.j"
  },
  {
    "path": "Solutions/1_3/pcost.py",
    "chars": 263,
    "preview": "# pcost.py\n\ntotal_cost = 0.0\n\nwith open('../../Data/portfolio.dat', 'r') as f:\n    for line in f:\n        fields = line."
  },
  {
    "path": "Solutions/1_4/pcost.py",
    "chars": 587,
    "preview": "# pcost.py\n\ndef portfolio_cost(filename):\n    total_cost = 0.0\n    with open(filename) as f:\n        for line in f:\n    "
  },
  {
    "path": "Solutions/1_5/stock.py",
    "chars": 211,
    "preview": "# stock.py\n\nclass Stock:\n    def __init__(self, name, shares, price):\n        self.name = name\n        self.shares = sha"
  },
  {
    "path": "Solutions/1_6/pcost.py",
    "chars": 612,
    "preview": "# pcost.py\n\ndef portfolio_cost(filename):\n    total_cost = 0.0\n    with open(filename) as f:\n        for line in f:\n    "
  },
  {
    "path": "Solutions/2_1/readrides.py",
    "chars": 2253,
    "preview": "# readrides.py\n\nimport csv\n\ndef read_rides_as_tuples(filename):\n    '''\n    Read the bus ride data as a list of tuples\n "
  },
  {
    "path": "Solutions/2_2/cta.py",
    "chars": 1693,
    "preview": "# cta.py\n\nfrom collections import defaultdict, Counter\nimport tracemalloc\nimport readrides\n\ntracemalloc.start()\n\nrows = "
  },
  {
    "path": "Solutions/2_2/readport.py",
    "chars": 453,
    "preview": "# readport.py\n\nimport csv\n\n# A function that reads a file into a list of dicts\ndef read_portfolio(filename):\n    portfol"
  },
  {
    "path": "Solutions/2_2/readrides.py",
    "chars": 2253,
    "preview": "# readrides.py\n\nimport csv\n\ndef read_rides_as_tuples(filename):\n    '''\n    Read the bus ride data as a list of tuples\n "
  },
  {
    "path": "Solutions/2_4/mutint.py",
    "chars": 1912,
    "preview": "# mutint.py\n#\n# Mutable integers\n\nfrom functools import total_ordering\n\n@total_ordering\nclass MutInt:\n    __slots__ = ['"
  },
  {
    "path": "Solutions/2_5/cta.py",
    "chars": 1693,
    "preview": "# cta.py\n\nfrom collections import defaultdict, Counter\nimport tracemalloc\nimport readrides\n\ntracemalloc.start()\n\nrows = "
  },
  {
    "path": "Solutions/2_5/readrides.py",
    "chars": 4097,
    "preview": "# readrides.py\n\nimport csv\nimport collections.abc\n\ndef read_rides_as_tuples(filename):\n    '''\n    Read the bus ride dat"
  },
  {
    "path": "Solutions/2_6/colreader.py",
    "chars": 1043,
    "preview": "# colreader.py\n\nimport collections\nimport collections.abc\nimport csv\n\nclass DataCollection(collections.abc.Sequence):\n  "
  },
  {
    "path": "Solutions/2_6/cta.py",
    "chars": 1677,
    "preview": "# cta.py\n\nfrom collections import defaultdict, Counter\nimport tracemalloc\nimport csv\nimport sys\n\ntracemalloc.start()\n\nif"
  },
  {
    "path": "Solutions/2_6/reader.py",
    "chars": 441,
    "preview": "# reader.py\n\nimport csv\n\ndef read_csv_as_dicts(filename, types):\n    '''\n    Read a CSV file into a list of dicts with c"
  },
  {
    "path": "Solutions/3_1/stock.py",
    "chars": 1039,
    "preview": "# stock.py\n\nclass Stock:\n    def __init__(self, name, shares, price):\n        self.name = name\n        self.shares = sha"
  },
  {
    "path": "Solutions/3_2/stock.py",
    "chars": 821,
    "preview": "# stock.py\n\nclass Stock:\n    def __init__(self, name, shares, price):\n        self.name = name\n        self.shares = sha"
  },
  {
    "path": "Solutions/3_2/tableformat.py",
    "chars": 282,
    "preview": "# tableformat.py\n\n# Print a table\ndef print_table(records, fields):\n    print(' '.join('%10s' % fieldname for fieldname "
  },
  {
    "path": "Solutions/3_3/reader.py",
    "chars": 722,
    "preview": "# reader.py\n\nimport csv\n\ndef read_csv_as_dicts(filename, types):\n    '''\n    Read a CSV file into a list of dicts with c"
  },
  {
    "path": "Solutions/3_3/stock.py",
    "chars": 1070,
    "preview": "# stock.py\n\nclass Stock:\n    types = (str, int, float)\n    def __init__(self, name, shares, price):\n        self.name = "
  },
  {
    "path": "Solutions/3_3/tableformat.py",
    "chars": 444,
    "preview": "# tableformat.py\n\n# Print a table\ndef print_table(records, fields):\n    # Print the table headers in a 10-character wide"
  },
  {
    "path": "Solutions/3_4/stock.py",
    "chars": 1163,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/3_5/reader.py",
    "chars": 722,
    "preview": "# reader.py\n\nimport csv\n\ndef read_csv_as_dicts(filename, types):\n    '''\n    Read a CSV file into a list of dicts with c"
  },
  {
    "path": "Solutions/3_5/stock.py",
    "chars": 1462,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/3_5/tableformat.py",
    "chars": 1496,
    "preview": "# tableformat.py\n\ndef print_table(records, fields, formatter):\n    formatter.headings(fields)\n    for r in records:\n    "
  },
  {
    "path": "Solutions/3_6/reader.py",
    "chars": 722,
    "preview": "# reader.py\n\nimport csv\n\ndef read_csv_as_dicts(filename, types):\n    '''\n    Read a CSV file into a list of dicts with c"
  },
  {
    "path": "Solutions/3_6/stock.py",
    "chars": 1809,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/3_6/tableformat.py",
    "chars": 1496,
    "preview": "# tableformat.py\n\ndef print_table(records, fields, formatter):\n    formatter.headings(fields)\n    for r in records:\n    "
  },
  {
    "path": "Solutions/3_7/reader.py",
    "chars": 1070,
    "preview": "# reader.py\n\nimport csv\nfrom abc import ABC, abstractmethod\n\nclass CSVParser(ABC):\n\n    def parse(self, filename):\n     "
  },
  {
    "path": "Solutions/3_7/stock.py",
    "chars": 1809,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/3_7/tableformat.py",
    "chars": 1618,
    "preview": "# tableformat.py\nfrom abc import ABC, abstractmethod\n\ndef print_table(records, fields, formatter):\n    if not isinstance"
  },
  {
    "path": "Solutions/3_8/reader.py",
    "chars": 1070,
    "preview": "# reader.py\n\nimport csv\nfrom abc import ABC, abstractmethod\n\nclass CSVParser(ABC):\n\n    def parse(self, filename):\n     "
  },
  {
    "path": "Solutions/3_8/stock.py",
    "chars": 2534,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/3_8/tableformat.py",
    "chars": 2200,
    "preview": "# tableformat.py\nfrom abc import ABC, abstractmethod\n\ndef print_table(records, fields, formatter):\n    if not isinstance"
  },
  {
    "path": "Solutions/4_2/validate.py",
    "chars": 1948,
    "preview": "class Validator:\n    @classmethod\n    def check(cls, value):\n        return value\n\nclass Typed(Validator):\n    expected_"
  },
  {
    "path": "Solutions/4_3/validate.py",
    "chars": 1865,
    "preview": "class Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    def __set_name__(self, cls, name):\n   "
  },
  {
    "path": "Solutions/5_2/reader.py",
    "chars": 1368,
    "preview": "# reader.py\n\nfrom abc import ABC, abstractmethod\nimport csv\nimport logging\nlog = logging.getLogger(__name__)\n\nclass CSVP"
  },
  {
    "path": "Solutions/5_2/stock.py",
    "chars": 1510,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/5_3/reader.py",
    "chars": 1094,
    "preview": "# reader.py\n\nimport csv\n\ndef convert_csv(lines, converter, *, headers=None):\n    rows = csv.reader(lines)\n    if headers"
  },
  {
    "path": "Solutions/5_3/stock.py",
    "chars": 1510,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/5_4/typedproperty.py",
    "chars": 816,
    "preview": "# typedproperty.py\n\ndef typedproperty(name, expected_type):\n    private_name = '_' + name\n\n    @property\n    def value(s"
  },
  {
    "path": "Solutions/5_5/reader.py",
    "chars": 1299,
    "preview": "# reader.py\n\nimport csv\nimport logging\n\nlog = logging.getLogger(__name__)\n\ndef convert_csv(lines, converter, *, headers="
  },
  {
    "path": "Solutions/5_6/stock.py",
    "chars": 1510,
    "preview": "# stock.py\n\nclass Stock:\n    __slots__ = ('name','_shares','_price')\n    _types = (str, int, float)\n    def __init__(sel"
  },
  {
    "path": "Solutions/5_6/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/6_1/stock.py",
    "chars": 248,
    "preview": "# stock.py\n\nfrom structure import Structure\n\nclass Stock(Structure):\n    _fields = ('name', 'shares', 'price')\n\n    @pro"
  },
  {
    "path": "Solutions/6_1/structure.py",
    "chars": 663,
    "preview": "# structure.py\n\nclass Structure:\n    _fields = ()\n    def __init__(self, *args):\n        if len(args) != len(self._field"
  },
  {
    "path": "Solutions/6_1/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/6_2/stock.py",
    "chars": 314,
    "preview": "# stock.py\n\nfrom structure import Structure\n\nclass Stock(Structure):\n    _fields = ('name', 'shares', 'price')\n    def _"
  },
  {
    "path": "Solutions/6_2/structure.py",
    "chars": 662,
    "preview": "# structure.py\n\nimport sys\n\nclass Structure:\n    _fields = ()\n\n    @staticmethod\n    def _init():\n        locs = sys._ge"
  },
  {
    "path": "Solutions/6_2/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/6_3/stock.py",
    "chars": 292,
    "preview": "# stock.py\n\nfrom structure import Structure\n\nclass Stock(Structure):\n    def __init__(self, name, shares, price):\n      "
  },
  {
    "path": "Solutions/6_3/structure.py",
    "chars": 802,
    "preview": "# structure.py\n\nimport sys\nimport inspect\n\nclass Structure:\n    _fields = ()\n\n    @staticmethod\n    def _init():\n       "
  },
  {
    "path": "Solutions/6_3/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/6_4/stock.py",
    "chars": 269,
    "preview": "# stock.py\n\nfrom structure import Structure\n\nclass Stock(Structure):\n    _fields = ('name', 'shares', 'price')\n\n    @pro"
  },
  {
    "path": "Solutions/6_4/structure.py",
    "chars": 796,
    "preview": "# structure.py\n\nclass Structure:\n    _fields = ()\n\n    def __setattr__(self, name, value):\n        if name.startswith('_"
  },
  {
    "path": "Solutions/6_4/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/6_5/validate.py",
    "chars": 2525,
    "preview": "class Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    def __set_name__(self, cls, name):\n   "
  },
  {
    "path": "Solutions/7_1/logcall.py",
    "chars": 216,
    "preview": "# logcall.py\n\ndef logged(func):\n    print('Adding logging to', func.__name__)\n    def wrapper(*args,**kwargs):\n        p"
  },
  {
    "path": "Solutions/7_1/sample.py",
    "chars": 116,
    "preview": "# sample.py\n\nfrom logcall import logged\n\n@logged\ndef add(x,y):\n    return x+y\n\n@logged\ndef sub(x,y):\n    return x-y\n"
  },
  {
    "path": "Solutions/7_1/validate.py",
    "chars": 3127,
    "preview": "# validate.py\n\nclass Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    def __set_name__(self, "
  },
  {
    "path": "Solutions/7_2/logcall.py",
    "chars": 476,
    "preview": "# logcall.py\n\nfrom functools import wraps\n\ndef logformat(fmt):\n    def logged(func):\n        print('Adding logging to', "
  },
  {
    "path": "Solutions/7_2/sample.py",
    "chars": 215,
    "preview": "# sample.py\n\nfrom logcall import logged, logformat\n\n@logged\ndef add(x,y):\n    return x+y\n\n@logged\ndef sub(x,y):\n    retu"
  },
  {
    "path": "Solutions/7_2/spam.py",
    "chars": 306,
    "preview": "from logcall import logged\n\nclass Spam:\n    @logged\n    def instance_method(self):\n        pass\n\n    @classmethod\n    @l"
  },
  {
    "path": "Solutions/7_2/validate.py",
    "chars": 4181,
    "preview": "# validate.py\n\nclass Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    def __set_name__(self, "
  },
  {
    "path": "Solutions/7_3/reader.py",
    "chars": 1299,
    "preview": "# reader.py\n\nimport csv\nimport logging\n\nlog = logging.getLogger(__name__)\n\ndef convert_csv(lines, converter, *, headers="
  },
  {
    "path": "Solutions/7_3/stock.py",
    "chars": 361,
    "preview": "# stock.py\n\nfrom structure import Structure\nfrom validate import String, PositiveInteger, PositiveFloat\n\nclass Stock(Str"
  },
  {
    "path": "Solutions/7_3/structure.py",
    "chars": 2051,
    "preview": "# structure.py\n\nfrom validate import Validator, validated\n\nclass Structure:\n    _fields = ()\n    _types = ()\n\n    def __"
  },
  {
    "path": "Solutions/7_3/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/7_3/validate.py",
    "chars": 4180,
    "preview": "# validate.py\n\nclass Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    def __set_name__(self, "
  },
  {
    "path": "Solutions/7_4/stock.py",
    "chars": 361,
    "preview": "# stock.py\n\nfrom structure import Structure\nfrom validate import String, PositiveInteger, PositiveFloat\n\nclass Stock(Str"
  },
  {
    "path": "Solutions/7_4/structure.py",
    "chars": 2160,
    "preview": "# structure.py\n\nfrom validate import Validator, validated\n\nclass Structure:\n    _fields = ()\n    _types = ()\n\n    def __"
  },
  {
    "path": "Solutions/7_4/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/7_4/validate.py",
    "chars": 4244,
    "preview": "# validate.py\n\nclass Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    def __set_name__(self, "
  },
  {
    "path": "Solutions/7_5/mymeta.py",
    "chars": 635,
    "preview": "# mymeta.py\n\nclass mytype(type):\n    @staticmethod\n    def __new__(meta, name, bases, __dict__):\n        print(\"Creating"
  },
  {
    "path": "Solutions/7_6/reader.py",
    "chars": 1299,
    "preview": "# reader.py\n\nimport csv\nimport logging\n\nlog = logging.getLogger(__name__)\n\ndef convert_csv(lines, converter, *, headers="
  },
  {
    "path": "Solutions/7_6/stock.py",
    "chars": 616,
    "preview": "# stock.py\n\nfrom structure import Structure\n\nclass Stock(Structure):\n    name = String()\n    shares = PositiveInteger()\n"
  },
  {
    "path": "Solutions/7_6/structure.py",
    "chars": 2522,
    "preview": "# structure.py\n\nfrom validate import Validator, validated\nfrom collections import ChainMap\n\nclass StructureMeta(type):\n "
  },
  {
    "path": "Solutions/7_6/tableformat.py",
    "chars": 2202,
    "preview": "# tableformat.py\nfrom abc import ABC, abstractmethod\n\ndef print_table(records, fields, formatter):\n    if not isinstance"
  },
  {
    "path": "Solutions/7_6/teststock.py",
    "chars": 2071,
    "preview": "# teststock.py\n\nimport stock\nimport unittest\n\nclass TestStock(unittest.TestCase):\n    def test_create(self):\n        s ="
  },
  {
    "path": "Solutions/7_6/validate.py",
    "chars": 4404,
    "preview": "# validate.py\n\nclass Validator:\n    def __init__(self, name=None):\n        self.name = name\n\n    def __set_name__(self, "
  },
  {
    "path": "Solutions/8_1/follow.py",
    "chars": 740,
    "preview": "# follow.py\nimport os\nimport time\n\ndef follow(filename):\n    '''\n    Generator that produces a sequence of lines being w"
  },
  {
    "path": "Solutions/8_1/reader.py",
    "chars": 1299,
    "preview": "# reader.py\n\nimport csv\nimport logging\n\nlog = logging.getLogger(__name__)\n\ndef convert_csv(lines, converter, *, headers="
  },
  {
    "path": "Solutions/8_1/stock.py",
    "chars": 680,
    "preview": "# stock.py\n\nfrom structure import Structure\nfrom validate import String, PositiveInteger, PositiveFloat\n\nclass Stock(Str"
  },
  {
    "path": "Solutions/8_1/structure.py",
    "chars": 2726,
    "preview": "# structure.py\n\nfrom validate import Validator, validated\nfrom collections import ChainMap\n\nclass StructureMeta(type):\n "
  }
]

// ... and 55 more files (download for full content)

About this extraction

This page contains the full source code of the dabeaz-course/python-mastery GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 255 files (12.5 MB), approximately 243.4k tokens, and a symbol index with 1197 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!