MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMM~ ~~~MMMMMMMMMMMMMMMMMM MMMMMMP' ~MMMMMMMMMMMMMM MMMMMM ~MMMMMMMMMMMM MMMMM# ~0MMMMMMMMM MMMMM# MMMMMMMMM MMMMM# MMMMMMMM MMMMM# ______________________________ MMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm_ ~MMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMg MMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMP MMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM~ MMMMMM MMMMM# "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0MMMMMM MMMMM# jMMMMMMM MMMMM# wMMMMMMMM MMMMM# _MMMMMMMMMM MMMMM# ~MMMMMMMMMM MMMMM# ~MMMMMMMM MMMMM# ~MMMMMMM MMMMM# jMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy 4MMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy MMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM, #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM0' MMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMM MMMMM# "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ dMMMMMM MMMMM# jMMMMMMM MMMMM# jMMMMMMMM MMMMM# wMMMMMMMMM MMMMM# jMMMMMMMMMMM MMMMMMy _wMMMMMMMMMMMMM MMMMMMMm_ _wMMMMMMMMMMMMMMMM MMMMMMMMMMwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMM~~ ~~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMM~ ~0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# 4MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMM# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MMMMMMMMM MMMMM# MMMMMMM MMMMM# #MMMMM MMMMM# #MMMMM MMMMMMm, wMMMMMM MMMMMMMMmw__________________________________________________wwMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM~~~ ~~~MMMMMMMMMMMMMMMMM MMMMMMMMMMMMM~~ ~~MMMMMMMMMMMMM MMMMMMMMMMM~ ~MMMMMMMMMMM MMMMMMMM@' ~MMMMMMMMM MMMMMMMP MMMMMMMM MMMMMMP _jwwwwwwwwwwwwwwwwwwwwwwwwmwy_ #MMMMMM MMMMMM' _MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy MMMMMM MMMMM# MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM, #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# 4MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMf #MMMMM MMMMM# 0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM' #MMMMM MMMMMM, MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMM MMMMMM0 ~~~~~~~~~~~~~~~~~~~~~~~~~~ #MMMMMM MMMMMMMM, _#MMMMMMM MMMMMMMMMy w0MMMMMMMM MMMMMMMMMM0w, w0MMMMMMMMMM MMMMMMMMMMMMMmw_ _wwMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMmww____________________________jwwMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM~~~ ~~~MMMMMMMMMMMMMMMMM MMMMMMMMMMMMM~~ ~~MMMMMMMMMMMMM MMMMMMMMMMM~ ~MMMMMMMMMMM MMMMMMMM@' ~MMMMMMMMM MMMMMMMP MMMMMMMM MMMMMMP _jwwwwwwwwwwwwwwwwwwwwwwwwmwy_ #MMMMMM MMMMMM' _MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy MMMMMM MMMMM# MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM, #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #MMMMM MMMMM# #MMMMM MMMMM# #MMMMM MMMMM# #MMMMM MMMMM# #MMMMM MMMMM# jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj, #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# JMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMl #MMMMM MMMMM# jMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM6 #MMMMM MMMMMMm, wMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMw _wMMMMMM MMMMMMMMmw___ww0MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmw___wwMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMM~~ ~~MMMMMMMM MMMMMM~ ~MMMMMM MMMMM# #MMMMM MMMMM0 #MMMMM MMMMMM0y _#MMMMMM MMMMMMMMMmmmwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM, _MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM0_ ,0MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMwy__jwMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
The reasonable reader might well ask "why did you just waste my time with those huge letters?" Thus, a definition of bloat: undesirable noticeable excess, especially that which goes beyond some bound, real or imagined. This document certainly would be quicker to read, and would have taken less time to write, require less storage space, and take less time to transfer without all that bloat.
Bloat is fractal, in the sense that bloat is a feature at all levels of software. The echo(1) command for instance has been bloated over the years to (maybe) not emit a trailing newline, to (maybe) handle various escape sequences, to (maybe) not echo certain arguments, especially those that overlap with options processing. echo can be written in about 75 lines of assembly, most of that code being compatibility with the echo shipped with the operating system in question. The assembly version is 50% to 90% faster than that provided by the OS; I suspect the inclusion of libSystem.B.dylib in /bin/echo is a big reason for the slowdown. This implies multiple sources of bloat, one being extra geegaws added to software, and another the frameworks or libraries the software relies on. Bloat, like the letters above, does increase the size of the software; the assembly echo is about half the size of the vendor's /bin/echo, or 10% the size if one also includes libSystem.B.dylib in the tally.
$ stat -f %z $(findin echo) /usr/lib/libSystem.B.dylib 8288 18032 60560
echo bloat is generally not a problem; the power savings from a more efficient version are likely negligible; if power were that much of a problem one would switch to a completely different platform. Portability problems are more likely, given the various incompatible forms of echo, though much code written for echo (or, worse, bash) may not ever be ported. That is, while echo has been bloated with features the bloat may not be undesirable (the -n flag is handy; I've included a similar flag in various utilities I've written) and may not ever be noticed if the software is never ported.
A step up from echo is vi(1). vi has about three orders of magnitude more code than echo. Bloat is present in at least two forms; one would be weird features, another is portability to weird OS. Both add code and increase the attack surface. Most of this code, however, will escape notice; I only found the type-NUL-right-after-insert feature when looking through the code, and for weird OS portability there's extra code involved in configuration file reads that tries to account for a System V feature where users could apparently give their files away. This extra code probably slows down the startup, though at 23 milliseconds that bloat is not noticeable on a 2.66 GHz Intel Core 2 Duo, vintage 2009.
$ expect -c 'puts [time {spawn -noecho vi; expect ~; send :q} 30]' 22879.190666666665 microseconds per iteration
Emacs, meanwhile, should not be run with the above test, especially if all 30 instances are trying to recompile things. One Emacs process required a kill -9 to unwedge it from the CPU. Memory use and complexity could be indications of bloat. How would 30 Electron instances fare, all started up nearly at once?
vim has about an order of magnitude more C code than vi but does not take an order of magnitude longer to get itself up off disk; startup times may not scale with lines of code. vim would likely be worse using --with-features=huge or with plugins, neither of which I use.
$ expect -c 'puts [time {spawn -noecho vim; expect ~; send :q} 30]' 48518.95273333333 microseconds per iteration
More interesting may be grep in vim. grep originates with the ed(1) editor, and is named after the g/re/p commands (global, regular expression, print). Here's an example.
$ printf >a 'habla\na\nla\ncasa\nblanca\n' $ printf 'g/blanca/p\nq\n' | ed -s a blanca $ grep blanca a blanca
This feature is still part of vim as :g/blanca/p by way of Ex by way of ed. vimgrep meanwhile imitates the external grep command; vim thus has (at least) two grep implementations, and can call out to many more. Is that bloat?
Extra features are more of a problem in larger projects; here we find bloat that is hard to ignore. As in, you can't see the software, yet, as it is still trying to get itself up off disk. And why is the cpu fan running after Firefox shows a table with about 30 rows in it? Is all that JavaScript really doing anything good?
Joel Spolsky has an apologia for bloat somewhere on the Internet; one claim is that various pages are never loaded and are therefore not a problem. This claim is easy to negate by pointing out the security vulnerabilities of bloatware. Check out the trainwreck of browsers or most anything from Microsoft in the CVE database. Sloppy coders, much? And if pages are not loaded, or something, then why does bloatware so often beachball or hourglass the long way up off disk?
Security problems are real; imaginary issues from bloat fall into the more subjective realm of "it takes too long to load" or "please do not install Word 6," a request made by various users. (Excel, meanwhile, was corrupting portions of their genomic data. Around two decades later those genes were renamed. If you know Excel corrupts data you can watch it like a hawk, but then why not use less bad and less mentally taxing software?) On older systems speed complaints are more real than imagined; some users not desirous of Word 6, however, had systems that could run it. This contradicts another claim made by Joel, that magical "Intel giveth" will airbrush the bloat. What was so wrong with Word that users said "no" to it? I never really used it much, but if I had to guess: too many geegaws and whatzits.
And, a visible framerate on older, slower systems. Or even not so very old systems. Too much code. We even have a word for that: Bloat.
One issue may be that developers typically have what I call "gonzo compile rigs" or the crazy fastest computer that someone can afford. This means things with terrible compile times (hello, Rust) or terrible run times (heavyweight champion browsers) may not even be noticed. Giving developers systems that are somewhere off of extended warranty may not be popular, though; they could decamp to somewhere that gives them new shiny, and one ethos in certain countries is "thou shalt make new!" less so to maintain the existing. One may observe both practical and cultural forces at play.
Now what is considered bloat, much like spam, will vary from person to person. Some will call vi bloated, since it usually comes with a huge unix environment and takes more resources than a Forth block editor does. Others put the bar so high that nothing is bloated: hardware updates and some memory pages solved that back in the 80s, didn't you know? That bloatware complaints continue down to this decade suggests that things are maybe not so shiny as a Spolsky would have it nor is the situation as dire as a microcontroller crank might claim--unless one lives on a boat in the middle of the Pacific.
Why does bloatware exist? Convenient pre-ground coffee also exists; the staleness and rancidity is besides the point. There is a market for mediocre software:
JIRA, just like Teams, is slow, bloated, still won't fix basic issues and largely exists to appease managers. You have to actively work to make JIRA a pleasant experience. It's too easy for most management to make it hell. -- BlargMcLarg, https://news.ycombinator.com/item?id=32937470
Other comments indicate that quality is not the point: perhaps a company has already bought into the Microsoft stack, or it's easier to obtain regulatory approval, or Teams competes with other crappy bloatware. A disconnect between management and engineering (as in the Space Shuttle Challenger disaster) could also be relevant.
And if you can sell a poor product for profit, why waste money making it less bad?