units-2.23/0000777000175000017500000000000014564547241012100 5ustar adrianadrianunits-2.23/definitions.units0000664000175000017500000130022114564517616015477 0ustar adrianadrian# # This file is the units database for use with GNU units, a units conversion # program by Adrian Mariano adrianm@gnu.org # # Febuary 2024 Version 3.19 # last updated 16 February 2024 # # Copyright (C) 1996-2002, 2004-2020, 2022, 2024 # Free Software Foundation, Inc # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301 USA # ############################################################################ # # Improvements and corrections are welcome. # # See the end of this file for a list of items we have chosen to exclude # or have decided are out of scope for GNU units. # # Fundamental constants in this file are the 2018 CODATA recommended values. # # Most units data was drawn from # 1. NIST Special Publication 811, Guide for the # Use of the International System of Units (SI). # Barry N. Taylor. 2008 # https://www.nist.gov/pml/special-publication-811 # 2. CRC Handbook of Chemistry and Physics 70th edition # 3. Oxford English Dictionary # 4. Webster's New Universal Unabridged Dictionary # 5. Units of Measure by Stephen Dresner # 6. A Dictionary of English Weights and Measures by Ronald Zupko # 7. British Weights and Measures by Ronald Zupko # 8. Realm of Measure by Isaac Asimov # 9. United States standards of weights and measures, their # creation and creators by Arthur H. Frazier. # 10. French weights and measures before the Revolution: a # dictionary of provincial and local units by Ronald Zupko # 11. Weights and Measures: their ancient origins and their # development in Great Britain up to AD 1855 by FG Skinner # 12. The World of Measurements by H. Arthur Klein # 13. For Good Measure by William Johnstone # 14. NTC's Encyclopedia of International Weights and Measures # by William Johnstone # 15. Sizes by John Lord # 16. Sizesaurus by Stephen Strauss # 17. CODATA Recommended Values of Physical Constants available at # http://physics.nist.gov/cuu/Constants/index.html # 18. How Many? A Dictionary of Units of Measurement. Available at # http://www.ibiblio.org/units/ # 19. Numericana. http://www.numericana.com # 20. UK history of measurement # https://metrication.uk/more/timeline/ # 21. NIST Handbook 44, Specifications, Tolerances, and # Other Technical Requirements for Weighing and Measuring # Devices. 2011 # 22. NIST Special Publication 447, Weights and Measures Standards # of the United States: a brief history. Lewis V. Judson. # 1963; rev. 1976 # 23. CRC Handbook of Chemistry and Physics, 96th edition # 24. Dictionary of Scientific Units, 6th ed. H.G. Jerrard and D.B. # McNeill. 1992 # 25. NIST Special Publication 330, The International System of # Units (SI). ed. Barry N. Taylor and Ambler Thompson. 2008 # https://www.nist.gov/pml/special-publication-330 # 26. BIPM Brochure, The International System of Units (SI). # 9th ed., 2019 # https://www.bipm.org/en/publications/si-brochure/ # ########################################################################### # # If units you use are missing or defined incorrectly, please contact me. # If your country's local units are missing and you are willing to supply # them, please send me a list. # ########################################################################### ########################################################################### # # Brief Philosophy of this file # # Most unit definitions are made in terms of integers or simple fractions of # other definitions. The typical exceptions are when converting between two # different unit systems, or the values of measured physical constants. In # this file definitions are given in the most natural and revealing way in # terms of integer factors. # # If you make changes be sure to run 'units --check' to check your work. # # The file is USA-centric, but there is some modest effort to support other # countries. This file is now coded in UTF-8. To support environments where # UTF-8 is not available, definitions that require this character set are # wrapped in !utf8 directives. # # When a unit name is used in different countries with the different meanings # the system should be as follows: # # Suppose countries ABC and XYZ both use the "foo". Then globally define # # ABCfoo # XYZfoo # # Then, using the !locale directive, define the "foo" appropriately for each of # the two countries with a definition like # # !locale ABC # foo ABCfoo # !endlocale # ########################################################################### !locale en_US ! set UNITS_ENGLISH US !endlocale !locale en_GB ! set UNITS_ENGLISH GB !endlocale !set UNITS_ENGLISH US # Default setting for English units !set UNITS_SYSTEM default # Set a default value !varnot UNITS_SYSTEM si emu esu gaussian gauss hlu natural natural-gauss hartree planck planck-red default !message Unknown unit system given with -u or UNITS_SYSTEM environment variable !message Valid systems: si, emu, esu, gauss[ian], hlu, natural, natural-gauss !message planck, planck-red, hartree !message Using SI !prompt (SI) !endvar !var UNITS_SYSTEM si !message SI units selected !prompt (SI) !endvar ########################################################################### # # # Primitive units. Any unit defined to contain a '!' character is a # # primitive unit which will not be reduced any further. All units should # # reduce to primitive units. # # # ########################################################################### # # SI units # # On 20 May 2019, the SI was revised to define the units by fixing the # values of physical constants that depend on those units. # # https://www.nist.gov/si-redefinition/ # # The BIPM--the International Bureau of Weights and Measures--provides a # succinct description of the new SI in its Concise Summary: # # https://www.bipm.org/utils/common/pdf/si-brochure/SI-Brochure-9-concise-EN.pdf # # The SI is the system of units in which: # # * the unperturbed ground state hyperfine transition frequency of the # caesium 133 atom is delta nu_Cs = 9 192 631 770 Hz, # * the speed of light in vacuum, c, is 299 792 458 m/s, # * the Planck constant, h, is 6.626 070 15 * 10^-34 J s, # * the elementary charge, e, is 1.602 176 634 * 10^-19 C, # * the Boltzmann constant, k, is 1.380 649 * 10^-23 J/K, # * the Avogadro constant, N_A, is 6.022 140 76 * 10^23 mol^-1, # * the luminous efficacy of monochromatic radiation of frequency # 540 * 10^12 Hz, K_cd, is 683 lm/W, # # where the hertz, joule, coulomb, lumen, and watt, with unit symbols Hz, # J, C, lm, and W, respectively, are related to the units second, metre, # kilogram, ampere, kelvin, mole, and candela, with unit symbols s, m, kg, # A, K, mol, and cd, respectively, according to Hz = s^-1, J = kg m^2 s^-2, # C = A s, lm = cd m^2 m^-2 = cd sr, and W = kg m^2 s^-3. # # These definitions specify the exact numerical value of each constant when # its value is expressed in the corresponding SI unit. By fixing the exact # numerical value the unit becomes defined, since the product of the # numerical value and the unit has to equal the value of the constant, # which is invariant. # # The defining constants have been chosen such that, when taken together, # their units cover all of the units of the SI. In general, there is no # one-to-one correspondence between the defining constants and the SI base # units. Any SI unit is a product of powers of these seven constants and a # dimensionless factor. # # Until 2018, the SI was defined in terms of base units and derived units. # These categories are no longer essential in the SI, but they are maintained # in view of their convenience and widespread use. They are arguably more # intuitive than the new definitions. (They are also essential to the # operation of GNU units.) The definitions of the base units, which follow # from the definition of the SI in terms of the seven defining constants, are # given below. # s ! # The second, symbol s, is the SI unit of time. It is defined second s # by taking the fixed numerical value of the unperturbed # ground-state hyperfine transition frequency of the # cesium-133 atom to be 9 192 631 770 when expressed in the # unit Hz, which is equal to 1/s. # # This definition is a restatement of the previous one, the # duration of 9192631770 periods of the radiation corresponding # to the cesium-133 transition. nu_133Cs 9192631770 Hz # Cesium-133 transition frequency (exact) c_SI 299792458 c 299792458 m/s # speed of light in vacuum (exact) m ! # The metre, symbol m, is the SI unit of length. It is meter m # defined by taking the fixed numerical value of the speed metre m # of light in vacuum, c, to be 299 792 458 when expressed in # units of m/s. # # This definition is a rewording of the previous one and is # equivalent to defining the meter as the distance light # travels in 1|299792458 seconds. The meter was originally # intended to be 1e-7 of the length along a meridian from the # equator to a pole. h_SI 6.62607015e-34 h 6.62607015e-34 J s # Planck constant (exact) kg ! # The kilogram, symbol kg, is the SI unit of mass. It is kilogram kg # defined by taking the fixed numerical value of the Planck # constant, h, to be 6.626 070 15 * 10^-34 when expressed in # the unit J s which is equal to kg m^2 / s. # # One advantage of fixing h to define the kilogram is that this # affects constants used to define the ampere. If the kg were # defined by directly fixing the mass of something, then h # would be subject to error. # # The previous definition of the kilogram was the mass of the # international prototype kilogram. The kilogram was the last # unit whose definition relied on reference to an artifact. # # It is not obvious what this new definition means, or # intuitively how fixing Planck's constant defines the # kilogram. To define the kilogram we need to give the mass # of some reference in kilograms. Previously the prototype in # France served as this reference, and it weighed exactly 1 # kg. But the reference can have any weight as long as you # know the weight of the reference. The new definition uses # the "mass" of a photon, or more accurately, the mass # equivalent of the energy of a photon. The energy of a # photon depends on its frequency. If you pick a frequency, # f, then the energy of the photon is hf, and hence the mass # equivalent is hf/c^2. If we reduce this expression using # the constant defined values for h and c the result is a # value in kilograms for the mass-equivalent of a photon of # frequency f, which can therefore define the size of the # kilogram. # # For more on the relationship between mass an Planck's # constant: # # https://www.nist.gov/si-redefinition/kilogram-mass-and-plancks-constant # This definition may still seem rather abstract: you can't # place a "kilogram of radiation" on one side of a balance. # Metrologists realize the kilogram using a Kibble Balance, a # device which relates mechanical energy to electrical energy # and can measure mass with extreme accuracy if h is known. # # For more on the Kibble Balance see # # https://www.nist.gov/si-redefinition/kilogram-kibble-balance # https://en.wikipedia.org/wiki/Kibble_balance k_SI 1.380649e-23 boltzmann 1.380649e-23 J/K # Boltzmann constant (exact) k boltzmann K ! # The kelvin, symbol K, is the SI unit of thermodynamic kelvin K # temperature. It is defined by taking the fixed numerical # value of the Boltzmann constant, k, to be 1.380 649 * 10^-23 # when expressed in the unit J/K, which is equal to # kg m^2/s^2 K. # # The boltzmann constant establishes the relationship between # energy and temperature. The average thermal energy carried # by each degree of freedom is kT/2. A monatomic ideal gas # has three degrees of freedom corresponding to the three # spatial directions, which means its thermal energy is # (3/2) k T. # # The previous definition of the kelvin was based on the # triple point of water. The change in the definition of the # kelvin will not have much effect on measurement practice. # Practical temperature calibration makes use of two scales, # the International Temperature Scale of 1990 (ITS-90), which # covers the range of 0.65 K to 1357.77K and the Provisional # Low Temperature Scale of 2000 (PLTS-2000), which covers the # range of 0.9 mK to 1 K. # https://www.bipm.org/en/committees/cc/cct/publications-cc.html # # The ITS-90 contains 17 reference points including things # like the triple point of hydrogen (13.8033 K) or the # freezing point of gold (1337.33 K), and of course the triple # point of water. The PLTS-2000 specifies four reference # points, all based on properties of helium-3. # # The redefinition of the kelvin will not affect the values of # these reference points, which have been determined by # primary thermometry, using thermometers that rely only on # relationships that allow temperature to be calculated # directly without using any unknown quantities. Examples # include acoustic thermometers, which measure the speed of # sound in a gas, or electronic thermometers, which measure # tiny voltage fluctuations in resistors. Both variables # depend directly on temperature. e_SI 1.602176634e-19 e 1.602176634e-19 C # electron charge (exact) A ! # The ampere, symbol A, is the SI unit of electric current. ampere A # It is defined by taking the fixed numerical value of the amp ampere # elementary charge, e, to be 1.602 176 634 * 10^-19 when # expressed in the unit C, which is equal to A*s. # # The previous definition was the current which produces a # force of 2e-7 N/m between two infinitely long wires a meter # apart. This definition was difficult to realize accurately. # # The ampere is actually realized by establishing the volt and # the ohm, since A = V / ohm. These measurements can be done # using the Josephson effect and the quantum Hall effect, # which accurately measure voltage and resistance, respectively, # with reference to two fixed constants, the Josephson # constant, K_J=2e/h and the von Klitzing constant, R_K=h/e^2. # Under the previous SI system, these constants had official # fixed values, defined in 1990. This created a situation # where the standard values for the volt and ohm were in some # sense outside of SI because they depended primarily on # constants different from the ones used to define SI. After # the revision, since e and h have exact definitions, the # Josephson and von Klitzing constants will also have exact # definitions that derive from SI instead of the conventional # 1990 values. # # In fact we know that there is a small offset between the # conventional values of the electrical units based on the # conventional 1990 values and the SI values. The new # definition, which brings the practical electrical units back # into SI, will lead to a one time change of +0.1ppm for # voltage values and +0.02ppm for resistance values. # # The previous definition resulted in fixed exact values for # the vacuum permeability (mu0), the impedance of free space # (Z0), the vacuum permittivity (epsilon0), and the Coulomb # constant. With the new definition, these four values are # subject to experimental error. avogadro 6.02214076e23 / mol # Size of a mole (exact) N_A avogadro mol ! # The mole, symbol mol, is the SI unit of amount of mole mol # substance. One mole contains exactly 6.022 140 76 * 10^23 # elementary entities. This number is the fixed numerical # value of the Avogadro constant, N_A, when expressed in the # unit 1/mol and is called the Avogadro number. The amount of # substance, symbol n, of a system is a measure of the number # of specified elementary entities. An elementary entity may # be an atom, a molecule, an ion, an electron, any other # particle or specified group of particles. # # The atomic mass unit (u) is defined as 1/12 the mass of # carbon-12. Previously the mole was defined so that a mole # of carbon-12 weighed exactly 12g, or N_A u = 1 g/mol # exactly. This relationship is now an experimental, # approximate relationship. # # To determine the size of the mole, researchers used spheres # of very pure silicon-28 that weighed a kilogram. They # measured the molar mass of Si-28 using mass spectrometry and # used X-ray diffraction interferometry to determine the # spacing of the silicon atoms in the sphere. Using the # sphere's volume it was then possible to determine the number # of silicon atoms in the sphere, and hence determine the # Avogadro constant. The results of this experiment were used # to define N_A, which is henceforth a fixed, unchanging # quantity. cd ! # The candela, symbol cd, is the SI unit of luminous intensity candela cd # in a given direction. It is defined by taking the fixed # numerical value of the luminous efficacy of monochromatic # radiation of the frequency 540e12 Hz to be 683 when # expressed in the unit lumen/watt, which is equal to # cd sr/W, or cd sr s^3/kg m^2 # # This definition is a rewording of the previous definition. # Luminous intensity differs from radiant intensity (W/sr) in # that it is adjusted for human perceptual dependence on # wavelength. The frequency of 540e12 Hz (yellow; # wavelength approximately 555 nm in vacuum) is where human # perception is most efficient. K_cd 683 lumen/W # Luminous efficiency at 540e12 Hz (exact) # Angular Measure # # The radian and steradian are defined as dimensionless primitive units. # The radian is equal to m/m and the steradian to m^2/m^2 so these units are # dimensionless. Retaining them as named units is useful because it allows # clarity in expressions and makes the meaning of unit definitions more clear. # These units will reduce to 1 in conversions but not for sums of units or for # arguments to functions. # radian !dimensionless # Plane angle subtended at the center of a circle by # an arc equal in length to the radius of the # circle. # Dimension: LENGTH (of arc) / DISTANCE (radius) sr !dimensionless # Solid angle which cuts off an area of the surface steradian sr # of the sphere equal to that of a square with # sides of length equal to the radius of the # sphere. # Dimension: AREA (of surface) / DISTANCE^2 # (radius^2) # # A primitive non-SI unit # bit ! # Basic unit of information (entropy). The entropy in bits # of a random variable over a finite alphabet is defined # to be the sum of -p(i)*log2(p(i)) over the alphabet where # p(i) is the probability that the random variable takes # on the value i. # # Currency: the primitive unit of currency is defined in currency.units. # It is usually the US$ or the euro, but it is user selectable. # # # Absolute value # abs(x) noerror sqrt(x^2) ########################################################################### # # # Prefixes (longer names must come first) # # # ########################################################################### quetta- 1e30 # Allegedly from "q" plus Greek "deka" (ten) ronna- 1e27 # Allegedly from "r" plus Greek "ennea" (nine) yotta- 1e24 # Greek or Latin "octo" (eight) zetta- 1e21 # Latin "septem" (seven) exa- 1e18 # Greek "hex" (six) peta- 1e15 # Greek "pente" (five) tera- 1e12 # Greek "teras" (monster) giga- 1e9 # Greek "gigas" (giant) mega- 1e6 # Greek "megas" (large) myria- 1e4 # Not an official SI prefix kilo- 1e3 # Greek "chilioi" (thousand) hecto- 1e2 # Greek "hekaton" (hundred) deca- 1e1 # Greek "deka" (ten) deka- deca deci- 1e-1 # Latin "decimus" (tenth) centi- 1e-2 # Latin "centum" (hundred) milli- 1e-3 # Latin "mille" (thousand) micro- 1e-6 # Latin "micro" or Greek "mikros" (small) nano- 1e-9 # Latin "nanus" or Greek "nanos" (dwarf) pico- 1e-12 # Spanish "pico" (a bit) femto- 1e-15 # Danish-Norwegian "femten" (fifteen) atto- 1e-18 # Danish-Norwegian "atten" (eighteen) zepto- 1e-21 # Latin "septem" (seven) yocto- 1e-24 # Greek or Latin "octo" (eight) ronto- 1e-27 # Allegedly "r" plus Latin "novum" (nine) quecto- 1e-30 # Allegedly "q" plus Latin "decim" (ten) quarter- 1|4 semi- 0.5 demi- 0.5 hemi- 0.5 half- 0.5 double- 2 triple- 3 treble- 3 kibi- 2^10 # In response to the improper and confusing mebi- 2^20 # use of SI prefixes for powers of two, gibi- 2^30 # the International Electrotechnical tebi- 2^40 # Commission aproved these binary prefixes pebi- 2^50 # in IEC 60027-2 Amendment 2 (1999). exbi- 2^60 zebi- 2^70 # Zebi- and yobi- were added in the 2005 ed., yobi- 2^80 # later superseded by ISO/IEC 80000-13:2008. robi- 2^90 quebi- 2^100 Ki- kibi Mi- mebi Gi- gibi Ti- tebi Pi- pebi Ei- exbi Zi- zebi Yi- yobi Ri- robi Qi- quebi Q- quetta R- ronna Y- yotta Z- zetta E- exa P- peta T- tera G- giga M- mega k- kilo h- hecto da- deka d- deci c- centi m- milli u- micro # it should be a mu but u is easy to type n- nano p- pico f- femto a- atto z- zepto y- yocto r- ronto q- quecto # # Names of some numbers # one 1 two 2 double 2 couple 2 three 3 triple 3 four 4 quadruple 4 five 5 quintuple 5 six 6 seven 7 eight 8 nine 9 ten 10 eleven 11 twelve 12 thirteen 13 fourteen 14 fifteen 15 sixteen 16 seventeen 17 eighteen 18 nineteen 19 twenty 20 thirty 30 forty 40 fifty 50 sixty 60 seventy 70 eighty 80 ninety 90 hundred 100 thousand 1000 million 1e6 twoscore two score threescore three score fourscore four score fivescore five score sixscore six score sevenscore seven score eightscore eight score ninescore nine score tenscore ten score twelvescore twelve score # These number terms were described by N. Chuquet and De la Roche in the 16th # century as being successive powers of a million. These definitions are still # used in most European countries. The current US definitions for these # numbers arose in the 17th century and don't make nearly as much sense. These # numbers are listed in the CRC Concise Encyclopedia of Mathematics by Eric # W. Weisstein. shortbillion 1e9 shorttrillion 1e12 shortquadrillion 1e15 shortquintillion 1e18 shortsextillion 1e21 shortseptillion 1e24 shortoctillion 1e27 shortnonillion 1e30 shortnoventillion shortnonillion shortdecillion 1e33 shortundecillion 1e36 shortduodecillion 1e39 shorttredecillion 1e42 shortquattuordecillion 1e45 shortquindecillion 1e48 shortsexdecillion 1e51 shortseptendecillion 1e54 shortoctodecillion 1e57 shortnovemdecillion 1e60 shortvigintillion 1e63 centillion 1e303 googol 1e100 longbillion million^2 longtrillion million^3 longquadrillion million^4 longquintillion million^5 longsextillion million^6 longseptillion million^7 longoctillion million^8 longnonillion million^9 longnoventillion longnonillion longdecillion million^10 longundecillion million^11 longduodecillion million^12 longtredecillion million^13 longquattuordecillion million^14 longquindecillion million^15 longsexdecillion million^16 longseptdecillion million^17 longoctodecillion million^18 longnovemdecillion million^19 longvigintillion million^20 # These numbers fill the gaps left by the long system above. milliard 1000 million billiard 1000 million^2 trilliard 1000 million^3 quadrilliard 1000 million^4 quintilliard 1000 million^5 sextilliard 1000 million^6 septilliard 1000 million^7 octilliard 1000 million^8 nonilliard 1000 million^9 noventilliard nonilliard decilliard 1000 million^10 # For consistency longmilliard milliard longbilliard billiard longtrilliard trilliard longquadrilliard quadrilliard longquintilliard quintilliard longsextilliard sextilliard longseptilliard septilliard longoctilliard octilliard longnonilliard nonilliard longnoventilliard noventilliard longdecilliard decilliard # The long centillion would be 1e600. The googolplex is another # familiar large number equal to 10^googol. These numbers give overflows. # # The short system prevails in English speaking countries # billion shortbillion trillion shorttrillion quadrillion shortquadrillion quintillion shortquintillion sextillion shortsextillion septillion shortseptillion octillion shortoctillion nonillion shortnonillion noventillion shortnoventillion decillion shortdecillion undecillion shortundecillion duodecillion shortduodecillion tredecillion shorttredecillion quattuordecillion shortquattuordecillion quindecillion shortquindecillion sexdecillion shortsexdecillion septendecillion shortseptendecillion octodecillion shortoctodecillion novemdecillion shortnovemdecillion vigintillion shortvigintillion # # Numbers used in India # lakh 1e5 crore 1e7 arab 1e9 kharab 1e11 neel 1e13 padm 1e15 shankh 1e17 ############################################################################# # # # Derived units which can be reduced to the primitive units # # # ############################################################################# # # Named SI derived units (officially accepted) # newton kg m / s^2 # force N newton pascal N/m^2 # pressure or stress Pa pascal joule N m # energy J joule watt J/s # power W watt coulomb A s # charge C coulomb volt W/A # potential difference V volt ohm V/A # electrical resistance siemens A/V # electrical conductance S siemens farad C/V # capacitance F farad weber V s # magnetic flux Wb weber henry V s / A # inductance, also Wb/A, but needs to be H henry # defined this way for CGS units tesla Wb/m^2 # magnetic flux density T tesla hertz /s # frequency Hz hertz # # Dimensions. These are here to help with dimensional analysis and # because they will appear in the list produced by hitting '?' at the # "You want:" prompt to tell the user the dimension of the unit. # LENGTH meter AREA LENGTH^2 VOLUME LENGTH^3 MASS kilogram AMOUNT mole ANGLE radian SOLID_ANGLE steradian MONEY US$ FORCE newton PRESSURE FORCE / AREA STRESS FORCE / AREA FREQUENCY hertz WAVELENGTH LENGTH WAVENUMBER 1/WAVELENGTH # number of waves per distance VELOCITY DISPLACEMENT / TIME # a vector (includes direction) SPEED DISTANCE / TIME # a scalar ACCELERATION VELOCITY / TIME MOMENTUM MASS VELOCITY # Also ENERGY / VELOCITY or IMPULSE IMPULSE FORCE TIME DISPLACEMENT LENGTH DISTANCE LENGTH ELONGATION LENGTH STRAIN ELONGATION / LENGTH ENERGY joule POWER watt WORK FORCE DISTANCE DENSITY MASS / VOLUME LINEAR_DENSITY MASS / LENGTH SPECIFIC_ENERGY ENERGY / MASS VISCOSITY FORCE TIME / AREA KINEMATIC_VISCOSITY VISCOSITY / DENSITY CURRENT ampere CHARGE coulomb CAPACITANCE farad RESISTANCE ohm CONDUCTANCE siemens # It may be easier to understand the relationship by considering # an object with specified dimensions and resistivity, whose # resistance is given by the resistivity * length / area. RESISTIVITY RESISTANCE AREA / LENGTH CONDUCTIVITY CONDUCTANCE LENGTH / AREA INDUCTANCE henry E_FIELD ELECTRIC_POTENTIAL / LENGTH B_FIELD tesla # The D and H fields are related to the E and B fields by factors of # epsilon and mu respectively, so their units can be found by # multiplying/dividing by the epsilon0 and mu0. The more complex # definitions below make it possible to use D_FIELD and E_FIELD to # convert between SI and CGS units for these dimensions. D_FIELD E_FIELD epsilon0 / epsilon0_SI # mu0_SI c^2 F / m H_FIELD B_FIELD / (mu0/mu0_SI) ELECTRIC_DIPOLE_MOMENT C m MAGNETIC_DIPOLE_MOMENT J / T POLARIZATION ELECTRIC_DIPOLE_MOMENT / VOLUME MAGNETIZATION MAGNETIC_DIPOLE_MOMENT / VOLUME ELECTRIC_POTENTIAL ENERGY / CHARGE #volt VOLTAGE ELECTRIC_POTENTIAL E_FLUX E_FIELD AREA D_FLUX D_FIELD AREA B_FLUX B_FIELD AREA H_FLUX H_FIELD AREA # # units derived easily from SI units # gram millikg gm gram g gram tonne 1000 kg t tonne metricton tonne sthene tonne m / s^2 funal sthene pieze sthene / m^2 quintal 100 kg bar 1e5 Pa # About 1 atm b bar vac millibar micron micrometer # One millionth of a meter bicron picometer # One brbillionth of a meter cc cm^3 are 100 m^2 a are liter 1000 cc # The liter was defined in 1901 as the oldliter 1.000028 dm^3 # space occupied by 1 kg of pure water at L liter # the temperature of its maximum density l liter # under a pressure of 1 atm. This was # supposed to be 1000 cubic cm, but it # was discovered that the original # measurement was off. In 1964, the # liter was redefined to be exactly 1000 # cubic centimeters. Ah amp hour # Unit of charge mho siemens # Inverse of ohm, hence ohm spelled backward galvat ampere # Named after Luigi Galvani angstrom 1e-10 m # Convenient for describing molecular sizes xunit xunit_cu # Used for measuring x-ray wavelengths. siegbahn xunit # Originally defined to be 1|3029.45 of xunit_cu 1.00207697e-13 m # the spacing of calcite planes at 18 xunit_mo 1.00209952e-13 m # degC. It was intended to be exactly # 1e-13 m, but was later found to be # slightly off. Current usage is with # reference to common x-ray lines, either # the K-alpha 1 line of copper or the # same line of molybdenum. angstromstar 1.00001495 angstrom # Defined by JA Bearden in 1965 to replace # the X unit. The wavelength of the # tungsten K alpha1 line was defined as # exactly 0.20901 angstrom star, with the # value chosen to try to make the new # unit close to the angstrom. silicon_d220 1.920155716e-10 m # Silicon lattice spacing siliconlattice sqrt(8) silicon_d220# Silicon lattice parameter, (a), the side # length of the unit cell for the diamond # centered cubic structure of silicon. fermi 1e-15 m # Convenient for describing nuclear sizes # Nuclear radius is from 1 to 10 fermis barn 1e-28 m^2 # Used to measure cross section for # particle physics collision, said to # have originated in the phrase "big as # a barn". shed 1e-24 barn # Defined to be a smaller companion to the # barn, but it's too small to be of # much use. brewster micron^2/N # measures stress-optical coef diopter /m # measures reciprocal of lens focal length fresnel 1e12 Hz # occasionally used in spectroscopy shake 1e-8 sec svedberg 1e-13 s # Used for measuring the sedimentation # coefficient for centrifuging. gamma microgram # Also used for 1e-9 tesla lambda microliter spat 1e12 m # Rarely used for astronomical measurements preece 1e13 ohm m # resistivity planck J s # action of one joule over one second sturgeon /henry # magnetic reluctance daraf 1/farad # elastance (farad spelled backwards) leo 10 m/s^2 poiseuille N s / m^2 # viscosity mayer J/g K # specific heat mired / microK # reciprocal color temperature. The name # abbreviates micro reciprocal degree. crocodile megavolt # used informally in UK physics labs metricounce 25 g mounce metricounce finsenunit 1e5 W/m^2 # Measures intensity of ultraviolet light # with wavelength 296.7 nm. fluxunit 1e-26 W/m^2 Hz # Used in radio astronomy to measure # the energy incident on the receiving # body across a specified frequency # bandwidth. [12] jansky fluxunit # K. G. Jansky identified radio waves coming Jy jansky # from outer space in 1931. flick W / cm^2 sr micrometer # Spectral radiance or irradiance pfu / cm^2 sr s # particle flux unit -- Used to measure # rate at which particles are received by # a spacecraft as particles per solid # angle per detector area per second. [18] pyron cal_IT / cm^2 min # Measures heat flow from solar radiation, # from Greek work "pyr" for fire. katal mol/sec # Measure of the amount of a catalyst. One kat katal # katal of catalyst enables the reaction # to consume or produce one mol/sec. solarluminosity 382.8e24 W # A common yardstick for comparing the # output of different stars. # http://nssdc.gsfc.nasa.gov/planetary/factsheet/sunfact.html # at mean Earth-Sun distance solarirradiance solarluminosity / (4 pi sundist^2) solarconstant solarirradiance TSI solarirradiance # total solar irradiance # # time # sec s minute 60 s min minute hour 60 min hr hour day 24 hr d day da day week 7 day wk week sennight 7 day fortnight 14 day blink 1e-5 day # Actual human blink takes 1|3 second ce 1e-2 day cron 1e6 years watch 4 hours # time a sentry stands watch or a ship's # crew is on duty. bell 1|8 watch # Bell would be sounded every 30 minutes. # French Revolutionary Time or Decimal Time. It was Proposed during # the French Revolution. A few clocks were made, but it never caught # on. In 1998 Swatch defined a time measurement called ".beat" and # sold some watches that displayed time in this unit. decimalhour 1|10 day decimalminute 1|100 decimalhour decimalsecond 1|100 decimalminute beat decimalminute # Swatch Internet Time # # angular measure # circle 2 pi radian degree 1|360 circle deg degree arcdeg degree arcmin 1|60 degree arcminute arcmin ' arcmin arcsec 1|60 arcmin arcsecond arcsec " arcsec '' " rightangle 90 degrees quadrant 1|4 circle quintant 1|5 circle sextant 1|6 circle sign 1|12 circle # Angular extent of one sign of the zodiac turn circle revolution turn rev turn pulsatance radian / sec gon 1|100 rightangle # measure of grade grade gon centesimalminute 1|100 grade centesimalsecond 1|100 centesimalminute milangle 1|6400 circle # Official NIST definition. # Another choice is 1e-3 radian. pointangle 1|32 circle # Used for reporting compass readings centrad 0.01 radian # Used for angular deviation of light # through a prism. mas milli arcsec # Used by astronomers seclongitude circle (seconds/day) # Astronomers measure longitude # (which they call right ascension) in # time units by dividing the equator into # 24 hours instead of 360 degrees. # # Some geometric formulas # circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi) spherevolume(r) units=[m;m^3] range=[0,) 4|3 pi r^3 ; \ cuberoot(spherevolume/4|3 pi) spherevol() spherevolume square(x) range=[0,) x^2 ; sqrt(square) # # Solid angle measure # sphere 4 pi sr squaredegree 1|180^2 pi^2 sr squareminute 1|60^2 squaredegree squaresecond 1|60^2 squareminute squarearcmin squareminute squarearcsec squaresecond sphericalrightangle 1|8 sphere octant 1|8 sphere # # Concentration measures # percent 0.01 % percent mill 0.001 # Originally established by Congress in 1791 # as a unit of money equal to 0.001 dollars, # it has come to refer to 0.001 in general. # Used by some towns to set their property # tax rate, and written with a symbol similar # to the % symbol but with two 0's in the # denominator. [18] proof 1|200 # Alcohol content measured by volume at # 60 degrees Fahrenheit. This is a USA # measure. In Europe proof=percent. ppm 1e-6 partspermillion ppm ppb 1e-9 partsperbillion ppb # USA billion ppt 1e-12 partspertrillion ppt # USA trillion karat 1|24 # measure of gold purity caratgold karat gammil mg/l basispoint 0.01 % # Used in finance fine 1|1000 # Measure of gold purity # The pH scale is used to measure the concentration of hydronium (H3O+) ions in # a solution. A neutral solution has a pH of 7 as a result of dissociated # water molecules. pH(x) units=[1;mol/liter] range=(0,) 10^(-x) mol/liter ; (-log(pH liters/mol)) # # Temperature # # Two types of units are defined: units for converting temperature differences # and functions for converting absolute temperatures. Conversions for # differences start with "deg" and conversions for absolute temperature start # with "temp". # # If the temperature inside is 72 degrees Fahrenheit and you want to # convert this to degrees Celsius then you need absolute temperature: # # You have: tempF(72) # You want: tempC # 22.222222 # # If the temperature rose 72 degrees Fahrenheit during the chemical reaction # then this is a temperature difference: # # You have: 72 degF # You want: degC # * 40 # / 0.025 # TEMPERATURE kelvin TEMPERATURE_DIFFERENCE kelvin # In 1741 Anders Celsius introduced a temperature scale with water boiling at # 0 degrees and freezing at 100 degrees at standard pressure. After his death # the fixed points were reversed and the scale was called the centigrade # scale. Due to the difficulty of accurately measuring the temperature of # melting ice at standard pressure, the centigrade scale was replaced in 1954 # by the Celsius scale which is defined by subtracting 273.15 from the # temperature in Kelvins. This definition differed slightly from the old # centigrade definition, but the Kelvin scale depends on the triple point of # water rather than a melting point, so it can be measured accurately. tempC(x) units=[1;K] domain=[-273.15,) range=[0,) \ x K + stdtemp ; (tempC +(-stdtemp))/K tempcelsius() tempC degcelsius K degC K # Fahrenheit defined his temperature scale by setting 0 to the coldest # temperature he could produce in his lab with a salt water solution and by # setting 96 degrees to body heat. In Fahrenheit's words: # # Placing the thermometer in a mixture of sal ammoniac or sea # salt, ice, and water a point on the scale will be found which # is denoted as zero. A second point is obtained if the same # mixture is used without salt. Denote this position as 30. A # third point, designated as 96, is obtained if the thermometer # is placed in the mouth so as to acquire the heat of a healthy # man." (D. G. Fahrenheit, Phil. Trans. (London) 33, 78, 1724) tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \ (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 tempfahrenheit() tempF degfahrenheit 5|9 degC degF 5|9 degC degreesrankine degF # The Rankine scale has the degrankine degreesrankine # Fahrenheit degree, but its zero degreerankine degF # is at absolute zero. degR degrankine tempR degrankine temprankine degrankine tempreaumur(x) units=[1;K] domain=[-218.52,) range=[0,) \ x degreaumur+stdtemp ; (tempreaumur+(-stdtemp))/degreaumur degreaumur 10|8 degC # The Reaumur scale was used in Europe and # particularly in France. It is defined # to be 0 at the freezing point of water # and 80 at the boiling point. Reaumur # apparently selected 80 because it is # divisible by many numbers. degK K # "Degrees Kelvin" is forbidden usage. tempK K # For consistency # Gas mark is implemented below but in a terribly ugly way. There is # a simple formula, but it requires a conditional which is not # presently supported. # # The formula to convert to degrees Fahrenheit is: # # 25 log2(gasmark) + k_f gasmark<=1 # 25 (gasmark-1) + k_f gasmark>=1 # # k_f = 275 # gasmark[degR] \ .0625 634.67 \ .125 659.67 \ .25 684.67 \ .5 709.67 \ 1 734.67 \ 2 759.67 \ 3 784.67 \ 4 809.67 \ 5 834.67 \ 6 859.67 \ 7 884.67 \ 8 909.67 \ 9 934.67 \ 10 959.67 # The Beaufort wind force scale was developed from 1805-1807 by Sir Francis # Beaufort to categorize wind conditions at sea. It is normally defined from # Beaufort 0, also called "Force 0," through Beaufort 12. Beaufort numbers # 13-17 were later defined for tropical cyclones but are rarely used. The # original Beaufort scale was qualitative and did not relate directly to wind # speed. In 1906, George Simpson of the British Met Office fit wind-speed # measurements to visual Beaufort estimates made from five coastal and inland # stations in Britain. Simpson's formula was adopted by the World Meterological # Organization in 1946 to produce a table, known as WMO Code 1100, giving mean # (and min/max) wind speed equivalents at a height of 10 meters for each # Beaufort number. This is the "operational" Beaufort scale that mariners # use. Meterological and climatic researchers typically use a "scientific" # Beaufort scale based on more recent and comprehensive fits. See Wallbrink and # Cook, Historical Wind Speed Equivalents Of The Beaufort Scale, 1850-1950, at # https://icoads.noaa.gov/reclaim/pdf/Hisklim13.pdf # beaufort_WMO1100(B) units=[1;m/s] domain=[0,17] range=[0,) \ 0.836 B^3|2 m/s; (beaufort_WMO1100 s / 0.836 m)^2|3 beaufort(B) units=[1;m/s] domain=[0,17] range=[0,) \ beaufort_WMO1100(B); ~beaufort_WMO1100(beaufort) # Units cannot handle wind chill or heat index because they are two-variable # functions, but they are included here for your edification. Clearly these # equations are the result of a model fitting operation. # # wind chill index (WCI) a measurement of the combined cooling effect of low # air temperature and wind on the human body. The index was first defined # by the American Antarctic explorer Paul Siple in 1939. As currently used # by U.S. meteorologists, the wind chill index is computed from the # temperature T (in deg F) and wind speed V (in mi/hr) using the formula: # WCI = 0.0817(3.71 sqrt(V) + 5.81 - 0.25V)(T - 91.4) + 91.4. # For very low wind speeds, below 4 mi/hr, the WCI is actually higher than # the air temperature, but for higher wind speeds it is lower than the air # temperature. # # heat index (HI or HX) a measure of the combined effect of heat and # humidity on the human body. U.S. meteorologists compute the index # from the temperature T (in deg F) and the relative humidity H (as a # value from 0 to 1). # HI = -42.379 + 2.04901523 T + 1014.333127 H - 22.475541 TH # - .00683783 T^2 - 548.1717 H^2 + 0.122874 T^2 H + 8.5282 T H^2 # - 0.0199 T^2 H^2. # # Physical constants # # Basic constants pi 3.14159265358979323846 tau 2 pi phi (sqrt(5)+1)/2 light c coulombconst alpha hbar c / e^2 # Coulomb constant k_C coulombconst # Gets overridden in CGS modes k_C_SI alpha hbar_SI c_SI / e_SI^2 epsilon0_SI 1 / 4 pi k_C_SI # Vacuum electric permittivity epsilon0 1 / 4 pi k_C # Also overridden in CGS modes mu0_SI 1 / epsilon0_SI c_SI^2 # Vacuum magnetic permeability mu0 1 / epsilon0 c^2 # Also overridden in CGS modes Z0 4 pi k_C / c # Free space impedance energy c^2 # Convert mass to energy hbar h / 2 pi hbar_SI h_SI / 2 pi spin hbar G_SI 6.67430e-11 G 6.67430e-11 N m^2 / kg^2 # Newtonian gravitational constant # Physico-chemical constants atomicmassunit_SI 1.66053906660e-27 # Unified atomic mass unit, defined as atomicmassunit 1.66053906660e-27 kg # Unified atomic mass unit, defined as u atomicmassunit # 1|12 of the mass of carbon 12. amu atomicmassunit # The relationship N_A u = 1 g/mol dalton u # is approximately, but not exactly Da dalton # true (with the 2019 SI). # Previously the mole was defined to # make this relationship exact. amu_chem 1.66026e-27 kg # 1|16 of the weighted average mass of # the 3 naturally occuring neutral # isotopes of oxygen amu_phys 1.65981e-27 kg # 1|16 of the mass of a neutral # oxygen 16 atom gasconstant k N_A # Molar gas constant (exact) R gasconstant kboltzmann boltzmann molarvolume R stdtemp / atm # Volume occupied by one mole of an V_m molarvolume # ideal gas at STP. (exact) loschmidt avogadro / molarvolume # Molecules per cubic meter of an n0 loschmidt # ideal gas at STP. Loschmidt did # work similar to Avogadro. molarvolume_si N_A siliconlattice^3 / 8 # Volume of a mole of crystalline # silicon. The unit cell contains 8 # silicon atoms and has a side # length of siliconlattice. stefanboltzmann pi^2 k^4 / 60 hbar^3 c^2 # The power per area radiated by a sigma stefanboltzmann # blackbody at temperature T is # given by sigma T^4. (exact) wiendisplacement (h c/k)/4.9651142317442763 # Wien's Displacement Law gives # the frequency at which the # Planck spectrum has maximum # intensity. The relation is lambda # T = b where lambda is wavelength, # T is temperature and b is the Wien # displacement. This relation is # used to determine the temperature # of stars. The constant is the # solution to x=5(1-exp(-x)). # This expression has no experimental # error, and x is defined exactly # by the equation above, so it is # an exact definition. K_J90 483597.9 GHz/V # Direct measurement of the volt is difficult. Until K_J 2e/h # recently, laboratories kept Weston cadmium cells as # a reference, but they could drift. In 1987 the # CGPM officially recommended the use of the # Josephson effect as a laboratory representation of # the volt. The Josephson effect occurs when two # superconductors are separated by a thin insulating # layer. A "supercurrent" flows across the insulator # with a frequency that depends on the potential # applied across the superconductors. This frequency # can be very accurately measured. The Josephson # constant K_J relates the measured frequency to the # potential. Two values given, the conventional # (exact) value from 1990, which was used until the # 2019 SI revision, and the current exact value. R_K90 25812.807 ohm # Measurement of the ohm also presents difficulties. R_K h/e^2 # The old approach involved maintaining resistances # that were subject to drift. The new standard is # based on the Hall effect. When a current carrying # ribbon is placed in a magnetic field, a potential # difference develops across the ribbon. The ratio # of the potential difference to the current is # called the Hall resistance. Klaus von Klitzing # discovered in 1980 that the Hall resistance varies # in discrete jumps when the magnetic field is very # large and the temperature very low. This enables # accurate realization of the resistance h/e^2 in the # lab. The 1990 value was an exact conventional # value used until the SI revision in 2019. This value # did not agree with measurements. The new value # is exact. # The 2019 update to SI gives exact definitions for R_K and K_J. Previously # the electromagnetic units were realized using the 1990 conventional values # for these constants, and as a result, the standard definitions were in some # sense outside of SI. The revision corrects this problem. The definitions # below give the 1990 conventional values for the electromagnetic units in # terms of 2019 SI. ampere90 (K_J90 R_K90 / K_J R_K) A coulomb90 (K_J90 R_K90 / K_J R_K) C farad90 (R_K90/R_K) F henry90 (R_K/R_K90) H ohm90 (R_K/R_K90) ohm volt90 (K_J90/K_J) V watt90 (K_J90^2 R_K90 / K_J^2 R_K) W # Various conventional values gravity 9.80665 m/s^2 # std acceleration of gravity (exact) # Established by the 3rd CGPM in # 1901. This is a nominal midrange # value, originally based on the # acceleration of a body at sea # level at 45 degrees latitude. # The value was actually determined # by measuring at the International # Bureau and correcting the # measurement by a theoretical # cofficient to get the 45 deg # latitude sea level value. # (Wikipedia: Standard gravity) force gravity # use to turn masses into forces atm 101325 Pa # Standard atmospheric pressure atmosphere atm Hg 13.5951 gram force / cm^3 # Standard weight of mercury (exact) water gram force/cm^3 # Standard weight of water (exact) waterdensity gram / cm^3 # Density of water H2O water wc water # water column mach 331.46 m/s # speed of sound in dry air at STP standardtemp 273.15 K # standard temperature stdtemp standardtemp normaltemp tempF(70) # for gas density, from NIST normtemp normaltemp # Handbook 44 # Weight of mercury and water at different temperatures using the standard # force of gravity. Hg10C 13.5708 force gram / cm^3 # These units, when used to form Hg20C 13.5462 force gram / cm^3 # pressure measures, are not accurate Hg23C 13.5386 force gram / cm^3 # because of considerations of the Hg30C 13.5217 force gram / cm^3 # revised practical temperature scale. Hg40C 13.4973 force gram / cm^3 Hg60F 13.5574 force gram / cm^3 H2O0C 0.99987 force gram / cm^3 H2O5C 0.99999 force gram / cm^3 H2O10C 0.99973 force gram / cm^3 H2O15C 0.99913 force gram / cm^3 H2O18C 0.99862 force gram / cm^3 H2O20C 0.99823 force gram / cm^3 H2O25C 0.99707 force gram / cm^3 H2O50C 0.98807 force gram / cm^3 H2O100C 0.95838 force gram / cm^3 # Atomic constants hartree 4.3597447222071e-18 J # Approximate electric potential energy E_h hartree # of the hydrogen atom in its ground # state, and approximately twice its # ionization energy. The hartree # energy is traditionally defined as # coulombconst^2 m_e e^4 / hbar^2, # but it can be measured to greater # precision using the relationship # hartree = 2 h c Rinfinity # because Rinfinity is one of the # most accurately measured physical # constants. Because h and c are # exact we can choose either hartree # or Rinfinity from CODATA to use as # the primary value without # affecting the precision. Rinfinity hartree / 2 h c # The wavelengths of a spectral series R_H Rinfinity m_p / (m_e + m_p) # can be expressed as # 1/lambda = R (1/m^2 - 1/n^2). # where R is a number that various # slightly from element to element. # For hydrogen, R_H is the value, # and for heavy elements, the value # approaches Rinfinity, which can be # computed from # Rinfinity = m_e c alpha^2 / 2 h # with loss of precision. Rinfinity # is one of the most accurately # measured physical constants and is # known to higher precision than m_e # or alpha. alpha 7.2973525693e-3 # The fine structure constant was # introduced to explain fine # structure visible in spectral # lines. bohrradius hbar / alpha m_e c a0 bohrradius prout 185.5 keV # nuclear binding energy equal to 1|12 # binding energy of the deuteron conductancequantum e^2 / pi hbar G0 conductancequantum magneticfluxquantum pi hbar / e Phi0 magneticfluxquantum # Particle radius electronradius coulombconst e^2 / electronmass c^2 # Classical deuteronchargeradius 2.12799e-15 m protonchargeradius 0.8751e-15 m # Masses of elementary particles electronmass_SI electronmass_u atomicmassunit_SI electronmass_u 5.48579909065e-4 electronmass 5.48579909065e-4 u m_e electronmass muonmass 0.1134289259 u m_mu muonmass taumass 1.90754 u m_tau taumass protonmass 1.007276466621 u m_p protonmass neutronmass 1.00866491595 u m_n neutronmass deuteronmass 2.013553212745 u # Nucleus of deuterium, one m_d deuteronmass # proton and one neutron alphaparticlemass 4.001506179127 u # Nucleus of He, two protons m_alpha alphaparticlemass # and two neutrons tritonmass 3.01550071621 u # Nucleus of H3, one proton m_t tritonmass # and two neutrons helionmass 3.014932247175 u # Nucleus of He3, two protons m_h helionmass # and one neutron # particle wavelengths: the compton wavelength of a particle is # defined as h / m c where m is the mass of the particle. electronwavelength h / m_e c lambda_C electronwavelength protonwavelength h / m_p c lambda_C,p protonwavelength neutronwavelength h / m_n c lambda_C,n neutronwavelength muonwavelength h / m_mu c lambda_C,mu muonwavelength # The g-factor or dimensionless magnetic moment is a quantity that # characterizes the magnetic moment of a particle. The electron g-factor is # one of the most precisely measured values in physics, with a relative # uncertainty of 1.7e-13. g_d 0.8574382338 # Deuteron g-factor g_e -2.00231930436256 # Electron g-factor g_h -4.255250615 # Helion g-factor g_mu -2.0023318418 # Muon g-factor g_n -3.82608545 # Neutron g-factor g_p 5.5856946893 # Proton g-factor g_t 5.957924931 # Triton g-factor fermicoupling 1.1663787e-5 / GeV^2 # Magnetic moments (derived from the more accurate g-factors) # # The magnetic moment is g * mu_ref * spin where in most cases # the reference is the nuclear magneton, and all of the particles # except the deuteron have spin 1/2. bohrmagneton e hbar / 2 electronmass # Reference magnetic moment for mu_B bohrmagneton # the electron mu_e g_e mu_B / 2 # Electron spin magnet moment mu_mu g_mu mu_B m_e / 2 muonmass # Muon spin magnetic moment nuclearmagneton mu_B m_e / protonmass # Convenient reference magnetic mu_N nuclearmagneton # moment for heavy particles mu_p g_p mu_N / 2 # Proton magnetic moment mu_n g_n mu_N / 2 # Neutron magnetic moment mu_d g_d mu_N # Deuteron magnetic moment, spin 1 mu_t g_t mu_N / 2 # Triton magnetic moment mu_h g_h mu_N / 2 # Helion magnetic moment # # Units derived from physical constants # kgf kg force technicalatmosphere kgf / cm^2 at technicalatmosphere hyl kgf s^2 / m # Also gram-force s^2/m according to [15] mmHg mm Hg torr atm / 760 # The torr, named after Evangelista # Torricelli, and is very close to the mm Hg tor Pa # Suggested in 1913 but seldom used [24]. # Eventually renamed the Pascal. Don't # confuse the tor with the torr. inHg inch Hg inH2O inch water mmH2O mm water eV e V # Energy acquired by a particle with charge e electronvolt eV # when it is accelerated through 1 V lightyear c julianyear # The 365.25 day year is specified in ly lightyear # NIST publication 811 lightsecond c s lightminute c min parsec au / tan(arcsec) # Unit of length equal to distance pc parsec # from the Sun to a point having # heliocentric parallax of 1 # arcsec (derived from parallax # second). A distant object with # parallax theta will be about # (arcsec/theta) parsecs from the # Sun (using the approximation # that tan(theta) = theta). rydberg 1|2 hartree # Rydberg energy crith 0.089885 gram # The crith is the mass of one # liter of hydrogen at standard # temperature and pressure. amagat N_A / molarvolume # Used to measure gas as a number amagatvolume mol molarvolume # density lorentz bohrmagneton / h c # Used to measure the extent # that the frequency of light # is shifted by a magnetic field. cminv h c / cm # Unit of energy used in infrared invcm cminv # spectroscopy. wavenumber 1/cm # kcal_mol kcal_th / mol N_A # kcal/mol is used as a unit of # energy by physical chemists. # # CGS system based on centimeter, gram and second # dyne cm gram / s^2 # force dyn dyne erg cm dyne # energy poise gram / cm s # viscosity, honors Jean Poiseuille P poise rhe /poise # reciprocal viscosity stokes cm^2 / s # kinematic viscosity St stokes stoke stokes lentor stokes # old name Gal cm / s^2 # acceleration, used in geophysics galileo Gal # for Earth's gravitational field # (note that "gal" is for gallon # but "Gal" is the standard symbol # for the gal which is evidently a # shortened form of "galileo".) barye dyne/cm^2 # pressure barad barye # old name kayser 1/cm # Proposed as a unit for wavenumber balmer kayser # Even less common name than "kayser" kine cm/s # velocity bole g cm / s # momentum pond gram force glug gram force s^2 / cm # Mass which is accelerated at # 1 cm/s^2 by 1 gram force darcy centipoise cm^2 / s atm # Measures permeability to fluid flow. # One darcy is the permeability of a # medium that allows a flow of cc/s # of a liquid of centipoise viscosity # under a pressure gradient of # atm/cm. Named for H. Darcy. mobileohm cm / dyn s # mobile ohm, measure of mechanical # mobility mechanicalohm dyn s / cm # mechanical resistance acousticalohm dyn s / cm^5 # ratio of the sound pressure of # 1 dyn/cm^2 to a source of strength # 1 cm^3/s ray acousticalohm rayl dyn s / cm^3 # Specific acoustical resistance eotvos 1e-9 Gal/cm # Change in gravitational acceleration # over horizontal distance # # Electromagnetic CGS Units # # For measuring electromagnetic quantities in SI, we introduce the new base # dimension of current, define the ampere to measure current, and derive the # other electromagnetic units from the ampere. With the CGS units one approach # is to use the basic equations of electromagnetism to define units that # eliminate constants from those equations. Coulomb's law has the form # # F = k_C q1 q2 / r^2 # # where k_C is the Coulomb constant equal to 1|4 pi epsilon0 in SI units. # Ampere's force law takes the form # # dF/dl = 2 k_A I1 I2 / r # # where k_A is the ampere constant. In the CGS system we force either k_C or # k_A to 1 which then defines either a unit for charge or a unit for current. # The other unit then becomes a derived unit. When k_C is 1 the ESU system # results. When k_A is 1 the EMU system results. Note that these parameters # are not independent of each other: Maxwell's equations indicate that # # k_C / k_A = c^2 # # where c is the speed of light. # # One more choice is needed to define a complete system. Using Coulomb's law # we define the electric field as the force per unit charge # # E = k_C 1 / r^2. # # But what about the magnetic field? It is derived from Ampere's law but we # have the option of adding a proportionality constant, k_B, that may have # dimensions: # # B = 2 k_A k_B I / r # # We can choose k_B = 1, which is done in the SI, ESU and EMU systems. But if # instead we give k_B units of length/time then the magnetic field has # the same units as the electric field. This choice leads to the Gaussian # and Heaviside-Lorentz systems. # # The relations above are used to determine the dimensions, but the units are # derived from the base units of CGS, not directly from those formulas. We # will use the notation [unit] to refer to the dimension of the unit in # brackets. This same process gives rise to the SI units such as the tesla, # which is defined by # # [tesla] = [2 (1/4 pi c^2 epsilon0) amp / m] = [(mu0 / 2) amp / m] # # which gives kg / A s^2 as expected. # # References: # # Classical Electrodynamics by John David Jackson, 3rd edition. # Cardarelli, Francois. 1999. Scientific Unit Conversion. 2nd ed. Trans. # M.J. Shields. London: Springer-Verlag. ISBN 1-85233-043-0 # # # All of the CGS systems result in electromagnetic units that involve the square # roots of the centimeter and gram. This requires a change in the primitive # units. # !var UNITS_SYSTEM esu emu gaussian gauss hlu sqrt_cm ! sqrt_centimeter sqrt_cm +m 100 sqrt_cm^2 sqrt_g ! sqrt_gram sqrt_g +kg kilo sqrt_g^2 !endvar # Electrostatic CGS (ESU) # # This system uses the statcoulomb as the fundamental unit of charge, with # derived units that parallel the conventional terminology but use the stat- # prefix. The statcoulomb is derived from Coulomb's law based on the dyne # # dyne = statcoulomb^2 / k_C cm^2. # # and in the EUS system, k_C=1. The statcoulomb is also called the # franklin or esu. # # The ESU system was specified by a committee report in 1873 and rarely used. statcoulomb sqrt(dyne cm^2/k_C) # Charge such that two charges esu statcoulomb # of 1 statC separated by 1 cm statcoul statcoulomb # exert a force of 1 dyne statC statcoulomb stC statcoulomb franklin statcoulomb Fr franklin !var UNITS_SYSTEM esu !message CGS-ESU units selected !prompt (ESU) +coulombconst 1 +epsilon0 1 / k_C # SI relation: 1 / 4 pi k_C +A 10 c_SI statamp !endvar statampere statcoulomb / s statamp statampere statA statampere stA statampere statvolt dyne cm / statamp sec statV statvolt stV statvolt statfarad statamp sec / statvolt statF statfarad stF statfarad cmcapacitance statfarad stathenry statvolt sec / statamp statH stathenry stH stathenry statohm statvolt / statamp stohm statohm statmho /statohm stmho statmho statweber statvolt sec statWb statweber stWb statweber stattesla statWb/cm^2 # Defined by analogy with SI; rarely statT stattesla # if ever used stT stattesla debye 1e-10 statC angstrom # unit of electrical dipole moment helmholtz debye/angstrom^2 # Dipole moment per area jar 1000 statfarad # approx capacitance of Leyden jar # Electromagnetic CGS (EMU) # # The abampere is the fundamental unit of this system, with the derived units # using the ab- prefix. The dimensions of the abampere are defined by assuming # that k_A=1, which # # [dyne / cm] = [2 abampere^2 / cm] # # where the brackets indicate taking the dimension of the unit in base units # and discarding any constant factors. This results in the definition from # base CGS units of: # # abampere = sqrt(dyne). # # The abampere is also called the biot. The magnetic field unit (the gauss) # follows from the assumption that k_B=1, which means # # B = 2 I / r, # # and hence the dimensions of the gauss are given by # # [gauss] = [2 abampere / cm] # # or rewriting in terms of the base units # # gauss = abampere / cm. # # The definition given below is different because it is in a form that # gives a valid reduction for SI and ESU and still gives the correct # result in EMU. (It can be derived from Faraday's law.) # # The EMU system was developed by Gauss and Weber and formalized as a system in # a committee report by the British Association for the Advancement of Science # in 1873. abampere 10 A # Current which produces a force of abamp abampere # 2 dyne/cm between two infinitely aA abampere # long wires that are 1 cm apart abA abampere biot abampere Bi biot !var UNITS_SYSTEM emu !message CGS-EMU units selected !prompt (EMU) +coulombconst c^2 +epsilon0 1 / k_C # SI relation: 1 / 4 pi k_C +abampere sqrt(dyne) +A 0.1 abamp !endvar abcoulomb abamp sec abcoul abcoulomb abC abcoulomb abfarad abampere sec / abvolt abF abfarad abhenry abvolt sec / abamp abH abhenry abvolt dyne cm / abamp sec abV abvolt abohm abvolt / abamp abmho /abohm maxwell erg / abamp # Also called the "line" Mx maxwell gauss maxwell / cm^2 # The magnetic field 2 cm from a wire Gs gauss # carrying a current of 1 abampere oersted gauss / mu0 # From the relation H = B / mu Oe oersted gilbert gauss cm / mu0 Gb gilbert Gi gilbert unitpole 4 pi maxwell # unit magnetic pole emu erg/gauss # "electro-magnetic unit", a measure of # magnetic moment, often used as emu/cm^3 # to specify magnetic moment density. # Electromagnetic CGS (Gaussian) # # The Gaussian system uses the statcoulomb and statamp from the ESU system # derived by setting k_C=1, but it defines the magnetic field unit differently # by taking k_B=c instead of k_B=1. As noted above, k_C and k_A are not # independent. With k_C=1 we must have k_A=c^-2. This results in the magnetic # field unit, the gauss, having dimensions give by: # # [gauss] = [2 (c^-2) c statamp / cm] = [statamp / c cm] # # We then define the gauss using base CGS units to obtain # # gauss = statamp / ((cm/s) cm) = statcoulomb / cm^2. # # Note that this definition happens to give the same result as the definition # for the EMU system, so the definitions of the gauss are consistent. # # This definition gives the same dimensions for the E and B fields and was also # known as the "symmetric system". This system was proposed by Hertz in 1888. !var UNITS_SYSTEM gaussian gauss !message CGS-Gaussian units selected !prompt (Gaussian) !endvar !var UNITS_SYSTEM gaussian gauss natural-gauss +coulombconst 1 +A 10 c_SI statamp # Some SI-based definitions need re-scaling # by factors of "c" and/or "4 pi": +epsilon0 1 / k_C # SI relation: 1 / 4 pi k_C +mu0 1 / epsilon0 # SI relation: 1 / epsilon0 c^2 +bohrmagneton (e hbar / 2 electronmass) / c +magneticfluxquantum c (pi hbar / e) +maxwell c (erg / abamp) +weber c (J / A) !endvar # Electromagnetic CGS (Heaviside-Lorentz) # The Heaviside-Lorentz system is similar to the Gaussian system, but it is # "rationalized" so that factors of 4 pi do not appear in Maxwell's equations. # The SI system is similarly rationalized, but the other CGS systems are not. # # The factor of 4 pi appears instead in Coulomb's law, so in this system # k_C = 1 / 4 pi, which means the charge unit is defined by # # dyne = (1 / 4 pi) hlu_charge^2 / cm^2. # # Since we have the leading constant of (1 / 4pi) the numerical value of the # charge number is larger by sqrt(4pi), which in turns means that the HLU # charge unit is smaller by this multiple. But note that the dimensions of the # charge unit are the same as the Gaussian system, so both systems measure # charge with cm^(3/2) g^(1/2) / s, but the amount of charge for this dimension # differs by a factor of sqrt(4pi) between the two systems. # # Ampere's law for the Heaviside-Lorentz system has the form # # B = 1/(2 pi c) * I/r # The Heaviside-Lorentz system does not appear to have any named units, so we # use "hlu" for "Heaviside-Lorentz unit" so we can define values for the basic # units in this system. hlu_charge statcoulomb / sqrt(4 pi) hlu_current hlu_charge / sec hlu_volt erg / hlu_charge hlu_efield hlu_volt / cm hlu_bfield sqrt(4 pi) gauss !var UNITS_SYSTEM hlu !message CGS-Heaviside-Lorentz Units selected !prompt (HLU) !endvar !var UNITS_SYSTEM hlu natural planck planck-red +coulombconst 1 / 4 pi +A 10 c_SI statamp # Some SI-based magnetism definitions # need re-scaling by factors of "c": +mu0 1 / epsilon0 # SI relation: 1 / epsilon0 c^2 +bohrmagneton (e hbar / 2 electronmass) / c +magneticfluxquantum c (pi hbar / e) +weber c (J / A) +maxwell c (erg / abamp) !endvar # "Natural units" (high energy physics and cosmology) # # In particle physics "natural units" (which don't seem to have a more specific # name) are defined by setting hbar = c = boltzmann = 1. In this system the # electron volt is the only base unit. The electromagnetic units can be # derived from the rationalized Heaviside-Lorentz units or from Gaussian units. # The default form is the rationalized HLU derived version. # # The basic mechanical and thermodynamic definitions for the natural # units are identical in both systems. These appear below. The # natural-gauss system has additional electromagnetic redefinitions # that appear above in the "Electromagnetic CGS (Gaussian)" Section. # These are the Heaviside-Lorentz natural units natural_energy eV natural_charge e / sqrt(4 pi alpha) natural_time hbar / natural_energy natural_length natural_time c natural_mass natural_energy / c^2 natural_temp natural_energy / boltzmann natural_force natural_energy / natural_length natural_power natural_energy / natural_time natural_volt natural_energy / natural_charge natural_Efield natural_volt / natural_length natural_Bfield natural_Efield / c natural_current natural_charge / natural_time !var UNITS_SYSTEM natural !message Natural units selected (Heavyside-Lorentz based) !prompt (natural) !endvar !var UNITS_SYSTEM natural-gauss !message Natural units selected (Gaussian based) !prompt (natgauss) !endvar # These definitions are the same in both natural unit systems !var UNITS_SYSTEM natural natural-gauss +eV ! +h 2 pi +c 1 +boltzmann 1 +m e_SI / hbar_SI c_SI eV +kg (c_SI^2 / e_SI) eV +s e_SI / hbar_SI eV +K (k_SI / e_SI) eV !endvar # # Planck units # # Planck units are a set of "natural" units based on physical constants c, G, # hbar, boltzmann's constant, and epsilon0, often used when working with # gravitational theory. In planck units, all quantities are dimensionless. # Some variations are possible for exactly how the units are defined. We # provide two variations, the rationalized planck units and the # rationalized-reduced planck units. # # In both forms the units are defined by c = hbar = boltzmann = 1. # But the choice of rationalized and reduced affects how epsilon0 and G # are treated. # # In the "rationalized" units, factors of 4 pi do not appear in Maxwell's # equation, and Coulomb's law bears a factor of 1/4 pi. See the section on # the Heaviside-Lorentz units for more about this. The choice of rationalized # units means that epsilon0 = 1. (In the unrationalized case, which is not # supported, 1/(4 pi epsilon0) = 1.) # # The "reduced" units similarly are defined to eliminate factors of 8 pi # from the Einstein field equations for gravitation. With reduced units # we set 8 pi G = 1 and with the unreduced units, simply G = 1. # Rationalized, unreduced planck units planckmass sqrt(hbar c / G) m_P planckmass planckenergy planckmass c^2 E_P planckenergy plancktime hbar / planckenergy t_P plancktime plancklength plancktime c l_P plancklength plancktemperature planckenergy / k T_P plancktemperature planckforce planckenergy / plancklength planckcharge sqrt(epsilon0 hbar c) planckcurrent planckcharge / plancktime planckvolt planckenergy / planckcharge planckEfield planckvolt / plancklength planckBfield planckEfield / c # Rationalized, reduced planck units planckmass_red sqrt(hbar c / 8 pi G) planckenergy_red planckmass_red c^2 plancktime_red hbar / planckenergy_red plancklength_red plancktime_red c plancktemperature_red planckenergy_red / k planckforce_red planckenergy_red / plancklength_red planckcharge_red sqrt(epsilon0 hbar c) planckcurrent_red planckcharge_red / plancktime_red planckvolt_red planckenergy_red / planckcharge_red planckEfield_red planckvolt_red / plancklength_red planckBfield_red planckEfield_red /c !var UNITS_SYSTEM planck !message Planck units selected !prompt (planck) +c 1 +h 2 pi +G 1 +boltzmann 1 +kg sqrt(G_SI / hbar_SI c_SI) +s c_SI^2 / hbar_SI kg +m s / c_SI +K k_SI / hbar_SI s !endvar !var UNITS_SYSTEM planck-red !message Reduced planck units selected !prompt (planck reduced) +c 1 +h 2 pi +G 1/8 pi +boltzmann 1 +kg sqrt(8 pi G_SI / hbar_SI c_SI) +s c_SI^2 / hbar_SI kg +m s / c_SI +K k_SI / hbar_SI s !endvar # # Some historical electromagnetic units # intampere 0.999835 A # Defined as the current which in one intamp intampere # second deposits .001118 gram of # silver from an aqueous solution of # silver nitrate. intfarad 0.999505 F intvolt 1.00033 V intohm 1.000495 ohm # Defined as the resistance of a # uniform column of mercury containing # 14.4521 gram in a column 1.063 m # long and maintained at 0 degC. daniell 1.042 V # Meant to be electromotive force of a # Daniell cell, but in error by .04 V faraday N_A e mol # Charge that must flow to deposit or faraday_phys 96521.9 C # liberate one gram equivalent of any faraday_chem 96495.7 C # element. (The chemical and physical faradayconst N_A e # values are off slightly from what is # obtained by multiplying by amu_chem # or amu_phys. These values are from # a 1991 NIST publication.) Note that # there is also a Faraday constant, # which has units of C/mol. kappline 6000 maxwell # Named by and for Gisbert Kapp siemensunit 0.9534 ohm # Resistance of a meter long column of # mercury with a 1 mm cross section. # # Printed circuit board units. # # Iowa State University Center for Nondestructive Evaluation # Electrical Conductivity and Resistivity # https://www.nde-ed.org/Physics/Materials/Physical_Chemical/Electrical.xhtml # # Conductivity is often expressed as a percentage of IACS. A copper wire a # meter long with a 1 mm^2 cross section has a resistance of 1|58 ohm at # 20 deg C. Copper density also has a standard IACS value at that temperature. # copperconductivity 58 siemens m / mm^2 # A wire a meter long with IACS copperconductivity # a 1 mm^2 cross section copperdensity 8.89 g/cm^3 # The "ounce" measures the ouncecopper oz / ft^2 copperdensity # thickness of copper used ozcu ouncecopper # in circuitboard fabrication # # Photometric units # LUMINOUS_INTENSITY candela LUMINOUS_FLUX lumen LUMINOUS_ENERGY talbot ILLUMINANCE lux EXITANCE lux candle 1.02 candela # Standard unit for luminous intensity hefnerunit 0.9 candle # in use before candela hefnercandle hefnerunit # violle 20.17 cd # luminous intensity of 1 cm^2 of # platinum at its temperature of # solidification (2045 K) lumen cd sr # Luminous flux (luminous energy per lm lumen # time unit) talbot lumen s # Luminous energy lumberg talbot # References give these values for lumerg talbot # lumerg and lumberg both. Note that # a paper from 1948 suggests that # lumerg should be 1e-7 talbots so # that lumergs/erg = talbots/joule. # lumerg = luminous erg lux lm/m^2 # Illuminance or exitance (luminous lx lux # flux incident on or coming from phot lumen / cm^2 # a surface) ph phot # footcandle lumen/ft^2 # Illuminance from a 1 candela source # at a distance of one foot metercandle lumen/m^2 # Illuminance from a 1 candela source # at a distance of one meter mcs metercandle s # luminous energy per area, used to # measure photographic exposure nox 1e-3 lux # These two units were proposed for skot 1e-3 apostilb # measurements relating to dark adapted # eyes. # Luminance measures LUMINANCE nit nit cd/m^2 # Luminance: the intensity per projected stilb cd / cm^2 # area of an extended luminous source. sb stilb # (nit is from latin nitere = to shine.) apostilb cd/pi m^2 asb apostilb blondel apostilb # Named after a French scientist. # Equivalent luminance measures. These units are units which measure # the luminance of a surface with a specified exitance which obeys # Lambert's law. (Lambert's law specifies that luminous intensity of # a perfectly diffuse luminous surface is proportional to the cosine # of the angle at which you view the luminous surface.) equivalentlux cd / pi m^2 # luminance of a 1 lux surface equivalentphot cd / pi cm^2 # luminance of a 1 phot surface lambert cd / pi cm^2 footlambert cd / pi ft^2 # The bril is used to express "brilliance" of a source of light on a # logarithmic scale to correspond to subjective perception. An increase of 1 # bril means doubling the luminance. A luminance of 1 lambert is defined to # have a brilliance of 1 bril. bril(x) units=[1;lambert] 2^(x+-100) lamberts ;log2(bril/lambert)+100 # Some luminance data from the IES Lighting Handbook, 8th ed, 1993 sunlum 1.6e9 cd/m^2 # at zenith sunillum 100e3 lux # clear sky sunillum_o 10e3 lux # overcast sky sunlum_h 6e6 cd/m^2 # value at horizon skylum 8000 cd/m^2 # average, clear sky skylum_o 2000 cd/m^2 # average, overcast sky moonlum 2500 cd/m^2 # # Photographic Exposure Value # This section by Jeff Conrad (jeff_conrad@msn.com) # # The Additive system of Photographic EXposure (APEX) proposed in ASA # PH2.5-1960 was an attempt to simplify exposure determination for people who # relied on exposure tables rather than exposure meters. Shortly thereafter, # nearly all cameras incorporated exposure meters, so the APEX system never # caught on, but the concept of exposure value remains in use. Though given as # 'Ev' in ASA PH2.5-1960, it is now more commonly indicated by 'EV'. EV is # related to exposure parameters by # # A^2 LS ES # 2^EV = --- = -- = -- # t K C # # Where # A = Relative aperture (f-number) # t = Exposure time in seconds # L = Scene luminance in cd/m2 # E = Scene illuminance in lux # S = Arithmetic ISO speed # K = Reflected-light meter calibration constant # C = Incident-light meter calibration constant # # Strictly, an exposure value is a combination of aperture and exposure time, # but it's also commonly used to indicate luminance (or illuminance). # Conversion to luminance or illuminance units depends on the ISO speed and the # meter calibration constant. Common practice is to use an ISO speed of 100. # Calibration constants vary among camera and meter manufacturers: Canon, # Nikon, and Sekonic use a value of 12.5 for reflected-light meters, while # Kenko (formerly Minolta) and Pentax use a value of 14. Kenko and Sekonic use # a value of 250 for incident-light meters with flat receptors. # # The values for in-camera meters apply only averaging, weighted-averaging, or # spot metering--the multi-segment metering incorporated in most current # cameras uses proprietary algorithms that evaluate many factors related to the # luminance distribution of what is being metered; they are not amenable to # simple conversions, and are usually not disclosed by the manufacturers. s100 100 / lx s # ISO 100 speed iso100 s100 # Reflected-light meter calibration constant with ISO 100 speed k1250 12.5 (cd/m2) / lx s # For Canon, Nikon, and Sekonic k1400 14 (cd/m2) / lx s # For Kenko (Minolta) and Pentax # Incident-light meter calibration constant with ISO 100 film c250 250 lx / lx s # flat-disc receptor # Exposure value to scene luminance with ISO 100 imaging media # For Kenko (Minolta) or Pentax #ev100(x) units=[;cd/m^2] range=(0,) 2^x k1400 / s100; log2(ev100 s100/k1400) # For Canon, Nikon, or Sekonic ev100(x) units=[1;cd/m^2] range=(0,) 2^x k1250 / s100; log2(ev100 s100/k1250) EV100() ev100 # Exposure value to scene illuminance with ISO 100 imaging media iv100(x) units=[1;lx] range=(0,) 2^x c250 / s100; log2(iv100 s100 / c250) # Other Photographic Exposure Conversions # # As part of APEX, ASA PH2.5-1960 proposed several logarithmic quantities # related by # # Ev = Av + Tv = Bv + Sv # # where # Av = log2(A^2) Aperture value # Tv = log2(1/t) Time value # Sv = log2(N Sx) Speed value # Bv = log2(B S / K) Luminance ("brightness") value # Iv = log2(I S / C) Illuminance value # # and # A = Relative aperture (f-number) # t = Exposure time in seconds # Sx = Arithmetic ISO speed in 1/lux s # B = luminance in cd/m2 # I = luminance in lux # The constant N derives from the arcane relationship between arithmetic # and logarithmic speed given in ASA PH2.5-1960. That relationship # apparently was not obvious--so much so that it was thought necessary # to explain it in PH2.12-1961. The constant has had several values # over the years, usually without explanation for the changes. Although # APEX had little impact on consumer cameras, it has seen a partial # resurrection in the Exif standards published by the Camera & Imaging # Products Association of Japan. #N_apex 2^-1.75 lx s # precise value implied in ASA PH2.12-1961, # derived from ASA PH2.5-1960. #N_apex 0.30 lx s # rounded value in ASA PH2.5-1960, # ASA PH2.12-1961, and ANSI PH2.7-1986 #N_apex 0.3162 lx s # value in ANSI PH2.7-1973 N_exif 1|3.125 lx s # value in Exif 2.3 (2010), making Sv(5) = 100 K_apex1961 11.4 (cd/m2) / lx s # value in ASA PH2.12-1961 K_apex1971 12.5 (cd/m2) / lx s # value in ANSI PH3.49-1971; more common C_apex1961 224 lx / lx s # value in PH2.12-1961 (20.83 for I in # footcandles; flat sensor?) C_apex1971 322 lx / lx s # mean value in PH3.49-1971 (30 +/- 5 for I in # footcandles; hemispherical sensor?) N_speed N_exif K_lum K_apex1971 C_illum C_apex1961 # Units for Photographic Exposure Variables # # Practical photography sometimes pays scant attention to units for exposure # variables. In particular, the "speed" of the imaging medium is treated as if # it were dimensionless when it should have units of reciprocal lux seconds; # this practice works only because "speed" is almost invariably given in # accordance with international standards (or similar ones used by camera # manufacturers)--so the assumed units are invariant. In calculating # logarithmic quantities--especially the time value Tv and the exposure value # EV--the units for exposure time ("shutter speed") are often ignored; this # practice works only because the units of exposure time are assumed to be in # seconds, and the missing units that make the argument to the logarithmic # function dimensionless are silently provided. # # In keeping with common practice, the definitions that follow treat "speeds" # as dimensionless, so ISO 100 speed is given simply as '100'. When # calculating the logarithmic APEX quantities Av and Tv, the definitions # provide the missing units, so the times can be given with any appropriate # units. For example, giving an exposure time of 1 minute as either '1 min' or # '60 s' will result in Tv of -5.9068906. # # Exposure Value from f-number and Exposure Time # # Because nonlinear unit conversions only accept a single quantity, # there is no direct conversion from f-number and exposure time to # exposure value EV. But the EV can be obtained from a combination of # Av and Tv. For example, the "sunny 16" rule states that correct # exposure for a sunlit scene can achieved by using f/16 and an exposure # time equal to the reciprocal of the ISO speed in seconds; this can be # calculated as # # ~Av(16) + ~Tv(1|100 s), # # which gives 14.643856. These conversions may be combined with the # ev100 conversion: # # ev100(~Av(16) + ~Tv(1|100 s)) # # to yield the assumed average scene luminance of 3200 cd/m^2. # convert relative aperture (f-number) to aperture value Av(A) units=[1;1] domain=[-2,) range=[0.5,) 2^(A/2); 2 log2(Av) # convert exposure time to time value Tv(t) units=[1;s] range=(0,) 2^(-t) s; log2(s / Tv) # convert logarithmic speed Sv in ASA PH2.5-1960 to ASA/ISO arithmetic speed; # make arithmetic speed dimensionless # 'Sv' conflicts with the symbol for sievert; you can uncomment this function # definition if you don't need that symbol #Sv(S) units=[1;1] range=(0,) 2^S / (N_speed/lx s); log2((N_speed/lx s) Sv) Sval(S) units=[1;1] range=(0,) 2^S / (N_speed/lx s); log2((N_speed/lx s) Sval) # convert luminance value Bv in ASA PH2.12-1961 to luminance Bv(x) units=[1;cd/m^2] range=(0,) \ 2^x K_lum N_speed ; log2(Bv / (K_lum N_speed)) # convert illuminance value Iv in ASA PH2.12-1961 to illuminance Iv(x) units=[1;lx] range=(0,) \ 2^x C_illum N_speed ; log2(Iv / (C_illum N_speed)) # convert ASA/ISO arithmetic speed Sx to ASA logarithmic speed in # ASA PH2.5-1960; make arithmetic speed dimensionless Sx(S) units=[1;1] domain=(0,) \ log2((N_speed/lx s) S); 2^Sx / (N_speed/lx s) # convert DIN speed/ISO logarithmic speed in ISO 6:1993 to arithmetic speed # for convenience, speed is treated here as if it were dimensionless Sdeg(S) units=[1;1] range=(0,) 10^((S - 1) / 10) ; (1 + 10 log(Sdeg)) Sdin() Sdeg # Numerical Aperture and f-Number of a Lens # # The numerical aperture (NA) is given by # # NA = n sin(theta) # # where n is the index of refraction of the medium and theta is half # of the angle subtended by the aperture stop from a point in the image # or object plane. For a lens in air, n = 1, and # # NA = 0.5 / f-number # # convert NA to f-number numericalaperture(x) units=[1;1] domain=(0,1] range=[0.5,) \ 0.5 / x ; 0.5 / numericalaperture NA() numericalaperture # # convert f-number to itself; restrict values to those possible fnumber(x) units=[1;1] domain=[0.5,) range=[0.5,) x ; fnumber # Referenced Photographic Standards # # ASA PH-2.5-1960. USA Standard, Method for Determining (Monochrome, # Continuous-Tone) Speed of Photographic Negative Materials. # ASA PH2.12-1961. American Standard, General-Purpose Photographic # Exposure Meters (photoelectric type). # ANSI PH3.49-1971. American National Standard for general-purpose # photographic exposure meters (photoelectric type). # ANSI PH2.7-1973. American National Standard Photographic Exposure Guide. # ANSI PH2.7-1986. American National Standard for Photography -- # Photographic Exposure Guide. # CIPA DC-008-2010. Exchangeable image file format for digital still # cameras: Exif Version 2.3 # ISO 6:1993. International Standard, Photography -- Black-and-white # pictorial still camera negative film/process systems -- # Determination of ISO Speed. # # Astronomical time measurements # # Astronomical time measurement is a complicated matter. The length of the # true day at a given place can be 21 seconds less than 24 hours or 30 seconds # over 24 hours. The two main reasons for this are the varying speed of # Earth in its elliptical orbit and the fact that the Sun moves on the ecliptic # instead of along the celestial equator. To devise a workable system for time # measurement, Simon Newcomb (1835-1909) used a fictitious "mean Sun". # Consider a first fictitious Sun traveling along the ecliptic at a constant # speed and coinciding with the true Sun at perigee and apogee. Then # considering a second fictitious Sun traveling along the celestial equator at # a constant speed and coinciding with the first fictitious Sun at the # equinoxes. The second fictitious Sun is the "mean Sun". From this equations # can be written out to determine the length of the mean day, and the tropical # year. The length of the second was determined based on the tropical year # from such a calculation and was officially used from 1960-1967 until atomic # clocks replaced astronomical measurements for a standard of time. All of the # values below give the mean time for the specified interval. # # See "Mathematical Astronomy Morsels" by Jean Meeus for more details # and a description of how to compute the correction to mean time. # TIME second anomalisticyear 365.2596 days # The time between successive # perihelion passages of # Earth. siderealyear 365.256360417 day # The time for Earth to make # one revolution around the Sun # relative to the stars. tropicalyear 365.242198781 day # The time needed for the mean Sun # as defined above to increase # its longitude by 360 degrees. # Most references defined the # tropical year as the interval # between vernal equinoxes, but # this is misleading. The length # of the season changes over time # because of the eccentricity of # Earth's orbit. The time # between vernal equinoxes is # approximately 365.24237 days # around the year 2000. See # "Mathematical Astronomy # Morsels" for more details. eclipseyear 346.62 days # The line of nodes is the # intersection of the plane of # Earth's orbit around the Sun # with the plane of the Moon's # orbit around Earth. Eclipses # can only occur when the Moon # and Sun are close to this # line. The line rotates and # appearances of the Sun on the # line of nodes occur every # eclipse year. saros 223 synodicmonth # The Earth, Moon and Sun appear in # the same arrangement every # saros, so if an eclipse occurs, # then one saros later, a similar # eclipse will occur. (The saros # is close to 19 eclipse years.) # The eclipse will occur about # 120 degrees west of the # preceding one because the # saros is not an even number of # days. After 3 saros, an # eclipse will occur at # approximately the same place. solarday day # Time from noon to noon siderealday 86164.09054 s # The sidereal day is the interval siderealhour 1|24 siderealday # between two successive transits siderealminute 1|60 siderealhour # of a star over the meridian, siderealsecond 1|60 siderealminute # or the time required for # Earth to make one rotation # relative to the stars. Another # way to think about it is to # imagine looking down at the # solar system and noting when # Earth has made a rotation. # The more usual solar day is the # time required to make a # rotation relative to the Sun, # which means the same point on # Earth faces the Sun again. # Because Earth moves in its # orbit, it has to rotate a bit # more to face the Sun again, # hence the solar day is slightly # longer than the sidereal day. # The value given here is the # mean day length taken from # ssd.jpl.nasa.gov/astro_par.html # which in turn cites the # "Explanatory Supplement to the # Astronomical Almanac", 1992. anomalisticmonth 27.55454977 day # Time for the Moon to travel from # perigee to perigee nodicalmonth 27.2122199 day # The nodes are the points where draconicmonth nodicalmonth # an orbit crosses the ecliptic. draconiticmonth nodicalmonth # This is the time required to # travel from the ascending node # to the next ascending node. siderealmonth 27.321661 day # Time required for the Moon to # orbit the Earth lunarmonth 29 days + 12 hours + 44 minutes + 2.8 seconds # Mean time between full moons. synodicmonth lunarmonth # Full moons occur when the Sun lunation synodicmonth # and Moon are on opposite sides lune 1|30 lunation # of the Earth. Since the Earth lunour 1|24 lune # moves around the Sun, the Moon # has to move a bit further in its # orbit to return to the full moon # configuration. year tropicalyear yr year month 1|12 year mo month lustrum 5 years # The Lustrum was a Roman # purification ceremony that took # place every five years. # Classically educated Englishmen # used this term. decade 10 years century 100 years millennium 1000 years millennia millennium solaryear year lunaryear 12 lunarmonth calendaryear 365 day commonyear 365 day leapyear 366 day # The Julian year is The length of an average year over a 4-year cycle in the # Julian calendar. The calendar was proposed by Julius Caesar in 46 BCE and # took effect the following year. It has a normal year of 365 days and a leap # year of 366 days every four years. Though this calendar was used in # Europe for more than 1600 years, it drifts from the topical year by # about 1 day every 128 years, which became noticeable over its period # of use. # This growing discrepancy between the seasons and the calendar was perhaps # confusing but was also of concern to the Catholic Church because it led to a # shift in the date of Easter. To correct this discrepancy, Pope Gregory XIII # introduced the more accurate Gregorian calendar in 1582. The Gregorian year # is the length of an average year over a 400-year cycle in the Gregorian # calendar. Every year that is exactly divisible by four is a # leap year, except for years that are exactly divisible by 100, unless these # centurial years are exactly divisible by 400. This calendar was adopted by # many Catholic countries when it was proclaimed, but was not adopted by many # other countries until much later; Britain and the British Empire, including # what is now the eastern part of the United States, adopted it in 1752. See # https://en.wikipedia.org/wiki/List_of_adoption_dates_of_the_Gregorian_calendar_by_country # for additional details. julianyear 365.25 days gregorianyear 365.2425 days islamicyear 354 day # A year of 12 lunar months. They islamicleapyear 355 day # began counting on July 16, AD 622 # when Muhammad emigrated to Medina # (the year of the Hegira). They need # 11 leap days in 30 years to stay in # sync with the lunar year which is a # bit longer than the 29.5 days of the # average month. The months do not # keep to the same seasons, but # regress through the seasons every # 32.5 years. islamicmonth 1|12 islamicyear # They have 29 day and 30 day months. # The Hebrew year is also based on lunar months, but synchronized to the solar # calendar. The months vary irregularly between 29 and 30 days in length, and # the years likewise vary. The regular year is 353, 354, or 355 days long. To # keep up with the solar calendar, a leap month of 30 days is inserted every # 3rd, 6th, 8th, 11th, 14th, 17th, and 19th years of a 19 year cycle. This # gives leap years that last 383, 384, or 385 days. # # Planetary data from JPL's planet fact sheets. Each planet has its # own sheet at https://nssdc.gsfc.nasa.gov/planetary/factsheet/fact.html # The source for data on the fact sheets is described at # https://nssdc.gsfc.nasa.gov/planetary/factsheet/fact_notes.html # and they also indicate that the values listed are not "official" values: # there is no single set of agreed upon values. # Sidereal days. The sidereal day is the time required for a planet to make a # revolution relative to the stars. This is the default day value. mercuryday mercuryday_sidereal venusday venusday_sidereal earthday earthday_sidereal marsday marsday_sidereal jupiterday jupiterday_sidereal saturnday saturnday_sidereal uranusday uranusday_sidereal neptuneday neptuneday_sidereal plutoday plutoday_sidereal mercuryday_sidereal 1407.6 hr # Mercury is in a 3:2 resonance lock # where it makes 3 rotations per 2 orbits # so 3 sidereal days = 2 years venusday_sidereal 5832.6 hr # Retrograde earthday_sidereal siderealday marsday_sidereal 24.6229 hr jupiterday_sidereal 9.9250 hr saturnday_sidereal 10.656 hr uranusday_sidereal 17.24 hr # Retrograde neptuneday_sidereal 16.11 hr plutoday_sidereal 153.2928 hr # Retrograde # In astronomy, an object's rotation is "prograde" if it rotates in # the same direction as the primary object it orbits. Prograde # rotation is the more common case: in Earth's solar system, Mercury, # Earth, Mars, Jupiter, Saturn, and Neptune have prograde rotation. # When an object rotates opposite the direction of its primary object, # the object's rotation is "retrograde". Venus, Uranus, and Pluto have # retrograde rotation. # # The solar (or synodic) day is the time from noon to noon on a planet. This # is different from the sidereal day because the planet has moved in its orbit, # so (if its rotation is prograde) it needs additional rotation to return to # the same orientation relative to the Sun. In one orbital period (a year), # this amounts to one additional complete rotation, so the number of sidereal # days in a year is one greater than the number of solar days. # # If the planet's rotation is retrograde, less rotation is needed to return to # the same orientation relative to the Sun, and the number of sidereal days in # a year is one fewer than the number of solar days. # # The solar day can be computed from the sidereal day in the typical prograde # case by: # solar_day = sidereal_day year / (year - sidereal_day) # If the planet's rotation is retrograde like Venus then the formula is # solar_day = sidereal_day year / (year + sidereal_day) # If the sidereal day and year are the same length then the same face of the # planet faces the Sun and there is no solar day. mercuryday_solar 4222.6 hr venusday_solar 2802.0 hr earthday_solar 24 hr marsday_solar 24.6597 hr jupiterday_solar 9.9259 hr saturnday_solar 10.656 hr uranusday_solar 17.24 hr neptuneday_solar 16.11 hr plutoday_solar 153.2820 hr # Sidereal years mercuryyear 87.969 day venusyear 224.701 day earthyear siderealyear marsyear 686.980 day jupiteryear 4332.589 day saturnyear 10759.22 day uranusyear 30685.4 day neptuneyear 60189 day plutoyear 90560 day # Equatorial radii for the planets from JPL fact sheets mercuryradius 2440.5 km venusradius 6051.8 km earthradius 6378.137 km marsradius 3396.2 km jupiterradius 71492 km # 1 bar level saturnradius 60268 km # 1 bar level uranusradius 25559 km # 1 bar level neptuneradius 24764 km # 1 bar level plutoradius 1188 km # Volumetric mean radii mercuryradius_mean 2440.5 km venusradius_mean 6051.8 km earthradius_mean 6371 km marsradius_mean 3389.5 km jupiterradius_mean 69911 km saturnradius_mean 58232 km uranusradius_mean 25362 km neptuneradius_mean 24622 km plutoradius_mean 1188 km # Polar radii mercuryradius_polar 2438.3 km venusradius_polar 6051.8 km marsradius_polar 3376.2 km jupiterradius_polar 66854 km saturnradius_polar 54364 km uranusradius_polar 24973 km neptuneradius_polar 24341 km plutoradius_polar 1188 km mercurysundist_min 46.000 Gm mercurysundist_max 69.818 Gm venussundist_min 107.480 Gm venussundist_max 108.941 Gm earthsundist_min sundist_min earthsundist_max sundist_max marssundist_min 206.650 Gm marssundist_max 249.261 Gm jupitersundist_min 740.595 Gm jupitersundist_max 816.363 Gm saturnsundist_min 1357.554 Gm saturnsundist_max 1506.527 Gm uranussundist_min 2732.696 Gm uranussundist_max 3001.390 Gm neptunesundist_min 4471.050 Gm neptunesundist_max 4558.857 Gm plutosundist_min 4434.987 Gm plutosundist_max 7304.326 Gm sundist 1.0000010178 au # mean Earth-Sun distance moondist 384400 km # mean Earth-Moon distance sundist_near 147.095 Gm # Earth-Sun distance at perihelion sundist_min sundist_near sundist_far 152.100 Gm # Earth-Sun distance at aphelion sundist_max sundist_far # The Earth-Moon distances at perigee and apogee are different for every # lunation. The values here are the extremes for 1500-2500 according to # Jean Meeus's Astronomical Algorithms (1991, 332). moondist_min 356371 km # minimum distance at perigee 1500-2500 moondist_max 406720 km # maximum distance at apogee 1500-2500 # Objects on Earth are charted relative to a perfect ellipsoid whose # dimensions are specified by different organizations. The ellipsoid is # specified by an equatorial radius and a flattening value which defines the # polar radius. earthflattening IERS_earthflattening earthradius_equatorial IERS_earthradius_equatorial earthradius_polar (1-earthflattening) earthradius_equatorial # The World Geodetic System maintains a standard, WGS84, which is used by the # the GPS system. This system uses a conventional ellipsoid that was fixed in # 1984 and has remained constant so that data collected at different times is # referenced to the same ellipsoid. https://epsg.io/4326 WGS84_earthflattening 1|298.257223563 WGS84_earthradius_equatorial 6378137 m WGS84_earthradius_polar (1-WGS84_earthflattening) WGS84_earthradius_equatorial # The International Earth Rotation Service (IERS) attempts to # maintain an accurate model of Earth, with updates to maintain the highest # possible accuracy, even though this makes it more difficult to relate geodetic # measurements made at different times. # IERS Conventions, Chapter 1, General definitions and numerical standards (16 November 2017) # https://iers-conventions.obspm.fr/content/chapter1/icc1.pdf IERS_earthflattening 1|298.25642 IERS_earthradius_equatorial 6378136.6 m IERS_earthradius_polar (1-IERS_earthflattening) IERS_earthradius_equatorial landarea 148.847e6 km^2 oceanarea 361.254e6 km^2 moonradius 1738 km # mean value sunradius 6.96e8 m # Many astronomical values can be measured most accurately in a system of units # using the astronomical unit and the mass of the Sun as base units. The # uncertainty in the gravitational constant makes conversion to SI units # significantly less accurate. # The astronomical unit was defined to be the length of the of the semimajor # axis of a massless object with the same year as Earth. With such a # definition in force, and with the mass of the Sun set equal to one, Kepler's # third law can be used to solve for the value of the gravitational constant. # Kepler's third law says that (2 pi / T)^2 a^3 = G M where T is the orbital # period, a is the size of the semimajor axis, G is the gravitational constant # and M is the mass. With M = 1 and T and a chosen for Earth's orbit, we # find sqrt(G) = (2 pi / T) sqrt(AU^3). This constant is called the Gaussian # gravitational constant, apparently because Gauss originally did the # calculations. However, when the original calculation was done, the value # for the length of Earth's year was inaccurate. The value used is called # the Gaussian year. Changing the astronomical unit to bring it into # agreement with more accurate values for the year would have invalidated a # lot of previous work, so instead the astronomical unit has been kept equal # to this original value. This is accomplished by using a standard value for # the Gaussian gravitational constant. This constant is called k. gauss_k 0.01720209895 # This beast has dimensions of # au^(3|2) / day and is exact. gaussianyear (2 pi / gauss_k) days # Year that corresponds to the Gaussian # gravitational constant. This is a # fictional year, and doesn't # correspond to any celestial event. astronomicalunit 149597870700 m # IAU definition from 2012, exact au astronomicalunit # ephemeris for the above described # astronomical unit. (See the NASA # site listed above.) GMsun 132712440041.279419 km^3 / s^2 # heliocentric gravitational constant solarmass GMsun/G # is known more accurately than G. sunmass solarmass # Estimated from DE440 # The following are masses for planetary systems, not just the planet itself, # except for the case of Earth, where the Moon is excluded. Masses are # relative to G because they are known much more accurately than G. # # See https://ssd.jpl.nasa.gov/astro_par.html. Values are from # the DE440 Ephemeris: https://ssd.jpl.nasa.gov/doc/Park.2021.AJ.DE440.pdf mercurymass 22031.868551 km^3 / s^2 G venusmass 324858.592000 km^3 / s^2 G marsmass 42828.375816 km^3 / s^2 G jupitermass 126712764.100000 km^3 / s^2 G saturnmass 37940584.841800 km^3 / s^2 G uranusmass 5794556.400000 km^3 / s^2 G neptunemass 6836527.100580 km^3 / s^2 G plutomass 975.500000 km^3 / s^2 G ceresmass 62.62890 km^3 / s^2 G vestamass 17.288245 km^3 / s^2 G earthmass 398600.435507 km^3 / s^2 G # Earth alone moonmass 4902.800118 km^3 / s^2 G moonearthmassratio moonmass/earthmass earthmoonmass earthmass+moonmass moongravity 1.62 m/s^2 # Earth gravity values at the equator and poles. These values are # obtained from the WGS84 model. gravity_equatorial 9.7803263359 m / s^2 gravity_polar 9.8321849378 m / s^2 # The Hubble constant gives the speed at which distance galaxies are moving # away from Earth according to v = H0*d, where H0 is the hubble constant # and d is the distance to the galaxy. hubble 70 km/s/Mpc # approximate H0 hubble # Parallax is the angular difference between the topocentric (on Earth's # surface) and geocentric (at Earth's center) direction toward a celestial body # when the body is at a given altitude. When the body is on the horizon, the # parallax is the horizontal parallax; when the body is on the horizon and the # observer is on the equator, the parallax is the equatorial horizontal # parallax. When the body is at zenith, the parallax is zero. lunarparallax asin(earthradius_equatorial / moondist) # Moon equatorial moonhp lunarparallax # horizontal parallax # at mean distance # Light from celestial objects is attenuated by passage through Earth's # atmosphere. A body near the horizon passes through much more air than an # object at zenith, and is consequently less bright. Air mass is the ratio of # the length of the optical path at a given altitude (angle above the horizon) # to the length at zenith. Air mass at zenith is by definition unity; at the # horizon, air mass is approximately 38, though the latter value can vary # considerably with atmospheric conditions. The general formula is # E = E0 # exp(-c X), where E0 is the value outside Earth's atmosphere, E is the value # seen by an observer, X is the air mass and c is the extinction coefficient. # A common value for c in reasonably clear air is 0.21, but values can be # considerably greater in urban areas. Apparent altitude is that perceived by # an observer; it includes the effect of atmospheric refraction. There is no # shortage of formulas for air mass # (https://en.wikipedia.org/wiki/Air_mass_(astronomy)); all are subject to # variations in local atmospheric conditions. The formula used here is simple # and is in good agreement with rigorously calculated values under standard # conditions. # # Extraterrestrial illuminance or luminance of an object at a given altitude # determined with vmag() or SB_xxx() below can be multiplied by # atm_transmission() or atm_transmissionz() to estimate the terrestrial value. # # Kasten and Young (1989) air mass formula. alt is apparent altitude # Reference: # Kasten, F., and A.T. Young. 1989. "Revised Optical Air Mass Tables # and Approximation Formula." Applied Optics. Vol. 28, 4735-4738. # Bibcode:1989ApOpt..28.4735K. doi:10.1364/AO.28.004735. airmass(alt) units=[degree;1] domain=[0,90] noerror \ 1 / (sin(alt) + 0.50572 (alt / degree + 6.07995)^-1.6364) # zenith is apparent zenith angle (zenith = 90 deg - alt) airmassz(zenith) units=[degree;1] domain=[0,90] noerror \ 1 / (cos(zenith) + 0.50572 (96.07995 - zenith / degree)^-1.6364) # For reasonably clear air at sea level; values may need adjustment for # elevation and local atmospheric conditions # for scotopic vision (510 nm), appropriate for the dark-adapted eye # extinction_coeff 0.26 # for photopic vision, appropriate for observing brighter objects such # as the full moon extinction_coeff 0.21 atm_transmission(alt) units=[degree;1] domain=[0,90] noerror \ exp(-extinction_coeff airmass(alt)) # in terms of zenith angle (zenith = 90 deg - alt) atm_transmissionz(zenith) units=[degree;1] domain=[0,90] noerror \ exp(-extinction_coeff airmassz(zenith)) # Moon and Sun data at mean distances moonvmag -12.74 # Moon apparent visual magnitude at mean distance sunvmag -26.74 # Sun apparent visual magnitude at mean distance moonsd asin(moonradius / moondist) # Moon angular semidiameter at mean distance sunsd asin(sunradius / sundist) # Sun angular semidiameter at mean distance # Visual magnitude of star or other celestial object. The system of stellar # magnitudes, developed in ancient Greece, assigned magnitudes from 1 # (brightest) to 6 (faintest visible to the naked eye). In 1856, British # astronomer Norman Pogson made the system precise, with a magnitude 1 object # 100 times as bright as a magnitude 6 object, and each magnitude differing # from the next by a constant ratio; the ratio, sometimes known as Pogson's # ratio, is thus 100^0.2, or approximately 2.5119. The logarithm of 100^0.2 is # 0.4, hence the common use of powers of 10 and base-10 logarithms. # # Reference: # Allen, C.W. 1976. Astrophysical Quantities, 3rd ed. 1973, reprinted # with corrections, 1976. London: Athlone. # # The function argument is the (dimensionless) visual magnitude; reference # illuminance of 2.54e-6 lx is from Allen (2000, 21), and is for outside # Earth's atmosphere. Illuminance values can be adjusted to terrestrial values # by multiplying by one of the atm_transmission functions above. # Illuminance from apparent visual magnitude vmag(mag) units=[1;lx] domain=[,] range=(0,] \ 2.54e-6 lx 10^(-0.4 mag); -2.5 log(vmag / (2.54e-6 lx)) # Surface brightness of a celestial object of a given visual magnitude # is a logarithmic measure of the luminance the object would have if its # light were emitted by an object of specified solid angle; it is # expressed in magnitudes per solid angle. Surface brightness can be # obtained from the visual magnitude by # S = m + 2.5 log(pi pi k a b), # where k is the phase (fraction illuminated), a is the equatorial # radius, and b is the polar radius. For 100% illumination (e.g., full # moon), this is often simplified to # S = m + 2.5 log(pi k s^2), # where s is the object's angular semidiameter; the units of s determine # the units of solid angle. The visual magnitude and semidiameter must # be appropriate for the object's distance; for other than 100% # illumination, the visual magnitude must be appropriate for the phase. # Luminance values are for outside Earth's atmosphere; they can be # adjusted to terrestrial values by multiplying by one of the atm_transmission # functions above. # luminance from surface brightness in magnitudes per square degree SB_degree(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / squaredegree ; \ ~vmag(SB_degree squaredegree) # luminance from surface brightness in magnitudes per square minute SB_minute(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / squareminute ; \ ~vmag(SB_minute squareminute) # luminance from surface brightness in magnitudes per square second SB_second(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / squaresecond ; \ ~vmag(SB_second squaresecond) # luminance from surface brightness in magnitudes per steradian SB_sr(sb) units=[1;cd/m^2] domain=[,] range=(0,] \ vmag(sb) / sr ; \ ~vmag(SB_sr sr) SB() SB_second SB_sec() SB_second SB_min() SB_minute SB_deg() SB_degree # The brightness of one tenth-magnitude star per square degree outside # Earth's atmosphere; often used for night sky brightness. S10 SB_degree(10) # Examples for magnitude and surface brightness functions # Sun illuminance from visual magnitude # You have: sunvmag # You want: # Definition: -26.74 = -26.74 # You have: vmag(sunvmag) # You want: lx # * 126134.45 # / 7.9280482e-06 # # Moon surface brightness from visual magnitude and semidiameter at 100% # illumination (full moon): # You have: moonvmag # You want: # Definition: -12.74 = -12.74 # You have: moonsd # You want: arcsec # * 932.59484 # / 0.001072277 # You have: moonvmag + 2.5 log(pi 932.59484^2) # You want: # Definition: 3.3513397 # # Similar example with specific data obtained from another source (JPL # Horizons, https://ssd.jpl.nasa.gov/horizons.cgi); semidiameter is in # arcseconds # # You have: -12.9 + 2.5 log(pi 2023.201|2^2) # You want: # Definition: 3.3679199 # You have: SB_second(-12.9 + 2.5 log(pi 2023.201|2^2)) # You want: # Definition: 4858.6547 cd / m^2 # # If surface brightness is provided by another source (e.g., Horizons), # it can simply be used directly: # You have: SB_second(3.3679199) # You want: cd/m^2 # * 4858.6546 # / 0.0002058183 # The illuminance and luminance values are extraterrestrial (outside # Earth's atmosphere). The values at Earth's surface are less than these # because of atmospheric extinction. For example, in the last example # above, if the Moon were at an altitude of 55 degrees, the terrestrial # luminance could be calculated with # You have: SB_second(3.3679199) # You want: cd/m^2 # * 4858.6546 # / 0.0002058183 # You have: _ atm_transmission(55 deg) # You want: cd/m^2 # * 3760.6356 # / 0.0002659125 # If desired, photographic exposure can be determined with EV100(), # leading to acceptable combinations of aperture and exposure time. # For the example above, but with the Moon at 10 degrees, # You have: SB_second(3.3679199) atm_transmission(10 deg) # You want: EV100 # 13.553962 # # The Hartree system of atomic units, derived from fundamental units # of mass (of the electron), action (Planck's constant), charge, and # the Coulomb constant. This system is used in the fields of physical # chemistry and condensed matter physics. # # Fundamental units atomicmass electronmass atomiccharge e atomicaction hbar atomicenergy hartree # Derived units atomicvelocity sqrt(atomicenergy / atomicmass) atomictime atomicaction / atomicenergy atomiclength atomicvelocity atomictime atomicforce atomicenergy / atomiclength atomicmomentum atomicenergy / atomicvelocity atomiccurrent atomiccharge / atomictime atomicpotential atomicenergy / atomiccharge # electrical potential atomicvolt atomicpotential atomicEfield atomicpotential / atomiclength atomicBfield atomicEfield / atomicvelocity atomictemperature atomicenergy / boltzmann # # In Hartree units, m_e = hbar = e = coulombconst = bohrradius = alpha*c = 1 # !var UNITS_SYSTEM hartree !message Hartree units selected !prompt (hartree) +hartree 1 +kg 1/electronmass_SI +K k_SI / hbar_SI s +m alpha c_SI electronmass_SI / hbar_SI +s alpha c_SI m +A 1 / s e_SI !endvar # # These thermal units treat entropy as charge, from [5] # thermalcoulomb J/K # entropy thermalampere W/K # entropy flow thermalfarad J/K^2 thermalohm K^2/W # thermal resistance fourier thermalohm thermalhenry J K^2/W^2 # thermal inductance thermalvolt K # thermal potential difference # # United States units # # linear measure # The US Metric Law of 1866 legalized the metric system in the USA and # defined the meter in terms of the British system with the exact # 1 meter = 39.37 inches. On April 5, 1893 Thomas Corwin Mendenhall, # Superintendent of Weights and Measures, decided, in what has become # known as the "Mendenhall Order" that the meter and kilogram would be the # fundamental standards in the USA. The definition from 1866 was turned # around to give an exact definition of the yard as 3600|3937 meters This # definition was used until July of 1959 when the definition was changed # to bring the US and other English-speaking countries into agreement; the # Canadian value of 1 yard = 0.9144 meter (exactly) was chosen because it # was approximately halfway between the British and US values; it had the # added advantage of making 1 inch = 25.4 mm (exactly). Since 1959, the # "international" foot has been exactly 0.3048 meters. At the same time, # it was decided that any data expressed in feet derived from geodetic # surveys within the US would continue to use the old definition and call # the old unit the "survey foot." # # Until 1 January 2023, the US continued to define the statute # mile, furlong, chain, rod, link, and fathom in terms of the US survey # foot. Since then, use of the US survey foot has been officially # deprecated, with its use limited to historical and legacy applications. # These units are now defined in terms of the international foot. # # Sources: # NIST Special Publication 447, Sects. 5, 7, and 8. # NIST Handbook 44, 2024 ed., Appendix C. # Canadian Journal of Physics, 1959, 37:(1) 84, 10.1139/p59-014. inch 2.54 cm # Exact, international inch (1959) in inch foot 12 inch feet foot ft foot yard 3 ft yd yard mile 5280 ft # The mile was enlarged from 5000 ft # to this number in order to make # it an even number of furlongs. # (The Roman mile is 5000 romanfeet.) line 1|12 inch # Also defined as '.1 in' or as '1e-8 Wb' rod 16.5 ft pole rod perch rod furlong 40 rod # From "furrow long" statutemile mile league 3 mile # Intended to be an hour's walk # surveyor's measure # The US survey foot is officially deprecated as of 1 January 2023 US 1200|3937 m/ft # These four values will convert US- US # international measures to survey- US # US Survey measures geodetic- US int 3937|1200 ft/m # Convert US Survey measures to int- int # international measures # values based on the US survey foot are deprecated as of 1 January 2023 surveyorschain 66 surveyft surveychain surveyorschain surveyorspole 1|4 surveyorschain surveyorslink 1|100 surveyorschain USacre 10 surveychain^2 USacrefoot USacre surveyfoot chain 66 ft link 1|100 chain ch chain intacre 10 chain^2 # Acre based on international ft intacrefoot acre foot acrefoot intacrefoot acre intacre ac acre section mile^2 township 36 section homestead 160 acre # Area of land granted by the 1862 Homestead # Act of the United States Congress gunterschain surveyorschain engineerschain 100 ft engineerslink 1|100 engineerschain ramsdenschain engineerschain ramsdenslink engineerslink gurleychain 33 feet # Andrew Ellicott chain is the gurleylink 1|50 gurleychain # same length wingchain 66 feet # Chain from 1664, introduced by winglink 1|80 wingchain # Vincent Wing, also found in a # 33 foot length with 40 links. # early US length standards # The US has had four standards for the yard: one by Troughton of London # (1815); bronze yard #11 (1856); the Mendhall yard (1893), consistent # with the definition of the meter in the metric joint resolution of # Congress in 1866, but defining the yard in terms of the meter; and the # international yard (1959), which standardized definitions for Australia, # Canada, New Zealand, South Africa, the UK, and the US. # Sources: Pat Naughtin (2009), Which Inch?: # https://metricationmatters.org/docs/WhichInch.pdf, # Lewis E. Barbrow and Lewis V. Judson (1976). NBS Special # Publication 447, Weights and Measures Standards of the United States: A # Brief History. troughtonyard 914.42190 mm bronzeyard11 914.39980 mm mendenhallyard surveyyard internationalyard yard # nautical measure fathom 6 ft # Originally defined as the distance from # fingertip to fingertip with arms fully # extended. nauticalmile 1852 m # Supposed to be one minute of latitude at # the equator. That value is about 1855 m. # Early estimates of Earth's circumference # were a bit off. The value of 1852 m was # made the international standard in 1929. # The US did not accept this value until # 1954. The UK switched in 1970. # The cable is used for depth in water and has a wide range of definitions intcable 1|10 nauticalmile # international cable uscable 120 fathom # value after 1 January 2023 surveycable 120 USfathom # value before 1 January 2023 UScable surveycable cableslength cable cablelength cable navycablelength cable brcable 1|10 brnauticalmile admiraltycable brcable marineleague 3 nauticalmile geographicalmile brnauticalmile knot nauticalmile / hr click km # US military slang klick click # Avoirdupois weight pound 0.45359237 kg # Exact, International Pound (1959) lb pound # From the Latin libra grain 1|7000 pound # The grain is the same in all three # weight systems. It was originally # defined as the weight of a barley # corn taken from the middle of the # ear. ounce 1|16 pound oz ounce dram 1|16 ounce dr dram ushundredweight 100 pounds cwt hundredweight shorthundredweight ushundredweight uston shortton shortton 2000 lb quarterweight 1|4 uston shortquarterweight 1|4 shortton shortquarter shortquarterweight # Troy Weight. In 1828 the troy pound was made the first United States # standard weight. It was to be used to regulate coinage. troypound 5760 grain troyounce 1|12 troypound ozt troyounce pennyweight 1|20 troyounce # Abbreviated "d" in reference to a dwt pennyweight # Frankish coin called the "denier" # minted in the late 700's. There # were 240 deniers to the pound. assayton mg ton / troyounce # mg / assayton = troyounce / ton usassayton mg uston / troyounce brassayton mg brton / troyounce fineounce troyounce # A troy ounce of 99.5% pure gold # Some other jewelers units metriccarat 0.2 gram # Defined in 1907 metricgrain 50 mg carat metriccarat ct carat jewelerspoint 1|100 carat silversmithpoint 1|4000 inch momme 3.75 grams # Traditional Japanese unit based # on the chinese mace. It is used for # pearls in modern times and also for # silk density. The definition here # was adopted in 1891. # Apothecaries' weight appound troypound apounce troyounce apdram 1|8 apounce apscruple 1|3 apdram # Liquid measure usgallon 231 in^3 # US liquid measure is derived from gal gallon # the British wine gallon of 1707. quart 1|4 gallon # See the "winegallon" entry below pint 1|2 quart # more historical information. gill 1|4 pint usquart 1|4 usgallon uspint 1|2 usquart usgill 1|4 uspint usfluidounce 1|16 uspint fluiddram 1|8 usfloz minimvolume 1|60 fluiddram qt quart pt pint floz fluidounce usfloz usfluidounce fldr fluiddram liquidbarrel 31.5 usgallon usbeerbarrel 2 beerkegs beerkeg 15.5 usgallon # Various among brewers ponykeg 1|2 beerkeg winekeg 12 usgallon petroleumbarrel 42 usgallon # Originated in Pennsylvania oil barrel petroleumbarrel # fields, from the winetierce bbl barrel ushogshead 2 liquidbarrel usfirkin 9 usgallon # Dry measures: The Winchester Bushel was defined by William III in 1702 and # legally adopted in the US in 1836. usbushel 2150.42 in^3 # Volume of 8 inch cylinder with 18.5 bu bushel # inch diameter (rounded) peck 1|4 bushel uspeck 1|4 usbushel brpeck 1|4 brbushel pk peck drygallon 1|2 uspeck dryquart 1|4 drygallon drypint 1|2 dryquart drybarrel 7056 in^3 # Used in US for fruits, vegetables, # and other dry commodities except for # cranberries. cranberrybarrel 5826 in^3 # US cranberry barrel heapedbushel 1.278 usbushel# The following explanation for this # value was provided by Wendy Krieger # based on # guesswork. The cylindrical vessel is # 18.5 inches in diameter and 1|2 inch # thick. A heaped bushel includes the # contents of this cylinder plus a heap # on top. The heap is a cone 19.5 # inches in diameter and 6 inches # high. With these values, the volume # of the bushel is 684.5 pi in^3 and # the heap occupies 190.125 pi in^3. # Therefore, the heaped bushel is # 874.625|684.5 bushels. This value is # approximately 1.2777575 and it rounds # to the value listed for the size of # the heaped bushel. Sometimes the # heaped bushel is reported as 1.25 # bushels. This same explanation gives # that value if the heap is taken to # have an 18.5 inch diameter. # Grain measures. The bushel as it is used by farmers in the USA is actually # a measure of mass which varies for different commodities. Canada uses the # same bushel masses for most commodities, but not for oats. wheatbushel 60 lb soybeanbushel 60 lb cornbushel 56 lb ryebushel 56 lb barleybushel 48 lb oatbushel 32 lb ricebushel 45 lb canada_oatbushel 34 lb # Wine and Spirits measure ponyvolume 1 usfloz jigger 1.5 usfloz # Can vary between 1 and 2 usfloz shot jigger # Sometimes 1 usfloz eushot 25 ml # EU standard spirits measure fifth 1|5 usgallon winebottle 750 ml # US industry standard, 1979 winesplit 1|4 winebottle magnum 1.5 liter # Standardized in 1979, but given # as 2 qt in some references metrictenth 375 ml metricfifth 750 ml metricquart 1 liter # Old British bottle size reputedquart 1|6 brgallon reputedpint 1|2 reputedquart brwinebottle reputedquart # Very close to 1|5 winegallon # French champagne bottle sizes split 200 ml jeroboam 2 magnum rehoboam 3 magnum methuselah 4 magnum imperialbottle 4 magnum salmanazar 6 magnum balthazar 8 magnum nebuchadnezzar 10 magnum solomon 12 magnum melchior 12 magnum sovereign 17.5 magnum primat 18 magnum goliath 18 magnum melchizedek 20 magnum midas 20 magnum # The wine glass doesn't seem to have an official standard, but the same value # is suggested by several sources in the US. wineglass 150 mL # In the UK, serving size offerings legally mandated by The Weights and # Measures (Specified Quantities) (Unwrapped Bread and Intoxicating # Liquor) Order 2011, effective 1st October 2011. The quantities--not # the names--are mandated. Lawful size offerings are these or multiples # thereof, but other sizes can be provided at the express request of a # buyer. smallwineglass 125 mL mediumwineglass 175 mL # Values vary considerably among countries and even more so in practice. The # "standard" US value gives 5 glasses per standard 750 ml bottle. Old practice # in the UK was 125 ml per glass, or 6 glasses per bottle. Some sources suggest # a more recent common value of 250 ml per glass, or 3 glasses per # bottle; as a multiple of 125 ml, this would be a lawful serving size offering. # # The value refers to the size of the serving, not the total volume of the # glass, which is typically not filled above the height of its greatest # diameter. # # A unit of alcohol is a specified amount of pure ethyl alcohol, expressed as a # mass or volumetric equivalent. Many countries use the same concept but use # different terms. "Alcohol unit" is used officially in the UK; the US, Canada, # and Australia use "standard drink." Values vary considerably among # countries. The UK value of 8 g is nominally the amount of alcohol that a # typical adult can metabolize in one hour. alcoholunitus 14 g / ethanoldensity alcoholunitca 13.6 g / ethanoldensity alcoholunituk 8 g / ethanoldensity alcoholunitau 10 g / ethanoldensity # Common serving sizes have roughly equivalent amounts of alcohol, as # illustrated by US examples for wine (12% Alcohol By Volume), beer (5% ABV), # and spirits (80 proof). # # alcoholunitus / 12% = 147.8 mL, close to the "standard" serving of 150 mL. # alcoholunitus / 5% = 11.995346 floz, close to a standard 12 floz bottle or can # alcoholunitus / 80 proof = 1.4994182 floz, close to a standard "shot" or jigger # https://www.rethinkingdrinking.niaaa.nih.gov/ # https://www.cdc.gov/alcohol/faqs.htm # https://www.canada.ca/en/health-canada/services/substance-use/alcohol/low-risk-alcohol-drinking-guidelines # https://www.drinkaware.co.uk/ # https://www.drinkaware.co.uk/facts/alcoholic-drinks-and-units # https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/545937/UK_CMOs__report.pdf # https://adf.org.au/reducing-risk/alcohol/alcohol-guidelines/ # https://www.health.gov.au/topics/alcohol/about-alcohol/standard-drinks-guide # https://en.wikipedia.org/wiki/Unit_of_alcohol # https://en.wikipedia.org/wiki/Standard_drink # Coffee # # The recommended ratio of coffee to water. Values vary considerably; # one is from the Specialty Coffee Association of America: Brewing Best Practices # https://sca.coffee/research/protocols-best-practices coffeeratio 55 g/L # +/- 10% # other recommendations are more loose, e.g., # http://www.ncausa.org/About-Coffee/How-to-Brew-Coffee # # Water is "hard" if it contains various minerals, especially calcium # carbonate. # clarkdegree grains/brgallon # Content by weigh of calcium carbonate gpg grains/usgallon # Divide by water's density to convert to # a dimensionless concentration measure # # Shoe measures # shoeiron 1|48 inch # Used to measure leather in soles shoeounce 1|64 inch # Used to measure non-sole shoe leather # USA shoe sizes. These express the length of the shoe or the length # of the "last", the form that the shoe is made on. But note that # this only captures the length. It appears that widths change 1/4 # inch for each letter within the same size, and if you change the # length by half a size then the width changes between 1/8 inch and # 1/4 inch. But this may not be standard. If you know better, please # contact me. shoesize_delta 1|3 inch # USA shoe sizes differ by this amount shoe_men0 8.25 inch shoe_women0 (7+11|12) inch shoe_boys0 (3+11|12) inch shoe_girls0 (3+7|12) inch shoesize_men(n) units=[1;inch] shoe_men0 + n shoesize_delta ; \ (shoesize_men+(-shoe_men0))/shoesize_delta shoesize_women(n) units=[1;inch] shoe_women0 + n shoesize_delta ; \ (shoesize_women+(-shoe_women0))/shoesize_delta shoesize_boys(n) units=[1;inch] shoe_boys0 + n shoesize_delta ; \ (shoesize_boys+(-shoe_boys0))/shoesize_delta shoesize_girls(n) units=[1;inch] shoe_girls0 + n shoesize_delta ; \ (shoesize_girls+(-shoe_girls0))/shoesize_delta # European shoe size. According to # http://www.shoeline.com/footnotes/shoeterm.shtml # shoe sizes in Europe are measured with Paris points which simply measure # the length of the shoe. europeshoesize 2|3 cm # # USA slang units # buck US$ fin 5 US$ sawbuck 10 US$ usgrand 1000 US$ greenback US$ key kg # usually of marijuana, 60's lid 1 oz # Another 60's weed unit footballfield usfootballfield usfootballfield 100 yards canadafootballfield 110 yards # And 65 yards wide marathon 26 miles + 385 yards # # British # # The length measure in the UK was defined by a bronze bar manufactured in # 1844. Various conversions were sanctioned for convenience at different # times, which makes conversions before 1963 a confusing matter. Apparently # previous conversions were never explicitly revoked. Four different # conversion factors appear below. Multiply them times an imperial length # units as desired. The Weights and Measures Act of 1963 switched the UK away # from their bronze standard and onto a definition of the yard in terms of the # meter. This happened after an international agreement in 1959 to align the # world's measurement systems. UK UKlength_SJJ UK- UK british- UK UKlength_B 0.9143992 meter / yard # Benoit found the yard to be # 0.9143992 m at a weights and # measures conference around # 1896. Legally sanctioned # in 1898. UKlength_SJJ 0.91439841 meter / yard # In 1922, Seers, Jolly and # Johnson found the yard to be # 0.91439841 meters. # Used starting in the 1930's. UKlength_K meter / 39.37079 inch # In 1816 Kater found this ratio # for the meter and inch. This # value was used as the legal # conversion ratio when the # metric system was legalized # for contract in 1864. UKlength_C meter / 1.09362311 yard # In 1866 Clarke found the meter # to be 1.09362311 yards. This # conversion was legalized # around 1878. brnauticalmile 6080 ft # Used until 1970 when the UK brknot brnauticalmile / hr # switched to the international admiraltymile brnauticalmile # nautical mile. admiraltyknot brknot seamile 6000 ft shackle 15 fathoms # Adopted 1949 by British navy # British Imperial weight is mostly the same as US weight. A few extra # units are added here. clove 7 lb stone 14 lb tod 28 lb brquarterweight 1|4 brhundredweight brhundredweight 8 stone longhundredweight brhundredweight longton 20 brhundredweight brton longton # British Imperial volume measures brminim 1|60 brdram brscruple 1|3 brdram fluidscruple brscruple brdram 1|8 brfloz brfluidounce 1|20 brpint brfloz brfluidounce brgill 1|4 brpint brpint 1|2 brquart brquart 1|4 brgallon brgallon 4.54609 l # The British Imperial gallon was # defined in 1824 to be the volume of # water which weighed 10 pounds at 62 # deg F with a pressure of 30 inHg. # It was also defined as 277.274 in^3, # Which is slightly in error. In # 1963 it was defined to be the volume # occupied by 10 pounds of distilled # water of density 0.998859 g/ml weighed # in air of density 0.001217 g/ml # against weights of density 8.136 g/ml. # This gives a value of approximately # 4.5459645 liters, but the old liter # was in force at this time. In 1976 # the definition was changed to exactly # 4.54609 liters using the new # definition of the liter (1 dm^3). brbarrel 36 brgallon # Used for beer brbushel 8 brgallon brheapedbushel 1.278 brbushel brquarter 8 brbushel brchaldron 36 brbushel # Obscure British volume measures. These units are generally traditional # measures whose definitions have fluctuated over the years. Often they # depended on the quantity being measured. They are given here in terms of # British Imperial measures. For example, the puncheon may have historically # been defined relative to the wine gallon or beer gallon or ale gallon # rather than the British Imperial gallon. bag 4 brbushel bucket 4 brgallon kilderkin 2 brfirkin last 40 brbushel noggin brgill pottle 0.5 brgallon pin 4.5 brgallon puncheon 72 brgallon seam 8 brbushel coomb 4 brbushel boll 6 brbushel firlot 1|4 boll brfirkin 9 brgallon # Used for ale and beer cran 37.5 brgallon # measures herring, about 750 fish brwinehogshead 52.5 brgallon # This value is approximately equal brhogshead brwinehogshead # to the old wine hogshead of 63 # wine gallons. This adjustment # is listed in the OED and in # "The Weights and Measures of # England" by R. D. Connor brbeerhogshead 54 brgallon brbeerbutt 2 brbeerhogshead registerton 100 ft^3 # Used for internal capacity of ships shippington 40 ft^3 # Used for ship's cargo freight or timber brshippington 42 ft^3 # freightton shippington # Both register ton and shipping ton derive # from the "tun cask" of wine. displacementton 35 ft^3 # Approximate volume of a longton weight of # sea water. Measures water displaced by # ships. waterton 224 brgallon strike 70.5 l # 16th century unit, sometimes # defined as .5, 2, or 4 bushels # depending on the location. It # probably doesn't make a lot of # sense to define in terms of imperial # bushels. Zupko gives a value of # 2 Winchester grain bushels or about # 70.5 liters. amber 4 brbushel# Used for dry and liquid capacity [18] # British volume measures with "imperial" imperialminim brminim imperialscruple brscruple imperialdram brdram imperialfluidounce brfluidounce imperialfloz brfloz imperialgill brgill imperialpint brpint imperialquart brquart imperialgallon brgallon imperialbarrel brbarrel imperialbushel brbushel imperialheapedbushel brheapedbushel imperialquarter brquarter imperialchaldron brchaldron imperialwinehogshead brwinehogshead imperialhogshead brhogshead imperialbeerhogshead brbeerhogshead imperialbeerbutt brbeerbutt imperialfirkin brfirkin # obscure British lengths barleycorn 1|3 UKinch # Given in Realm of Measure as the # difference between successive shoe sizes nail 1|16 UKyard # Originally the width of the thumbnail, # or 1|16 ft. This took on the general # meaning of 1|16 and settled on the # nail of a yard or 1|16 yards as its # final value. [12] UKpole 16.5 UKft # This was 15 Saxon feet, the Saxon rope 20 UKft # foot (aka northern foot) being longer englishell 45 UKinch flemishell 27 UKinch ell englishell # supposed to be measure from elbow to # fingertips span 9 UKinch # supposed to be distance from thumb # to pinky with full hand extension goad 4.5 UKft # used for cloth, possibly named after the # stick used for prodding animals. # misc obscure British units hide 120 acre # English unit of land area dating to the 7th # century, originally the amount of land # that a single plowman could cultivate, # which varied from 60-180 acres regionally. # Standardized at Normon conquest. virgate 1|4 hide nook 1|2 virgate rood furlong rod # Area of a strip a rod by a furlong englishcarat troyounce/151.5 # Originally intended to be 4 grain # but this value ended up being # used in the London diamond market mancus 2 oz mast 2.5 lb nailkeg 100 lbs basebox 31360 in^2 # Used in metal plating # alternate spellings gramme gram litre liter dioptre diopter sulphur sulfur # # Units derived the human body (may not be very accurate) # geometricpace 5 ft # distance between points where the same # foot hits the ground pace 2.5 ft # distance between points where alternate # feet touch the ground USmilitarypace 30 in # United States official military pace USdoubletimepace 36 in # United States official doubletime pace fingerbreadth 7|8 in # The finger is defined as either the width fingerlength 4.5 in # or length of the finger finger fingerbreadth palmwidth hand # The palm is a unit defined as either the width palmlength 8 in # or the length of the hand hand 4 inch # width of hand shaftment 6 inch # Distance from tip of outstretched thumb to the # opposite side of the palm of the hand. The # ending -ment is from the old English word # for hand. [18] smoot 5 ft + 7 in # Created as part of an MIT fraternity prank. # In 1958 Oliver Smoot was used to measure # the length of the Harvard Bridge, which was # marked off in Smoot lengths. These # markings have been maintained on the bridge # since then and repainted by subsequent # incoming fraternity members. During a # bridge renovation the new sidewalk was # scored every Smoot rather than at the # customary 6 ft spacing. tomcruise 5 ft + 7.75 in # Height of Tom Cruise # # Cooking measures # # Common abbreviations tbl tablespoon tbsp tablespoon tblsp tablespoon Tb tablespoon tsp teaspoon saltspoon 1|4 tsp # US measures uscup 8 usfloz ustablespoon 1|16 uscup usteaspoon 1|3 ustablespoon ustbl ustablespoon ustbsp ustablespoon ustblsp ustablespoon ustsp usteaspoon metriccup 250 ml stickbutter 1|4 lb # Butter in the USA is sold in one # pound packages that contain four # individually wrapped pieces. The # pieces are marked into tablespoons, # making it possible to measure out # butter by volume by slicing the # butter. legalcup 240 ml # The cup used on nutrition labeling legaltablespoon 1|16 legalcup legaltbsp legaltablespoon # Scoop size. Ice cream scoops in the US are marked with numbers # indicating the number of scoops required to fill a US quart. scoop(n) units=[1;cup] domain=[4,100] range=[0.04,1] \ 32 usfloz / n ; 32 usfloz / scoop # US can sizes. number1can 10 usfloz number2can 19 usfloz number2.5can 3.5 uscups number3can 4 uscups number5can 7 uscups number10can 105 usfloz # British measures brcup 1|2 brpint brteacup 1|3 brpint brtablespoon 15 ml # Also 5|8 brfloz, approx 17.7 ml brteaspoon 1|3 brtablespoon # Also 1|4 brtablespoon brdessertspoon 2 brteaspoon dessertspoon brdessertspoon dsp dessertspoon brtsp brteaspoon brtbl brtablespoon brtbsp brtablespoon brtblsp brtablespoon # Australian australiatablespoon 20 ml austbl australiatablespoon austbsp australiatablespoon austblsp australiatablespoon australiateaspoon 1|4 australiatablespoon austsp australiateaspoon # Italian etto 100 g # Used for buying items like meat and etti etto # cheese. # Chinese catty 0.5 kg oldcatty 4|3 lbs # Before metric conversion. tael 1|16 oldcatty # Should the tael be defined both ways? mace 0.1 tael oldpicul 100 oldcatty picul 100 catty # Chinese usage # Indian seer 14400 grain # British Colonial standard ser seer maund 40 seer pakistanseer 1 kg pakistanmaund 40 pakistanseer chittak 1|16 seer tola 1|5 chittak ollock 1|4 liter # Is this right? # Japanese japancup 200 ml # densities of cooking ingredients from The Cake Bible by Rose Levy Beranbaum # so you can convert '2 cups sugar' to grams, for example, or in the other # direction grams could be converted to 'cup flour_scooped'. butter 8 oz/uscup butter_clarified 6.8 oz/uscup cocoa_butter 9 oz/uscup shortening 6.75 oz/uscup # vegetable shortening oil 7.5 oz/uscup cakeflour_sifted 3.5 oz/uscup # The density of flour depends on the cakeflour_spooned 4 oz/uscup # measuring method. "Scooped", or cakeflour_scooped 4.5 oz/uscup # "dip and sweep" refers to dipping a flour_sifted 4 oz/uscup # measure into a bin, and then sweeping flour_spooned 4.25 oz/uscup # the excess off the top. "Spooned" flour_scooped 5 oz/uscup # means to lightly spoon into a measure breadflour_sifted 4.25 oz/uscup # and then sweep the top. Sifted means breadflour_spooned 4.5 oz/uscup # sifting the flour directly into a breadflour_scooped 5.5 oz/uscup # measure and then sweeping the top. cornstarch 120 grams/uscup dutchcocoa_sifted 75 g/uscup # These are for Dutch processed cocoa dutchcocoa_spooned 92 g/uscup dutchcocoa_scooped 95 g/uscup cocoa_sifted 75 g/uscup # These are for nonalkalized cocoa cocoa_spooned 82 g/uscup cocoa_scooped 95 g/uscup heavycream 232 g/uscup milk 242 g/uscup sourcream 242 g/uscup molasses 11.25 oz/uscup cornsyrup 11.5 oz/uscup honey 11.75 oz/uscup sugar 200 g/uscup powdered_sugar 4 oz/uscup brownsugar_light 217 g/uscup # packed brownsugar_dark 239 g/uscup baking_powder 4.6 grams / ustsp salt 6 g / ustsp koshersalt 2.8 g / ustsp # Diamond Crystal kosher salt koshersalt_morton 4.8 g / ustsp # Morton kosher salt # Values are from the nutrition info # on the packages # Egg weights and volumes for a USA large egg egg 50 grams # without shell eggwhite 30 grams eggyolk 18.6 grams eggvolume 3 ustablespoons + 1|2 ustsp eggwhitevolume 2 ustablespoons eggyolkvolume 3.5 ustsp # Alcohol density ethanoldensity 0.7893 g/cm^3 # From CRC Handbook, 91st Edition alcoholdensity ethanoldensity # # Density measures. Density has traditionally been measured on a variety of # bizarre nonlinear scales. # # Density of a sugar syrup is frequently measured in candy making procedures. # In the USA the boiling point of the syrup is measured. Some recipes instead # specify the density using degrees Baume. Conversion between degrees Baume # and the boiling point measure has proved elusive. This table appeared in one # text, and provides a fragmentary relationship to the concentration. # # temp(C) conc (%) # 100 30 # 101 40 # 102 50 # 103 60 # 106 70 # 112 80 # 123 90 # 140 95 # 151 97 # 160 98.2 # 166 99.5 # 171 99.6 # # The best source identified to date came from "Boiling point elevation of # technical sugarcane solutions and its use in automatic pan boiling" by # Michael Saska. International Sugar Journal, 2002, 104, 1247, pp 500-507. # # But I'm using equation (3) which is credited to Starzak and Peacock, # "Water activity coefficient in aqueous solutions of sucrose--A comprehensive # data analysis. Zuckerindustrie, 122, 380-387. (I couldn't find this # document.) # # Note that the range of validity is uncertain, but answers are in agreement # with the above table all the way to 99.6. # # The original equation has a parameter for the boiling point of water, which # of course varies with altitude. It also includes various other model # parameters. The input is the molar concentration of sucrose in the solution, # (moles sucrose) / (total moles). # # Bsp 3797.06 degC # Csp 226.28 degC # QQ -17638 J/mol # asp -1.0038 # bsp -0.24653 # tbw 100 degC # boiling point of water # sugar_bpe_orig(x) ((1-QQ/R Bsp * x^2 (1+asp x + bsp x^2) (tbw + Csp) \ # /(tbw+stdtemp)) / (1+(tbw + Csp)/Bsp *ln(1-x))-1) * (tbw + Csp) # # To convert mass concentration (brix) to molar concentration # # sc(x) (x / 342.3) / (( x/342.3) + (100-x)/18.02); \ # 100 sc 342.3|18.02 / (sc (342.3|18.02-1)+1) # # Here is a simplified version of this equation where the temperature of boiling # water has been fixed at 100 degrees Celsius and the argument is now the # concentration (brix). # # sugar_bpe(x) ((1+ 0.48851085 * sc(x)^2 (1+ -1.0038 sc(x) + -0.24653 sc(x)^2)) \ # / (1+0.08592964 ln(1-sc(x)))-1) 326.28 K # # # The formula is not invertible, so to implement it in units we unfortunately # must turn it into a table. # This table gives the boiling point elevation as a function of the sugar syrup # concentration expressed as a percentage. sugar_conc_bpe[K] \ 0 0.0000 5 0.0788 10 0.1690 15 0.2729 20 0.3936 25 0.5351 \ 30 0.7027 35 0.9036 40 1.1475 42 1.2599 44 1.3825 46 1.5165 \ 48 1.6634 50 1.8249 52 2.0031 54 2.2005 56 2.4200 58 2.6651 \ 60 2.9400 61 3.0902 62 3.2499 63 3.4198 64 3.6010 65 3.7944 \ 66 4.0012 67 4.2227 68 4.4603 69 4.7156 70 4.9905 71 5.2870 \ 72 5.6075 73 5.9546 74 6.3316 75 6.7417 76 7.1892 77 7.6786 \ 78.0 8.2155 79.0 8.8061 80.0 9.4578 80.5 9.8092 81.0 10.1793 \ 81.5 10.5693 82.0 10.9807 82.5 11.4152 83.0 11.8743 83.5 12.3601 \ 84.0 12.8744 84.5 13.4197 85.0 13.9982 85.5 14.6128 86.0 15.2663 \ 86.5 15.9620 87.0 16.7033 87.5 17.4943 88.0 18.3391 88.5 19.2424 \ 89.0 20.2092 89.5 21.2452 90.0 22.3564 90.5 23.5493 91.0 24.8309 \ 91.5 26.2086 92.0 27.6903 92.5 29.2839 93.0 30.9972 93.5 32.8374 \ 94.0 34.8104 94.5 36.9195 95.0 39.1636 95.5 41.5348 96.0 44.0142 \ 96.5 46.5668 97.0 49.1350 97.5 51.6347 98.0 53.9681 98.1 54.4091 \ 98.2 54.8423 98.3 55.2692 98.4 55.6928 98.5 56.1174 98.6 56.5497 \ 98.7 56.9999 98.8 57.4828 98.9 58.0206 99.0 58.6455 99.1 59.4062 \ 99.2 60.3763 99.3 61.6706 99.4 63.4751 99.5 66.1062 99.6 70.1448 \ 99.7 76.7867 # Using the brix table we can use this to produce a mapping from boiling point # to density which makes all of the units interconvertible. Because the brix # table stops at 95 this approach works up to a boiling point elevation of 39 K # or a boiling point of 139 C / 282 F, which is the "soft crack" stage in candy # making. The "hard crack" stage continues up to 310 F. # Boiling point elevation sugar_bpe(T) units=[K;g/cm^3] domain=[0,39.1636] range=[0.99717,1.5144619] \ brix(~sugar_conc_bpe(T)); sugar_conc_bpe(~brix(sugar_bpe)) # Absolute boiling point (produces an absolute temperature) sugar_bp(T) units=[K;g/cm^3] domain=[373.15,412.3136] \ range=[0.99717,1.5144619] \ brix(~sugar_conc_bpe(T-tempC(100))) ;\ sugar_conc_bpe(~brix(sugar_bp))+tempC(100) # In practice dealing with the absolute temperature is annoying because it is # not possible to convert to a nested function, so you're stuck retyping the # absolute temperature in Kelvins to convert to celsius or Fahrenheit. To # prevent this we supply definitions that build in the temperature conversion # and produce results in the Fahrenheit and Celsius scales. So using these # measures, to convert 46 degrees Baume to a Fahrenheit boiling point: # # You have: baume(45) # You want: sugar_bpF # 239.05647 # sugar_bpF(T) units=[1;g/cm^3] domain=[212,282.49448] range=[0.99717,1.5144619]\ brix(~sugar_conc_bpe(tempF(T)+-tempC(100))) ;\ ~tempF(sugar_conc_bpe(~brix(sugar_bpF))+tempC(100)) sugar_bpC(T) units=[1;g/cm^3] domain=[100,139.1636] range=[0.99717,1.5144619]\ brix(~sugar_conc_bpe(tempC(T)+-tempC(100))) ;\ ~tempC(sugar_conc_bpe(~brix(sugar_bpC))+tempC(100)) # Degrees Baume is used in European recipes to specify the density of a sugar # syrup. An entirely different definition is used for densities below # 1 g/cm^3. An arbitrary constant appears in the definition. This value is # equal to 145 in the US, but was according to [], the old scale used in # Holland had a value of 144, and the new scale or Gerlach scale used 146.78. baumeconst 145 # US value baume(d) units=[1;g/cm^3] domain=[0,145) range=[1,) \ (baumeconst/(baumeconst+-d)) g/cm^3 ; \ (baume+((-g)/cm^3)) baumeconst / baume # It's not clear if this value was ever used with negative degrees. twaddell(x) units=[1;g/cm^3] domain=[-200,) range=[0,) \ (1 + 0.005 x) g / cm^3 ; \ 200 (twaddell / (g/cm^3) +- 1) # The degree quevenne is a unit for measuring the density of milk. # Similarly it's unclear if negative values were allowed here. quevenne(x) units=[1;g/cm^3] domain=[-1000,) range=[0,) \ (1 + 0.001 x) g / cm^3 ; \ 1000 (quevenne / (g/cm^3) +- 1) # Degrees brix measures sugar concentration by weigh as a percentage, so a # solution that is 3 degrees brix is 3% sugar by weight. This unit was named # after Adolf Brix who invented a hydrometer that read this percentage # directly. This data is from Table 114 of NIST Circular 440, "Polarimetry, # Saccharimetry and the Sugars". It gives apparent specific gravity at 20 # degrees Celsius of various sugar concentrations. As rendered below this # data is converted to apparent density at 20 degrees Celsius using the # density figure for water given in the same NIST reference. They use the # word "apparent" to refer to measurements being made in air with brass # weights rather than vacuum. brix[0.99717g/cm^3]\ 0 1.00000 1 1.00390 2 1.00780 3 1.01173 4 1.01569 5 1.01968 \ 6 1.02369 7 1.02773 8 1.03180 9 1.03590 10 1.04003 11 1.04418 \ 12 1.04837 13 1.05259 14 1.05683 15 1.06111 16 1.06542 17 1.06976 \ 18 1.07413 19 1.07853 20 1.08297 21 1.08744 22 1.09194 23 1.09647 \ 24 1.10104 25 1.10564 26 1.11027 27 1.11493 28 1.11963 29 1.12436 \ 30 1.12913 31 1.13394 32 1.13877 33 1.14364 34 1.14855 35 1.15350 \ 36 1.15847 37 1.16349 38 1.16853 39 1.17362 40 1.17874 41 1.18390 \ 42 1.18910 43 1.19434 44 1.19961 45 1.20491 46 1.21026 47 1.21564 \ 48 1.22106 49 1.22652 50 1.23202 51 1.23756 52 1.24313 53 1.24874 \ 54 1.25439 55 1.26007 56 1.26580 57 1.27156 58 1.27736 59 1.28320 \ 60 1.28909 61 1.29498 62 1.30093 63 1.30694 64 1.31297 65 1.31905 \ 66 1.32516 67 1.33129 68 1.33748 69 1.34371 70 1.34997 71 1.35627 \ 72 1.36261 73 1.36900 74 1.37541 75 1.38187 76 1.38835 77 1.39489 \ 78 1.40146 79 1.40806 80 1.41471 81 1.42138 82 1.42810 83 1.43486 \ 84 1.44165 85 1.44848 86 1.45535 87 1.46225 88 1.46919 89 1.47616 \ 90 1.48317 91 1.49022 92 1.49730 93 1.50442 94 1.51157 95 1.51876 # Density measure invented by the American Petroleum Institute. Lighter # petroleum products are more valuable, and they get a higher API degree. # # The intervals of range and domain should be open rather than closed. # apidegree(x) units=[1;g/cm^3] domain=[-131.5,) range=[0,) \ 141.5 g/cm^3 / (x+131.5) ; \ 141.5 (g/cm^3) / apidegree + (-131.5) # # Average densities of various woods (dried) # Data from The Wood Database https://www.wood-database.com # # North American Hardwoods wood_cherry 35 lb/ft^3 wood_redoak 44 lb/ft^3 wood_whiteoak 47 lb/ft^3 wood_blackwalnut 38 lb/ft^3 wood_walnut wood_blackwalnut wood_birch 43 lb/ft^3 wood_hardmaple 44 lb/ft^3 wood_bigleafmaple 34 lb/ft^3 wood_boxeldermaple 30 lb/ft^3 wood_redmaple 38 lb/ft^3 wood_silvermaple 33 lb/ft^3 wood_stripedmaple 32 lb/ft^3 wood_softmaple (wood_bigleafmaple \ + wood_boxeldermaple \ + wood_redmaple \ + wood_silvermaple \ + wood_stripedmaple) / 5 wood_poplar 29 lb/ft^3 wood_beech 45 lb/ft^3 # North American Softwoods wood_jeffreypine 28 lb/ft^3 wood_ocotepine 44 lb/ft^3 wood_ponderosapine 28 lb/ft^3 wood_loblollypine 35 lb/ft^3 wood_longleafpine 41 lb/ft^3 wood_shortleafpine 35 lb/ft^3 wood_slashpine 41 lb/ft^3 wood_yellowpine (wood_loblollypine \ + wood_longleafpine \ + wood_shortleafpine \ + wood_slashpine) / 4 wood_redpine 34 lb/ft^3 wood_easternwhitepine 25 lb/ft^3 wood_westernwhitepine 27 lb/ft^3 wood_whitepine (wood_easternwhitepine + wood_westernwhitepine) / 2 wood_douglasfir 32 lb/ft^3 wood_blackspruce 28 lb/ft^3 wood_engelmannspruce 24 lb/ft^3 wood_redspruce 27 lb/ft^3 wood_sitkaspruce 27 lb/ft^3 wood_whitespruce 27 lb/ft^3 wood_spruce (wood_blackspruce \ + wood_engelmannspruce \ + wood_redspruce \ + wood_sitkaspruce \ + wood_whitespruce) / 5 # Other woods wood_basswood 26 lb/ft^3 wood_balsa 9 lb/ft^3 wood_ebony_gaboon 60 lb/ft^3 wood_ebony_macassar 70 lb/ft^3 wood_mahogany 37 lb/ft^3 # True (Honduran) mahogany, # Swietenia macrophylla wood_teak 41 lb/ft^3 wood_rosewood_brazilian 52 lb/ft^3 wood_rosewood_honduran 64 lb/ft^3 wood_rosewood_indian 52 lb/ft^3 wood_cocobolo 69 lb/ft^3 wood_bubinga 56 lb/ft^3 wood_zebrawood 50 lb/ft^3 wood_koa 38 lb/ft^3 wood_snakewood 75.7 lb/ft^3 wood_lignumvitae 78.5 lb/ft^3 wood_blackwood 79.3 lb/ft^3 wood_blackironwood 84.5 lb/ft^3 # Krugiodendron ferreum, listed # in database as the heaviest wood # # Modulus of elasticity of selected woods. # Data from The Wood Database https://www.wood-database.com # # North American Hardwoods wood_mod_beech 1.720e6 lbf/in^2 wood_mod_birchyellow 2.010e6 lbf/in^2 wood_mod_birch wood_mod_birchyellow wood_mod_cherry 1.490e6 lbf/in^2 wood_mod_hardmaple 1.830e6 lbf/in^2 wood_mod_bigleafmaple 1.450e6 lbf/in^2 wood_mod_boxeldermaple 1.050e6 lbf/in^2 wood_mod_redmaple 1.640e6 lbf/in^2 wood_mod_silvermaple 1.140e6 lbf/in^2 wood_mod_softmaple (wood_mod_bigleafmaple \ + wood_mod_boxeldermaple \ + wood_mod_redmaple \ + wood_mod_silvermaple) / 4 wood_mod_redoak 1.761e6 lbf/in^2 wood_mod_whiteoak 1.762e6 lbf/in^2 wood_mod_poplar 1.580e6 lbf/in^2 wood_mod_blackwalnut 1.680e6 lbf/in^2 wood_mod_walnut wood_mod_blackwalnut # North American Softwoods wood_mod_jeffreypine 1.240e6 lbf/in^2 wood_mod_ocotepine 2.209e6 lbf/in^2 wood_mod_ponderosapine 1.290e6 lbf/in^2 wood_mod_loblollypine 1.790e6 lbf/in^2 wood_mod_longleafpine 1.980e6 lbf/in^2 wood_mod_shortleafpine 1.750e6 lbf/in^2 wood_mod_slashpine 1.980e6 lbf/in^2 wood_mod_yellowpine (wood_mod_loblollypine \ + wood_mod_longleafpine \ + wood_mod_shortleafpine \ + wood_mod_slashpine) / 4 wood_mod_redpine 1.630e6 lbf/in^2 wood_mod_easternwhitepine 1.240e6 lbf/in^2 wood_mod_westernwhitepine 1.460e6 lbf/in^2 wood_mod_whitepine (wood_mod_easternwhitepine + \ wood_mod_westernwhitepine) / 2 wood_mod_douglasfir 1.765e6 lbf/in^2 wood_mod_blackspruce 1.523e6 lbf/in^2 wood_mod_englemannspruce 1.369e6 lbf/in^2 wood_mod_redspruce 1.560e6 lbf/in^2 wood_mod_sitkaspruce 1.600e6 lbf/in^2 wood_mod_whitespruce 1.315e6 lbf/in^2 wood_mod_spruce (wood_mod_blackspruce \ + wood_mod_englemannspruce \ + wood_mod_redspruce + wood_mod_sitkaspruce \ + wood_mod_whitespruce) / 5 # Other woods wood_mod_balsa 0.538e6 lbf/in^2 wood_mod_basswood 1.460e6 lbf/in^2 wood_mod_blackwood 2.603e6 lbf/in^2 # African, Dalbergia melanoxylon wood_mod_bubinga 2.670e6 lbf/in^2 wood_mod_cocobolo 2.712e6 lbf/in^2 wood_mod_ebony_gaboon 2.449e6 lbf/in^2 wood_mod_ebony_macassar 2.515e6 lbf/in^2 wood_mod_blackironwood 2.966e6 lbf/in^2 # Krugiodendron ferreum wood_mod_koa 1.503e6 lbf/in^2 wood_mod_lignumvitae 2.043e6 lbf/in^2 wood_mod_mahogany 1.458e6 lbf/in^2 # True (Honduran) mahogany, # Swietenia macrophylla wood_mod_rosewood_brazilian 2.020e6 lbf/in^2 wood_mod_rosewood_honduran 3.190e6 lbf/in^2 wood_mod_rosewood_indian 1.668e6 lbf/in^2 wood_mod_snakewood 3.364e6 lbf/in^2 wood_mod_teak 1.781e6 lbf/in^2 wood_mod_zebrawood 2.374e6 lbf/in^2 # # Area of countries and other regions. This is the "total area" which # includes land and water areas within international boundaries and # coastlines. Data from January, 2019. # # except as noted, sources are # https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area # US Central Intelligence Agency: The World Factbook # https://www.cia.gov/the-world-factbook/ area_russia 17098246 km^2 area_antarctica 14000000 km^2 # area_canada is covered below as sum of province and territory areas area_china 9596961 km^2 # area_unitedstates is covered below as sum of state areas # includes only the 50 states and District of Columbia area_us area_unitedstates area_brazil 8515767 km^2 area_australia 7692024 km^2 # area_europeanunion is covered below as sum of member areas area_india 3287263 km^2 area_argentina 2780400 km^2 area_kazakhstan 2724900 km^2 area_algeria 2381741 km^2 area_drcongo 2344858 km^2 area_greenland 2166086 km^2 area_saudiarabia 2149690 km^2 area_mexico 1964375 km^2 area_indonesia 1910931 km^2 area_sudan 1861484 km^2 area_libya 1759540 km^2 area_iran 1648195 km^2 area_mongolia 1564110 km^2 area_peru 1285216 km^2 area_chad 1284000 km^2 area_niger 1267000 km^2 area_angola 1246700 km^2 area_mali 1240192 km^2 area_southafrica 1221037 km^2 area_colombia 1141748 km^2 area_ethiopia 1104300 km^2 area_bolivia 1098581 km^2 area_mauritania 1030700 km^2 area_egypt 1002450 km^2 area_tanzania 945087 km^2 area_nigeria 923768 km^2 area_venezuela 916445 km^2 area_pakistan 881912 km^2 area_namibia 825615 km^2 area_mozambique 801590 km^2 area_turkey 783562 km^2 area_chile 756102 km^2 area_zambia 752612 km^2 area_myanmar 676578 km^2 area_burma area_myanmar area_afghanistan 652230 km^2 area_southsudan 644329 km^2 area_france 640679 km^2 area_somalia 637657 km^2 area_centralafrica 622984 km^2 area_ukraine 603500 km^2 area_crimea 27000 km^2 # occupied by Russia; included in # (Encyclopedia Britannica) area_madagascar 587041 km^2 area_botswana 581730 km^2 area_kenya 580367 km^2 area_yemen 527968 km^2 area_thailand 513120 km^2 area_spain 505992 km^2 area_turkmenistan 488100 km^2 area_cameroon 475422 km^2 area_papuanewguinea 462840 km^2 area_sweden 450295 km^2 area_uzbekistan 447400 km^2 area_morocco 446550 km^2 area_iraq 438317 km^2 area_paraguay 406752 km^2 area_zimbabwe 390757 km^2 area_japan 377973 km^2 area_germany 357114 km^2 area_congorepublic 342000 km^2 area_finland 338424 km^2 area_vietnam 331212 km^2 area_malaysia 330803 km^2 area_norway 323802 km^2 area_ivorycoast 322463 km^2 area_poland 312696 km^2 area_oman 309500 km^2 area_italy 301339 km^2 area_philippines 300000 km^2 area_ecuador 276841 km^2 area_burkinafaso 274222 km^2 area_newzealand 270467 km^2 area_gabon 267668 km^2 area_westernsahara 266000 km^2 area_guinea 245857 km^2 # area_unitedkingdom is covered below area_uganda 241550 km^2 area_ghana 238533 km^2 area_romania 238397 km^2 area_laos 236800 km^2 area_guyana 214969 km^2 area_belarus 207600 km^2 area_kyrgyzstan 199951 km^2 area_senegal 196722 km^2 area_syria 185180 km^2 area_golanheights 1150 km^2 # occupied by Israel; included in # Syria (Encyclopedia Britannica) area_cambodia 181035 km^2 area_uruguay 176215 km^2 area_somaliland 176120 km^2 area_suriname 163820 km^2 area_tunisia 163610 km^2 area_bangladesh 147570 km^2 area_nepal 147181 km^2 area_tajikistan 143100 km^2 area_greece 131990 km^2 area_nicaragua 130373 km^2 area_northkorea 120540 km^2 area_malawi 118484 km^2 area_eritrea 117600 km^2 area_benin 114763 km^2 area_honduras 112492 km^2 area_liberia 111369 km^2 area_bulgaria 110879 km^2 area_cuba 109884 km^2 area_guatemala 108889 km^2 area_iceland 103000 km^2 area_southkorea 100210 km^2 area_hungary 93028 km^2 area_portugal 92090 km^2 area_jordan 89342 km^2 area_serbia 88361 km^2 area_azerbaijan 86600 km^2 area_austria 83871 km^2 area_uae 83600 km^2 area_czechia 78865 km^2 area_czechrepublic area_czechia area_panama 75417 km^2 area_sierraleone 71740 km^2 area_ireland 70273 km^2 area_georgia 69700 km^2 area_srilanka 65610 km^2 area_lithuania 65300 km^2 area_latvia 64559 km^2 area_togo 56785 km^2 area_croatia 56594 km^2 area_bosnia 51209 km^2 area_costarica 51100 km^2 area_slovakia 49037 km^2 area_dominicanrepublic 48671 km^2 area_estonia 45227 km^2 area_denmark 43094 km^2 area_netherlands 41850 km^2 area_switzerland 41284 km^2 area_bhutan 38394 km^2 area_taiwan 36193 km^2 area_guineabissau 36125 km^2 area_moldova 33846 km^2 area_belgium 30528 km^2 area_lesotho 30355 km^2 area_armenia 29743 km^2 area_solomonislands 28896 km^2 area_albania 28748 km^2 area_equitorialguinea 28051 km^2 area_burundi 27834 km^2 area_haiti 27750 km^2 area_rwanda 26338 km^2 area_northmacedonia 25713 km^2 area_djibouti 23200 km^2 area_belize 22966 km^2 area_elsalvador 21041 km^2 area_israel 20770 km^2 area_slovenia 20273 km^2 area_fiji 18272 km^2 area_kuwait 17818 km^2 area_eswatini 17364 km^2 area_easttimor 14919 km^2 area_bahamas 13943 km^2 area_montenegro 13812 km^2 area_vanatu 12189 km^2 area_qatar 11586 km^2 area_gambia 11295 km^2 area_jamaica 10991 km^2 area_kosovo 10887 km^2 area_lebanon 10452 km^2 area_cyprus 9251 km^2 area_puertorico 9104 km^2 # United States territory; not included # in United States area area_westbank 5860 km^2 # (CIA World Factbook) area_hongkong 2755 km^2 area_luxembourg 2586 km^2 area_singapore 716 km^2 area_gazastrip 360 km^2 # (CIA World Factbook) area_malta 316 km^2 # smallest EU country area_liechtenstein 160 km^2 area_monaco 2.02 km^2 area_vaticancity 0.44 km^2 # Members as of 1 Feb 2020 area_europeanunion area_austria + area_belgium + area_bulgaria \ + area_croatia + area_cyprus + area_czechia + area_denmark \ + area_estonia + area_finland + area_france + area_germany \ + area_greece + area_hungary + area_ireland + area_italy \ + area_latvia + area_lithuania + area_luxembourg \ + area_malta + area_netherlands + area_poland \ + area_portugal + area_romania + area_slovakia \ + area_slovenia + area_spain + area_sweden area_eu area_europeanunion # # Areas of the individual US states # # https://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_area # # United States Summary: 2010, Population and Housing Unit Counts, Table 18, p. 41 # Issued September 2012 area_alaska 1723336.8 km^2 area_texas 695661.6 km^2 area_california 423967.4 km^2 area_montana 380831.1 km^2 area_newmexico 314917.4 km^2 area_arizona 295233.5 km^2 area_nevada 286379.7 km^2 area_colorado 269601.4 km^2 area_oregon 254799.2 km^2 area_wyoming 253334.5 km^2 area_michigan 250486.8 km^2 area_minnesota 225162.8 km^2 area_utah 219881.9 km^2 area_idaho 216442.6 km^2 area_kansas 213100.0 km^2 area_nebraska 200329.9 km^2 area_southdakota 199728.7 km^2 area_washington 184660.8 km^2 area_northdakota 183107.8 km^2 area_oklahoma 181037.2 km^2 area_missouri 180540.3 km^2 area_florida 170311.7 km^2 area_wisconsin 169634.8 km^2 area_georgia_us 153910.4 km^2 area_illinois 149995.4 km^2 area_iowa 145745.9 km^2 area_newyork 141296.7 km^2 area_northcarolina 139391.0 km^2 area_arkansas 137731.8 km^2 area_alabama 135767.4 km^2 area_louisiana 135658.7 km^2 area_mississippi 125437.7 km^2 area_pennsylvania 119280.2 km^2 area_ohio 116097.7 km^2 area_virginia 110786.6 km^2 area_tennessee 109153.1 km^2 area_kentucky 104655.7 km^2 area_indiana 94326.2 km^2 area_maine 91633.1 km^2 area_southcarolina 82932.7 km^2 area_westvirginia 62755.5 km^2 area_maryland 32131.2 km^2 area_hawaii 28313.0 km^2 area_massachusetts 27335.7 km^2 area_vermont 24906.3 km^2 area_newhampshire 24214.2 km^2 area_newjersey 22591.4 km^2 area_connecticut 14357.4 km^2 area_delaware 6445.8 km^2 area_rhodeisland 4001.2 km^2 area_districtofcolumbia 177.0 km^2 area_unitedstates area_alabama + area_alaska + area_arizona \ + area_arkansas + area_california + area_colorado \ + area_connecticut + area_delaware \ + area_districtofcolumbia + area_florida \ + area_georgia_us + area_hawaii + area_idaho \ + area_illinois + area_indiana + area_iowa \ + area_kansas + area_kentucky + area_louisiana \ + area_maine + area_maryland + area_massachusetts \ + area_michigan + area_minnesota + area_mississippi \ + area_missouri + area_montana + area_nebraska \ + area_nevada + area_newhampshire + area_newjersey \ + area_newmexico + area_newyork + area_northcarolina \ + area_northdakota + area_ohio + area_oklahoma \ + area_oregon + area_pennsylvania + area_rhodeisland \ + area_southcarolina + area_southdakota \ + area_tennessee + area_texas + area_utah \ + area_vermont + area_virginia + area_washington \ + area_westvirginia + area_wisconsin + area_wyoming # Total area of Canadian province and territories # # Statistics Canada, "Land and freshwater area, by province and territory", # 2016-10-07: # # https://www150.statcan.gc.ca/n1/pub/11-402-x/2012000/chap/geo/tbl/tbl06-eng.htm area_ontario 1076395 km^2 # confederated 1867-Jul-01 area_quebec 1542056 km^2 # confederated 1867-Jul-01 area_novascotia 55284 km^2 # confederated 1867-Jul-01 area_newbrunswick 72908 km^2 # confederated 1867-Jul-01 area_canada_original area_ontario + area_quebec + area_novascotia \ + area_newbrunswick area_manitoba 647797 km^2 # confederated 1870-Jul-15 area_britishcolumbia 944735 km^2 # confederated 1871-Jul-20 area_princeedwardisland 5660 km^2 # confederated 1873-Jul-01 area_canada_additional area_manitoba + area_britishcolumbia \ + area_princeedwardisland area_alberta 661848 km^2 # confederated 1905-Sep-01 area_saskatchewan 651036 km^2 # confederated 1905-Sep-01 area_newfoundlandandlabrador 405212 km^2 # confederated 1949-Mar-31 area_canada_recent area_alberta + area_saskatchewan \ + area_newfoundlandandlabrador area_canada_provinces area_canada_original + area_canada_additional \ + area_canada_recent area_northwestterritories 1346106 km^2 # NT confederated 1870-Jul-15 area_yukon 482443 km^2 # YT confederated 1898-Jun-13 area_nunavut 2093190 km^2 # NU confederated 1999-Apr-01 area_canada_territories area_northwestterritories + area_yukon \ + area_nunavut area_canada area_canada_provinces + area_canada_territories # area-uk-countries.units - UK country (/province) total areas # https://en.wikipedia.org/wiki/Countries_of_the_United_Kingdom#Statistics # GB is official UK country code for some purposes but internally is a Kingdom # # areas from A Beginners Guide to UK Geography 2019 v1.0, Office for National Statistics # England: country; 0927-Jul-12 united; 1603-Mar-24 union of crowns area_england 132947.76 km^2 # # Wales: 1282 conquered; 1535 union; principality until 2011 area_wales 21224.48 km^2 # # England and Wales: nation; 1535 union area_englandwales area_england + area_wales # # Scotland: country; ~900 united; 1603-Mar-24 union of crowns area_scotland 80226.36 km^2 # # Great Britain: kingdom; excludes NI; # 1707 Treaty and Acts of Union: union of parliaments area_greatbritain area_england + area_wales + area_scotland area_gb area_greatbritain # # Northern Ireland: province; Ireland: 1177 Henry II lordship; # 1542 Henry VIII kingdom; 1652 Cromwell commonwealth; # 1691 William III kingdom; 1800 Acts of Union: UK of GB & Ireland; # 1921 Irish Free State independent of UK area_northernireland 14133.38 km^2 # # United Kingdom of GB & NI: 1800 Acts of Union: UK of GB & Ireland; # 1921 Irish Free State independent of UK area_unitedkingdom area_greatbritain + area_northernireland area_uk area_unitedkingdom # # Units derived from imperial system # ouncedal oz ft / s^2 # force which accelerates an ounce # at 1 ft/s^2 poundal lb ft / s^2 # same thing for a pound tondal longton ft / s^2 # and for a ton pdl poundal osi ounce force / inch^2 # used in aviation psi pound force / inch^2 psia psi # absolute pressure # Note that gauge pressure can be given # using the gaugepressure() and # psig() nonlinear unit definitions tsi ton force / inch^2 reyn psi sec slug lbf s^2 / ft slugf slug force slinch lbf s^2 / inch # Mass unit derived from inch second slinchf slinch force # pound-force system. Used in space # applications where in/sec^2 was a # natural acceleration measure. geepound slug lbf lb force tonf ton force lbm lb kip 1000 lbf # from kilopound ksi kip / in^2 mil 0.001 inch thou 0.001 inch tenth 0.0001 inch # one tenth of one thousandth of an inch millionth 1e-6 inch # one millionth of an inch circularinch 1|4 pi in^2 # area of a one-inch diameter circle circleinch circularinch # A circle with diameter d inches has # an area of d^2 circularinches cylinderinch circleinch inch # Cylinder h inch tall, d inches diameter # has volume d^2 h cylinder inches circularmil 1|4 pi mil^2 # area of one-mil diameter circle cmil circularmil cental 100 pound centner cental # Shotgun gauge measures the inside diameter of the barrel by counting # the number of spherical lead balls you can make to fit that barrel # using a pound of lead. Equivalently, this means that an n gauge gun # has a bore diameter that fits a ball of lead that weighs 1|n pounds shotgungauge(ga) units=[1;m] domain=(0,] range=(0,] \ 2 ~spherevol(1 pound / ga leaddensity) ; \ 1 pound / leaddensity spherevol(shotgungauge/2) shotgunga() shotgungauge caliber 0.01 inch # for measuring bullets duty ft lbf celo ft / s^2 jerk ft / s^3 australiapoint 0.01 inch # The "point" is used to measure rainfall # in Australia sabin ft^2 # Measure of sound absorption equal to the # absorbing power of one square foot of # a perfectly absorbing material. The # sound absorptivity of an object is the # area times a dimensionless # absorptivity coefficient. standardgauge 4 ft + 8.5 in # Standard width between railroad track flag 5 ft^2 # Construction term referring to sidewalk. rollwallpaper 30 ft^2 # Area of roll of wall paper fillpower in^3 / ounce # Density of down at standard pressure. # The best down has 750-800 fillpower. pinlength 1|16 inch # A #17 pin is 17/16 in long in the USA. buttonline 1|40 inch # The line was used in 19th century USA # to measure width of buttons. beespace 1|4 inch # Bees will fill any space that is smaller # than the bee space and leave open # spaces that are larger. The size of # the space varies with species. diamond 8|5 ft # Marking on US tape measures that is # useful to carpenters who wish to place # five studs in an 8 ft distance. Note # that the numbers appear in red every # 16 inches as well, giving six # divisions in 8 feet. retmaunit 1.75 in # Height of rack mountable equipment. U retmaunit # Equipment should be 1|32 inch narrower RU U # than its U measurement indicates to # allow for clearance, so 4U=(6+31|32)in # RETMA stands for the former name of # the standardizing organization, Radio # Electronics Television Manufacturers # Association. This organization is now # called the Electronic Industries # Alliance (EIA) and the rack standard # is specified in EIA RS-310-D. count per pound # For measuring the size of shrimp flightlevel 100 ft # Flight levels are used to ensure safe FL flightlevel # vertical separation between aircraft # despite variations in local air # pressure. Flight levels define # altitudes based on a standard air # pressure so that altimeter calibration # is not needed. This means that # aircraft at separated flight levels # are guaranteed to be separated. # Hence the definition of 100 feet is # a nominal, not true, measure. # Customarily written with no space in # the form FL290, which will not work in # units. But note "FL 290" will work. # # Other units of work, energy, power, etc # # Calorie: approximate energy to raise a gram of water one degree celsius calorie cal_th # Default is the thermochemical calorie cal calorie calorie_th 4.184 J # Thermochemical calorie, defined in 1930 thermcalorie calorie_th # by Frederick Rossini as 4.1833 J to cal_th calorie_th # avoid difficulties associated with the # uncertainty in the heat capacity of # water. In 1948 the value of the joule # was changed, so the thermochemical # calorie was redefined to 4.184 J. # This kept the energy measured by this # unit the same. calorie_IT 4.1868 J # International (Steam) Table calorie, cal_IT calorie_IT # defined in 1929 as watt-hour/860 or # equivalently 180|43 joules. At this # time the international joule had a # different value than the modern joule, # and the values were different in the # USA and in Europe. In 1956 at the # Fifth International Conference on # Properties of Steam the exact # definition given here was adopted. calorie_15 4.18580 J # Energy to go from 14.5 to 15.5 degC cal_15 calorie_15 calorie_fifteen cal_15 calorie_20 4.18190 J # Energy to go from 19.5 to 20.5 degC cal_20 calorie_20 calorie_twenty calorie_20 calorie_4 4.204 J # Energy to go from 3.5 to 4.5 degC cal_4 calorie_4 calorie_four calorie_4 cal_mean 4.19002 J # 1|100 energy to go from 0 to 100 degC Calorie kilocalorie # the food Calorie thermie 1e6 cal_15 # Heat required to raise the # temperature of a tonne of # water from 14.5 to 15.5 degC. # btu definitions: energy to raise a pound of water 1 degF btu btu_IT # International Table BTU is the default britishthermalunit btu btu_IT cal_IT lb degF / gram K btu_th cal_th lb degF / gram K btu_mean cal_mean lb degF / gram K btu_15 cal_15 lb degF / gram K btu_ISO 1055.06 J # Exact, rounded ISO definition based # on the IT calorie quad quadrillion btu ECtherm 1e5 btu_ISO # Exact definition UStherm 1.054804e8 J # Exact definition therm UStherm # Water latent heat from [23] water_fusion_heat 6.01 kJ/mol / (18.015 g/mol) # At 0 deg C water_vaporization_heat 2256.4 J/g # At saturation, 100 deg C, 101.42 kPa # Specific heat capacities of various substances # # SPECFIC_HEAT ENERGY / MASS / TEMPERATURE_DIFFERENCE # SPECFIC_HEAT_CAPACITY ENERGY / MASS / TEMPERATURE_DIFFERENCE specificheat_water calorie / g K water_specificheat specificheat_water # Values from www.engineeringtoolbox.com/specific-heat-metals-d_152.html specificheat_aluminum 0.91 J/g K specificheat_antimony 0.21 J/g K specificheat_barium 0.20 J/g K specificheat_beryllium 1.83 J/g K specificheat_bismuth 0.13 J/g K specificheat_cadmium 0.23 J/g K specificheat_cesium 0.24 J/g K specificheat_chromium 0.46 J/g K specificheat_cobalt 0.42 J/g K specificheat_copper 0.39 J/g K specificheat_gallium 0.37 J/g K specificheat_germanium 0.32 J/g K specificheat_gold 0.13 J/g K specificheat_hafnium 0.14 J/g K specificheat_indium 0.24 J/g K specificheat_iridium 0.13 J/g K specificheat_iron 0.45 J/g K specificheat_lanthanum 0.195 J/g K specificheat_lead 0.13 J/g K specificheat_lithium 3.57 J/g K specificheat_lutetium 0.15 J/g K specificheat_magnesium 1.05 J/g K specificheat_manganese 0.48 J/g K specificheat_mercury 0.14 J/g K specificheat_molybdenum 0.25 J/g K specificheat_nickel 0.44 J/g K specificheat_osmium 0.13 J/g K specificheat_palladium 0.24 J/g K specificheat_platinum 0.13 J/g K specificheat_plutonum 0.13 J/g K specificheat_potassium 0.75 J/g K specificheat_rhenium 0.14 J/g K specificheat_rhodium 0.24 J/g K specificheat_rubidium 0.36 J/g K specificheat_ruthenium 0.24 J/g K specificheat_scandium 0.57 J/g K specificheat_selenium 0.32 J/g K specificheat_silicon 0.71 J/g K specificheat_silver 0.23 J/g K specificheat_sodium 1.21 J/g K specificheat_strontium 0.30 J/g K specificheat_tantalum 0.14 J/g K specificheat_thallium 0.13 J/g K specificheat_thorium 0.13 J/g K specificheat_tin 0.21 J/g K specificheat_titanium 0.54 J/g K specificheat_tungsten 0.13 J/g K specificheat_uranium 0.12 J/g K specificheat_vanadium 0.39 J/g K specificheat_yttrium 0.30 J/g K specificheat_zinc 0.39 J/g K specificheat_zirconium 0.27 J/g K specificheat_ethanol 2.3 J/g K specificheat_ammonia 4.6 J/g K specificheat_freon 0.91 J/g K # R-12 at 0 degrees Fahrenheit specificheat_gasoline 2.22 J/g K specificheat_iodine 2.15 J/g K specificheat_oliveoil 1.97 J/g K # en.wikipedia.org/wiki/Heat_capacity#Table_of_specific_heat_capacities specificheat_hydrogen 14.3 J/g K specificheat_helium 5.1932 J/g K specificheat_argon 0.5203 J/g K specificheat_tissue 3.5 J/g K specificheat_diamond 0.5091 J/g K specificheat_granite 0.79 J/g K specificheat_graphite 0.71 J/g K specificheat_ice 2.11 J/g K specificheat_asphalt 0.92 J/g K specificheat_brick 0.84 J/g K specificheat_concrete 0.88 J/g K specificheat_glass_silica 0.84 J/g K specificheat_glass_flint 0.503 J/g K specificheat_glass_pyrex 0.753 J/g K specificheat_gypsum 1.09 J/g K specificheat_marble 0.88 J/g K specificheat_sand 0.835 J/g K specificheat_soil 0.835 J/g K specificheat_wood 1.7 J/g K specificheat_sucrose 1.244 J/g K #www.sugartech.co.za/heatcapacity/index.php # Energy densities of various fuels # # Most of these fuels have varying compositions or qualities and hence their # actual energy densities vary. These numbers are hence only approximate. # # E1. http://www.aps.org/policy/reports/popa-reports/energy/units.cfm # E2. https://web.archive.org/web/20100825042309/http://www.ior.com.au/ecflist.html tonoil 1e10 cal_IT # Ton oil equivalent. A conventional # value for the energy released by toe tonoil # burning one metric ton of oil. [18,E1] # Note that energy per mass of petroleum # products is fairly constant. # Variations in volumetric energy # density result from variations in the # density (kg/m^3) of different fuels. # This definition is given by the # IEA/OECD. toncoal 7e9 cal_IT # Energy in metric ton coal from [18]. # This is a nominal value which # is close to the heat content # of coal used in the 1950's barreloil 5.8 Mbtu # Conventional value for barrel of crude # oil [E1]. Actual range is 5.6 - 6.3. naturalgas_HHV 1027 btu/ft3 # Energy content of natural gas. HHV naturalgas_LHV 930 btu/ft3 # is for Higher Heating Value and naturalgas naturalgas_HHV # includes energy from condensation # combustion products. LHV is for Lower # Heating Value and excludes these. # American publications typically report # HHV whereas European ones report LHV. charcoal 30 GJ/tonne woodenergy_dry 20 GJ/tonne # HHV, a cord weights about a tonne woodenergy_airdry 15 GJ/tonne # 20% moisture content coal_bituminous 27 GJ / tonne coal_lignite 15 GJ / tonne coal_US 22 GJ / uston # Average for US coal (short ton), 1995 ethanol_HHV 84000 btu/usgallon ethanol_LHV 75700 btu/usgallon diesel 130500 btu/usgallon gasoline_LHV 115000 btu/usgallon gasoline_HHV 125000 btu/usgallon gasoline gasoline_HHV heating 37.3 MJ/liter fueloil 39.7 MJ/liter # low sulphur propane 93.3 MJ/m^3 butane 124 MJ/m^3 # The US EPA defines a "miles per gallon equivalent" for alternative # energy vehicles: mpg_e miles / gallon gasoline_LHV MPGe mpg_e # These values give total energy from uranium fission. Actual efficiency # of nuclear power plants is around 30%-40%. Note also that some reactors # use enriched uranium around 3% U-235. Uranium during processing or use # may be in a compound of uranium oxide or uranium hexafluoride, in which # case the energy density would be lower depending on how much uranium is # in the compound. uranium_pure 200 MeV avogadro / (235.0439299 g/mol) # Pure U-235 uranium_natural 0.7% uranium_pure # Natural uranium: 0.7% U-235 # Celsius heat unit: energy to raise a pound of water 1 degC celsiusheatunit cal lb degC / gram K chu celsiusheatunit # "Apparent" average power in an AC circuit, the product of rms voltage # and rms current, equal to the true power in watts when voltage and # current are in phase. In a DC circuit, always equal to the true power. VA volt ampere kWh kilowatt hour # The horsepower is supposedly the power of one horse pulling. Obviously # different people had different horses. horsepower 550 foot pound force / sec # Invented by James Watt mechanicalhorsepower horsepower hp horsepower metrichorsepower 75 kilogram force meter / sec # PS=Pferdestaerke in electrichorsepower 746 W # Germany boilerhorsepower 9809.50 W waterhorsepower 746.043 W brhorsepower horsepower # Value corrected Dec, 2019. Was 745.7 W. donkeypower 250 W chevalvapeur metrichorsepower # # Heat Transfer # # Thermal conductivity, K, measures the rate of heat transfer across # a material. The heat transferred is # Q = K dT A t / L # where dT is the temperature difference across the material, A is the # cross sectional area, t is the time, and L is the length (thickness). # Thermal conductivity is a material property. THERMAL_CONDUCTIVITY POWER / AREA (TEMPERATURE_DIFFERENCE/LENGTH) THERMAL_RESISTIVITY 1/THERMAL_CONDUCTIVITY # Thermal conductance is the rate at which heat flows across a given # object, so the area and thickness have been fixed. It depends on # the size of the object and is hence not a material property. THERMAL_CONDUCTANCE POWER / TEMPERATURE_DIFFERENCE THERMAL_RESISTANCE 1/THERMAL_CONDUCTANCE # Thermal admittance is the rate of heat flow per area across an # object whose thickness has been fixed. Its reciprocal, thermal # insulation, is used to for measuring the heat transfer per area # of sheets of insulation or cloth that are of specified thickness. THERMAL_ADMITTANCE THERMAL_CONDUCTIVITY / LENGTH THERMAL_INSULANCE THERMAL_RESISTIVITY LENGTH THERMAL_INSULATION THERMAL_RESISTIVITY LENGTH Rvalue degF ft^2 hr / btu Uvalue 1/Rvalue europeanUvalue watt / m^2 K RSI degC m^2 / W clo 0.155 degC m^2 / W # Supposed to be the insulance # required to keep a resting person # comfortable indoors. The value # given is from NIST and the CRC, # but [5] gives a slightly different # value of 0.875 ft^2 degF hr / btu. tog 0.1 degC m^2 / W # Also used for clothing. # Thermal Conductivity of a few materials diamond_natural_thermal_conductivity 2200 W / m K diamond_synthetic_thermal_conductivity 3320 W / m K # 99% pure C12 silver_thermal_conductivity 406 W / m K aluminum_thermal_conductivity 205 W / m K copper_thermal_conductivity 385 W / m K gold_thermal_conductivity 314 W / m K iron_thermal_conductivity 79.5 W / m K stainless_304_thermal_conductivity 15.5 W / m K # average value # The bel was defined by engineers of Bell Laboratories to describe the # reduction in audio level over a length of one mile. It was originally # called the transmission unit (TU) but was renamed around 1923 to honor # Alexander Graham Bell. The bel proved inconveniently large so the decibel # has become more common. The decibel is dimensionless since it reports a # ratio, but it is used in various contexts to report a signal's power # relative to some reference level. bel(x) units=[1;1] range=(0,) 10^(x); log(bel) # Basic bel definition decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) # Basic decibel dB() decibel # Abbreviation dBW(x) units=[1;W] range=(0,) dB(x) W ; ~dB(dBW/W) # Reference = 1 W dBk(x) units=[1;W] range=(0,) dB(x) kW ; ~dB(dBk/kW) # Reference = 1 kW dBf(x) units=[1;W] range=(0,) dB(x) fW ; ~dB(dBf/fW) # Reference = 1 fW dBm(x) units=[1;W] range=(0,) dB(x) mW ; ~dB(dBm/mW) # Reference = 1 mW dBmW(x) units=[1;W] range=(0,) dBm(x) ; ~dBm(dBmW) # Reference = 1 mW dBJ(x) units=[1;J] range=(0,) dB(x) J; ~dB(dBJ/J) # Energy relative # to 1 joule. Used for power spectral # density since W/Hz = J # When used to measure amplitude, voltage, or current the signal is squared # because power is proportional to the square of these measures. The root # mean square (RMS) voltage is typically used with these units. dB_amplitude(x) units=[1;1] dB(0.5 x) ; ~dB(dB_amplitude^2) dBV(x) units=[1;V] range=(0,) dB(0.5 x) V;~dB(dBV^2 / V^2) # Reference = 1 V dBmV(x) units=[1;V] range=(0,) dB(0.5 x) mV;~dB(dBmV^2/mV^2)# Reference = 1 mV dBuV(x) units=[1;V] range=(0,) dB(0.5 x) microV ; ~dB(dBuV^2 / microV^2) # Reference = 1 microvolt # Here are dB measurements for current. Be aware that dbA is also # a unit for frequency weighted sound pressure. dBA(x) units=[1;A] range=(0,) dB(0.5 x) A;~dB(dBA^2 / A^2) # Reference = 1 A dBmA(x) units=[1;A] range=(0,) dB(0.5 x) mA;~dB(dBmA^2/mA^2)# Reference = 1 mA dBuA(x) units=[1;A] range=(0,) dB(0.5 x) microA ; ~dB(dBuA^2 / microA^2) # Reference = 1 microamp # Referenced to the voltage that causes 1 mW dissipation in a 600 ohm load. # Originally defined as dBv but changed to prevent confusion with dBV. # The "u" is for unloaded. dBu(x) units=[1;V] range=(0,) dB(0.5 x) sqrt(mW 600 ohm) ; \ ~dB(dBu^2 / mW 600 ohm) dBv(x) units=[1;V] range=(0,) dBu(x) ; ~dBu(dBv) # Synonym for dBu # Measurements for sound in air, referenced to the threshold of human hearing # Note that sound in other media typically uses 1 micropascal as a reference # for sound pressure. Units dBA, dBB, dBC, refer to different frequency # weightings meant to approximate the human ear's response. # sound pressure level dBSPL(x) units=[1;Pa] range=(0,) dB(0.5 x) 20 microPa ; \ ~dB(dBSPL^2 / (20 microPa)^2) # sound intensity level dBSIL(x) units=[1;W/m^2] range=(0,) dB(x) 1e-12 W/m^2; \ ~dB(dBSIL / (1e-12 W/m^2)) # sound power level (The W in SWL is for the reference power, 1 W.) dBSWL(x) units=[1;W] range=(0,) dB(x) 1e-12 W; ~dB(dBSWL/1e-12 W) # The neper is another similar logarithmic unit. Note that the neper # is defined based on the ratio of amplitudes rather than the power # ratio like the decibel. This means that if the data is power, and # you convert to nepers you should take the square root of the data # to convert to amplitude. If you want to convert nepers to a power # measurement you need to square the resulting output. neper(x) units=[1;1] range=(0,) exp(x); ln(neper) centineper(x) units=[1;1] range=(0,) exp(x/100); 100 ln(centineper) Np() neper cNp() centineper Np_power(x) units=[1;1] Np(2 x) ; ~Np(Np_power)/2 # Misc other measures ENTROPY ENERGY / TEMPERATURE clausius 1e3 cal/K # A unit of physical entropy langley thermcalorie/cm^2 # Used in radiation theory poncelet 100 kg force m / s tonrefrigeration uston 144 btu / lb day # One ton refrigeration is # the rate of heat extraction required # turn one ton of water to ice in # a day. Ice is defined to have a # latent heat of 144 btu/lb. tonref tonrefrigeration refrigeration tonref / ton frigorie 1000 cal_15 # Used in refrigeration engineering. airwatt 8.5 (ft^3/min) inH2O # Measure of vacuum power as # pressure times air flow. # The unit "tnt" is defined so that you can write "tons tnt". The # question of which ton, exactly, is intended. The answer is that # nobody knows: # # Quoting the footnote from page 13 of # The Effects of Nuclear Weapons, 3rd ed. # https://www.fourmilab.ch/etexts/www/effects/eonw_1.pdf # # The majority of the experimental and theoretical values of the # explosive energy released by TNT range from 900 to 1,100 calories per # gram. At one time, there was some uncertainty as to whether the term # "kiloton" of TNT referred to a short kiloton (2*10^6 pounds), a metric # kiloton (2.205*10^6 pounds), or a long kiloton (2.24*10^6 pounds). In # order to avoid ambiguity, it was agreed that the term "kiloton" would # refer to the release of 10^12 calories of explosive energy. This is # equivalent to 1 short kiloton of TNT if the energy release is 1,102 # calories per gram or to 1 long kiloton if the energy is 984 calories # per gram of TNT. # # It is therefore not well-defined how much energy a "gram of tnt" is, # though this term does appear in some references. tnt 1e9 cal_th / ton # Defined exact value # Nuclear weapon yields davycrocket 10 ton tnt # lightest US tactical nuclear weapon hiroshima 15.5 kiloton tnt # Uranium-235 fission bomb nagasaki 21 kiloton tnt # Plutonium-239 fission bomb fatman nagasaki littleboy hiroshima ivyking 500 kiloton tnt # most powerful fission bomb castlebravo 15 megaton tnt # most powerful US test tsarbomba 50 megaton tnt # most powerful test ever: USSR, # 30 October 1961 b53bomb 9 megaton tnt # http://rarehistoricalphotos.com/gadget-first-atomic-bomb/ trinity 18 kiloton tnt # July 16, 1945 gadget trinity # # Permeability: The permeability or permeance, n, of a substance determines # how fast vapor flows through the substance. The formula W = n A dP # holds where W is the rate of flow (in mass/time), n is the permeability, # A is the area of the flow path, and dP is the vapor pressure difference. # perm_0C grain / hr ft^2 inHg perm_zero perm_0C perm_0 perm_0C perm perm_0C perm_23C grain / hr ft^2 in Hg23C perm_twentythree perm_23C # # Counting measures # pair 2 brace 2 nest 3 # often used for items like bowls that # nest together hattrick 3 # Used in sports, especially cricket and ice # hockey to report the number of goals. dicker 10 dozen 12 bakersdozen 13 score 20 flock 40 timer 40 shock 60 toncount 100 # Used in sports in the UK longhundred 120 # From a germanic counting system gross 144 greatgross 12 gross tithe 1|10 # From Anglo-Saxon word for tenth # Paper counting measure shortquire 24 quire 25 shortream 480 ream 500 perfectream 516 bundle 2 reams bale 5 bundles # # Paper measures # # USA paper sizes lettersize 8.5 inch 11 inch legalsize 8.5 inch 14 inch ledgersize 11 inch 17 inch executivesize 7.25 inch 10.5 inch Apaper 8.5 inch 11 inch Bpaper 11 inch 17 inch Cpaper 17 inch 22 inch Dpaper 22 inch 34 inch Epaper 34 inch 44 inch # Correspondence envelope sizes. #10 is the standard business # envelope in the USA. envelope6_25size 3.5 inch 6 inch envelope6_75size 3.625 inch 6.5 inch envelope7size 3.75 inch 6.75 inch envelope7_75size 3.875 inch 7.5 inch envelope8_625size 3.625 inch 8.625 inch envelope9size 3.875 inch 8.875 inch envelope10size 4.125 inch 9.5 inch envelope11size 4.5 inch 10.375 inch envelope12size 4.75 inch 11 inch envelope14size 5 inch 11.5 inch envelope16size 6 inch 12 inch # Announcement envelope sizes (no relation to metric paper sizes like A4) envelopeA1size 3.625 inch 5.125 inch # same as 4bar envelopeA2size 4.375 inch 5.75 inch envelopeA6size 4.75 inch 6.5 inch envelopeA7size 5.25 inch 7.25 inch envelopeA8size 5.5 inch 8.125 inch envelopeA9size 5.75 inch 8.75 inch envelopeA10size 6 inch 9.5 inch # Baronial envelopes envelope4bar 3.625 inch 5.125 inch # same as A1 envelope5_5bar 4.375 inch 5.75 inch envelope6bar 4.75 inch 6.5 inch # Coin envelopes envelope1baby 2.25 inch 3.5 inch # same as #1 coin envelope00coin 1.6875 inch 2.75 inch envelope1coin 2.25 inch 3.5 inch envelope3coin 2.5 inch 4.25 inch envelope4coin 3 inch 4.5 inch envelope4_5coin 3 inch 4.875 inch envelope5coin 2.875 inch 5.25 inch envelope5_5coin 3.125 inch 5.5 inch envelope6coin 3.375 inch 6 inch envelope7coin 3.5 inch 6.5 inch # The metric paper sizes are defined so that if a sheet is cut in half # along the short direction, the result is two sheets which are # similar to the original sheet. This means that for any metric size, # the long side is close to sqrt(2) times the length of the short # side. Each series of sizes is generated by repeated cuts in half, # with the values rounded down to the nearest millimeter. A0paper 841 mm 1189 mm # The basic size in the A series A1paper 594 mm 841 mm # is defined to have an area of A2paper 420 mm 594 mm # one square meter. A3paper 297 mm 420 mm A4paper 210 mm 297 mm A5paper 148 mm 210 mm A6paper 105 mm 148 mm A7paper 74 mm 105 mm A8paper 52 mm 74 mm A9paper 37 mm 52 mm A10paper 26 mm 37 mm B0paper 1000 mm 1414 mm # The basic B size has an area B1paper 707 mm 1000 mm # of sqrt(2) square meters. B2paper 500 mm 707 mm B3paper 353 mm 500 mm B4paper 250 mm 353 mm B5paper 176 mm 250 mm B6paper 125 mm 176 mm B7paper 88 mm 125 mm B8paper 62 mm 88 mm B9paper 44 mm 62 mm B10paper 31 mm 44 mm C0paper 917 mm 1297 mm # The basic C size has an area C1paper 648 mm 917 mm # of sqrt(sqrt(2)) square meters. C2paper 458 mm 648 mm C3paper 324 mm 458 mm # Intended for envelope sizes C4paper 229 mm 324 mm C5paper 162 mm 229 mm C6paper 114 mm 162 mm C7paper 81 mm 114 mm C8paper 57 mm 81 mm C9paper 40 mm 57 mm C10paper 28 mm 40 mm # gsm (Grams per Square Meter), a sane, metric paper weight measure gsm grams / meter^2 # In the USA, a collection of crazy historical paper measures are used. Paper # is measured as a weight of a ream of that particular type of paper. This is # sometimes called the "substance" or "basis" (as in "substance 20" paper). # The standard sheet size or "basis size" varies depending on the type of # paper. As a result, 20 pound bond paper and 50 pound text paper are actually # about the same weight. The different sheet sizes were historically the most # convenient for printing or folding in the different applications. These # different basis weights are standards maintained by American Society for # Testing Materials (ASTM) and the American Forest and Paper Association # (AF&PA). poundbookpaper lb / 25 inch 38 inch ream lbbook poundbookpaper poundtextpaper poundbookpaper lbtext poundtextpaper poundoffsetpaper poundbookpaper # For offset printing lboffset poundoffsetpaper poundbiblepaper poundbookpaper # Designed to be lightweight, thin, lbbible poundbiblepaper # strong and opaque. poundtagpaper lb / 24 inch 36 inch ream lbtag poundtagpaper poundbagpaper poundtagpaper lbbag poundbagpaper poundnewsprintpaper poundtagpaper lbnewsprint poundnewsprintpaper poundposterpaper poundtagpaper lbposter poundposterpaper poundtissuepaper poundtagpaper lbtissue poundtissuepaper poundwrappingpaper poundtagpaper lbwrapping poundwrappingpaper poundwaxingpaper poundtagpaper lbwaxing poundwaxingpaper poundglassinepaper poundtagpaper lbglassine poundglassinepaper poundcoverpaper lb / 20 inch 26 inch ream lbcover poundcoverpaper poundindexpaper lb / 25.5 inch 30.5 inch ream lbindex poundindexpaper poundindexbristolpaper poundindexpaper lbindexbristol poundindexpaper poundbondpaper lb / 17 inch 22 inch ream # Bond paper is stiff and lbbond poundbondpaper # durable for repeated poundwritingpaper poundbondpaper # filing, and it resists lbwriting poundwritingpaper # ink penetration. poundledgerpaper poundbondpaper lbledger poundledgerpaper poundcopypaper poundbondpaper lbcopy poundcopypaper poundblottingpaper lb / 19 inch 24 inch ream lbblotting poundblottingpaper poundblankspaper lb / 22 inch 28 inch ream lbblanks poundblankspaper poundpostcardpaper lb / 22.5 inch 28.5 inch ream lbpostcard poundpostcardpaper poundweddingbristol poundpostcardpaper lbweddingbristol poundweddingbristol poundbristolpaper poundweddingbristol lbbristol poundbristolpaper poundboxboard lb / 1000 ft^2 lbboxboard poundboxboard poundpaperboard poundboxboard lbpaperboard poundpaperboard # When paper is marked in units of M, it means the weight of 1000 sheets of the # given size of paper. To convert this to paper weight, divide by the size of # the paper in question. paperM lb / 1000 # In addition paper weight is reported in "caliper" which is simply the # thickness of one sheet, typically in inches. Thickness is also reported in # "points" where a point is 1|1000 inch. These conversions are supplied to # convert these units roughly (using an approximate density) into the standard # paper weight values. pointthickness 0.001 in paperdensity 0.8 g/cm^3 # approximate--paper densities vary! papercaliper in paperdensity paperpoint pointthickness paperdensity # # Printing # fournierpoint 0.1648 inch / 12 # First definition of the printers # point made by Pierre Fournier who # defined it in 1737 as 1|12 of a # cicero which was 0.1648 inches. olddidotpoint 1|72 frenchinch # Francois Ambroise Didot, one of # a family of printers, changed # Fournier's definition around 1770 # to fit to the French units then in # use. bertholdpoint 1|2660 m # H. Berthold tried to create a # metric version of the didot point # in 1878. INpoint 0.4 mm # This point was created by a # group directed by Fermin Didot in # 1881 and is associated with the # imprimerie nationale. It doesn't # seem to have been used much. germandidotpoint 0.376065 mm # Exact definition appears in DIN # 16507, a German standards document # of 1954. Adopted more broadly in # 1966 by ??? metricpoint 3|8 mm # Proposed in 1977 by Eurograf oldpoint 1|72.27 inch # The American point was invented printerspoint oldpoint # by Nelson Hawks in 1879 and texpoint oldpoint # dominates USA publishing. # It was standardized by the American # Typefounders Association at the # value of 0.013837 inches exactly. # Knuth uses the approximation given # here (which is very close). The # comp.fonts FAQ claims that this # value is supposed to be 1|12 of a # pica where 83 picas is equal to 35 # cm. But this value differs from # the standard. texscaledpoint 1|65536 texpoint # The TeX typesetting system uses texsp texscaledpoint # this for all computations. computerpoint 1|72 inch # The American point was rounded point computerpoint computerpica 12 computerpoint # to an even 1|72 inch by computer postscriptpoint computerpoint # people at some point. pspoint postscriptpoint twip 1|20 point # TWentieth of an Imperial Point Q 1|4 mm # Used in Japanese phototypesetting # Q is for quarter frenchprinterspoint olddidotpoint didotpoint germandidotpoint # This seems to be the dominant value europeanpoint didotpoint # for the point used in Europe cicero 12 didotpoint stick 2 inches # Type sizes excelsior 3 oldpoint brilliant 3.5 oldpoint diamondtype 4 oldpoint pearl 5 oldpoint agate 5.5 oldpoint # Originally agate type was 14 lines per # inch, giving a value of 1|14 in. ruby agate # British nonpareil 6 oldpoint mignonette 6.5 oldpoint emerald mignonette # British minion 7 oldpoint brevier 8 oldpoint bourgeois 9 oldpoint longprimer 10 oldpoint smallpica 11 oldpoint pica 12 oldpoint english 14 oldpoint columbian 16 oldpoint greatprimer 18 oldpoint paragon 20 oldpoint meridian 44 oldpoint canon 48 oldpoint # German type sizes nonplusultra 2 didotpoint brillant 3 didotpoint diamant 4 didotpoint perl 5 didotpoint nonpareille 6 didotpoint kolonel 7 didotpoint petit 8 didotpoint borgis 9 didotpoint korpus 10 didotpoint corpus korpus garamond korpus mittel 14 didotpoint tertia 16 didotpoint text 18 didotpoint kleine_kanon 32 didotpoint kanon 36 didotpoint grobe_kanon 42 didotpoint missal 48 didotpoint kleine_sabon 72 didotpoint grobe_sabon 84 didotpoint # # Information theory units. Note that the name "entropy" is used both # to measure information and as a physical quantity. # INFORMATION bit nat (1/ln(2)) bits # Entropy measured base e hartley log2(10) bits # Entropy of a uniformly ban hartley # distributed random variable # over 10 symbols. dit hartley # from Decimal digIT # # Computer # bps bit/sec # Sometimes the term "baud" is # incorrectly used to refer to # bits per second. Baud refers # to symbols per second. Modern # modems transmit several bits # per symbol. byte 8 bit # Not all machines had 8 bit B byte # bytes, but these days most of # them do. But beware: for # transmission over modems, a # few extra bits are used so # there are actually 10 bits per # byte. octet 8 bits # The octet is always 8 bits nybble 4 bits # Half of a byte. Sometimes # equal to different lengths # such as 3 bits. nibble nybble nyp 2 bits # Donald Knuth asks in an exercise # for a name for a 2 bit # quantity and gives the "nyp" # as a solution due to Gregor # Purdy. Not in common use. meg megabyte # Some people consider these # units along with the kilobyte gig gigabyte # to be defined according to # powers of 2 with the kilobyte # equal to 2^10 bytes, the # megabyte equal to 2^20 bytes and # the gigabyte equal to 2^30 bytes # but these usages are forbidden # by SI. Binary prefixes have # been defined by IEC to replace # the SI prefixes. Use them to # get the binary units KiB, MiB, # GiB, etc. jiffy 0.01 sec # This is defined in the Jargon File jiffies jiffy # (http://www.jargon.org) as being the # duration of a clock tick for measuring # wall-clock time. Supposedly the value # used to be 1|60 sec or 1|50 sec # depending on the frequency of AC power, # but then 1|100 sec became more common. # On linux systems, this term is used and # for the Intel based chips, it does have # the value of .01 sec. The Jargon File # also lists two other definitions: # millisecond, and the time taken for # light to travel one foot. cdaudiospeed 44.1 kHz 2*16 bits # CD audio data rate at 44.1 kHz with 2 # samples of sixteen bits each. cdromspeed 75 2048 bytes / sec # For data CDs (mode1) 75 sectors are read # each second with 2048 bytes per sector. # Audio CDs do not have sectors, but # people sometimes divide the bit rate by # 75 and claim a sector length of 2352. # Data CDs have a lower rate due to # increased error correction overhead. # There is a rarely used mode (mode2) with # 2336 bytes per sector that has fewer # error correction bits than mode1. dvdspeed 1385 kB/s # This is the "1x" speed of a DVD using # constant linear velocity (CLV) mode. # Modern DVDs may vary the linear velocity # as they go from the inside to the # outside of the disc. # See http://www.osta.org/technology/dvdqa/dvdqa4.htm FIT / 1e9 hour # Failures In Time, number of failures per billion hours # # The IP address space is divided into subnets. The number of hosts # in a subnet depends on the length of the subnet prefix. This is # often written as /N where N is the number of bits in the prefix. # # https://en.wikipedia.org/wiki/Subnetwork # # These definitions gives the number of hosts for a subnet whose # prefix has the specified length in bits. # ipv4subnetsize(prefix_len) units=[1;1] domain=[0,32] range=[1,4294967296] \ 2^(32-prefix_len) ; 32-log2(ipv4subnetsize) ipv4classA ipv4subnetsize(8) ipv4classB ipv4subnetsize(16) ipv4classC ipv4subnetsize(24) ipv6subnetsize(prefix_len) units=[1;1] domain=[0,128] \ range=[1,340282366920938463463374607431768211456] \ 2^(128-prefix_len) ; 128-log2(ipv6subnetsize) # # Musical measures. Musical intervals expressed as ratios. Multiply # two intervals together to get the sum of the interval. The function # musicalcent can be used to convert ratios to cents. # # Perfect intervals octave 2 majorsecond musicalfifth^2 / octave majorthird 5|4 minorthird 6|5 musicalfourth 4|3 musicalfifth 3|2 majorsixth musicalfourth majorthird minorsixth musicalfourth minorthird majorseventh musicalfifth majorthird minorseventh musicalfifth minorthird pythagoreanthird majorsecond musicalfifth^2 / octave syntoniccomma pythagoreanthird / majorthird pythagoreancomma musicalfifth^12 / octave^7 # Equal tempered definitions semitone octave^(1|12) musicalcent(x) units=[1;1] range=(0,) semitone^(x/100) ; \ 100 log(musicalcent)/log(semitone) # # Musical note lengths. # wholenote ! MUSICAL_NOTE_LENGTH wholenote halfnote 1|2 wholenote quarternote 1|4 wholenote eighthnote 1|8 wholenote sixteenthnote 1|16 wholenote thirtysecondnote 1|32 wholenote sixtyfourthnote 1|64 wholenote dotted 3|2 doubledotted 7|4 breve doublewholenote semibreve wholenote minimnote halfnote crotchet quarternote quaver eighthnote semiquaver sixteenthnote demisemiquaver thirtysecondnote hemidemisemiquaver sixtyfourthnote semidemisemiquaver hemidemisemiquaver # # yarn and cloth measures # # yarn linear density woolyarnrun 1600 yard/pound # 1600 yds of "number 1 yarn" weighs # a pound. yarncut 300 yard/pound # Less common system used in # Pennsylvania for wool yarn cottonyarncount 840 yard/pound linenyarncount 300 yard/pound # Also used for hemp and ramie worstedyarncount 1680 ft/pound metricyarncount meter/gram denier 1|9 tex # used for silk and rayon manchesteryarnnumber drams/1000 yards # old system used for silk pli lb/in typp 1000 yd/lb # abbreviation for Thousand Yard Per Pound asbestoscut 100 yd/lb # used for glass and asbestos yarn tex gram / km # rational metric yarn measure, meant drex 0.1 tex # to be used for any kind of yarn poumar lb / 1e6 yard # yarn and cloth length skeincotton 80*54 inch # 80 turns of thread on a reel with a # 54 in circumference (varies for other # kinds of thread) cottonbolt 120 ft # cloth measurement woolbolt 210 ft bolt cottonbolt heer 600 yards cut 300 yards # used for wet-spun linen yarn lea 300 yards sailmakersyard 28.5 in sailmakersounce oz / sailmakersyard 36 inch silkmomme momme / 25 yards 1.49 inch # Traditional silk weight silkmm silkmomme # But it is also defined as # lb/100 yd 45 inch. The two # definitions are slightly different # and neither one seems likely to be # the true source definition. # # drug dosage # mcg microgram # Frequently used for vitamins iudiptheria 62.8 microgram # IU is for international unit iupenicillin 0.6 microgram iuinsulin 41.67 microgram drop 1|20 ml # The drop was an old "unit" that was # replaced by the minim. But I was # told by a pharmacist that in his # profession, the conversion of 20 # drops per ml is actually used. bloodunit 450 ml # For whole blood. For blood # components, a blood unit is the # quantity of the component found in a # blood unit of whole blood. The # human body contains about 12 blood # units of whole blood. # # misc medical measure # frenchcathetersize 1|3 mm # measure used for the outer diameter # of a catheter charriere frenchcathetersize # # fixup units for times when prefix handling doesn't do the job # hectare hectoare megohm megaohm kilohm kiloohm microhm microohm megalerg megaerg # 'L' added to make it pronounceable [18]. # # Money # # Note that US$ is the primitive unit so other currencies are # generally given in US$. # unitedstatesdollar US$ usdollar US$ $ dollar mark germanymark #bolivar venezuelabolivar # Not all databases are #venezuelabolivarfuerte 1e-5 bolivar # supplying these #bolivarfuerte 1e-5 bolivar # The currency was revalued #oldbolivar 1|1000 bolivarfuerte # twice peseta spainpeseta rand southafricarand escudo portugalescudo guilder netherlandsguilder hollandguilder netherlandsguilder peso mexicopeso yen japanyen lira turkeylira rupee indiarupee drachma greecedrachma franc francefranc markka finlandmarkka britainpound unitedkingdompound greatbritainpound unitedkingdompound unitedkingdompound ukpound poundsterling britainpound yuan chinayuan # Unicode Currency Names !utf8 icelandkróna icelandkrona polandzÅ‚oty polandzloty tongapa’anga tongapa'anga #venezuelabolívar venezuelabolivar vietnamđồng vietnamdong mongoliatögrög mongoliatugrik sãotomé&príncipedobra saotome&principedobra !endutf8 UKP GBP # Not an ISO code, but looks like one, and # sometimes used on usenet. !include currency.units # Money on the gold standard, used in the late 19th century and early # 20th century. olddollargold 23.22 grains goldprice # Used until 1934 newdollargold 96|7 grains goldprice # After Jan 31, 1934 dollargold newdollargold poundgold 113 grains goldprice # British pound # Precious metals goldounce goldprice troyounce silverounce silverprice troyounce platinumounce platinumprice troyounce XAU goldounce XPT platinumounce XAG silverounce # Nominal masses of US coins. Note that dimes, quarters and half dollars # have weight proportional to value. Before 1965 it was $40 / kg. USpennyweight 2.5 grams # Since 1982, 48 grains before USnickelweight 5 grams USdimeweight US$ 0.10 / (20 US$ / lb) # Since 1965 USquarterweight US$ 0.25 / (20 US$ / lb) # Since 1965 UShalfdollarweight US$ 0.50 / (20 US$ / lb) # Since 1971 USdollarweight 8.1 grams # Weight of Susan B. Anthony and # Sacagawea dollar coins # British currency quid britainpound # Slang names fiver 5 quid tenner 10 quid monkey 500 quid brgrand 1000 quid bob shilling shilling 1|20 britainpound # Before decimalisation, there oldpence 1|12 shilling # were 20 shillings to a pound, farthing 1|4 oldpence # each of twelve old pence guinea 21 shilling # Still used in horse racing crown 5 shilling florin 2 shilling groat 4 oldpence tanner 6 oldpence brpenny 0.01 britainpound pence brpenny tuppence 2 pence tuppenny tuppence ha'penny halfbrpenny hapenny ha'penny oldpenny oldpence oldtuppence 2 oldpence oldtuppenny oldtuppence threepence 3 oldpence # threepence never refers to new money threepenny threepence oldthreepence threepence oldthreepenny threepence oldhalfpenny halfoldpenny oldha'penny oldhalfpenny oldhapenny oldha'penny brpony 25 britainpound # Canadian currency loony 1 canadadollar # This coin depicts a loon toony 2 canadadollar # Cryptocurrency satoshi 1e-8 bitcoin XBT bitcoin # nonstandard code # Inflation. # # Currently US inflation as reported by the BLS CPI index is available. # The UScpi() table reports the USA consumer price index. Note that # if you specify a year like 2015, that refers to the CPI reported # for December of 2014 (which is released in mid January 2015), # so it refers to the point right at the start of the given year. # Months are increments of 1|12 on the year, so the January 2015 # release will be 2015+1|12 = 2015.08333. !include cpi.units USCPI() UScpi USCPI_now UScpi_now USCPI_lastdate UScpi_lastdate cpi() UScpi CPI() UScpi cpi_now UScpi_now CPI_now UScpi_now cpi_lastdate UScpi_lastdate CPI_lastdate UScpi_lastdate # These definitions hide the CPI index and directly convert US dollars # from a specified date to current dollars. You can use this to convert # historical dollars to present value or to convert money in the past # between two dates. dollars_in() USdollars_in US$in() USdollars_in $in() USdollars_in # This definition gives the dimensionless US inflation factor since the # specified date. inflation_since() USinflation_since # # Units used for measuring volume of wood # cord 4*4*8 ft^3 # 4 ft by 4 ft by 8 ft bundle of wood facecord 1|2 cord cordfoot 1|8 cord # One foot long section of a cord cordfeet cordfoot housecord 1|3 cord # Used to sell firewood for residences, # often confusingly called a "cord" boardfoot ft^2 inch # Usually 1 inch thick wood boardfeet boardfoot fbm boardfoot # feet board measure stack 4 yard^3 # British, used for firewood and coal [18] rick 4 ft 8 ft 16 inches # Stack of firewood, supposedly # sometimes called a face cord, but this # value is equal to 1|3 cord. Name # comes from an old Norse word for a # stack of wood. stere m^3 timberfoot ft^3 # Used for measuring solid blocks of wood standard 120 12 ft 11 in 1.5 in # This is the St Petersburg or # Pittsburg standard. Apparently the # term is short for "standard hundred" # which was meant to refer to 100 pieces # of wood (deals). However, this # particular standard is equal to 120 # deals which are 12 ft by 11 in by 1.5 # inches (not the standard deal). hoppusfoot (4/pi) ft^3 # Volume calculation suggested in 1736 hoppusboardfoot 1|12 hoppusfoot # forestry manual by Edward Hoppus, for hoppuston 50 hoppusfoot # estimating the usable volume of a log. # It results from computing the volume # of a cylindrical log of length, L, and # girth (circumference), G, by V=L(G/4)^2. # The hoppus ton is apparently still in # use for shipments from Southeast Asia. # In Britain, the deal is apparently any piece of wood over 6 feet long, over # 7 wide and 2.5 inches thick. The OED doesn't give a standard size. A piece # of wood less than 7 inches wide is called a "batten". This unit is now used # exclusively for fir and pine. deal 12 ft 11 in 2.5 in # The standard North American deal [OED] wholedeal 12 ft 11 in 1.25 in # If it's half as thick as the standard # deal it's called a "whole deal"! splitdeal 12 ft 11 in 5|8 in # And half again as thick is a split deal. # Used for shellac mixing rate poundcut pound / gallon lbcut poundcut # # Gas and Liquid flow units # FLUID_FLOW VOLUME / TIME # Some obvious volumetric gas flow units (cu is short for cubic) cumec m^3/s cusec ft^3/s # Conventional abbreviations for fluid flow units gph gal/hr gpm gal/min mgd megagal/day brgph brgallon/hr brgpm brgallon/min brmgd mega brgallon/day usgph usgallon/hr usgpm usgallon/min usmgd mega usgallon/day cfs ft^3/s cfh ft^3/hour cfm ft^3/min lpm liter/min lfm ft/min # Used to report air flow produced by fans. # Multiply by cross sectional area to get a # flow in cfm. pru mmHg / (ml/min) # peripheral resistance unit, used in # medicine to assess blood flow in # the capillaries. # Miner's inch: This is an old historic unit used in the Western United # States. It is generally defined as the rate of flow through a one square # inch hole at a specified depth such as 4 inches. In the late 19th century, # volume of water was sometimes measured in the "24 hour inch". Values for the # miner's inch were fixed by state statues. (This information is from a web # site operated by the Nevada Division of Water Planning: The Water Words # Dictionary at http://water.nv.gov/WaterPlanDictionary.aspx, specifically # http://water.nv.gov/programs/planning/dictionary/wwords-M.pdf. All # but minersinchNV are s.v. Miner's Inch [Western United States]) minersinchAZ 1.5 ft^3/min minersinchCA 1.5 ft^3/min minersinchMT 1.5 ft^3/min minersinchNV 1.5 ft^3/min minersinchOR 1.5 ft^3/min minersinchID 1.2 ft^3/min minersinchKS 1.2 ft^3/min minersinchNE 1.2 ft^3/min minersinchNM 1.2 ft^3/min minersinchND 1.2 ft^3/min minersinchSD 1.2 ft^3/min minersinchUT 1.2 ft^3/min minersinchCO 1 ft^3/sec / 38.4 # 38.4 miner's inches = 1 ft^3/sec minersinchBC 1.68 ft^3/min # British Columbia # Oceanographic flow sverdrup 1e6 m^3 / sec # Used to express flow of ocean # currents. Named after Norwegian # oceanographer H. Sverdrup. # In vacuum science and some other applications, gas flow is measured # as the product of volumetric flow and pressure. This is useful # because it makes it easy to compare with the flow at standard # pressure (one atmosphere). It also directly relates to the number # of gas molecules per unit time, and hence to the mass flow if the # molecular mass is known. GAS_FLOW PRESSURE FLUID_FLOW sccm atm cc/min # 's' is for "standard" to indicate sccs atm cc/sec # flow at standard pressure scfh atm ft^3/hour # scfm atm ft^3/min slpm atm liter/min slph atm liter/hour lusec liter micron Hg / s # Used in vacuum science # US Standard Atmosphere (1976) # Atmospheric temperature and pressure vs. geometric height above sea level # This definition covers only the troposphere (the lowest atmospheric # layer, up to 11 km), and assumes the layer is polytropic. # A polytropic process is one for which PV^k = const, where P is the # pressure, V is the volume, and k is the polytropic exponent. The # polytropic index is n = 1 / (k - 1). As noted in the Wikipedia article # https://en.wikipedia.org/wiki/Polytropic_process, some authors reverse # the definitions of "exponent" and "index." The functions below assume # the following parameters: # temperature lapse rate, -dT/dz, in troposphere lapserate 6.5 K/km # US Std Atm (1976) # air molecular weight, including constituent mol wt, given # in Table 3, p. 3; CH4 (16.04303) and N2O (44.0128) from # Table 15, p. 33. Values for molecular weights are slightly # different from current values, so the original numerical # values are retained. air_1976 78.084 % 28.0134 \ + 20.9476 % 31.9988 \ + 9340 ppm 39.948 \ + 314 ppm 44.00995 \ + 18.18 ppm 20.183 \ + 5.24 ppm 4.0026 \ + 1.5 ppm 16.04303 \ + 1.14 ppm 83.80 \ + 0.5 ppm 2.01594 \ + 0.27 ppm 44.0128 \ + 0.087 ppm 131.30 # from US Standard Atmosphere, 1962, Table I.2.7, p. 9 air_1962 78.084 % 28.0134 \ + 20.9476 % 31.9988 \ + 9340 ppm 39.948 \ + 314 ppm 44.00995 \ + 18.18 ppm 20.183 \ + 5.24 ppm 4.0026 \ + 2 ppm 16.04303 \ + 1.14 ppm 83.80 \ + 0.5 ppm 2.01594 \ + 0.5 ppm 44.0128 \ + 0.087 ppm 131.30 # Average molecular weight of air # # Concentration of greenhouse gases CO2, CH4, and N20 are from # https://gml.noaa.gov/ccgg/trends/global.html (accessed 2023-04-10); # others are from NASA Earth Fact Sheet # https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html (accessed 2023-04-10) # Numbers do not add up to exactly 100% due to roundoff and uncertainty. Water # is highly variable, typically makes up about 1% air_2023 78.08% nitrogen 2 \ + 20.95% oxygen 2 \ + 9340 ppm argon \ + 419 ppm (carbon + oxygen 2) \ + 18.18 ppm neon \ + 5.24 ppm helium \ + 1.92 ppm (carbon + 4 hydrogen) \ + 1.14 ppm krypton \ + 0.55 ppm hydrogen 2 \ + 0.34 ppm (nitrogen 2 + oxygen) # from NASA Earth Fact Sheet (accessed 28 August 2015) # http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html air_2015 78.08% nitrogen 2 \ + 20.95% oxygen 2 \ + 9340 ppm argon \ + 400 ppm (carbon + oxygen 2) \ + 18.18 ppm neon \ + 5.24 ppm helium \ + 1.7 ppm (carbon + 4 hydrogen) \ + 1.14 ppm krypton \ + 0.55 ppm hydrogen 2 air air_2023 # universal gas constant R_1976 8.31432e3 N m/(kmol K) # polytropic index n polyndx_1976 air_1976 (kg/kmol) gravity/(R_1976 lapserate) - 1 # If desired, redefine using current values for air mol wt and R polyndx polyndx_1976 # polyndx air (kg/kmol) gravity/(R lapserate) - 1 # for comparison with various references polyexpnt (polyndx + 1) / polyndx # The model assumes the following reference values: # sea-level temperature and pressure stdatmT0 288.15 K stdatmP0 atm # "effective radius" for relation of geometric to geopotential height, # at a latitude at which g = 9.80665 m/s (approximately 45.543 deg); no # relation to actual radius earthradUSAtm 6356766 m # Temperature vs. geopotential height h # Assumes 15 degC at sea level # Based on approx 45 deg latitude # Lower limits of domain and upper limits of range are those of the # tables in US Standard Atmosphere (NASA 1976) stdatmTH(h) units=[m;K] domain=[-5000,11e3] range=[217,321] \ stdatmT0+(-lapserate h) ; (stdatmT0+(-stdatmTH))/lapserate # Temperature vs. geometric height z; based on approx 45 deg latitude stdatmT(z) units=[m;K] domain=[-5000,11e3] range=[217,321] \ stdatmTH(geop_ht(z)) ; ~geop_ht(~stdatmTH(stdatmT)) # Pressure vs. geopotential height h # Assumes 15 degC and 101325 Pa at sea level # Based on approx 45 deg latitude # Lower limits of domain and upper limits of range are those of the # tables in US Standard Atmosphere (NASA 1976) stdatmPH(h) units=[m;Pa] domain=[-5000,11e3] range=[22877,177764] \ atm (1 - (lapserate/stdatmT0) h)^(polyndx + 1) ; \ (stdatmT0/lapserate) (1+(-(stdatmPH/stdatmP0)^(1/(polyndx + 1)))) # Pressure vs. geometric height z; based on approx 45 deg latitude stdatmP(z) units=[m;Pa] domain=[-5000,11e3] range=[22877,177764] \ stdatmPH(geop_ht(z)); ~geop_ht(~stdatmPH(stdatmP)) # Geopotential height from geometric height # Based on approx 45 deg latitude # Lower limits of domain and range are somewhat arbitrary; they # correspond to the limits in the US Std Atm tables geop_ht(z) units=[m;m] domain=[-5000,) range=[-5004,) \ (earthradUSAtm z) / (earthradUSAtm + z) ; \ (earthradUSAtm geop_ht) / (earthradUSAtm + (-geop_ht)) # The standard value for the sea-level acceleration due to gravity is # 9.80665 m/s^2, but the actual value varies with latitude (Harrison 1949) # R_eff = 2 g_phi / denom # g_phi = 978.0356e-2 (1+0.0052885 sin(lat)^2+(-0.0000059) sin(2 lat)^2) # or # g_phi = 980.6160e-2 (1+(-0.0026373) cos(2 lat)+0.0000059 cos(2 lat)^2) # denom = 3.085462e-6+2.27e-9 cos(2 lat)+(-2e-12) cos(4 lat) (minutes?) # There is no inverse function; the standard value applies at a latitude # of about 45.543 deg g_phi(lat) units=[deg;m/s2] domain=[0,90] noerror \ 980.6160e-2 (1+(-0.0026373) cos(2 lat)+0.0000059 cos(2 lat)^2) m/s2 # effective Earth radius for relation of geometric height to # geopotential height, as function of latitude (Harrison 1949) earthradius_eff(lat) units=[deg;m] domain=[0,90] noerror \ m 2 9.780356 (1+0.0052885 sin(lat)^2+(-0.0000059) sin(2 lat)^2) / \ (3.085462e-6 + 2.27e-9 cos(2 lat) + (-2e-12) cos(4 lat)) # References # Harrison, L.P. 1949. Relation Between Geopotential and Geometric # Height. In Smithsonian Meteorological Tables. List, Robert J., ed. # 6th ed., 4th reprint, 1968. Washington, DC: Smithsonian Institution. # NASA. US National Aeronautics and Space Administration. 1976. # US Standard Atmosphere 1976. Washington, DC: US Government Printing Office. # Gauge pressure functions # # Gauge pressure is measured relative to atmospheric pressure. In the English # system, where pressure is often given in pounds per square inch, gauge # pressure is often indicated by 'psig' to distinguish it from absolute # pressure, often indicated by 'psia'. At the standard atmospheric pressure # of 14.696 psia, a gauge pressure of 0 psig is an absolute pressure of 14.696 # psia; an automobile tire inflated to 31 psig has an absolute pressure of # 45.696 psia. # # With gaugepressure(), the units must be specified (e.g., gaugepressure(1.5 # bar)); with psig(), the units are taken as psi, so the example above of tire # pressure could be given as psig(31). # # If the normal elevation is significantly different from sea level, change # Patm appropriately, and adjust the lower domain limit on the gaugepressure # definition. Patm atm gaugepressure(x) units=[Pa;Pa] domain=[-101325,) range=[0,) \ x + Patm ; gaugepressure+(-Patm) psig(x) units=[1;Pa] domain=[-14.6959487755135,) range=[0,) \ gaugepressure(x psi) ; ~gaugepressure(psig) / psi # Pressure for underwater diving seawater 0.1 bar / meter msw meter seawater fsw foot seawater # # Wire Gauge # # This area is a nightmare with huge charts of wire gauge diameters # that usually have no clear origin. There are at least 5 competing wire gauge # systems to add to the confusion. The use of wire gauge is related to the # manufacturing method: a metal rod is heated and drawn through a hole. The # size change can't be too big. To get smaller wires, the process is repeated # with a series of smaller holes. Generally larger gauges mean smaller wires. # The gauges often have values such as "00" and "000" which are larger sizes # than simply "0" gauge. In the tables that appear below, these gauges must be # specified as negative numbers (e.g. "00" is -1, "000" is -2, etc). # Alternatively, you can use the following units: # g00 (-1) g000 (-2) g0000 (-3) g00000 (-4) g000000 (-5) g0000000 (-6) # American Wire Gauge (AWG) or Brown & Sharpe Gauge appears to be the most # important gauge. ASTM B-258 specifies that this gauge is based on geometric # interpolation between gauge 0000, which is 0.46 inches exactly, and gauge 36 # which is 0.005 inches exactly. Therefore, the diameter in inches of a wire # is given by the formula 1|200 92^((36-g)/39). Note that 92^(1/39) is close # to 2^(1/6), so diameter is approximately halved for every 6 gauges. For the # repeated zero values, use negative numbers in the formula. The same document # also specifies rounding rules which seem to be ignored by makers of tables. # Gauges up to 44 are to be specified with up to 4 significant figures, but no # closer than 0.0001 inch. Gauges from 44 to 56 are to be rounded to the # nearest 0.00001 inch. # # In addition to being used to measure wire thickness, this gauge is used to # measure the thickness of sheets of aluminum, copper, and most metals other # than steel, iron and zinc. wiregauge(g) units=[1;m] range=(0,) \ 1|200 92^((36+(-g))/39) in; 36+(-39)ln(200 wiregauge/in)/ln(92) awg() wiregauge # Next we have the SWG, the Imperial or British Standard Wire Gauge. This one # is piecewise linear. It was used for aluminum sheets but also shows up for # wire used in jewelry. brwiregauge[in] \ -6 0.5 \ -5 0.464 \ -3 0.4 \ -2 0.372 \ 3 0.252 \ 6 0.192 \ 10 0.128 \ 14 0.08 \ 19 0.04 \ 23 0.024 \ 26 0.018 \ 28 0.0148 \ 30 0.0124 \ 39 0.0052 \ 49 0.0012 \ 50 0.001 swg() brwiregauge # The following is from the Appendix to ASTM B 258 # # For example, in U.S. gage, the standard for sheet metal is based on the # weight of the metal, not on the thickness. 16-gage is listed as # approximately .0625 inch thick and 40 ounces per square foot (the original # standard was based on wrought iron at .2778 pounds per cubic inch; steel # has almost entirely superseded wrought iron for sheet use, at .2833 pounds # per cubic inch). Smaller numbers refer to greater thickness. There is no # formula for converting gage to thickness or weight. # # It's rather unclear from the passage above whether the plate gauge values are # therefore wrong if steel is being used. Reference [15] states that steel is # in fact measured using this gauge (under the name Manufacturers' Standard # Gauge) with a density of 501.84 lb/ft3 = 0.2904 lb/in3 used for steel. # But this doesn't seem to be the correct density of steel (.2833 lb/in3 is # closer). # # This gauge was established in 1893 for purposes of taxation. # Old plate gauge for iron plategauge[(oz/ft^2)/(480*lb/ft^3)] \ -5 300 \ 1 180 \ 14 50 \ 16 40 \ 17 36 \ 20 24 \ 26 12 \ 31 7 \ 36 4.5 \ 38 4 # Manufacturers Standard Gage stdgauge[(oz/ft^2)/(501.84*lb/ft^3)] \ -5 300 \ 1 180 \ 14 50 \ 16 40 \ 17 36 \ 20 24 \ 26 12 \ 31 7 \ 36 4.5 \ 38 4 # A special gauge is used for zinc sheet metal. Notice that larger gauges # indicate thicker sheets. zincgauge[in] \ 1 0.002 \ 10 0.02 \ 15 0.04 \ 19 0.06 \ 23 0.1 \ 24 0.125 \ 27 0.5 \ 28 1 # # Imperial drill bit sizes are reported in inches or in a numerical or # letter gauge. # drillgauge[in] \ 1 0.2280 \ 2 0.2210 \ 3 0.2130 \ 4 0.2090 \ 5 0.2055 \ 6 0.2040 \ 7 0.2010 \ 8 0.1990 \ 9 0.1960 \ 10 0.1935 \ 11 0.1910 \ 12 0.1890 \ 13 0.1850 \ 14 0.1820 \ 15 0.1800 \ 16 0.1770 \ 17 0.1730 \ 18 0.1695 \ 19 0.1660 \ 20 0.1610 \ 22 0.1570 \ 23 0.1540 \ 24 0.1520 \ 25 0.1495 \ 26 0.1470 \ 27 0.1440 \ 28 0.1405 \ 29 0.1360 \ 30 0.1285 \ 31 0.1200 \ 32 0.1160 \ 33 0.1130 \ 34 0.1110 \ 35 0.1100 \ 36 0.1065 \ 38 0.1015 \ 39 0.0995 \ 40 0.0980 \ 41 0.0960 \ 42 0.0935 \ 43 0.0890 \ 44 0.0860 \ 45 0.0820 \ 46 0.0810 \ 48 0.0760 \ 51 0.0670 \ 52 0.0635 \ 53 0.0595 \ 54 0.0550 \ 55 0.0520 \ 56 0.0465 \ 57 0.0430 \ 65 0.0350 \ 66 0.0330 \ 68 0.0310 \ 69 0.0292 \ 70 0.0280 \ 71 0.0260 \ 73 0.0240 \ 74 0.0225 \ 75 0.0210 \ 76 0.0200 \ 78 0.0160 \ 79 0.0145 \ 80 0.0135 \ 88 0.0095 \ 104 0.0031 drillA 0.234 in drillB 0.238 in drillC 0.242 in drillD 0.246 in drillE 0.250 in drillF 0.257 in drillG 0.261 in drillH 0.266 in drillI 0.272 in drillJ 0.277 in drillK 0.281 in drillL 0.290 in drillM 0.295 in drillN 0.302 in drillO 0.316 in drillP 0.323 in drillQ 0.332 in drillR 0.339 in drillS 0.348 in drillT 0.358 in drillU 0.368 in drillV 0.377 in drillW 0.386 in drillX 0.397 in drillY 0.404 in drillZ 0.413 in # # Screw sizes # # In the USA, screw diameters for both wood screws and machine screws # are reported using a gauge number. Metric machine screws are # reported as Mxx where xx is the diameter in mm. # screwgauge(g) units=[1;m] range=[0,) \ (.06 + .013 g) in ; (screwgauge/in + (-.06)) / .013 # # Abrasive grit size # # Standards governing abrasive grit sizes are complicated, specifying # fractions of particles that are passed or retained by different mesh # sizes. As a result, it is not possible to make precise comparisons # of different grit standards. The tables below allow the # determination of rough equivlants by using median particle size. # # Standards in the USA are determined by the Unified Abrasives # Manufacturers' Association (UAMA), which resulted from the merger of # several previous organizations. One of the old organizations was # CAMI (Coated Abrasives Manufacturers' Institute). # # UAMA has a web page with plots showing abrasive particle ranges for # various different grits and comparisons between standards. # # https://uama.org/abrasives-101/ # # Abrasives are grouped into "bonded" abrasives for use with grinding # wheels and "coated" abrasives for sandpapers and abrasive films. # The industry uses different grit standards for these two # categories. # # Another division is between "macrogrits", grits below 240 and # "microgrits", which are above 240. Standards differ, as do methods # for determining particle size. In the USA, ANSI B74.12 is the # standard governing macrogrits. ANSI B74.10 covers bonded microgrit # abrasives, and ANSI B74.18 covers coated microgrit abrasives. It # appears that the coated standard is identical to the bonded standard # for grits up through 600 but then diverges significantly. # # European grit sizes are determined by the Federation of European # Producers of Abrasives. http://www.fepa-abrasives.org # # They give two standards, the "F" grit for bonded abrasives and the # "P" grit for coated abrasives. This data is taken directly from # their web page. # FEPA P grit for coated abrasives is commonly seen on sandpaper in # the USA where the paper will be marked P600, for example. FEPA P # grits are said to be more tightly constrained than comparable ANSI # grits so that the particles are more uniform in size and hence give # a better finish. grit_P[micron] \ 12 1815 \ 16 1324 \ 20 1000 \ 24 764 \ 30 642 \ 36 538 \ 40 425 \ 50 336 \ 60 269 \ 80 201 \ 100 162 \ 120 125 \ 150 100 \ 180 82 \ 220 68 \ 240 58.5 \ 280 52.2 \ 320 46.2 \ 360 40.5 \ 400 35 \ 500 30.2 \ 600 25.8 \ 800 21.8 \ 1000 18.3 \ 1200 15.3 \ 1500 12.6 \ 2000 10.3 \ 2500 8.4 # The F grit is the European standard for bonded abrasives such as # grinding wheels grit_F[micron] \ 4 4890 \ 5 4125 \ 6 3460 \ 7 2900 \ 8 2460 \ 10 2085 \ 12 1765 \ 14 1470 \ 16 1230 \ 20 1040 \ 22 885 \ 24 745 \ 30 625 \ 36 525 \ 40 438 \ 46 370 \ 54 310 \ 60 260 \ 70 218 \ 80 185 \ 90 154 \ 100 129 \ 120 109 \ 150 82 \ 180 69 \ 220 58 \ 230 53 \ 240 44.5 \ 280 36.5 \ 320 29.2 \ 360 22.8 \ 400 17.3 \ 500 12.8 \ 600 9.3 \ 800 6.5 \ 1000 4.5 \ 1200 3 \ 1500 2.0 \ 2000 1.2 # According to the UAMA web page, the ANSI bonded and ANSI coated standards # are identical to FEPA F in the macrogrit range (under 240 grit), so these # values are taken from the FEPA F table. The values for 240 and above are # from the UAMA web site and represent the average of the "d50" range # endpoints listed there. ansibonded[micron] \ 4 4890 \ 5 4125 \ 6 3460 \ 7 2900 \ 8 2460 \ 10 2085 \ 12 1765 \ 14 1470 \ 16 1230 \ 20 1040 \ 22 885 \ 24 745 \ 30 625 \ 36 525 \ 40 438 \ 46 370 \ 54 310 \ 60 260 \ 70 218 \ 80 185 \ 90 154 \ 100 129 \ 120 109 \ 150 82 \ 180 69 \ 220 58 \ 240 50 \ 280 39.5 \ 320 29.5 \ 360 23 \ 400 18.25 \ 500 13.9 \ 600 10.55 \ 800 7.65 \ 1000 5.8 \ 1200 3.8 grit_ansibonded() ansibonded # Like the bonded grit, the coated macrogrits below 240 are taken from the # FEPA F table. Data above this is from the UAMA site. Note that the coated # and bonded standards are evidently the same from 240 up to 600 grit, but # starting at 800 grit, the coated standard diverges. The data from UAMA show # that 800 grit coated has an average size slightly larger than the average # size of 600 grit coated/bonded. However, the 800 grit has a significantly # smaller particle size variation. # # Because of this non-monotonicity from 600 grit to 800 grit this definition # produces a warning about the lack of a unique inverse. ansicoated[micron] noerror \ 4 4890 \ 5 4125 \ 6 3460 \ 7 2900 \ 8 2460 \ 10 2085 \ 12 1765 \ 14 1470 \ 16 1230 \ 20 1040 \ 22 885 \ 24 745 \ 30 625 \ 36 525 \ 40 438 \ 46 370 \ 54 310 \ 60 260 \ 70 218 \ 80 185 \ 90 154 \ 100 129 \ 120 109 \ 150 82 \ 180 69 \ 220 58 \ 240 50 \ 280 39.5 \ 320 29.5 \ 360 23 \ 400 18.25 \ 500 13.9 \ 600 10.55 \ 800 11.5 \ 1000 9.5 \ 2000 7.2 \ 2500 5.5 \ 3000 4 \ 4000 3 \ 6000 2 \ 8000 1.2 grit_ansicoated() ansicoated # # Is this correct? This is the JIS Japanese standard used on waterstones # jisgrit[micron] \ 150 75 \ 180 63 \ 220 53 \ 280 48 \ 320 40 \ 360 35 \ 400 30 \ 600 20 \ 700 17 \ 800 14 \ 1000 11.5 \ 1200 9.5 \ 1500 8 \ 2000 6.7 \ 2500 5.5 \ 3000 4 \ 4000 3 \ 6000 2 \ 8000 1.2 # The "Finishing Scale" marked with an A (e.g. A75). This information # is from the web page of the sand paper manufacturer Klingspor # https://www.klingspor.com/ctemplate1.aspx?page=default/html/gritGradingSystems_en-US.html # # I have no information about what this scale is used for. grit_A[micron]\ 16 15.3 \ 25 21.8 \ 30 23.6 \ 35 25.75 \ 45 35 \ 60 46.2 \ 65 53.5 \ 75 58.5 \ 90 65 \ 110 78 \ 130 93 \ 160 127 \ 200 156 # # Grits for DMT brand diamond sharpening stones from # https://www.dmtsharp.com/resources/dmt-catalog-product-information.html # "DMT Diamond Grits" PDF download dmtxxcoarse 120 micron # 120 mesh dmtsilver dmtxxcoarse dmtxx dmtxxcoarse dmtxcoarse 60 micron # 220 mesh dmtx dmtxcoarse dmtblack dmtxcoarse dmtcoarse 45 micron # 325 mesh dmtc dmtcoarse dmtblue dmtcoarse dmtfine 25 micron # 600 mesh dmtred dmtfine dmtf dmtfine dmtefine 9 micron # 1200 mesh dmte dmtefine dmtgreen dmtefine dmtceramic 7 micron # 2200 mesh dmtcer dmtceramic dmtwhite dmtceramic dmteefine 3 micron # 8000 mesh dmttan dmteefine dmtee dmteefine # # The following values come from a page in the Norton Stones catalog, # available at their web page, http://www.nortonstones.com. # hardtranslucentarkansas 6 micron # Natural novaculite (silicon quartz) softarkansas 22 micron # stones extrafineindia 22 micron # India stones are Norton's manufactured fineindia 35 micron # aluminum oxide product mediumindia 53.5 micron coarseindia 97 micron finecrystolon 45 micron # Crystolon stones are Norton's mediumcrystalon 78 micron # manufactured silicon carbide product coarsecrystalon 127 micron # The following are not from the Norton catalog hardblackarkansas 6 micron hardwhitearkansas 11 micron washita 35 micron # # Mesh systems for measuring particle sizes by sifting through a wire # mesh or sieve # # The Tyler system and US Sieve system are based on four steps for # each factor of 2 change in the size, so each size is 2^1|4 different # from the adjacent sizes. Unfortunately, the mesh numbers are # arbitrary, so the sizes cannot be expressed with a functional form. # Various references round the values differently. The mesh numbers # are supposed to correspond to the number of holes per inch, but this # correspondence is only approximate because it doesn't include the # wire size of the mesh. # The Tyler Mesh system was apparently introduced by the WS Tyler # company, but it appears that they no longer use it. They follow the # ASTM E11 standard. meshtyler[micron] \ 2.5 8000 \ 3 6727 \ 3.5 5657 \ 4 4757 \ 5 4000 \ 6 3364 \ 7 2828 \ 8 2378 \ 9 2000 \ 10 1682 \ 12 1414 \ 14 1189 \ 16 1000 \ 20 841 \ 24 707 \ 28 595 \ 32 500 \ 35 420 \ 42 354 \ 48 297 \ 60 250 \ 65 210 \ 80 177 \ 100 149 \ 115 125 \ 150 105 \ 170 88 \ 200 74 \ 250 63 \ 270 53 \ 325 44 \ 400 37 # US Sieve size, ASTM E11 # # The WS Tyler company prints the list from ASTM E11 in # A Calculator for ASTM E11 Standard Sieve Designations # https://blog.wstyler.com/particle-analysis/astm-e11-standard-designations sieve[micron] \ 3.5 5600 \ 4 4750 \ 5 4000 \ 6 3350 \ 7 2800 \ 8 2360 \ 10 2000 \ 12 1700 \ 14 1400 \ 16 1180 \ 18 1000 \ 20 850 \ 25 710 \ 30 600 \ 35 500 \ 40 425 \ 45 355 \ 50 300 \ 60 250 \ 70 212 \ 80 180 \ 100 150 \ 120 125 \ 140 106 \ 170 90 \ 200 75 \ 230 63 \ 270 53 \ 325 45 \ 400 38 \ 450 32 \ 500 25 \ 625 20 # These last two values are not in the standard series # but were included in the ASTM standard because they meshUS() sieve # were in common usage. # British Mesh size, BS 410: 1986 # This system appears to correspond to the Tyler and US system, but # with different mesh numbers. # # http://www.panadyne.com/technical/panadyne_international_sieve_chart.pdf # meshbritish[micron] \ 3 5657 \ 3.5 4757 \ 4 4000 \ 5 3364 \ 6 2828 \ 7 2378 \ 8 2000 \ 10 1682 \ 12 1414 \ 14 1189 \ 16 1000 \ 18 841 \ 22 707 \ 25 595 \ 30 500 \ 36 420 \ 44 354 \ 52 297 \ 60 250 \ 72 210 \ 85 177 \ 100 149 \ 120 125 \ 150 105 \ 170 88 \ 200 74 \ 240 63 \ 300 53 \ 350 44 \ 400 37 # French system, AFNOR NFX11-501: 1970 # The system appears to be based on size doubling every 3 mesh # numbers, though the values have been aggressively rounded. # It's not clear if the unrounded values would be considered # incorrect, so this is given as a table rather than a function. # Functional form: # meshtamis(mesh) units=[1;m] 5000 2^(1|3 (mesh-38)) micron # # http://www.panadyne.com/technical/panadyne_international_sieve_chart.pdf meshtamis[micron] \ 17 40 \ 18 50 \ 19 63 \ 20 80 \ 21 100 \ 22 125 \ 23 160 \ 24 200 \ 25 250 \ 26 315 \ 27 400 \ 28 500 \ 29 630 \ 30 800 \ 31 1000 \ 32 1250 \ 33 1600 \ 34 2000 \ 35 2500 \ 36 3150 \ 37 4000 \ 38 5000 # # Ring size. All ring sizes are given as the circumference of the ring. # # USA ring sizes. Several slightly different definitions seem to be in # circulation. According to [15], the interior diameter of size n ring in # inches is 0.32 n + 0.458 for n ranging from 3 to 13.5 by steps of 0.5. The # size 2 ring is inconsistently 0.538in and no 2.5 size is listed. # # However, other sources list 0.455 + 0.0326 n and 0.4525 + 0.0324 n as the # diameter and list no special case for size 2. (Or alternatively they are # 1.43 + .102 n and 1.4216+.1018 n for measuring circumference in inches.) One # reference claimed that the original system was that each size was 1|10 inch # circumference, but that source doesn't have an explanation for the modern # system which is somewhat different. ringsize(n) units=[1;in] domain=[2,) range=[1.6252,) \ (1.4216+.1018 n) in ; (ringsize/in + (-1.4216))/.1018 # Old practice in the UK measured rings using the "Wheatsheaf gauge" with sizes # specified alphabetically and based on the ring inside diameter in steps of # 1|64 inch. This system was replaced in 1987 by British Standard 6820 which # specifies sizes based on circumference. Each size is 1.25 mm different from # the preceding size. The baseline is size C which is 40 mm circumference. # The new sizes are close to the old ones. Sometimes it's necessary to go # beyond size Z to Z+1, Z+2, etc. sizeAring 37.50 mm sizeBring 38.75 mm sizeCring 40.00 mm sizeDring 41.25 mm sizeEring 42.50 mm sizeFring 43.75 mm sizeGring 45.00 mm sizeHring 46.25 mm sizeIring 47.50 mm sizeJring 48.75 mm sizeKring 50.00 mm sizeLring 51.25 mm sizeMring 52.50 mm sizeNring 53.75 mm sizeOring 55.00 mm sizePring 56.25 mm sizeQring 57.50 mm sizeRring 58.75 mm sizeSring 60.00 mm sizeTring 61.25 mm sizeUring 62.50 mm sizeVring 63.75 mm sizeWring 65.00 mm sizeXring 66.25 mm sizeYring 67.50 mm sizeZring 68.75 mm # Japanese sizes start with size 1 at a 13mm inside diameter and each size is # 1|3 mm larger in diameter than the previous one. They are multiplied by pi # to give circumference. jpringsize(n) units=[1;mm] domain=[1,) range=[0.040840704,) \ (38|3 + n/3) pi mm ; 3 jpringsize/ pi mm + (-38) # The European ring sizes are the length of the circumference in mm minus 40. euringsize(n) units=[1;mm] (n+40) mm ; euringsize/mm + (-40) # # Abbreviations # mph mile/hr brmpg mile/brgallon usmpg mile/usgallon mpg mile/gal kph km/hr fL footlambert fpm ft/min fps ft/s rpm rev/min rps rev/sec mi mile smi mile nmi nauticalmile mbh 1e3 btu/hour mcm 1e3 circularmil ipy inch/year # used for corrosion rates ccf 100 ft^3 # used for selling water [18] Mcf 1000 ft^3 # not million cubic feet [18] kp kilopond kpm kp meter Wh W hour hph hp hour plf lb / foot # pounds per linear foot # # Compatibility units with Unix version # pa Pa ev eV hg Hg oe Oe mh mH rd rod pf pF gr grain nt N hz Hz hd hogshead dry drygallon/gallon nmile nauticalmile beV GeV bev beV coul C # # Radioactivity units # event !dimensionless becquerel event /s # Activity of radioactive source Bq becquerel # curie 3.7e10 Bq # Defined in 1910 as the radioactivity Ci curie # emitted by the amount of radon that is # in equilibrium with 1 gram of radium. rutherford 1e6 Bq # RADIATION_DOSE gray gray J/kg # Absorbed dose of radiation Gy gray # rad 1e-2 Gy # From Radiation Absorbed Dose rep 8.38 mGy # Roentgen Equivalent Physical, the amount # of radiation which , absorbed in the # body, would liberate the same amount # of energy as 1 roentgen of X rays # would, or 97 ergs. sievert J/kg # Dose equivalent: dosage that has the Sv sievert # same effect on human tissues as 200 rem 1e-2 Sv # keV X-rays. Different types of # radiation are weighted by the # Relative Biological Effectiveness # (RBE). # # Radiation type RBE # X-ray, gamma ray 1 # beta rays, > 1 MeV 1 # beta rays, < 1 MeV 1.08 # neutrons, < 1 MeV 4-5 # neutrons, 1-10 MeV 10 # protons, 1 MeV 8.5 # protons, .1 MeV 10 # alpha, 5 MeV 15 # alpha, 1 MeV 20 # # The energies are the kinetic energy # of the particles. Slower particles # interact more, so they are more # effective ionizers, and hence have # higher RBE values. # # rem stands for Roentgen Equivalent # Mammal banana_dose 0.1e-6 sievert # Informal measure of the dose due to # eating one average sized banana roentgen 2.58e-4 C / kg # Ionizing radiation that produces # 1 statcoulomb of charge in 1 cc of # dry air at stp. rontgen roentgen # Sometimes it appears spelled this way sievertunit 8.38 rontgen # Unit of gamma ray dose delivered in one # hour at a distance of 1 cm from a # point source of 1 mg of radium # enclosed in platinum .5 mm thick. eman 1e-7 Ci/m^3 # radioactive concentration mache 3.7e-7 Ci/m^3 # # Atomic weights. The atomic weight of an element is the ratio of the mass of # a mole of the element to 1|12 of a mole of Carbon 12. For each element, we # list the atomic weights of all of the isotopes. The Standard Atomic Weights # apply to the elements in the isotopic composition that occurs naturally on # Earth. These are computed values based on the isotopic distribution, and # may vary for specific samples. Elements which do not occur naturally do # not have Standard Atomic Weights. For these elements, if data on the most # stable isotope is available, is given. Otherwise, the user must specify the # desired isotope. !include elements.units # Density of the elements # # Note some elements occur in multiple forms (allotropes) with different # densities, and they are accordingly listed multiple times. # Density of gas phase elements at STP hydrogendensity 0.08988 g/l heliumdensity 0.1786 g/l neondensity 0.9002 g/l nitrogendensity 1.2506 g/l oxygendensity 1.429 g/l fluorinedensity 1.696 g/l argondensity 1.784 g/l chlorinedensity 3.2 g/l kryptondensity 3.749 g/l xenondensity 5.894 g/l radondensity 9.73 g/l # Density of liquid phase elements near room temperature brominedensity 3.1028 g/cm^3 mercurydensity 13.534 g/cm^3 # Density of solid elements near room temperature lithiumdensity 0.534 g/cm^3 potassiumdensity 0.862 g/cm^3 sodiumdensity 0.968 g/cm^3 rubidiumdensity 1.532 g/cm^3 calciumdensity 1.55 g/cm^3 magnesiumdensity 1.738 g/cm^3 phosphorus_white_density 1.823 g/cm^3 berylliumdensity 1.85 g/cm^3 sulfur_gamma_density 1.92 g/cm^3 cesiumdensity 1.93 g/cm^3 carbon_amorphous_density 1.95 g/cm^3 # average value sulfur_betadensity 1.96 g/cm^3 sulfur_alpha_density 2.07 g/cm^3 carbon_graphite_density 2.267 g/cm^3 phosphorus_red_density 2.27 g/cm^3 # average value silicondensity 2.3290 g/cm^3 phosphorus_violet_density 2.36 g/cm^3 borondensity 2.37 g/cm^3 strontiumdensity 2.64 g/cm^3 phosphorus_black_density 2.69 g/cm^3 aluminumdensity 2.7 g/cm^3 bariumdensity 3.51 g/cm^3 carbon_diamond_density 3.515 g/cm^3 scandiumdensity 3.985 g/cm^3 selenium_vitreous_density 4.28 g/cm^3 selenium_alpha_density 4.39 g/cm^3 titaniumdensity 4.406 g/cm^3 yttriumdensity 4.472 g/cm^3 selenium_gray_density 4.81 g/cm^3 iodinedensity 4.933 g/cm^3 europiumdensity 5.264 g/cm^3 germaniumdensity 5.323 g/cm^3 radiumdensity 5.5 g/cm^3 arsenicdensity 5.727 g/cm^3 tin_alpha_density 5.769 g/cm^3 galliumdensity 5.91 g/cm^3 vanadiumdensity 6.11 g/cm^3 lanthanumdensity 6.162 g/cm^3 telluriumdensity 6.24 g/cm^3 zirconiumdensity 6.52 g/cm^3 antimonydensity 6.697 g/cm^3 ceriumdensity 6.77 g/cm^3 praseodymiumdensity 6.77 g/cm^3 ytterbiumdensity 6.9 g/cm^3 neodymiumdensity 7.01 g/cm^3 zincdensity 7.14 g/cm^3 chromiumdensity 7.19 g/cm^3 manganesedensity 7.21 g/cm^3 promethiumdensity 7.26 g/cm^3 tin_beta_density 7.265 g/cm^3 indiumdensity 7.31 g/cm^3 samariumdensity 7.52 g/cm^3 irondensity 7.874 g/cm^3 gadoliniumdensity 7.9 g/cm^3 terbiumdensity 8.23 g/cm^3 dysprosiumdensity 8.54 g/cm^3 niobiumdensity 8.57 g/cm^3 cadmiumdensity 8.65 g/cm^3 holmiumdensity 8.79 g/cm^3 cobaltdensity 8.9 g/cm^3 nickeldensity 8.908 g/cm^3 erbiumdensity 9.066 g/cm^3 polonium_alpha_density 9.196 g/cm^3 thuliumdensity 9.32 g/cm^3 polonium_beta_density 9.398 g/cm^3 bismuthdensity 9.78 g/cm^3 lutetiumdensity 9.841 g/cm^3 actiniumdensity 10 g/cm^3 molybdenumdensity 10.28 g/cm^3 silverdensity 10.49 g/cm^3 technetiumdensity 11 g/cm^3 leaddensity 11.34 g/cm^3 thoriumdensity 11.7 g/cm^3 thalliumdensity 11.85 g/cm^3 americiumdensity 12 g/cm^3 palladiumdensity 12.023 g/cm^3 rhodiumdensity 12.41 g/cm^3 rutheniumdensity 12.45 g/cm^3 berkelium_beta_density 13.25 g/cm^3 hafniumdensity 13.31 g/cm^3 curiumdensity 13.51 g/cm^3 berkelium_alphadensity 14.78 g/cm^3 californiumdensity 15.1 g/cm^3 protactiniumdensity 15.37 g/cm^3 tantalumdensity 16.69 g/cm^3 uraniumdensity 19.1 g/cm^3 tungstendensity 19.3 g/cm^3 golddensity 19.30 g/cm^3 plutoniumdensity 19.816 g/cm^3 neptuniumdensity 20.45 g/cm^3 # alpha form, only one at room temp rheniumdensity 21.02 g/cm^3 platinumdensity 21.45 g/cm^3 iridiumdensity 22.56 g/cm^3 osmiumdensity 22.59 g/cm^3 # A few alternate names tin_gray tin_alpha_density tin_white tin_beta_density graphitedensity carbon_graphite_density diamonddensity carbon_diamond_density # Predicted density of elements that have not been made in sufficient # quantities for measurement. franciumdensity 2.48 g/cm^3 # liquid, predicted melting point 8 degC astatinedensity 6.35 g/cm^3 einsteiniumdensity 8.84 g/cm^3 fermiumdensity 9.7 g/cm^3 nobeliumdensity 9.9 g/cm^3 mendeleviumdensity 10.3 g/cm^3 lawrenciumdensity 16 g/cm^3 rutherfordiumdensity 23.2 g/cm^3 roentgeniumdensity 28.7 g/cm^3 dubniumdensity 29.3 g/cm^3 darmstadtiumdensity 34.8 g/cm^3 seaborgiumdensity 35 g/cm^3 bohriumdensity 37.1 g/cm^3 meitneriumdensity 37.4 g/cm^3 hassiumdensity 41 g/cm^3 # # population units # people 1 person people death people capita people percapita per capita # TGM dozen based unit system listed on the "dozenal" forum # http://www.dozenalsociety.org.uk/apps/tgm.htm. These units are # proposed as an allegedly more rational alternative to the SI system. Tim 12^-4 hour # Time Grafut gravity Tim^2 # Length based on gravity Surf Grafut^2 # area Volm Grafut^3 # volume Vlos Grafut/Tim # speed Denz Maz/Volm # density Mag Maz gravity # force Maz Volm kg / oldliter # mass based on water # Abbreviations # Tm Tim # Conflicts with Tm = Terameter Gf Grafut Sf Surf Vm Volm Vl Vlos Mz Maz Dz Denz # Dozen based unit prefixes Zena- 12 Duna- 12^2 Trina- 12^3 Quedra- 12^4 Quena- 12^5 Hesa- 12^6 Seva- 12^7 Aka- 12^8 Neena- 12^9 Dexa- 12^10 Lefa- 12^11 Zennila- 12^12 Zeni- 12^-1 Duni- 12^-2 Trini- 12^-3 Quedri- 12^-4 Queni- 12^-5 Hesi- 12^-6 Sevi- 12^-7 Aki- 12^-8 Neeni- 12^-9 Dexi- 12^-10 Lefi- 12^-11 Zennili- 12^-12 # # Traditional Japanese units (shakkanhou) # # The traditional system of weights and measures is called shakkanhou from the # shaku and the ken. Japan accepted SI units in 1891 and legalized conversions # to the traditional system. In 1909 the inch-pound system was also legalized, # so Japan had three legally approved systems. A change to the metric system # started in 1921 but there was a lot of resistance. The Measurement Law of # October 1999 prohibits sales in anything but SI units. However, the old # units still live on in construction and as the basis for paper sizes of books # and tools used for handicrafts. # # Note that units below use the Hepburn romanization system. Some other # systems would render "mou", "jou", and "chou" as "mo", "jo" and "cho". # # # http://hiramatu-hifuka.com/onyak/onyindx.html # Japanese Proportions. These are still in everyday use. They also # get used as units to represent the proportion of the standard unit. wari_proportion 1|10 wari wari_proportion bu_proportion 1|100 # The character bu can also be read fun or bun # but usually "bu" is used for units. rin_proportion 1|1000 mou_proportion 1|10000 # Japanese Length Measures # # The length system is called kanejaku or # square and originated in China. It was # adopted as Japan's official measure in 701 # by the Taiho Code. This system is still in # common use in architecture and clothing. shaku 1|3.3 m mou 1|10000 shaku rin 1|1000 shaku bu_distance 1|100 shaku sun 1|10 shaku jou_distance 10 shaku jou jou_distance kanejakusun sun # Alias to emphasize architectural name kanejaku shaku kanejakujou jou # http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement taichi shaku # http://zh.wikipedia.org/wiki/å°å°º taicun sun # http://zh.wikipedia.org/wiki/å°åˆ¶ !utf8 å°å°º taichi # via Hanyu Pinyin romanizations å°å¯¸ taicun !endutf8 # In context of clothing, shaku is different from architecture kujirajaku 10|8 shaku kujirajakusun 1|10 kujirajaku kujirajakubu 1|100 kujirajaku kujirajakujou 10 kujirajaku tan_distance 3 kujirajakujou ken 6 shaku # Also sometimes 6.3, 6.5, or 6.6 # http://www.homarewood.co.jp/syakusun.htm # mostly unused chou_distance 60 ken chou chou_distance ri 36 chou # Japanese Area Measures # Tsubo is still used for land size, though the others are more # recognized by their homonyms in the other measurements. gou_area 1|10 tsubo tsubo 36 shaku^2 # Size of two tatami = ken^2 ?? se 30 tsubo tan_area 10 se chou_area 10 tan_area # http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement ping tsubo # http://zh.wikipedia.org/wiki/åª jia 2934 ping # http://zh.wikipedia.org/wiki/甲_(å•ä½) fen 1|10 jia # http://zh.wikipedia.org/wiki/分 fen_area 1|10 jia # Protection against future collisions !utf8 åª ping # via Hanyu Pinyin romanizations 甲 jia 分 fen 分地 fen_area # Protection against future collisions !endutf8 # Japanese architecture is based on a "standard" size of tatami mat. # Room sizes today are given in number of tatami, and this number # determines the spacing between colums and hence sizes of sliding # doors and paper screens. However, every region has its own slightly # different tatami size. Edoma, used in and around Tokyo and # Hokkaido, is becoming a nationwide standard. Kyouma is used around # Kyoto, Osaka and Kyuushu, and Chuukyouma is used around Nagoya. # Note that the tatami all have the aspect ratio 2:1 so that the mats # can tile the room with some of them turned 90 degrees. # # http://www.moon2.net/tatami/infotatami/structure.html edoma (5.8*2.9) shaku^2 kyouma (6.3*3.15) shaku^2 chuukyouma (6*3) shaku^2 jou_area edoma tatami jou_area # Japanese Volume Measures # The "shou" is still used for such things as alcohol and seasonings. # Large quantities of paint are still purchased in terms of "to". shaku_volume 1|10 gou_volume gou_volume 1|10 shou gou gou_volume shou (4.9*4.9*2.7) sun^3 # The character shou which is # the same as masu refers to a # rectangular wooden cup used to # measure liquids and cereal. # Sake is sometimes served in a masu # Note that it happens to be # EXACTLY 7^4/11^3 liters. to 10 shou koku 10 to # No longer used; historically a measure of rice # Japanese Weight Measures # # https://web.archive.org/web/20040927115452/http://wyoming.hp.infoseek.co.jp/zatugaku/zamoney.html # https://en.wikipedia.org/wiki/Japanese_units_of_measurement # Not really used anymore. rin_weight 1|10 bu_weight bu_weight 1|10 monme fun 1|10 monme monme momme kin 160 monme kan 1000 monme kwan kan # This was the old pronunciation of the unit. # The old spelling persisted a few centuries # longer and was not changed until around # 1950. # http://en.wikipedia.org/wiki/Taiwanese_units_of_measurement # says: "Volume measure in Taiwan is largely metric". taijin kin # http://zh.wikipedia.org/wiki/å°æ–¤ tailiang 10 monme # http://zh.wikipedia.org/wiki/å°æ–¤ taiqian monme # http://zh.wikipedia.org/wiki/å°åˆ¶ !utf8 å°æ–¤ taijin # via Hanyu Pinyin romanizations å°å…© tailiang å°éŒ¢ taiqian !endutf8 # # Australian unit # australiasquare (10 ft)^2 # Used for house area # # A few German units as currently in use. # zentner 50 kg doppelzentner 2 zentner pfund 500 g # The klafter, which was used in central Europe, was derived from the span of # outstretched arms. # # https://en.wikipedia.org/wiki/Obsolete_Austrian_units_of_measurement # https://www.llv.li/files/abi/klafter-m2-en.pdf austriaklafter 1.89648384 m # Exact definition, 23 July 1871 austriafoot 1|6 austriaklafter prussiaklafter 1.88 m prussiafoot 1|6 prussiaklafter bavariaklafter 1.751155 m bavariafoot 1|6 bavariaklafter hesseklafter 2.5 m hessefoot 1|6 hesseklafter switzerlandklafter metricklafter switzerlandfoot 1|6 switzerlandklafter swissklafter switzerlandklafter swissfoot 1|6 swissklafter metricklafter 1.8 m austriayoke 8 austriaklafter * 200 austriaklafter liechtensteinsquareklafter 3.596652 m^2 # Used until 2017 to measure land area liechtensteinklafter sqrt(liechtensteinsquareklafter) # The klafter was also used to measure volume of wood, generally being a stack # of wood one klafter wide, one klafter long, with logs 3 feet (half a klafter) # in length prussiawoodklafter 0.5 prussiaklafter^3 austriawoodklafter 0.5 austriaklafter^3 festmeter m^3 # modern measure of wood, solid cube raummeter 0.7 festmeter # Air space between the logs, stacked schuettraummeter 0.65 raummeter # A cubic meter volume of split and cut # firewood in a loose, unordered # pile, not stacked. This is called # "tipped". !utf8 schüttraummeter schuettraummeter !endutf8 # # Swedish (Sweden) pre-metric units of 1739. # The metric system was adopted in 1878. # https://sv.wikipedia.org/wiki/Verkm%C3%A5tt # verklinje 2.0618125 mm verktum 12 verklinje kvarter 6 verktum fot 2 kvarter aln 2 fot famn 3 aln # # Some traditional Russian measures # # If you would like to help expand this section and understand # cyrillic transliteration, let me know. These measures are meant to # reflect common usage, e.g. in translated literature. # dessiatine 2400 sazhen^2 # Land measure dessjatine dessiatine funt 409.51718 grams # similar to pound zolotnik 1|96 funt # used for precious metal measure pood 40 funt # common in agricultural measure arshin (2 + 1|3) feet sazhen 3 arshin # analogous to fathom verst 500 sazhen # of similar use to mile versta verst borderverst 1000 sazhen russianmile 7 verst # # Old French distance measures, from French Weights and Measures # Before the Revolution by Zupko # frenchfoot 144|443.296 m # pied de roi, the standard of Paris. pied frenchfoot # Half of the hashimicubit, frenchfeet frenchfoot # instituted by Charlemagne. frenchinch 1|12 frenchfoot # This exact definition comes from frenchthumb frenchinch # a law passed on 10 Dec 1799 which pouce frenchthumb # fixed the meter at # 3 frenchfeet + 11.296 lignes. frenchline 1|12 frenchinch # This is supposed to be the size ligne frenchline # of the average barleycorn frenchpoint 1|12 frenchline toise 6 frenchfeet arpent 180^2 pied^2 # The arpent is 100 square perches, # but the perche seems to vary a lot # and can be 18 feet, 20 feet, or 22 # feet. This measure was described # as being in common use in Canada in # 1934 (Websters 2nd). The value # given here is the Paris standard # arpent. frenchgrain 1|18827.15 kg # Weight of a wheat grain, hence # smaller than the British grain. frenchpound 9216 frenchgrain # # Before the Imperial Weights and Measures Act of 1824, various different # weights and measures were in use in different places. # # Scots linear measure scotsinch 1.00540054 UKinch scotslink 1|100 scotschain scotsfoot 12 scotsinch scotsfeet scotsfoot scotsell 37 scotsinch scotsfall 6 scotsell scotschain 4 scotsfall scotsfurlong 10 scotschain scotsmile 8 scotsfurlong # Scots area measure scotsrood 40 scotsfall^2 scotsacre 4 scotsrood # Irish linear measure irishinch UKinch irishpalm 3 irishinch irishspan 3 irishpalm irishfoot 12 irishinch irishfeet irishfoot irishcubit 18 irishinch irishyard 3 irishfeet irishpace 5 irishfeet irishfathom 6 irishfeet irishpole 7 irishyard # Only these values irishperch irishpole # are different from irishchain 4 irishperch # the British Imperial irishlink 1|100 irishchain # or English values for irishfurlong 10 irishchain # these lengths. irishmile 8 irishfurlong # # Irish area measure irishrood 40 irishpole^2 irishacre 4 irishrood # English wine capacity measures (Winchester measures) winepint 1|2 winequart winequart 1|4 winegallon winegallon 231 UKinch^3 # Sometimes called the Winchester Wine Gallon, # it was legalized in 1707 by Queen Anne, and # given the definition of 231 cubic inches. It # had been in use for a while as 8 pounds of wine # using a merchant's pound, but the definition of # the merchant's pound had become uncertain. A # pound of 15 tower ounces (6750 grains) had been # common, but then a pound of 15 troy ounces # (7200 grains) gained popularity. Because of # the switch in the value of the merchants pound, # the size of the wine gallon was uncertain in # the market, hence the official act in 1707. # The act allowed that a six inch tall cylinder # with a 7 inch diameter was a lawful wine # gallon. (This comes out to 230.9 in^3.) # Note also that in Britain a legal conversion # was established to the 1824 Imperial gallon # then taken as 277.274 in^3 so that the wine # gallon was 0.8331 imperial gallons. This is # 231.1 cubic inches (using the international # inch). winerundlet 18 winegallon winebarrel 31.5 winegallon winetierce 42 winegallon winehogshead 2 winebarrel winepuncheon 2 winetierce winebutt 2 winehogshead winepipe winebutt winetun 2 winebutt # English beer and ale measures used 1803-1824 and used for beer before 1688 beerpint 1|2 beerquart beerquart 1|4 beergallon beergallon 282 UKinch^3 beerbarrel 36 beergallon beerhogshead 1.5 beerbarrel # English ale measures used from 1688-1803 for both ale and beer alepint 1|2 alequart alequart 1|4 alegallon alegallon beergallon alebarrel 34 alegallon alehogshead 1.5 alebarrel # Scots capacity measure scotsgill 1|4 mutchkin mutchkin 1|2 choppin choppin 1|2 scotspint scotspint 1|2 scotsquart scotsquart 1|4 scotsgallon scotsgallon 827.232 UKinch^3 scotsbarrel 8 scotsgallon jug scotspint # Scots dry capacity measure scotswheatlippy 137.333 UKinch^3 # Also used for peas, beans, rye, salt scotswheatlippies scotswheatlippy scotswheatpeck 4 scotswheatlippy scotswheatfirlot 4 scotswheatpeck scotswheatboll 4 scotswheatfirlot scotswheatchalder 16 scotswheatboll scotsoatlippy 200.345 UKinch^3 # Also used for barley and malt scotsoatlippies scotsoatlippy scotsoatpeck 4 scotsoatlippy scotsoatfirlot 4 scotsoatpeck scotsoatboll 4 scotsoatfirlot scotsoatchalder 16 scotsoatboll # Scots Tron weight trondrop 1|16 tronounce tronounce 1|20 tronpound tronpound 9520 grain tronstone 16 tronpound # Irish liquid capacity measure irishnoggin 1|4 irishpint irishpint 1|2 irishquart irishquart 1|2 irishpottle irishpottle 1|2 irishgallon irishgallon 217.6 UKinch^3 irishrundlet 18 irishgallon irishbarrel 31.5 irishgallon irishtierce 42 irishgallon irishhogshead 2 irishbarrel irishpuncheon 2 irishtierce irishpipe 2 irishhogshead irishtun 2 irishpipe # Irish dry capacity measure irishpeck 2 irishgallon irishbushel 4 irishpeck irishstrike 2 irishbushel irishdrybarrel 2 irishstrike irishquarter 2 irishbarrel # English Tower weights, abolished in 1528 towerpound 5400 grain towerounce 1|12 towerpound towerpennyweight 1|20 towerounce towergrain 1|32 towerpennyweight # English Mercantile weights, used since the late 12th century mercpound 6750 grain mercounce 1|15 mercpound mercpennyweight 1|20 mercounce # English weights for lead leadstone 12.5 lb fotmal 70 lb leadwey 14 leadstone fothers 12 leadwey # English Hay measure newhaytruss 60 lb # New and old here seem to refer to "new" newhayload 36 newhaytruss # hay and "old" hay rather than a new unit oldhaytruss 56 lb # and an old unit. oldhayload 36 oldhaytruss # English wool measure woolclove 7 lb woolstone 2 woolclove wooltod 2 woolstone woolwey 13 woolstone woolsack 2 woolwey woolsarpler 2 woolsack woollast 6 woolsarpler # # Ancient history units: There tends to be uncertainty in the definitions # of the units in this section # These units are from [11] # Roman measure. The Romans had a well defined distance measure, but their # measures of weight were poor. They adopted local weights in different # regions without distinguishing among them so that there are half a dozen # different Roman "standard" weight systems. romanfoot 296 mm # There is some uncertainty in this definition romanfeet romanfoot # from which all the other units are derived. pes romanfoot # This value appears in numerous sources. In "The pedes romanfoot # Roman Land Surveyors", Dilke gives 295.7 mm. romaninch 1|12 romanfoot # The subdivisions of the Roman foot have the romandigit 1|16 romanfoot # same names as the subdivisions of the pound, romanpalm 1|4 romanfoot # but we can't have the names for different romancubit 18 romaninch # units. romanpace 5 romanfeet # Roman double pace (basic military unit) passus romanpace romanperch 10 romanfeet stade 125 romanpaces stadia stade stadium stade romanmile 8 stadia # 1000 paces romanleague 1.5 romanmile schoenus 4 romanmile # Other values for the Roman foot (from Dilke) earlyromanfoot 29.73 cm pesdrusianus 33.3 cm # or 33.35 cm, used in Gaul & Germany in 1st c BC lateromanfoot 29.42 cm # Roman areas actuslength 120 romanfeet # length of a Roman furrow actus 120*4 romanfeet^2 # area of the furrow squareactus 120^2 romanfeet^2 # actus quadratus acnua squareactus iugerum 2 squareactus iugera iugerum jugerum iugerum jugera iugerum heredium 2 iugera # heritable plot heredia heredium centuria 100 heredia centurium centuria # Roman volumes sextarius 35.4 in^3 # Basic unit of Roman volume. As always, sextarii sextarius # there is uncertainty. Six large Roman # measures survive with volumes ranging from # 34.4 in^3 to 39.55 in^3. Three of them # cluster around the size given here. # # But the values for this unit vary wildly # in other sources. One reference gives 0.547 # liters, but then says the amphora is a # cubic Roman foot. This gives a value for the # sextarius of 0.540 liters. And the # encyclopedia Britannica lists 0.53 liters for # this unit. Both [7] and [11], which were # written by scholars of weights and measures, # give the value of 35.4 cubic inches. cochlearia 1|48 sextarius cyathi 1|12 sextarius acetabula 1|8 sextarius quartaria 1|4 sextarius quartarius quartaria heminae 1|2 sextarius hemina heminae cheonix 1.5 sextarii # Dry volume measures (usually) semodius 8 sextarius semodii semodius modius 16 sextarius modii modius # Liquid volume measures (usually) congius 12 heminae congii congius amphora 8 congii amphorae amphora # Also a dry volume measure culleus 20 amphorae quadrantal amphora # Roman weights libra 5052 grain # The Roman pound varied significantly librae libra # from 4210 grains to 5232 grains. Most of romanpound libra # the standards were obtained from the weight uncia 1|12 libra # of particular coins. The one given here is unciae uncia # based on the Gold Aureus of Augustus which romanounce uncia # was in use from BC 27 to AD 296. deunx 11 uncia dextans 10 uncia dodrans 9 uncia bes 8 uncia seprunx 7 uncia semis 6 uncia quincunx 5 uncia triens 4 uncia quadrans 3 uncia sextans 2 uncia sescuncia 1.5 uncia semuncia 1|2 uncia siscilius 1|4 uncia sextula 1|6 uncia semisextula 1|12 uncia scriptulum 1|24 uncia scrupula scriptulum romanobol 1|2 scrupula romanaspound 4210 grain # Old pound based on bronze coinage, the # earliest money of Rome BC 338 to BC 268. # Egyptian length measure egyptianroyalcubit 20.63 in # plus or minus .2 in egyptianpalm 1|7 egyptianroyalcubit egyptiandigit 1|4 egyptianpalm egyptianshortcubit 6 egyptianpalm doubleremen 29.16 in # Length of the diagonal of a square with remendigit 1|40 doubleremen # side length of 1 royal egyptian cubit. # This is divided into 40 digits which are # not the same size as the digits based on # the royal cubit. # Greek length measures greekfoot 12.45 in # Listed as being derived from the greekfeet greekfoot # Egyptian Royal cubit in [11]. It is greekcubit 1.5 greekfoot # said to be 3|5 of a 20.75 in cubit. pous greekfoot podes greekfoot orguia 6 greekfoot greekfathom orguia stadion 100 orguia akaina 10 greekfeet plethron 10 akaina greekfinger 1|16 greekfoot homericcubit 20 greekfingers # Elbow to end of knuckles. shortgreekcubit 18 greekfingers # Elbow to start of fingers. ionicfoot 296 mm doricfoot 326 mm olympiccubit 25 remendigit # These olympic measures were not as olympicfoot 2|3 olympiccubit # common as the other greek measures. olympicfinger 1|16 olympicfoot # They were used in agriculture. olympicfeet olympicfoot olympicdakylos olympicfinger olympicpalm 1|4 olympicfoot olympicpalestra olympicpalm olympicspithame 3|4 foot olympicspan olympicspithame olympicbema 2.5 olympicfeet olympicpace olympicbema olympicorguia 6 olympicfeet olympicfathom olympicorguia olympiccord 60 olympicfeet olympicamma olympiccord olympicplethron 100 olympicfeet olympicstadion 600 olympicfeet # Greek capacity measure greekkotyle 270 ml # This approximate value is obtained xestes 2 greekkotyle # from two earthenware vessels that khous 12 greekkotyle # were reconstructed from fragments. metretes 12 khous # The kotyle is a day's corn ration choinix 4 greekkotyle # for one man. hekteos 8 choinix medimnos 6 hekteos # Greek weight. Two weight standards were used, an Aegina standard based # on the Beqa shekel and an Athens (attic) standard. aeginastater 192 grain # Varies up to 199 grain aeginadrachmae 1|2 aeginastater aeginaobol 1|6 aeginadrachmae aeginamina 50 aeginastaters aeginatalent 60 aeginamina # Supposedly the mass of a cubic foot # of water (whichever foot was in use) atticstater 135 grain # Varies 134-138 grain atticdrachmae 1|2 atticstater atticobol 1|6 atticdrachmae atticmina 50 atticstaters attictalent 60 atticmina # Supposedly the mass of a cubic foot # of water (whichever foot was in use) # "Northern" cubit and foot. This was used by the pre-Aryan civilization in # the Indus valley. It was used in Mesopotamia, Egypt, North Africa, China, # central and Western Europe until modern times when it was displaced by # the metric system. northerncubit 26.6 in # plus/minus .2 in northernfoot 1|2 northerncubit sumeriancubit 495 mm kus sumeriancubit sumerianfoot 2|3 sumeriancubit assyriancubit 21.6 in assyrianfoot 1|2 assyriancubit assyrianpalm 1|3 assyrianfoot assyriansusi 1|20 assyrianpalm susi assyriansusi persianroyalcubit 7 assyrianpalm # Arabic measures. The arabic standards were meticulously kept. Glass weights # accurate to .2 grains were made during AD 714-900. hashimicubit 25.56 in # Standard of linear measure used # in Persian dominions of the Arabic # empire 7-8th cent. Is equal to two # French feet. blackcubit 21.28 in arabicfeet 1|2 blackcubit arabicfoot arabicfeet arabicinch 1|12 arabicfoot arabicmile 4000 blackcubit silverdirhem 45 grain # The weights were derived from these two tradedirhem 48 grain # units with two identically named systems # used for silver and used for trade purposes silverkirat 1|16 silverdirhem silverwukiyeh 10 silverdirhem silverrotl 12 silverwukiyeh arabicsilverpound silverrotl tradekirat 1|16 tradedirhem tradewukiyeh 10 tradedirhem traderotl 12 tradewukiyeh arabictradepound traderotl # Miscellaneous ancient units parasang 3.5 mile # Persian unit of length usually thought # to be between 3 and 3.5 miles biblicalcubit 21.8 in hebrewcubit 17.58 in li 10|27.8 mile # Chinese unit of length # 100 li is considered a day's march liang 11|3 oz # Chinese weight unit # Medieval time units. According to the OED, these appear in Du Cange # by Papias. timepoint 1|5 hour # also given as 1|4 timeminute 1|10 hour timeostent 1|60 hour timeounce 1|8 timeostent timeatom 1|47 timeounce # Given in [15], these subdivisions of the grain were supposedly used # by jewelers. The mite may have been used but the blanc could not # have been accurately measured. mite 1|20 grain droit 1|24 mite periot 1|20 droit blanc 1|24 periot # # Localization # !var UNITS_ENGLISH US hundredweight ushundredweight ton uston scruple apscruple fluidounce usfluidounce gallon usgallon bushel usbushel quarter quarterweight cup uscup tablespoon ustablespoon teaspoon usteaspoon dollar US$ cent $ 0.01 penny cent minim minimvolume pony ponyvolume grand usgrand firkin usfirkin hogshead ushogshead cable uscable !endvar !var UNITS_ENGLISH GB hundredweight brhundredweight ton brton scruple brscruple fluidounce brfluidounce gallon brgallon bushel brbushel quarter brquarter chaldron brchaldron cup brcup teacup brteacup tablespoon brtablespoon teaspoon brteaspoon dollar US$ cent $ 0.01 penny brpenny minim minimnote pony brpony grand brgrand firkin brfirkin hogshead brhogshead cable brcable !endvar !varnot UNITS_ENGLISH GB US !message Unknown value for environment variable UNITS_ENGLISH. Should be GB or US. !endvar !utf8 â…›- 1|8 ¼- 1|4 â…œ- 3|8 ½- 1|2 â…- 5|8 ¾- 3|4 â…ž- 7|8 â…™- 1|6 â…“- 1|3 â…”- 2|3 â…š- 5|6 â…•- 1|5 â…–- 2|5 â…—- 3|5 â…˜- 4|5 # U+2150- 1|7 For some reason these characters are getting # U+2151- 1|9 flagged as invalid UTF8. # U+2152- 1|10 #â…- 1|7 # fails under MacOS #â…‘- 1|9 # fails under MacOS #â…’- 1|10 # fails under MacOS ℯ exp(1) # U+212F, base of natural log µ- micro # micro sign U+00B5 μ- micro # small mu U+03BC Ã¥ngström angstrom â„« angstrom # angstrom symbol U+212B Ã… angstrom # A with ring U+00C5 röntgen roentgen °C degC °F degF °K K # °K is incorrect notation °R degR ° degree ℃ degC ℉ degF K K # Kelvin symbol, U+212A â„“ liter # unofficial abbreviation used in some places Ω ohm # Ohm symbol U+2126 Ω ohm # Greek capital omega U+03A9 â„§ mho Gâ‚€ G0 Hâ‚€ H0 Zâ‚€ Z0 aâ‚€ a0 nâ‚€ n0 ε₀ epsilon0 μ₀ mu0 Φ₀ Phi0 R∞ Rinfinity R_∞ Rinfinity λ_C lambda_C μ_B mu_B ν_133Cs nu_133Cs Ê’ dram # U+0292 ℈ scruple â„¥ ounce â„” lb ℎ h â„ hbar Ï„ tau Ï€ pi # Greek letter pi 𜋠pi # mathematical italic small pi α alpha σ sigma ‰ 1|1000 ‱ 1|10000 ′ ' # U+2032 ″ " # U+2033 # # Unicode currency symbols # ¢ cent £ britainpound Â¥ japanyen € euro â‚© southkoreawon ₪ israelnewshekel ₤ lira # ₺ turkeylira # fails under MacOS ₨ rupee # unofficial legacy rupee sign # ₹ indiarupee # official rupee sign # MacOS fail #Ø‹ afghanafghani # fails under MacOS ฿ thailandbaht â‚¡ costaricacolon â‚£ francefranc ₦ nigerianaira â‚§ spainpeseta â‚« vietnamdong â‚­ laokip â‚® mongoliatugrik ₯ greecedrachma ₱ philippinepeso # ₲ paraguayguarani # fails under MacOS #â‚´ ukrainehryvnia # fails under MacOS #₵ ghanacedi # fails under MacOS #₸ kazakhstantenge # fails under MacOS #₼ azerbaijanmanat # fails under MacOS #₽ russiaruble # fails under MacOS #₾ georgialari # fails under MacOS ï·¼ iranrial ﹩ $ ï¿  ¢ ï¿¡ £ ï¿¥ Â¥ ₩ â‚© # # Square Unicode symbols starting at U+3371 # ã± hPa ã² da ã³ au ã´ bar # ãµ oV??? ã¶ pc #ã· dm invalid on Mac #㸠dm^2 invalid on Mac #ã¹ dm^3 invalid on Mac ㎀ pA ㎠nA ㎂ µA ㎃ mA ㎄ kA ㎅ kB ㎆ MB ㎇ GB ㎈ cal ㎉ kcal ㎊ pF ㎋ nF ㎌ µF ㎠µg ㎎ mg ㎠kg ㎠Hz ㎑ kHz ㎒ MHz ㎓ GHz ㎔ THz ㎕ µL ㎖ mL ㎗ dL ㎘ kL ㎙ fm ㎚ nm ㎛ µm ㎜ mm ㎠cm ㎞ km ㎟ mm^2 ㎠ cm^2 ㎡ m^2 ㎢ km^2 ㎣ mm^3 ㎤ cm^3 ㎥ m^3 ㎦ km^3 ㎧ m/s ㎨ m/s^2 ㎩ Pa ㎪ kPa ㎫ MPa ㎬ GPa ㎭ rad ㎮ rad/s ㎯ rad/s^2 ㎰ ps ㎱ ns ㎲ µs ㎳ ms ㎴ pV ㎵ nV ㎶ µV ㎷ mV ㎸ kV ㎹ MV ㎺ pW ㎻ nW ㎼ µW ㎽ mW ㎾ kW ㎿ MW 〠kΩ ã MΩ ムBq ã„ cc ã… cd ㆠC/kg ãˆ() dB ㉠Gy ㊠ha # ã‹ HP?? ㌠in # ã KK?? # ㎠KM??? ã kt ã lm # ã‘ ln # ã’ log ã“ lx ã” mb ã• mil ã– mol ã—() pH ã™ ppm # ãš PR??? ã› sr 㜠Sv ã Wb #ãž V/m Invalid on Mac #㟠A/m Invalid on Mac #ã¿ gal Invalid on Mac !endutf8 ############################################################################ # # Unit list aliases # # These provide a shorthand for conversions to unit lists. # ############################################################################ !unitlist uswt lb;oz !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist inchfine in;1|8 in;1|16 in;1|32 in;1|64 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\ tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp ############################################################################ # # The following units were in the Unix units database but do not appear in # this file: # # wey used for cheese, salt and other goods. Measured mass or # waymass volume depending on what was measured and where the measuring # took place. A wey of cheese ranged from 200 to 324 pounds. # # sack No precise definition # # spindle The length depends on the type of yarn # # block Defined variously on different computer systems # # erlang A unit of telephone traffic defined variously. # Omitted because there are no other units for this # dimension. Is this true? What about CCS = 1/36 erlang? # Erlang is supposed to be dimensionless. One erlang means # a single channel occupied for one hour. # ############################################################################ # # The following have been suggested or considered and deemed out of scope. # They will not be added to GNU units. # # Conversions between different calendar systems used in different countries or # different historical periods are out of scope for units and will not be added. # # Wind chill and heat index cannot be handled because they are bivarite, # with dependence on both the temperature and wind speed or humidity. # # Plain english text output like "one hectare is equivalent to one hundred # million square centimeters" is out of scope. # units-2.23/units.txt0000664000175000017500000046406514564532530014013 0ustar adrianadrianUNITS(1) General Commands Manual UNITS(1) NAME units -- unit conversion and calculation program SYNOPSIS units [from-unit [to-unit]] units [-hcemnSpqsv1trUVI] [-d digits] [-f units file] [-L logfile] [-l locale] [-o format] [-u unit system] [from-unit [to-unit]] units [--help] [--check] [--check-verbose] [--verbose-check] [--digits digits] [--exponential] [--file units file] [--log logfile] [--locale locale] [--minus] [--oldstar] [--newstar] [--nolists] [--show-factor] [--conformable] [--output-format format] [--product] [--quiet] [--silent] [--strict] [--verbose] [--compact] [--one-line] [--terse] [--round] [--unitsfile] [--units units system] [--version] [--info] [from-unit [to-unit]] DESCRIPTION The units program converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes. It can also handle nonlinear conversions such as Fahrenheit to Celsius; see Temperature Conversions. The program can also perform conversions from and to sums of units, such as converting between meters and feet plus inches. But Fahrenheit to Celsius is linear, you insist. Not so. A transfor- mation T is linear if T(x + y) = T(x) + T(y) and this fails for T(x) = ax + b. This transformation is affine, but not linear--see https://en.wikipedia.org/wiki/Linear_map. Basic operation is simple: you enter the units that you want to convert from and the units that you want to convert to. You can use the pro- gram interactively with prompts, or you can use it from the command line. Beyond simple unit conversions, units can be used as a general-purpose scientific calculator that keeps track of units in its calculations. You can form arbitrary complex mathematical expressions of dimensions including sums, products, quotients, powers, and even roots of dimen- sions. Thus you can ensure accuracy and dimensional consistency when working with long expressions that involve many different units that may combine in complex ways; for an illustration, see Complicated Unit Expressions. The units are defined in several external data files. You can use the extensive data files that come with the program, or you can provide your own data file to suit your needs. You can also use your own data file to supplement the standard data files. You can change the default behavior of units with various options given on the command line. See Invoking Units for a description of the avail- able options. INTERACTING WITH UNITS To invoke units for interactive use, type units at your shell prompt. The program will print something like this: Currency exchange rates from FloatRates (USD base) on 2023-07-08 3612 units, 109 prefixes, 122 nonlinear units You have: At the 'You have:' prompt, type the quantity and units that you are converting from. For example, if you want to convert ten meters to feet, type 10 meters. Next, units will print 'You want:'. You should type the units you want to convert to. To convert to feet, you would type feet. If the readline library was compiled in, then tab will com- plete unit names. See Readline Support for more information about read- line. To quit the program type quit or exit at either prompt. The result will be displayed in two ways. The first line of output, which is marked with a '*' to indicate multiplication, gives the result of the conversion you have asked for. The second line of output, which is marked with a '/' to indicate division, gives the inverse of the conversion factor. If you convert 10 meters to feet, units will print * 32.808399 / 0.03048 which tells you that 10 meters equals about 32.8 feet. The second num- ber gives the conversion in the opposite direction. In this case, it tells you that 1 foot is equal to about 0.03 dekameters since the dekameter is 10 meters. It also tells you that 1/32.8 is about 0.03. The units program prints the inverse because sometimes it is a more convenient number. In the example above, for example, the inverse value is an exact conversion: a foot is exactly 0.03048 dekameters. But the number given the other direction is inexact. If you convert grains to pounds, you will see the following: You have: grains You want: pounds * 0.00014285714 / 7000 From the second line of the output, you can immediately see that a grain is equal to a seven thousandth of a pound. This is not so obvi- ous from the first line of the output. If you find the output format confusing, try using the '--verbose' option: You have: grain You want: aeginamina grain = 0.00010416667 aeginamina grain = (1 / 9600) aeginamina If you request a conversion between units that measure reciprocal di- mensions, then units will display the conversion results with an extra note indicating that reciprocal conversion has been done: You have: 6 ohms You want: siemens reciprocal conversion * 0.16666667 / 6 Reciprocal conversion can be suppressed by using the '--strict' option. As usual, use the '--verbose' option to get more comprehensible output: You have: tex You want: typp reciprocal conversion 1 / tex = 496.05465 typp 1 / tex = (1 / 0.0020159069) typp You have: 20 mph You want: sec/mile reciprocal conversion 1 / 20 mph = 180 sec/mile 1 / 20 mph = (1 / 0.0055555556) sec/mile If you enter incompatible unit types, the units program will print a message indicating that the units are not conformable and it will dis- play the reduced form for each unit: You have: ergs/hour You want: fathoms kg^2 / day conformability error 2.7777778e-11 kg m^2 / sec^3 2.1166667e-05 kg^2 m / sec If you only want to find the reduced form or definition of a unit, sim- ply press Enter at the 'You want:' prompt. Here is an example: You have: jansky You want: Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2 The output from units indicates that the jansky is defined to be equal to a fluxunit which in turn is defined to be a certain combination of watts, meters, and hertz. The fully reduced (and in this case somewhat more cryptic) form appears on the far right. If the ultimate defini- tion and the fully reduced form are identical, the latter is not shown: You have: B You want: Definition: byte = 8 bit The fully reduced form is shown if it and the ultimate definition are equivalent but not identical: You have: N You want: Definition: newton = kg m / s^2 = 1 kg m / s^2 Some named units are treated as dimensionless in some situations. These units include the radian and steradian. These units will be treated as equal to 1 in units conversions. Power is equal to torque times angular velocity. This conversion can only be performed if the radian is dimensionless. You have: (14 ft lbf) (12 radians/sec) You want: watts * 227.77742 / 0.0043902509 It is also possible to compute roots and other non-integer powers of dimensionless units; this allows computations such as the altitude of geosynchronous orbit: You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius You want: miles * 22243.267 / 4.4957425e-05 Named dimensionless units are not treated as dimensionless in other contexts. They cannot be used as exponents so for example, 'meter^radian' is forbidden. If you want a list of options you can type ? at the 'You want:' prompt. The program will display a list of named units that are conformable with the unit that you entered at the 'You have:' prompt above. Con- formable unit combinations will not appear on this list. Typing help at either prompt displays a short help message. You can also type help followed by a unit name. This will invoke a pager on the units data base at the point where that unit is defined. You can read the definition and comments that may give more details or histori- cal information about the unit. If your pager allows, you may want to scroll backwards, e.g. with 'b', because sometimes a longer comment about a unit or group of units will appear before the definition. You can generally quit out of the pager by pressing 'q'. Typing search text will display a list of all of the units whose names contain text as a substring along with their definitions. This may help in the case where you aren't sure of the right unit name. USING UNITS NON-INTERACTIVELY The units program can perform units conversions non-interactively from the command line. To do this, type the command, type the original unit expression, and type the new units you want. If a units expression contains non-alphanumeric characters, you may need to protect it from interpretation by the shell using single or double quote characters. If you type units "2 liters" quarts then units will print * 2.1133764 / 0.47317647 and then exit. The output tells you that 2 liters is about 2.1 quarts, or alternatively that a quart is about 0.47 times 2 liters. units does not require a space between a numerical value and the unit, so the previous example can be given as units 2liters quarts to avoid having to quote the first argument. If the conversion is successful, units will return success (zero) to the calling environment. If you enter non-conformable units, then units will print a message giving the reduced form of each unit and it will return failure (nonzero) to the calling environment. If the '--conformable' option is given, only one unit expression is al- lowed, and units will print all units conformable with that expression; it is equivalent to giving ? at the 'You want:' prompt. For example, units --conformable gauss B_FIELD tesla Gs gauss T tesla gauss abvolt sec / cm^2 stT stattesla statT stattesla stattesla statWb/cm^2 tesla Wb/m^2 If you give more than one unit expression with the '--conformable' op- tion, the program will exit with an error message and return failure. This option has no effect in interactive mode. If the '--terse' ('-t') option is given with the '--conformable' op- tion, conformable units are shown without definitions; with the previ- ous example, this would give units --terse --conformable gauss B_FIELD Gs T gauss stT statT stattesla tesla When the '--conformable' option is not given and you invoke units with only one argument, units will print the definition of the specified unit. It will return failure if the unit is not defined and success if the unit is defined. UNIT DEFINITIONS The conversion information is read from several units data files: 'definitions.units', 'elements.units', 'currency.units', and 'cpi.units', which are usually located in the '/usr/share/units' direc- tory. If you invoke units with the '-V' option, it will print the lo- cation of these files. The default main file includes definitions for all familiar units, abbreviations and metric prefixes. It also in- cludes many obscure or archaic units. Many common spelled-out numbers (e.g., 'seventeen') are recognized. Physical Constants Many constants of nature are defined, including these: pi ratio of circumference of a circle to its diameter c speed of light e charge on an electron force acceleration of gravity mole Avogadro's number water pressure per unit height of water Hg pressure per unit height of mercury au astronomical unit k Boltzman's constant mu0 permeability of vacuum epsilon0 permittivity of vacuum G Gravitational constant mach speed of sound The standard data file includes numerous other constants. Also in- cluded are the densities of various ingredients used in baking so that '2 cups flour_sifted' can be converted to 'grams'. This is not an ex- haustive list. Consult the units data file to see the complete list, or to see the definitions that are used. Atomic Masses of the Elements The data file 'elements.units' includes atomic masses for most elements and most known isotopes. If the mole fractions of constituent isotopes are known, an elemental mass is calculated from the sum of the products of the mole fractions and the masses of the constituent isotopes. If the mole fractions are not known, the mass of the most stable isotope-- if known--is given as the elemental mass. For radioactive elements with atomic numbers 95 or greater, the mass number of the most stable isotope is not specified, because the list of studied isotopes is still incomplete. If no stable isotope is known, no elemental mass is given, and you will need to choose the most appropriate isotope. The data are obtained from the US National Institute for Standards and Technology (NIST): https://physics.nist.gov/cgi-bin/Composi- tions/stand_alone.pl?ele=&all=all&ascii=ascii2&isotype=all. The 'elements.units' file can be generated from these data using the elem- cvt command included with the distribution. Currency Exchange Rates and Consumer Price Index The data file 'currency.units' includes currency conversion rates; the file 'cpi.units' includes the US Consumer Price Index (CPI), published by the US Bureau of Labor Statistics. The data are updated monthly by the BLS; see Updating Currency Exchange Rates and CPI for information on updating 'currency.units' and 'cpi.units'. English Customary Units English customary units differ in various ways among different regions. In Britain a complex system of volume measurements featured different gallons for different materials such as a wine gallon and ale gallon that different by twenty percent. This complexity was swept away in 1824 by a reform that created an entirely new gallon, the British Impe- rial gallon defined as the volume occupied by ten pounds of water. Meanwhile in the USA the gallon is derived from the 1707 Winchester wine gallon, which is 231 cubic inches. These gallons differ by about twenty percent. By default if units runs in the 'en_GB' locale you will get the British volume measures. If it runs in the 'en_US' locale you will get the US volume measures. In other locales the default val- ues are the US definitions. If you wish to force different defini- tions, then set the environment variable UNITS_ENGLISH to either 'US' or 'GB' to set the desired definitions independent of the locale. Before 1959, the value of a yard (and other units of measure defined in terms of it) differed slightly among English-speaking countries. In 1959, Australia, Canada, New Zealand, the United Kingdom, the United States, and South Africa adopted the Canadian value of 1 yard = 0.9144 m (exactly), which was approximately halfway between the values used by the UK and the US; it had the additional advantage of making 1 inch = 2.54 cm (exactly). This new standard was termed the Interna- tional Yard. Australia, Canada, and the UK then defined all customary lengths in terms of the International Yard (Australia did not define the furlong or rod); because many US land surveys were in terms of the pre-1959 units, the US continued to define customary surveyors' units (furlong, chain, rod, pole, perch, and link) in terms of the previous value for the foot, which was termed the US survey foot. The US de- fined a US survey mile as 5280 US survey feet, and defined a statute mile as a US survey mile. The US values for these units differed from the international values by about 2 ppm. The 1959 redefinition of the foot was legally binding in the US but al- lowed continued use of the previous definition of the foot for geodetic surveying. It was assumed that this use would be temporary, but use persisted, leading to confusion and errors, and it was at odds with the intent of uniform standards. Since January 1, 2023, the US survey foot has been officially deprecated (85 FR 62698), with its use limited to historical and legacy applications. The units program has always used the international values for these units; the legacy US values can be obtained by using either the 'US' or the 'survey' prefix. In either case, the simple familiar relationships among the units are maintained, e.g., 1 'furlong' = 660 'ft', and 1 'USfurlong' = 660 'USft', though the metric equivalents differ slightly between the two cases. The 'US' prefix or the 'survey' prefix can also be used to obtain the US survey mile and the value of the US yard prior to 1959, e.g., 'USmile' or 'surveymile' (but not 'USsurveymile'). To get the US value of the statute mile, use either 'USstatutemile' or 'USmile'. The pre-1959 UK values for these units can be obtained with the prefix 'UK'. Except for distances that extend over hundreds of miles (such as in the US State Plane Coordinate System), the differences in the miles are usually insignificant: You have: 100 surveymile - 100 mile You want: inch * 12.672025 / 0.078913984 The US acre was officially defined in terms of the US survey foot, but units has used a definition based on the international foot; the units definition is now the same as the official US value. If you want the previous US acre, use 'USacre' and similarly use 'USacrefoot' for the previous US version of that unit. The difference between these units is about 4 parts per million. Miscellaneous Notes on Unit Definitions The 'pound' is a unit of mass. To get force, multiply by the force conversion unit 'force' or use the shorthand 'lbf'. (Note that 'g' is already taken as the standard abbreviation for the gram.) The unit 'ounce' is also a unit of mass. The fluid ounce is 'fluidounce' or 'floz'. When British capacity units differ from their US counterparts, such as the British Imperial gallon, the unit is defined both ways with 'br' and 'us' prefixes. Your locale settings will determine the value of the unprefixed unit. Currency is prefixed with its country name: 'belgiumfranc', 'britainpound'. When searching for a unit, if the specified string does not appear ex- actly as a unit name, then the units program will try to remove a trailing 's', 'es'. Next units will replace a trailing 'ies' with 'y'. If that fails, units will check for a prefix. The database includes all of the standard metric prefixes. Only one prefix is permitted per unit, so 'micromicrofarad' will fail. However, prefixes can appear alone with no unit following them, so 'micro*microfarad' will work, as will 'micro microfarad'. To find out which units and prefixes are available, read the default units data files; the main data file is extensively annotated. UNIT EXPRESSIONS Operators You can enter more complicated units by combining units with operations such as multiplication, division, powers, addition, subtraction, and parentheses for grouping. You can use the customary symbols for these operators when units is invoked with its default options. Addition- ally, units supports some extensions, including high priority multipli- cation using a space, and a high priority numerical division operator ('|') that can simplify some expressions. You multiply units using a space or an asterisk ('*'). The next exam- ple shows both forms: You have: arabicfoot * arabictradepound * force You want: ft lbf * 0.7296 / 1.370614 You can divide units using the slash ('/') or with 'per': You have: furlongs per fortnight You want: m/s * 0.00016630986 / 6012.8727 You can use parentheses for grouping: You have: (1/2) kg / (kg/meter) You want: league * 0.00010356166 / 9656.0833 White space surrounding operators is optional, so the previous example could have used '(1/2)kg/(kg/meter)'. As a consequence, however, hy- phenated spelled-out numbers (e.g., 'forty-two') cannot be used; 'forty-two' is interpreted as '40 - 2'. Multiplication using a space has a higher precedence than division us- ing a slash and is evaluated left to right; in effect, the first '/' character marks the beginning of the denominator of a unit expression. This makes it simple to enter a quotient with several terms in the de- nominator: 'J / mol K'. The '*' and '/' operators have the same prece- dence, and are evaluated left to right; if you multiply with '*', you must group the terms in the denominator with parentheses: 'J / (mol * K)'. The higher precedence of the space operator may not always be advanta- geous. For example, 'm/s s/day' is equivalent to 'm / s s day' and has dimensions of length per time cubed. Similarly, '1/2 meter' refers to a unit of reciprocal length equivalent to 0.5/meter, perhaps not what you would intend if you entered that expression. The get a half meter you would need to use parentheses: '(1/2) meter'. The '*' operator is convenient for multiplying a sequence of quotients. For example, 'm/s * s/day' is equivalent to 'm/day'. Similarly, you could write '1/2 * meter' to get half a meter. The units program supports another option for numerical fractions: you can indicate division of numbers with the vertical bar ('|'), so if you wanted half a meter you could write '1|2 meter'. You cannot use the vertical bar to indicate division of non-numerical units (e.g., 'm|s' results in an error message). Powers of units can be specified using the '^' character, as shown in the following example, or by simple concatenation of a unit and its ex- ponent: 'cm3' is equivalent to 'cm^3'; if the exponent is more than one digit, the '^' is required. You can also use '**' as an exponent oper- ator. You have: cm^3 You want: gallons * 0.00026417205 / 3785.4118 Concatenation only works with a single unit name: if you write '(m/s)2', units will treat it as multiplication by 2. When a unit in- cludes a prefix, exponent operators apply to the combination, so 'centimeter3' gives cubic centimeters. If you separate the prefix from the unit with any multiplication operator (e.g., 'centi meter^3'), the prefix is treated as a separate unit, so the exponent applies only to the unit without the prefix. The second example is equivalent to 'centi * (meter^3)', and gives a hundredth of a cubic meter, not a cu- bic centimeter. The units program is limited internally to products of 99 units; accordingly, expressions like 'meter^100' or 'joule^34' (rep- resented internally as 'kg^34 m^68 / s^68') will fail. The '|' operator has the highest precedence, so you can write the square root of two thirds as '2|3^1|2'. The '^' operator has the sec- ond highest precedence, and is evaluated right to left, as usual: You have: 5 * 2^3^2 You want: Definition: 2560 With a dimensionless base unit, any dimensionless exponent is meaning- ful (e.g., 'pi^exp(2.371)'). Even though angle is sometimes treated as dimensionless, exponents cannot have dimensions of angle: You have: 2^radian ^ Exponent not dimensionless If the base unit is not dimensionless, the exponent must be a rational number p/q, and the dimension of the unit must be a power of q, so 'gallon^2|3' works but 'acre^2|3' fails. An exponent using the slash ('/') operator (e.g., 'gallon^(2/3)') is also acceptable; the parenthe- ses are needed because the precedence of '^' is higher than that of '/'. Since units cannot represent dimensions with exponents greater than 99, a fully reduced exponent must have q < 100. When raising a non-dimensionless unit to a power, units attempts to convert a decimal exponent to a rational number with q < 100. If this is not possible units displays an error message: You have: ft^1.234 Base unit not dimensionless; rational exponent required A decimal exponent must match its rational representation to machine precision, so 'acre^1.5' works but 'gallon^0.666' does not. Sums and Differences of Units You may sometimes want to add values of different units that are out- side the SI. You may also wish to use units as a calculator that keeps track of units. Sums of conformable units are written with the '+' character, and differences with the '-' character. You have: 2 hours + 23 minutes + 32 seconds You want: seconds * 8612 / 0.00011611705 You have: 12 ft + 3 in You want: cm * 373.38 / 0.0026782366 You have: 2 btu + 450 ft lbf You want: btu * 2.5782804 / 0.38785542 The expressions that are added or subtracted must reduce to identical expressions in primitive units, or an error message will be displayed: You have: 12 printerspoint - 4 heredium ^ Invalid sum of non-conformable units If you add two values of vastly different scale you may exceed the available precision of floating point (about 15 digits). The effect is that the addition of the smaller value makes no change to the larger value; in other words, the smaller value is treated as if it were zero. You have: lightyear + cm No warning is given, however. As usual, the precedence for '+' and '-' is lower than that of the other operators. A fractional quantity such as 2 1/2 cups can be given as '(2+1|2) cups'; the parentheses are nec- essary because multiplication has higher precedence than addition. If you omit the parentheses, units attempts to add '2' and '1|2 cups', and you get an error message: You have: 2+1|2 cups ^ Invalid sum or difference of non-conformable units The expression could also be correctly written as '(2+1/2) cups'. If you write '2 1|2 cups' the space is interpreted as multiplication so the result is the same as '1 cup'. The '+' and '-' characters sometimes appears in exponents like '3.43e+8'. This leads to an ambiguity in an expression like '3e+2 yC'. The unit 'e' is a small unit of charge, so this can be regarded as equivalent to '(3e+2) yC' or '(3 e)+(2 yC)'. This ambiguity is re- solved by always interpreting '+' and '-' as part of an exponent if possible. Numbers as Units For units, numbers are just another kind of unit. They can appear as many times as you like and in any order in a unit expression. For ex- ample, to find the volume of a box that is 2 ft by 3 ft by 12 ft in steres, you could do the following: You have: 2 ft 3 ft 12 ft You want: stere * 2.038813 / 0.49048148 You have: $ 5 / yard You want: cents / inch * 13.888889 / 0.072 And the second example shows how the dollar sign in the units conver- sion can precede the five. Be careful: units will interpret '$5' with no space as equivalent to 'dollar^5'. Built-in Functions Several built-in functions are provided: 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'sinh', 'cosh', 'tanh', 'asinh', 'acosh', 'atanh', 'exp', 'ln', 'log', 'abs', 'round', 'floor', 'ceil', 'factorial', 'Gamma', 'lnGamma', 'erf', and 'erfc'; the function 'lnGamma' is the natural logarithm of the 'Gamma' function. The 'sin', 'cos', and 'tan' functions require either a dimensionless argument or an argument with dimensions of angle. You have: sin(30 degrees) You want: Definition: 0.5 You have: sin(pi/2) You want: Definition: 1 You have: sin(3 kg) ^ Unit not dimensionless The other functions on the list require dimensionless arguments. The inverse trigonometric functions return arguments with dimensions of an- gle. The 'ln' and 'log' functions give natural log and log base 10 respec- tively. To obtain logs for any integer base, enter the desired base immediately after 'log'. For example, to get log base 2 you would write 'log2' and to get log base 47 you could write 'log47'. You have: log2(32) You want: Definition: 5 You have: log3(32) You want: Definition: 3.1546488 You have: log4(32) You want: Definition: 2.5 You have: log32(32) You want: Definition: 1 You have: log(32) You want: Definition: 1.50515 You have: log10(32) You want: Definition: 1.50515 If you wish to take roots of units, you may use the 'sqrt' or 'cuberoot' functions. These functions require that the argument have the appropriate root. You can obtain higher roots by using fractional exponents: You have: sqrt(acre) You want: feet * 208.71074 / 0.0047913202 You have: (400 W/m^2 / stefanboltzmann)^(1/4) You have: Definition: 289.80882 K You have: cuberoot(hectare) ^ Unit not a root Previous Result You can insert the result of the previous conversion using the under- score ('_'). It is useful when you want to convert the same input to several different units, for example You have: 2.3 tonrefrigeration You want: btu/hr * 27600 / 3.6231884e-005 You have: _ You want: kW * 8.0887615 / 0.12362832 Suppose you want to do some deep frying that requires an oil depth of 2 inches. You have 1/2 gallon of oil, and want to know the largest-di- ameter pan that will maintain the required depth. The nonlinear unit 'circlearea' gives the radius of the circle (see Other Nonlinear Units, for a more detailed description) in SI units; you want the diameter in inches: You have: 1|2 gallon / 2 in You want: circlearea 0.10890173 m You have: 2 _ You want: in * 8.5749393 / 0.1166189 In most cases, surrounding white space is optional, so the previous ex- ample could have used '2_'. If '_' follows a non-numerical unit sym- bol, however, the space is required: You have: m_ ^ Parse error You can use the '_' symbol any number of times; for example, You have: m You want: Definition: 1 m You have: _ _ You want: Definition: 1 m^2 Using '_' before a conversion has been performed (e.g., immediately af- ter invocation) generates an error: You have: _ ^ No previous result; '_' not set Accordingly, '_' serves no purpose when units is invoked non-interac- tively. If units is invoked with the '--verbose' option (see Invoking Units), the value of '_' is not expanded: You have: mile You want: ft mile = 5280 ft mile = (1 / 0.00018939394) ft You have: _ You want: m _ = 1609.344 m _ = (1 / 0.00062137119) m You can give '_' at the 'You want:' prompt, but it usually is not very useful. Complicated Unit Expressions The units program is especially helpful in ensuring accuracy and dimen- sional consistency when converting lengthy unit expressions. For exam- ple, one form of the Darcy-Weisbach fluid-flow equation is Delta P = (8 / pi)^2 (rho fLQ^2) / d^5, where Delta P is the pressure drop, rho is the mass density, f is the (dimensionless) friction factor, L is the length of the pipe, Q is the volumetric flow rate, and d is the pipe diameter. You might want to have the equation in the form Delta P = A1 rho fLQ^2 / d^5 that accepted the user's normal units; for typical units used in the US, the required conversion could be something like You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5) You want: psi * 43.533969 / 0.022970568 The parentheses allow individual terms in the expression to be entered naturally, as they might be read from the formula. Alternatively, the multiplication could be done with the '*' rather than a space; then parentheses are needed only around 'ft^3/s' because of its exponent: You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5 You want: psi * 43.533969 / 0.022970568 Without parentheses, and using spaces for multiplication, the previous conversion would need to be entered as You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5 You want: psi * 43.533969 / 0.022970568 Variables Assigned at Run Time Unit definitions are fixed once units has finished reading the units data file(s), but at run time you can assign unit expressions to vari- ables whose names begin with an underscore, using the syntax _name = This can help manage a long calculation by saving intermediate quanti- ties as variables that you can use later. For example, to determine the shot-noise-limited signal-to-noise ratio (SNR) of an imaging system using a helium-neon laser, you could do You have: _lambda = 632.8 nm # laser wavelength You have: _nu = c / _lambda # optical frequency You have: _photon_energy = h * _nu You have: _power = 550 uW You have: _photon_count = _power * 500 ns / _photon_energy You have: _snr = sqrt(_photon_count) You have: _snr You want: Definition: sqrt(_photon_count) = 29597.922 Except for beginning with an underscore, runtime variables follow the same naming rules as units. Because names beginning with '_' are re- served for these variables and unit names cannot begin with '_', run- time variables can never hide unit definitions. Runtime variables are undefined until you make an assignment to them, so if you give a name beginning with an underscore and no assignment has been made, you get an error message. When you assign a unit expression to a runtime variable, units checks the expression to determine whether it is valid, but the resulting def- inition is stored as a text string, and is not reduced to primitive units. The text will be processed anew each time you use the variable in a conversion or calculation. This means that if your definition de- pends on other runtime variables (or the special variable '_'), the re- sult of calculating with your variable will change if any of those variables change. A dependence need not be direct. Continuing the example of the laser above, suppose you have done the calculation as shown. You now wonder what happens if you switch to an argon laser: You have: _lambda = 454.6 nm You have: _snr You want: Definition: sqrt(_photon_count) = 25086.651 If you then change the power: You have: _power = 1 mW You have: _snr You want: Definition: sqrt(_photon_count) = 33826.834 Instead of having to reenter or edit a lengthy expression when you per- form another calculation, you need only enter values that change; in this respect, runtime variables are similar to a spreadsheet. The more times a variable appears in an expression that depends on it, the greater the benefit of having a calculation using that expression reflect changes to that variable. For example, the length of a side- real day at a given latitude and declination of the Sun is given by L = acos((sin h - sin sin ) / (cos cos )) where L is the day length, h is the altitude, is the latitude, and is the Sun's declination. The length of a solar day is obtained from a sidereal day by multiply- ing by siderealday / day By convention, the Sun's altitude at rise or set is -50' to allow for atmospheric refraction and the semidiameter of its disk. At the summer solstice, the Sun's declination is approximately 23.44; to find the length of the longest day of the year for a latitude of 55, you could do You have: _alt = -50 arcmin You have: _lat = 55 deg You have: _decl = 23.44 deg You have: _num = sin(_alt) - sin(_lat) sin(_decl) You have: _denom = cos(_lat) cos(_decl) You have: _sday = 2 (acos(_num / _denom) / circle) 24 hr You have: _day = _sday siderealday / day You have: _day You want: hms 17 hr + 19 min + 34.895151 sec At the winter solstice, the Sun's declination is approximately -23.44, so you could calculate the length of the shortest day of the year using: You have: _decl = -23.44 deg You have: _day You want: hms 7 hr + 8 min + 40.981084 sec Latitude and declination each appear twice in the expression for _day; the result in the examples above is updated by changing only the value of the declination. It's important to remember that evaluation of runtime variables is de- layed, so you cannot make an assignment that is self-referential. For example, the following does not work: You have: _decl = 23.44 deg You have: _decl = -_decl You have: _decl Circular unit definition A runtime variable must be assigned before it can be used in an assign- ment; in the first of the three examples above, giving the general equation before the values for _alt, _lat, and _decl had been assigned would result in an error message. Backwards Compatibility: '*' and '-' The original units assigned multiplication a higher precedence than di- vision using the slash. This differs from the usual precedence rules, which give multiplication and division equal precedence, and can be confusing for people who think of units as a calculator. The star operator ('*') included in this units program has, by default, the same precedence as division, and hence follows the usual precedence rules. For backwards compatibility you can invoke units with the '--oldstar' option. Then '*' has a higher precedence than division, and the same precedence as multiplication using the space. Historically, the hyphen ('-') has been used in technical publications to indicate products of units, and the original units program treated it as a multiplication operator. Because units provides several other ways to obtain unit products, and because '-' is a subtraction operator in general algebraic expressions, units treats the binary '-' as a sub- traction operator by default. For backwards compatibility use the '--product' option, which causes units to treat the binary '-' operator as a product operator. When '-' is a multiplication operator it has the same precedence as multiplication with a space, giving it a higher precedence than division. When '-' is used as a unary operator it negates its operand. Regard- less of the units options, if '-' appears after '(' or after '+', then it will act as a negation operator. So you can always compute 20 de- grees minus 12 minutes by entering '20 degrees + -12 arcmin'. You must use this construction when you define new units because you cannot know what options will be in force when your definition is processed. NONLINEAR UNIT CONVERSIONS Nonlinear units are represented using functional notation. They make possible nonlinear unit conversions such as temperature. Temperature Conversions Conversions between temperatures are different from linear conversions between temperature increments--see the example below. The absolute temperature conversions are handled by units starting with 'temp', and you must use functional notation. The temperature-increment conver- sions are done using units starting with 'deg' and they do not require functional notation. You have: tempF(45) You want: tempC 7.2222222 You have: 45 degF You want: degC * 25 / 0.04 Think of 'tempF(x)' not as a function but as a notation that indicates that x should have units of 'tempF' attached to it. See Defining Non- linear Units. The first conversion shows that if it's 45 degrees Fahrenheit outside, it's 7.2 degrees Celsius. The second conversion indicates that a change of 45 degrees Fahrenheit corresponds to a change of 25 degrees Celsius. The conversion from 'tempF(x)' is to ab- solute temperature, so that You have: tempF(45) You want: degR * 504.67 / 0.0019814929 gives the same result as You have: tempF(45) You want: tempR * 504.67 / 0.0019814929 But if you convert 'tempF(x)' to 'degC', the output is probably not what you expect: You have: tempF(45) You want: degC * 280.37222 / 0.0035666871 The result is the temperature in K, because 'degC' is defined as 'K', the kelvin. For consistent results, use the 'tempX' units when convert- ing to a temperature rather than converting a temperature increment. The 'tempC()' and 'tempF()' definitions are limited to positive abso- lute temperatures, and giving a value that would result in a negative absolute temperature generates an error message: You have: tempC(-275) ^ Argument of function outside domain US Consumer Price Index units includes the US Consumer Price Index published by the US Bureau of Labor Statistics. Several functions that use this value are pro- vided: 'cpi', 'cpi_now', 'inflation_since', and 'dollars_in'. The 'cpi' function gives the CPI for a specified decimal year. A deci- mal year is given as the year plus the fractional part of the year; be- cause of leap years and the different lengths of months, calculating an exact value for the fractional part can be tedious, but for the pur- poses of CPI, an approximate value is usually adequate. For example, 1 January 2000 is 2000.0, 1 April 2000 is 2000.25, 1 July 2000 is 2000.4986, and 1 October 2000 is 2000.75. Note also that the CPI data update monthly; values in between months are linearly interpolated. In the middle of 1975, the CPI was You have: cpi(1975.5) You want: Definition: 53.6 The value of the CPI for the previous month is usually published toward the the month; the latest value of the CPI is available with 'cpi_now'. On 7 January 2024, the value was You have: cpi_now You want: Definition: UScpi_now = 307.051 This means that the CPI was 307.015 on 1 December 2023. The 'cpi_now' variable can only present the most recent data available, so it can lag the current CPI by several weeks. The decimal year of the last update is available with 'cpi_lastdate'. The 'inflation_since' function provides a convenient way to determine the inflation factor from a specified decimal year to the latest value in the CPI table. For example, on 7 January 2024: You have: inflation_since(1970) You want: Definition: 8.1445889 In other words, goods that cost 1 US$ in 1970 would cost 8.14 US$ on 1 December 2023. The 'inflation_since' function can be used to determine an annual rate of inflation. The earliest US CPI data are from about 1913.1; the ap- proximate time between then and 7 January 2024 is 110.9 years. The ap- proximate annual inflation rate for that period is then You have: inflation_since(1913.1)^1|110.9 - 1 You want: % * 3.1548115 / 0.31697614 The inflation rate for any time period can be found from the ratio of the CPI at the end of the period to that of the beginning: You have: (cpi(1982)/cpi(1972))^1|10 - 1 You want: % * 8.6247033 / 0.11594602 The period 1972-1982 was indeed one of high inflation. The 'dollars_in' function is similar to 'inflation_since' but its out- put is in US$ rather than dimensionless: You have: dollars_in(1970) You want: Definition: 8.1445889 US$ A typical use might be You have: 250 dollars_in(1970) You want: $ * 2036.1472 / 0.00049112362 Because 'dollars_in' includes the units, you should not include them at the 'You have:' prompt. You can also use 'dollars_in' to convert be- tween two specified years: You have: 250 dollars_in(1970) You want: dollars_in(1950) * 156.49867 / 0.0063898305 which shows that 250 US$ in 1970 would have equivalent purchasing power to 156 US$ in 1950. Other Nonlinear Units Some other examples of nonlinear units are numerous different ring sizes and wire gauges, the grit sizes used for abrasives, the decibel scale, shoe size, scales for the density of sugar (e.g., baume). The standard data file also supplies units for computing the area of a cir- cle and the volume of a sphere. See the standard units data file for more details. Wire gauges with multiple zeroes are signified using negative numbers where two zeroes is '-1'. Alternatively, you can use the synonyms 'g00', 'g000', and so on that are defined in the standard units data file. You have: wiregauge(11) You want: inches * 0.090742002 / 11.020255 You have: brwiregauge(g00) You want: inches * 0.348 / 2.8735632 You have: 1 mm You want: wiregauge 18.201919 You have: grit_P(600) You want: grit_ansicoated 342.76923 The last example shows the conversion from P graded sand paper, which is the European standard and may be marked "P600" on the back, to the USA standard. You can compute the area of a circle using the nonlinear unit, 'circlearea'. You can also do this using the circularinch or cir- cleinch. The next example shows two ways to compute the area of a cir- cle with a five inch radius and one way to compute the volume of a sphere with a radius of one meter. You have: circlearea(5 in) You want: in2 * 78.539816 / 0.012732395 You have: 10^2 circleinch You want: in2 * 78.539816 / 0.012732395 You have: spherevol(meter) You want: ft3 * 147.92573 / 0.0067601492 The inverse of a nonlinear conversion is indicated by prefixing a tilde ('~') to the nonlinear unit name: You have: ~wiregauge(0.090742002 inches) You want: Definition: 11 You can give a nonlinear unit definition without an argument or paren- theses, and press Enter at the 'You want:' prompt to get the definition of a nonlinear unit; if the definition is not valid for all real num- bers, the range of validity is also given. If the definition requires specific units this information is also displayed: You have: tempC Definition: tempC(x) = x K + stdtemp defined for x >= -273.15 You have: ~tempC Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K defined for tempC >= 0 K You have: circlearea Definition: circlearea(r) = pi r^2 r has units m To see the definition of the inverse use the '~' notation. In this case the parameter in the functional definition will usually be the name of the unit. Note that the inverse for 'tempC' shows that it re- quires units of 'K' in the specification of the allowed range of val- ues. Nonlinear unit conversions are described in more detail in Defin- ing Nonlinear Units. UNIT LISTS: CONVERSION TO SUMS OF UNITS Outside of the SI, it is sometimes desirable to convert a single unit to a sum of units--for example, feet to feet plus inches. The conver- sion from sums of units was described in Sums and Differences of Units, and is a simple matter of adding the units with the '+' sign: You have: 12 ft + 3 in + 3|8 in You want: ft * 12.28125 / 0.081424936 Although you can similarly write a sum of units to convert to, the re- sult will not be the conversion to the units in the sum, but rather the conversion to the particular sum that you have entered: You have: 12.28125 ft You want: ft + in + 1|8 in * 11.228571 / 0.089058524 The unit expression given at the 'You want:' prompt is equivalent to asking for conversion to multiples of '1 ft + 1 in + 1|8 in', which is 1.09375 ft, so the conversion in the previous example is equivalent to You have: 12.28125 ft You want: 1.09375 ft * 11.228571 / 0.089058524 In converting to a sum of units like miles, feet and inches, you typi- cally want the largest integral value for the first unit, followed by the largest integral value for the next, and the remainder converted to the last unit. You can do this conversion easily with units using a special syntax for lists of units. You must list the desired units in order from largest to smallest, separated by the semicolon (';') char- acter: You have: 12.28125 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in The conversion always gives integer coefficients on the units in the list, except possibly the last unit when the conversion is not exact: You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3.00096 * 1|8 in The order in which you list the units is important: You have: 3 kg You want: oz;lb 105 oz + 0.051367866 lb You have: 3 kg You want: lb;oz 6 lb + 9.8218858 oz Listing ounces before pounds produces a technically correct result, but not a very useful one. You must list the units in descending order of size in order to get the most useful result. Ending a unit list with the separator ';' has the same effect as re- peating the last unit on the list, so 'ft;in;1|8 in;' is equivalent to 'ft;in;1|8 in;1|8 in'. With the example above, this gives You have: 12.28126 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in in effect separating the integer and fractional parts of the coeffi- cient for the last unit. If you instead prefer to round the last coef- ficient to an integer you can do this with the '--round' ('-r') option. With the previous example, the result is You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in) When you use the '-r' option, repeating the last unit on the list has no effect (e.g., 'ft;in;1|8 in;1|8 in' is equivalent to 'ft;in;1|8 in'), and hence neither does ending a list with a ';'. With a single unit and the '-r' option, a terminal ';' does have an effect: it causes units to treat the single unit as a list and produce a rounded value for the single unit. Without the extra ';', the '-r' option has no ef- fect on single unit conversions. This example shows the output using the '-r' option: You have: 12.28126 ft You want: in * 147.37512 / 0.0067854058 You have: 12.28126 ft You want: in; 147 in (rounded down to nearest in) Each unit that appears in the list must be conformable with the first unit on the list, and of course the listed units must also be conform- able with the unit that you enter at the 'You have:' prompt. You have: meter You want: ft;kg ^ conformability error ft = 0.3048 m kg = 1 kg You have: meter You want: lb;oz conformability error 1 m 0.45359237 kg In the first case, units reports the disagreement between units appear- ing on the list. In the second case, units reports disagreement be- tween the unit you entered and the desired conversion. This conforma- bility error is based on the first unit on the unit list. Other common candidates for conversion to sums of units are angles and time: You have: 23.437754 deg You want: deg;arcmin;arcsec 23 deg + 26 arcmin + 15.9144 arcsec You have: 7.2319 hr You want: hr;min;sec 7 hr + 13 min + 54.84 sec Some applications for unit lists may be less obvious. Suppose that you have a postal scale and wish to ensure that it's accurate at 1 oz, but have only metric calibration weights. You might try You have: 1 oz You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g; 20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g You might then place one each of the 20 g, 5 g, 2 g, and 1 g weights on the scale and hope that it indicates close to You have: 20 g + 5 g + 2 g + 1 g You want: oz; 0.98767093 oz Appending ';' to 'oz' forces a one-line display that includes the unit; here the integer part of the result is zero, so it is not displayed. If a non-empty list item differs vastly in scale from the quantity from which the list is to be converted, you may exceed the available preci- sion of floating point (about 15 digits), in which case you will get a warning, e.g., You have: lightyear You want: mile;100 inch;10 inch;mm;micron 5.8786254e+12 mile + 390 * 100 inch (at 15-digit precision limit) Cooking Measure In North America, recipes for cooking typically measure ingredients by volume, and use units that are not always convenient multiples of each other. Suppose that you have a recipe for 6 and you wish to make a portion for 1. If the recipe calls for 2 1/2 cups of an ingredient, you might wish to know the measurements in terms of measuring devices you have available, you could use units and enter You have: (2+1|2) cup / 6 You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp 1|3 cup + 1 tbsp + 1 tsp By default, if a unit in a list begins with fraction of the form 1|x and its multiplier is an integer, the fraction is given as the product of the multiplier and the numerator; for example, You have: 12.28125 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in In many cases, such as the example above, this is what is wanted, but sometimes it is not. For example, a cooking recipe for 6 might call for 5 1/4 cup of an ingredient, but you want a portion for 2, and your 1-cup measure is not available; you might try You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3|2 cup + 1|4 cup This result might be fine for a baker who has a 1 1/2-cup measure (and recognizes the equivalence), but it may not be as useful to someone with more limited set of measures, who does want to do additional cal- culations, and only wants to know "How many 1/2-cup measures to I need to add?" After all, that's what was actually asked. With the '--show- factor' option, the factor will not be combined with a unity numerator, so that you get You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3 * 1|2 cup + 1|4 cup A user-specified fractional unit with a numerator other than 1 is never overridden, however--if a unit list specifies '3|4 cup;1|2 cup', a re- sult equivalent to 1 1/2 cups will always be shown as '2 * 3|4 cup' whether or not the '--show-factor' option is given. Unit List Aliases A unit list such as cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp can be tedious to enter. The units program provides shorthand names for some common combinations: hms time: hours, minutes, seconds dms angle: degrees, minutes, seconds time time: years, days, hours, minutes and seconds usvol US cooking volume: cups and smaller uswt US weight: pounds and ounces ftin length: feet, inches and 1/8 inches inchfine length: inches subdivided to 1/64 inch Using these shorthands, or unit list aliases, you can do the following conversions: You have: anomalisticyear You want: time 1 year + 25 min + 3.4653216 sec You have: 1|6 cup You want: usvol 2 tbsp + 2 tsp You can define your own unit list aliases; see Defining Unit List Aliases. You cannot combine a unit list alias with other units: it must appear alone at the 'You want:' prompt. You can display the definition of a unit list alias by entering it at the 'You have:' prompt: You have: dms Definition: unit list, deg;arcmin;arcsec When you specify compact output with '--compact', '--terse' or '-t' and perform conversion to a unit list, units lists the conversion factors for each unit in the list, separated by semicolons. You have: year You want: day;min;sec 365;348;45.974678 Unlike the case of regular output, zeros are included in this output list: You have: liter You want: cup;1|2 cup;1|4 cup;tbsp 4;0;0;3.6280454 ALTERNATIVE UNIT SYSTEMS CGS Units The SI--an extension of the MKS (meter-kilogram-second) system--has largely supplanted the older CGS (centimeter-gram-second) system, but CGS units are still used in a few specialized fields, especially in physics where they lead to a more elegant formulation of Maxwell's equations. Conversions between SI and CGS involving mechanical units are straightforward, involving powers of 10 (e.g., 1 m = 100 cm). Con- versions involving electromagnetic units are more complicated, and units supports four different systems of CGS units: electrostatic units (ESU), electromagnetic units (EMU), the Gaussian system and the Heavi- side-Lorentz system. The differences between these systems arise from different choices made for proportionality constants in electromagnetic equations. Coulomb's law gives electrostatic force between two charges separated by a distance delim $$ r: F = k_C q_1 q_2 / r^2. Ampere's law gives the electromagnetic force per unit length between two current-carrying conductors separated by a distance r: F/l = 2 k_A I_1 I_2 / r. The two constants, k_C and k_A, are related by the square of the speed of light: k_A = k_C / c^2. In the SI, the constants have dimensions, and an additional base unit, the ampere, measures electric current. The CGS systems do not define new base units, but express charge and current as derived units in terms of mass, length, and time. In the ESU system, the constant for Coulomb's law is chosen to be unity and dimensionless, which defines the unit of charge. In the EMU system, the constant for Ampere's law is chosen to be unity and dimensionless, which defines a unit of cur- rent. The Gaussian system usually uses the ESU units for charge and current; it chooses another constant so that the units for the electric and magnetic fields are the same. The Heaviside-Lorentz system is "ra- tionalized" so that factors of 4{pi} do not appear in Maxwell's equa- tions. The SI system is similarly rationalized, but the other CGS sys- tems are not. In the Heaviside-Lorentz (HLU) system the factor of 4{pi} appears in Coulomb's law instead; this system differs from the Gaussian system by factors of the square root of 4{pi} The dimensions of electrical quantities in the various CGS systems are different from the SI dimensions for the same units; strictly, conver- sions between these systems and SI are not possible. But units in dif- ferent systems relate to the same physical quantities, so there is a correspondence between these units. The units program defines the units so that you can convert between corresponding units in the vari- ous systems. The CGS definitions involve cm^(1/2) and g^(1/2), which is problematic because units does not normally support fractional roots of base units. The '--units' ('-u') option allows selection of a CGS unit system and works around this restriction by introducing base units for the square roots of length and mass: 'sqrt_cm' and 'sqrt_g'. The centimeter then becomes 'sqrt_cm^2' and the gram, 'sqrt_g^2'. This allows working from equations using the units in the CGS system, and enforcing dimensional conformity within that system. Recognized CGS arguments to the '--units' option are 'gauss[ian]', 'esu', 'emu', 'lhu'; the argument is case insensitive. You can also give 'si' which just enforces the de- fault SI mode and displays '(SI)' at the 'You have:' prompt to empha- size the units mode. Some other types of units are also supported as described below. Giving an unrecognized system generates a warning, and units uses SI units. The changes resulting from the '--units' option are actually controlled by the UNITS_SYSTEM environment variable. If you frequently work with one of the supported CGS units systems, you may set this environment variable rather than giving the '--units' option at each invocation. As usual, an option given on the command line overrides the setting of the environment variable. For example, if you would normally work with Gaussian units but might occasionally work with SI, you could set UNITS_SYSTEM to 'gaussian' and specify SI with the '--units' option. Unlike the argument to the '--units' option, the value of UNITS_SYSTEM is case sensitive, so setting a value of 'EMU' will have no effect other than to give an error message and set SI units. The CGS definitions appear as conditional settings in the standard units data file, which you can consult for more information on how these units are defined, or on how to define an alternate units system. The ESU system derives the electromagnetic units from its unit of charge, the statcoulomb, which is defined from Coulomb's law. The statcoulomb equals dyne^(1/2) cm, or cm^(3/2) g^(1/2) s^(-1). The unit of current, the statampere, is statcoulomb sec, analogous to the rela- tionship in SI. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by 'stat-', e.g., 'statvolt' or 'statV'. The prefix 'st-' is also recog- nized (e.g., 'stV'). The EMU system derives the electromagnetic units from its unit of cur- rent, the abampere, which is defined in terms of Ampere's law. The abampere is equal to dyne^(1/2), or cm^(1/2) g^(1/2) s^(-1). delim off The unit of charge, the abcoulomb, is abampere sec, again analogous to the SI relationship. Other electrical units are then derived in a man- ner similar to that for SI units; the units use the SI names prefixed by 'ab-', e.g., 'abvolt' or 'abV'. The magnetic field units include the gauss, the oersted and the maxwell. The Gaussian units system, which was also known as the Symmetric Sys- tem, uses the same charge and current units as the ESU system (e.g., 'statC', 'statA'); it differs by defining the magnetic field so that it has the same units as the electric field. The resulting magnetic field units are the same ones used in the EMU system: the gauss, the oersted and the maxwell. The Heaviside-Lorentz system appears to lack named units. We define five basic units, 'hlu_charge', 'hlu_current', 'hlu_volt', 'hlu_efield' and 'hlu_bfield' for conversions with this system. It is important to remember that with all of the CGS systems, the units may look the same but mean something different. The HLU system and Gaussian systems both measure magnetic field using the same CGS dimensions, but the amount of magnetic field with the same units is different in the two systems. The CGS systems define units that measure the same thing but may have conflicting dimensions. Furthermore, the dimensions of the electromag- netic CGS units are never compatible with SI. But if you measure charge in two different systems you have measured the same physical thing, so there is a correspondence between the units in the different systems, and units supports conversions between corresponding units. When running with SI, units defines all of the CGS units in terms of SI. When you select a CGS system, units defines the SI units and the other CGS system units in terms of the system you have selected. (Gaussian) You have: statA You want: abA * 3.335641e-11 / 2.9979246e+10 (Gaussian) You have: abA You want: sqrt(dyne) conformability error 2.9979246e+10 sqrt_cm^3 sqrt_g / s^2 1 sqrt_cm sqrt_g / s In the above example, units converts between the current units statA and abA even though the abA, from the EMU system, has incompatible di- mensions. This works because in Gaussian mode, the abA is defined in terms of the statA, so it does not have the correct definition for EMU; consequently, you cannot convert the abA to its EMU definition. One challenge of conversion is that because the CGS system has fewer base units, quantities that have different dimensions in SI may have the same dimension in a CGS system. And yet, they may not have the same conversion factor. For example, the unit for the E field and B fields are the same in the Gaussian system, but the conversion factors to SI are quite different. This means that correct conversion is only possible if you keep track of what quantity is being measured. You cannot convert statV/cm to SI without indicating which type of field the unit measures. To aid in dimensional analysis, units defines vari- ous dimension units such as 'LENGTH', 'TIME', and 'CHARGE' to be the appropriate dimension in SI. The electromagnetic dimensions such as 'B_FIELD' or 'E_FIELD' may be useful aids both for conversion and di- mensional analysis in CGS. You can convert them to or from CGS in or- der to perform SI conversions that in some cases will not work directly due to dimensional incompatibilities. This example shows how the Gaussian system uses the same units for all of the fields, but they all have different conversion factors with SI. (Gaussian) You have: statV/cm You want: E_FIELD * 29979.246 / 3.335641e-05 (Gaussian) You have: statV/cm You want: B_FIELD * 0.0001 / 10000 (Gaussian) You have: statV/cm You want: H_FIELD * 79.577472 / 0.012566371 (Gaussian) You have: statV/cm You want: D_FIELD * 2.6544187e-07 / 3767303.1 The next example shows that the oersted cannot be converted directly to the SI unit of magnetic field, A/m, because the dimensions conflict. We cannot redefine the ampere to make this work because then it would not convert with the statampere. But you can still do this conversion as shown below. (Gaussian) You have: oersted You want: A/m conformability error 1 sqrt_g / s sqrt_cm 29979246 sqrt_cm sqrt_g / s^2 (Gaussian) You have: oersted You want: H_FIELD * 79.577472 / 0.012566371 Natural Units Like the CGS units, "natural" units are an alternative to the SI system used primarily physicists in different fields, with different systems tailored to different fields of study. These systems are "natural" be- cause the base measurements are defined using physical constants in- stead of arbitrary values such as the meter or second. In different branches of physics, different physical constants are more fundamental, which has given rise to a variety of incompatible natural unit systems. The supported systems are the "natural" units (which seem to have no better name) used in high energy physics and cosmology, the Planck units, often used by scientists working with gravity, and the Hartree atomic units are favored by those working in physical chemistry and condensed matter physics. You can select the various natural units using the '--units' option in the same way that you select the CGS units. The "natural" units come in two types, a rationalized system derived from the Heaviside-Lorentz units and an unrationalized system derived from the Gaussian system. You can select these using 'natural' and 'natural-gauss' respectively. For conversions in SI mode, several unit names starting with 'natural' are available. This "natural" system is defined by setting {hbar}, c and the Boltzman constant to 1. Only a single base unit remains: the electron volt. The Planck units exist in a variety of forms, and units supports two. Both supported forms are rationalized, in that factors of 4{pi} do not appear in Maxwell's equations. However, Planck units can also differ based on how the gravitational constant is treated. This system is similar to the natural units in that c, {hbar}, and Boltzman's constant are set to 1, but in this system, Newton's gravitational constant, G is also fixed. In the "reduced" Planck system, delim $$ 8{pi}G = 1 whereas in the unreduced system G = 1. The reduced system eliminates factors of 8{pi} delim off from the Einstein field equations for gravi- tation, so this is similar to the process of forming rationalized units to simplify Maxwell's equations. To obtain the unreduced system use the name 'planck' and for the reduced Planck units, 'planck-red'. Units such as 'planckenergy' and 'planckenergy_red' enable you to con- vert the unreduced and reduced Planck energy unit in SI mode between the various systems. In Planck units, all measurements are dimension- less. The final natural unit system is the Hartree atomic units. Like the Planck units, all measurements in the Hartree units are dimensionless, but this system is defined by defined from completely different physi- cal constants: the electron mass, Planck's constant, the electron charge, and the Coulomb constant are the defining physical quantities, which are all set to unity. To invoke this system with the '--units' option use the name 'hartree'. Prompt Prefix If a unit system is specified with the '--units' option, the selected system's name is prepended to the 'You have:' prompt as a reminder, e.g., (Gaussian) You have: stC You want: Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s You can suppressed the prefix by including a line !prompt with no argument in a site or personal units data file. The prompt can be conditionally suppressed by including such a line within '!var' ... '!endvar' constructs, e.g., !var UNITS_SYSTEM gaussian gauss !prompt !endvar This might be appropriate if you normally use Gaussian units and find the prefix distracting but want to be reminded when you have selected a different CGS system. LOGGING CALCULATIONS The '--log' option allows you to save the results of calculations in a file; this can be useful if you need a permanent record of your work. For example, the fluid-flow conversion in Complicated Unit Expressions, is lengthy, and if you were to use it in designing a piping system, you might want a record of it for the project file. If the interactive session # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units You want: psi * 43.533969 / 0.022970568 were logged, the log file would contain ### Log started Fri Oct 02 15:55:35 2015 # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units To: psi * 43.533969 / 0.022970568 The time is written to the log file when the file is opened. The use of comments can help clarify the meaning of calculations for the log. The log includes conformability errors between the units at the 'You have:' and 'You want:' prompts, but not other errors, includ- ing lack of conformability of items in sums or differences or among items in a unit list. For example, a conversion between zenith angle and elevation angle could involve You have: 90 deg - (5 deg + 22 min + 9 sec) ^ Invalid sum or difference of non-conformable units You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec) You want: dms 84 deg + 37 arcmin + 51 arcsec You have: _ You want: deg * 84.630833 / 0.011816024 You have: The log file would contain From: 90 deg - (5 deg + 22 arcmin + 9 arcsec) To: deg;arcmin;arcsec 84 deg + 37 arcmin + 51 arcsec From: _ To: deg * 84.630833 / 0.011816024 The initial entry error (forgetting that minutes have dimension of time, and that arcminutes must be used for dimensions of angle) does not appear in the output. When converting to a unit list alias, units expands the alias in the log file. The 'From:' and 'To:' tags are written to the log file even if the '--quiet' option is given. If the log file exists when units is in- voked, the new results are appended to the log file. The time is writ- ten to the log file each time the file is opened. The '--log' option is ignored when units is used non-interactively. INVOKING UNITS You invoke units like this: units [options] [from-unit [to-unit]] If the from-unit and to-unit are omitted, the program will use interac- tive prompts to determine which conversions to perform. See Interac- tive Use. If both from-unit and to-unit are given, units will print the result of that single conversion and then exit. If only from-unit appears on the command line, units will display the definition of that unit and exit. Units specified on the command line may need to be quoted to protect them from shell interpretation and to group them into two arguments. Note also that the '--quiet' option is enabled by de- fault if you specify from-unit on the command line. See Command Line Use. The default behavior of units can be changed by various options given on the command line. In most cases, the options may be given in either short form (a single '-' followed by a single character) or long form ('--' followed by a word or hyphen-separated words). Short-form op- tions are cryptic but require less typing; long-form options require more typing but are more explanatory and may be more mnemonic. With long-form options you need only enter sufficient characters to uniquely identify the option to the program. For example, '--out %f' works, but '--o %f' fails because units has other long options beginning with 'o'. However, '--q' works because '--quiet' is the only long option begin- ning with 'q'. Some options require arguments to specify a value (e.g., '-d 12' or '--digits 12'). Short-form options that do not take arguments may be concatenated (e.g., '-erS' is equivalent to '-e -r -S'); the last op- tion in such a list may be one that takes an argument (e.g., '-ed 12'). With short-form options, the space between an option and its argument is optional (e.g., '-d12' is equivalent to '-d 12'). Long-form options may not be concatenated, and the space between a long-form option and its argument is required. Short-form and long-form options may be in- termixed on the command line. Options may be given in any order, but when incompatible options (e.g., '--output-format' and '--exponential') are given in combination, behavior is controlled by the last option given. For example, '-o%.12f -e' gives exponential format with the de- fault eight significant digits). The following options are available: -c, --check Check that all units and prefixes defined in units data files reduce to primitive units. Display a list of all units that cannot be reduced and a list of units with circular definitions. Also display some other diagnostics about suspicious definitions in the units data file. Only definitions active in the current locale are checked. You should always run units with this op- tion after modifying a units data file. Some errors may hide other errors, so you should run units with this option again after correcting any errors, and keep doing so until there are no errors. --check-verbose, --verbose-check Like the '--check' option, this option displays a list of units that cannot be reduced. But it also lists the units as they are checked. Because the '--check' option now catches circular unit definitions that previously caused units to hang, this option is no longer necessary. It is retained only for compatibility with previous versions. -d ndigits, --digits ndigits Set the number of significant digits in the output to the value specified (which must be greater than zero). For example, '-d 12' sets the number of significant digits to 12. With expo- nential output units displays one digit to the left of the deci- mal point and eleven digits to the right of the decimal point. On most systems, the maximum number of internally meaningful digits is 15; if you specify a greater number than your system's maximum, units will print a warning and set the number to the largest meaningful value. To directly set the maximum value, give an argument of max (e.g., '-d max'). Be aware, of course, that "significant" here refers only to the display of numbers; if results depend on physical constants not known to this preci- sion, the physically meaningful precision may be less than that shown. The '--digits' option conflicts with the '--output-for- mat' option. -e, --exponential Set the numeric output format to exponential (i.e., scientific notation), like that used in the Unix units program. The de- fault precision is eight significant digits (seven digits to the right of the decimal point); this can be changed with the '--digits' option. The '--exponential' option conflicts with the '--output-format' option. -o format, --output-format format This option affords complete control over the numeric output format using the specified format. The format is a single float- ing point numeric format for the printf function in the C pro- gramming language. All compilers support the format types 'g' and 'G' to specify significant digits, 'e' and 'E' for scien- tific notation, and 'f' for fixed-point decimal. The ISO C99 standard introduced the 'F' type for fixed-point decimal and the 'a' and 'A' types for hexadecimal floating point; these types are allowed with compilers that support them. The default for- mat is '%.8g'; for greater precision, you could specify '-o %.15g'. See Numeric Output Format and the documentation for printf for more detailed descriptions of the format specifica- tion. The '--output-format' option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the printf format syntax. If you don't want to bother with the printf syntax, you can specify greater precision more simply with the '--digits' option or select exponential format with '--exponential'. The '--output-format' option is incompatible with the '--exponential' and '--digits' options. -f filename, --file filename Instruct units to load the units file filename. You can specify up to 25 units files on the command line. When you use this op- tion, units will load only the files you list on the command line; it will not load the standard file or your personal units file unless you explicitly list them. If filename is the empty string ('-f ""'), the default main units file (or that specified by UNITSFILE) will be loaded in addition to any others specified with '-f'. -L logfile, --log logfile Save the results of calculations in the file logfile; this can be useful if it is important to have a record of unit conver- sions or other calculations that are to be used extensively or in a critical activity such as a program or design project. If logfile exits, the new results are appended to the file. This option is ignored when units is used non-interactively. See Logging Calculations for a more detailed description and some examples. -H filename, --history filename Instruct units to save history to filename, so that a record of your commands is available for retrieval across different units invocations. To prevent the history from being saved set file- name to the empty string ('-H ""'). This option has no effect if readline is not available. -h, --help Print out a summary of the options for units. -m, --minus Causes '-' to be interpreted as a subtraction operator. This is the default behavior. -p, --product Causes '-' to be interpreted as a multiplication operator when it has two operands. It will act as a negation operator when it has only one operand: '(-3)'. By default '-' is treated as a subtraction operator. --oldstar Causes '*' to have the old-style precedence, higher than the precedence of division so that '1/2*3' will equal '1/6'. --newstar Forces '*' to have the new (default) precedence that follows the usual rules of algebra: the precedence of '*' is the same as the precedence of '/', so that '1/2*3' will equal '3/2'. -r, --round When converting to a combination of units given by a unit list, round the value of the last unit in the list to the nearest in- teger. -S, --show-factor When converting to a combination of units specified in a list, always show a non-unity factor before a unit that begins with a fraction with a unity denominator. By default, if the unit in a list begins with fraction of the form 1|x and its multiplier is an integer other than 1, the fraction is given as the product of the multiplier and the numerator (e.g., '3|8 in' rather than '3 * 1|8 in'). In some cases, this is not what is wanted; for ex- ample, the results for a cooking recipe might show '3 * 1|2 cup' as '3|2 cup'. With the '--show-factor' option, a result equiva- lent to 1.5 cups will display as '3 * 1|2 cup' rather than '3|2 cup'. A user-specified fractional unit with a numerator other than 1 is never overridden, however--if a unit list speci- fies '3|4 cup;1|2 cup', a result equivalent to 1 1/2 cups will always be shown as '2 * 3|4 cup' whether or not the '--show-fac- tor' option is given. --conformable In non-interactive mode, show all units conformable with the original unit expression. Only one unit expression is allowed; if you give more than one, units will exit with an error message and return failure. -v, --verbose Give slightly more verbose output when converting units. When combined with the '-c' option this gives the same effect as '--check-verbose'. When combined with '--version' produces a more detailed output, equivalent to the '--info' option. -V, --version Print the program version number, tell whether the readline li- brary has been included, tell whether UTF-8 support has been in- cluded; give the locale, the location of the default main units data file, and the location of the personal units data file; in- dicate if the personal units data file does not exist. When given in combination with the '--terse' option, the program prints only the version number and exits. When given in combination with the '--verbose' option, the pro- gram, the '--version' option has the same effect as the '--info' option below. -I, --info Print the information given with the '--version' option, show the pathname of the units program, show the status of the UNITSFILE and MYUNITSFILE environment variables, and additional information about how units locates the related files. On sys- tems running Microsoft Windows, the status of the UNITSLOCALE environment variable and information about the related locale map are also given. This option is usually of interest only to developers and administrators, but it can sometimes be useful for troubleshooting. Combining the '--version' and '--verbose' options has the same effect as giving '--info'. -U, --unitsfile Print the location of the default main units data file and exit; if the file cannot be found, print "Units data file not found". -u units-system, --units units-system Specify a CGS units system or natural units system. The sup- ported units systems are: gauss[ian], esu, emu, hlu, natural, natural-gauss, hartree, planck, planck-red, and si. See Alterna- tive Unit Systems for further information about these unit sys- tems. -l locale, --locale locale Force a specified locale such as 'en_GB' to get British defini- tions by default. This overrides the locale determined from system settings or environment variables. See Locale for a de- scription of locale format. -n, --nolists Disable conversion to unit lists. -s, --strict Suppress conversion of units to their reciprocal units. For ex- ample, units will normally convert hertz to seconds because these units are reciprocals of each other. The strict option requires that units be strictly conformable to perform a conver- sion, and will give an error if you attempt to convert hertz to seconds. -1, --one-line Give only one line of output (the forward conversion); do not print the reverse conversion. If a reciprocal conversion is performed, then units will still print the "reciprocal conver- sion" line. -t, --terse Print only a single conversion factor without any clutter, or if you request a definition, prints just the definition (including its units). This option can be used when calling units from an- other program so that the output is easy to parse. The command units --terse mile m produces the output '1690.344'. This op- tion has the combined effect of these options: '--strict' '--quiet' '--one-line' '--compact'. When combined with '--ver- sion' it produces a display showing only the program name and version number. --compact Give compact output featuring only the conversion factor; the multiplication and division signs are not shown, and there is no leading whitespace. If you convert to a unit list, then the output is a semicolon separated list of factors. This turns off the '--verbose' option. -q, --quiet, --silent Suppress the display of statistics about the number of units loaded, any messages printed by the units database, and the prompting of the user for units. This option does not affect how units displays the results. This option is turned on by de- fault if you invoke units with a unit expression on the command line. SCRIPTING WITH UNITS Despite its numerous options, units cannot cover every conceivable unit-conversion task. For example, suppose we have found some mysteri- ous scale, but cannot figure out the units in which it is reporting. We reach into our pocket, place a 3.75-gram coin on the scale, and ob- serve the scale reading '0.120'. How do we quickly determine the units? Or we might wonder if a unit has any "synonyms," i.e., other units with the same value. The capabilities of units are easily extended with simple scripting. Both questions above involve conformable units; on a system with Unix- like utilities, conversions to conformable units could be shown accom- plished with the following script: #!/bin/sh progname=`basename $0 .sh` umsg="Usage: $progname [] unit" if [ $# -lt 1 ] then echo "$progname: missing quantity to convert" echo "$umsg" exit 1 fi for unit in `units --conformable "$*" | cut -f 1 -d ' '` do echo "$*" # have -- quantity to convert echo $unit # want -- conformable unit done | units --terse --verbose When units is invoked with no non-option arguments, it reads have/want pairs, on alternating lines, from its standard input, so the task can be accomplished with only two invocations of units. This avoids the computational overhead of needlessly reprocessing the units database for each conformable unit, as well as the inherent system overhead of process invocation. By itself, the script is not very useful. But it could be used in com- bination with other commands to address specific tasks. For example, running the script through a simple output filter could help solve the scale problem above. If the script is named conformable, running $ conformable 3.75g | grep 0.120 gives 3.75g = 0.1205653 apounce 3.75g = 0.1205653 fineounce 3.75g = 0.1205653 ozt 3.75g = 0.1205653 tradewukiyeh 3.75g = 0.1205653 troyounce So we might conclude that the scale is calibrated in troy ounces. We might run $ units --verbose are Definition: 100 m^2 = 100 m^2 and wonder if 'are' has any synonyms, value. To find out, we could run $ conformable are | grep "= 1 " are = 1 a are = 1 are OUTPUT STYLES The output can be tweaked in various ways using command line options. With no options, the output looks like this $ units Currency exchange rates from FloatRates (USD base) on 2023-07-08 3612 units, 109 prefixes, 122 nonlinear units You have: 23ft You want: m * 7.0104 / 0.14264521 You have: m You want: ft;in 3 ft + 3.3700787 in This is arguably a bit cryptic; the '--verbose' option makes clear what the output means: $ units --verbose Currency exchange rates from FloatRates (USD base) on 2023-07-08 3612 units, 109 prefixes, 122 nonlinear units You have: 23 ft You want: m 23 ft = 7.0104 m 23 ft = (1 / 0.14264521) m You have: meter You want: ft;in meter = 3 ft + 3.3700787 in The '--quiet' option suppresses the clutter displayed when units starts, as well as the prompts to the user. This option is enabled by default when you give units on the command line. $ units --quiet 23 ft m * 7.0104 / 0.14264521 $ units 23ft m * 7.0104 / 0.14264521 The remaining style options allow you to display only numerical values without the tab or the multiplication and division signs, or to display just a single line showing the forward conversion: $ units --compact 23ft m 7.0104 0.14264521 $ units --compact m 'ft;in' 3;3.3700787 $ units --one-line 23ft m * 7.0104 $ units --one-line 23ft 1/m reciprocal conversion * 0.14264521 $ units --one-line 23ft kg conformability error 7.0104 m 1 kg Note that when converting to a unit list, the '--compact' option dis- plays a semicolon separated list of results. Also be aware that the 'one-line' option doesn't live up to its name if you execute a recipro- cal conversion or if you get a conformability error. The former case can be prevented using the '--strict' option, which suppresses recipro- cal conversions. Similarly you can suppress unit list conversion using '--nolists'. It is impossible to prevent the three line error output. $ units --compact --nolists m 'ft;in' Error in 'ft;in': Parse error $ units --one-line --strict 23ft 1/m The various style options can be combined appropriately. The ultimate combination is the '--terse' option, which combines '--strict', '--quiet', '--one-line', and '--compact' to produce the minimal output, just a single number for regular conversions and a semicolon separated list for conversion to unit lists. This will likely be the best choice for programs that want to call units and then process its result. $ units --terse 23ft m 7.0104 $ units --terse m 'ft;in' 3;3.3700787 $ units --terse 23ft 1/m conformability error 7.0104 m 1 / m $ units --terse '1 mile' 1609.344 m $ units --terse mile 5280 ft = 1609.344 m ADDING YOUR OWN DEFINITIONS Units Data Files The units and prefixes that units can convert are defined in the units data file, typically '/usr/share/units/definitions.units'. If you can't find this file, run units --version to get information on the file locations for your installation. Although you can extend or mod- ify this data file if you have appropriate user privileges, it's usu- ally better to put extensions in separate files so that the definitions will be preserved if you update units. You can include additional data files in the units database using the '!include' command in the standard units data file. For example !include /usr/local/share/units/local.units might be appropriate for a site-wide supplemental data file. The loca- tion of the '!include' statement in the standard units data file is im- portant; later definitions replace earlier ones, so any definitions in an included file will override definitions before the '!include' state- ment in the standard units data file. With normal invocation, no warn- ing is given about redefinitions; to ensure that you don't have an un- intended redefinition, run units -c after making changes to any units data file. If you want to add your own units in addition to or in place of stan- dard or site-wide supplemental units data files, you can include them in the '.units' file in your home directory. If this file exists it is read after the standard units data file, so that any definitions in this file will replace definitions of the same units in the standard data file or in files included from the standard data file. This file will not be read if any units files are specified on the command line. (Under Windows the personal units file is named 'unitdef.units'.) Run- ning units -V will display the location and name of your personal units file. The units program first tries to determine your home directory from the HOME environment variable. On systems running Microsoft Windows, if HOME does not exist, units attempts to find your home directory from HOMEDRIVE, HOMEPATH and USERPROFILE. You can specify an arbitrary file as your personal units data file with the MYUNITSFILE environment vari- able; if this variable exists, its value is used without searching your home directory. The default units data files are described in more de- tail in Data Files. Defining New Units and Prefixes A unit is specified on a single line by giving its name and an equiva- lence. Comments start with a '#' character, which can appear anywhere in a line. The backslash character ('\') acts as a continuation char- acter if it appears as the last character on a line, making it possible to spread definitions out over several lines if desired. A file can be included by giving the command '!include' followed by the file's name. The '!' must be the first character on the line. The file will be sought in the same directory as the parent file unless you give a full path. The name of the file to be included cannot contain spaces or the comment character '#'. Unit names cannot begin or end with an underscore ('_'), a comma (',') or a decimal point ('.'). Names must not contain any of the operator characters '+', '-', '*', '/', '|', '^', ';', '~', the comment charac- ter '#', or parentheses. To facilitate copying and pasting from docu- ments, several typographical characters are converted to operators: the figure dash (U+2012), minus ('-'; U+2212), and en dash ('-'; U+2013) are converted to the operator '-'; the multiplication sign ('x'; U+00D7), N-ary times operator (U+2A09), dot operator ('.'; U+22C5), and middle dot ('.'; U+00B7) are converted to the operator '*'; the divi- sion sign ('/'; U+00F7) is converted to the operator '/'; and the frac- tion slash (U+2044) is converted to the operator '|'; accordingly, none of these characters can appear in unit names. Names cannot begin with a digit, and if a name ends in a digit other than zero or one, the digit must be preceded by a string beginning with an underscore, and afterwards consisting only of digits, decimal points, or commas. For example, 'foo_2', 'foo_2,1', or 'foo_3.14' are valid names but 'foo2' or 'foo_a2' are invalid. The underscore is nec- essary because without it, units cannot determine whether 'foo2' is a unit name or represents 'foo^2'. Zero and one are exceptions because units never interprets them as exponents. You could define nitrous oxide as N2O nitrogen 2 + oxygen but would need to define nitrogen dioxide as NO_2 nitrogen + oxygen 2 Be careful to define new units in terms of old ones so that a reduction leads to the primitive units, which are marked with '!' characters. Dimensionless units are indicated by using the string '!dimensionless' for the unit definition. When adding new units, be sure to use the '-c' option to check that the new units reduce properly and that there are no circular definitions that lead to endless loops. Because some errors may hide other errors, you should run units with the '-c' option again after correcting any errors, and keep doing so until no errors are displayed. If you define any units that contain '+' characters in their defini- tions, carefully check them because the '-c' option will not catch non- conformable sums. Be careful with the '-' operator as well. When used as a binary operator, the '-' character can perform addition or multi- plication depending on the options used to invoke units. To ensure consistent behavior use '-' only as a unary negation operator when writing units definitions. To multiply two units leave a space or use the '*' operator with care, recalling that it has two possible prece- dence values and may require parentheses to ensure consistent behavior. To compute the difference of 'foo' and 'bar' write 'foo+(-bar)' or even 'foo+-bar'. You may wish to intentionally redefine a unit. When you do this, and use the '-c' option, units displays a warning message about the redefi- nition. You can suppress these warnings by redefining a unit using a '+' at the beginning of the unit name. Do not include any white space between the '+' and the redefined unit name. Here is an example of a short data file that defines some basic units: m ! # The meter is a primitive unit sec ! # The second is a primitive unit rad !dimensionless # A dimensionless primitive unit micro- 1e-6 # Define a prefix minute 60 sec # A minute is 60 seconds hour 60 min # An hour is 60 minutes inch 72 m # Inch defined incorrectly terms of meters ft 12 inches # The foot defined in terms of inches mile 5280 ft # And the mile +inch 0.0254 m # Correct redefinition, warning suppressed A unit that ends with a '-' character is a prefix. If a prefix defini- tion contains any '/' characters, be sure they are protected by paren- theses. If you define 'half- 1/2', then 'halfmeter' would be equiva- lent to '1 / (2 meter)'. Defining Nonlinear Units Some unit conversions of interest are nonlinear; for example, tempera- ture conversions between the Fahrenheit and Celsius scales cannot be done by simply multiplying by conversion factors. When you give a linear unit definition such as 'inch 2.54 cm' you are providing information that units uses to convert values in inches into primitive units of meters. For nonlinear units, you give a functional definition that provides the same information. Nonlinear units are represented using a functional notation. It is best to regard this notation not as a function call but as a way of adding units to a number, much the same way that writing a linear unit name after a number adds units to that number. Internally, nonlinear units are defined by a pair of functions that convert to and from lin- ear units in the database, so that an eventual conversion to primitive units is possible. Here is an example nonlinear unit definition: tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \ (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 A nonlinear unit definition comprises a unit name, a formal parameter name, two functions, and optional specifications for units, the domain, and the range (the domain of the inverse function). The functions tell units how to convert to and from the new unit. To produce valid re- sults, the arguments of these functions need to have the correct dimen- sions and be within the domains for which the functions are defined. The definition begins with the unit name followed immediately (with no spaces) by a '(' character. In the parentheses is the name of the for- mal parameter. Next is an optional specification of the units required by the functions in the definition. In the example above, the 'units=[1;K]' specification indicates that the 'tempF' function re- quires an input argument conformable with '1' (i.e., the argument is dimensionless), and that the inverse function requires an input argu- ment conformable with 'K'. For normal nonlinear units definition, the forward function will always take a dimensionless argument; in general, the inverse function will need units that match the quantity measured by your nonlinear unit. Specifying the units enables units to perform error checking on function arguments, and also to assign units to do- main and range specifications, which are described later. Next the function definitions appear. In the example above, the 'tempF' function is defined by tempF(x) = (x+(-32)) degF + stdtemp This gives a rule for converting 'x' in the units 'tempF' to linear units of absolute temperature, which makes it possible to convert from tempF to other units. To enable conversions to Fahrenheit, you must give a rule for the in- verse conversions. The inverse will be 'x(tempF)' and its definition appears after a ';' character. In our example, the inverse is x(tempF) = (tempF+(-stdtemp))/degF + 32 This inverse definition takes an absolute temperature as its argument and converts it to the Fahrenheit temperature. The inverse can be omitted by leaving out the ';' character and the inverse definition, but then conversions to the unit will not be possible. If the inverse definition is omitted, the '--check' option will display a warning. It is up to you to calculate and enter the correct inverse function to ob- tain proper conversions; the '--check' option tests the inverse at one point and prints an error if it is not valid there, but this is not a guarantee that your inverse is correct. With some definitions, the units may vary. For example, the definition square(x) x^2 can have any arbitrary units, and can also take dimensionless argu- ments. In such a case, you should not specify units. If a definition takes a root of its arguments, the definition is valid only for units that yield such a root. For example, squirt(x) sqrt(x) is valid for a dimensionless argument, and for arguments with even pow- ers of units. Some definitions may not be valid for all real numbers. In such cases, units can handle errors better if you specify an appropriate domain and range. You specify the domain and range as shown below: baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \ (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume In this example the domain is specified after 'domain=' with the end- points given in brackets. In accord with mathematical convention, square brackets indicate a closed interval (one that includes its end- points), and parentheses indicate an open interval (one that does not include its endpoints). An interval can be open or closed on one or both ends; an interval that is unbounded on either end is indicated by omitting the limit on that end. For example, a quantity to which deci- bel (dB) is applied may have any value greater than zero, so the range is indicated by '(0,)': decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) If the domain or range is given, the second endpoint must be greater than the first. The domain and range specifications can appear independently and in any order along with the units specification. The values for the domain and range endpoints are attached to the units given in the units speci- fication, and if necessary, the parameter value is adjusted for compar- ison with the endpoints. For example, if a definition includes 'units=[1;ft]' and 'range=[3,)', the range will be taken as 3 ft to in- finity. If the function is passed a parameter of '900 mm', that value will be adjusted to 2.9527559 ft, which is outside the specified range. If you omit the units specification from the previous example, units can not tell whether you intend the lower endpoint to be 3 ft or 3 mi- crofurlongs, and can not adjust the parameter value of 900 mm for com- parison. Without units, numerical values other than zero or plus or minus infinity for domain or range endpoints are meaningless, and ac- cordingly they are not allowed. If you give other values without units, then the definition will be ignored and you will get an error message. Although the units, domain, and range specifications are optional, it's best to give them when they are applicable; doing so allows units to perform better error checking and give more helpful error messages. Giving the domain and range also enables the '--check' option to find a point in the domain to use for its point check of your inverse defini- tion. You can make synonyms for nonlinear units by providing both the forward and inverse functions; inverse functions can be obtained using the '~' operator. So to create a synonym for 'tempF' you could write fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit) This is useful for creating a nonlinear unit definition that differs slightly from an existing definition without having to repeat the orig- inal functions. For example, dBW(x) units=[1;W] range=[0,) dB(x) W ; ~dB(dBW/W) If you wish a synonym to refer to an existing nonlinear unit without modification, you can do so more simply by adding the synonym with ap- pended parentheses as a new unit, with the existing nonlinear unit-- without parentheses--as the definition. So to create a synonym for 'tempF' you could write fahrenheit() tempF The definition must be a nonlinear unit; for example, the synonym fahrenheit() meter will result in an error message when units starts. You may occasionally wish to define a function that operates on units. This can be done using a nonlinear unit definition. For example, the definition below provides conversion between radius and the area of a circle. This definition requires a length as input and produces an area as output, as indicated by the 'units=' specification. Specifying the range as the nonnegative numbers can prevent cryptic error mes- sages. circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi) Defining Piecewise Linear Units Sometimes you may be interested in a piecewise linear unit such as many wire gauges. Piecewise linear units can be defined by specifying con- versions to linear units on a list of points. Conversion at other points will be done by linear interpolation. A partial definition of zinc gauge is zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1 In this example, 'zincgauge' is the name of the piecewise linear unit. The definition of such a unit is indicated by the embedded '[' charac- ter. After the bracket, you should indicate the units to be attached to the numbers in the table. No spaces can appear before the ']' char- acter, so a definition like 'foo[kg meters]' is invalid; instead write 'foo[kg*meters]'. The definition of the unit consists of a list of pairs optionally separated by commas. This list defines a function for converting from the piecewise linear unit to linear units. The first item in each pair is the function argument; the second item is the value of the function at that argument (in the units specified in brackets). In this example, we define 'zincgauge' at five points. For example, we set 'zincgauge(1)' equal to '0.002 in'. Definitions like this may be more readable if written using continuation characters as zincgauge[in] \ 1 0.002 \ 10 0.02 \ 15 0.04 \ 19 0.06 \ 23 0.1 With the preceding definition, the following conversion can be per- formed: You have: zincgauge(10) You want: in * 0.02 / 50 You have: .01 inch You want: zincgauge 5 If you define a piecewise linear unit that is not strictly monotonic, then the inverse will not be well defined. If the inverse is requested for such a unit, units will return the smallest inverse. After adding nonlinear units definitions, you should normally run 'units --check' to check for errors. If the 'units' keyword is not given, the '--check' option checks a nonlinear unit definition using a dimensionless argument, and then checks using an arbitrary combination of units, as well as the square and cube of that combination; a warning is given if any of these tests fail. For example, Warning: function 'squirt(x)' defined as 'sqrt(x)' failed for some test inputs: squirt(7(kg K)^1): Unit not a root squirt(7(kg K)^3): Unit not a root Running 'units --check' will print a warning if a non-monotonic piece- wise linear unit is encountered. For example, the relationship between ANSI coated abrasive designation and mean particle size is non-mono- tonic in the vicinity of 800 grit: ansicoated[micron] \ . . . 600 10.55 \ 800 11.5 \ 1000 9.5 \ Running 'units --check' would give the error message Table 'ansicoated' lacks unique inverse around entry 800 Although the inverse is not well defined in this region, it's not re- ally an error. Viewing such error messages can be tedious, and if there are enough of them, they can distract from true errors. Error checking for nonlinear unit definitions can be suppressed by giving the 'noerror' keyword; for the examples above, this could be done as squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2 ansicoated[micron] noerror \ . . . Use the 'noerror' keyword with caution. The safest approach after adding a nonlinear unit definition is to run 'units --check' and con- firm that there are no actual errors before adding the 'noerror' key- word. Defining Unit List Aliases Unit list aliases are treated differently from unit definitions, be- cause they are a data entry shorthand rather than a true definition for a new unit. A unit list alias definition begins with '!unitlist' and includes the alias and the definition; for example, the aliases in- cluded in the standard units data file are !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\ tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp Unit list aliases are only for unit lists, so the definition must in- clude a ';'. Unit list aliases can never be combined with units or other unit list aliases, so the definition of 'time' shown above could not have been shortened to 'year;day;hms'. As usual, be sure to run 'units --check' to ensure that the units listed in unit list aliases are conformable. NUMERIC OUTPUT FORMAT By default, units shows results to eight significant digits. You can change this with the '--exponential', '--digits', and '--output-format' options. The first sets an exponential format (i.e., scientific nota- tion) like that used in the original Unix units program, the second al- lows you to specify a different number of significant digits, and the last allows you to control the output appearance using the format for the printf function in the C programming language. If you only want to change the number of significant digits or specify exponential format type, use the '--digits' and '--exponential' options. The '--output- format' option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the printf format syn- tax. See Invoking Units for descriptions of these options. Format Specification The format specification recognized with the '--output-format' option is a subset of that for printf. The format specification has the form %[flags][width][.precision]type; it must begin with '%', and must end with a floating-point type specifier: 'g' or 'G' to specify the number of significant digits, 'e' or 'E' for scientific notation, and 'f' for fixed-point decimal. The ISO C99 standard added the 'F' type for fixed-point decimal and the 'a' and 'A' types for hexadecimal floating point; these types are allowed with compilers that support them. Type length modifiers (e.g., 'L' to indicate a long double) are inapplicable and are not allowed. The default format for units is '%.8g'; for greater precision, you could specify '-o %.15g'. The 'g' and 'G' format types use exponential format whenever the exponent would be less than -4, so the value 0.000013 displays as '1.3e-005'. These types also use exponential no- tation when the exponent is greater than or equal to the precision, so with the default format, the value 5 x 10^7 displays as '50000000' and the value 5 x 10^8 displays as '5e+008'. If you prefer fixed-point display, you might specify '-o %.8f'; however, small numbers will dis- play very few significant digits, and values less than 5 x 10^-8 will show nothing but zeros. The format specification may include one or more optional flags: '+', ' ' (space), '#', '-', or '0' (the digit zero). The digit-grouping flag ''' is allowed with compilers that support it. Flags are followed by an optional value for the minimum field width, and an optional pre- cision specification that begins with a period (e.g., '.6'). The field width includes the digits, decimal point, the exponent, thousands sepa- rators (with the digit-grouping flag), and the sign if any of these are shown. Flags The '+' flag causes the output to have a sign ('+' or '-'). The space flag ' ' is similar to the '+' flag, except that when the value is pos- itive, it is prefixed with a space rather than a plus sign; this flag is ignored if the '+' flag is also given. The '+' or ' ' flag could be useful if conversions might include positive and negative results, and you wanted to align the decimal points in exponential notation. The '#' flag causes the output value to contain a decimal point in all cases; by default, the output contains a decimal point only if there are digits (which can be trailing zeros) to the right of the point. With the 'g' or 'G' types, the '#' flag also prevents the suppression of trailing zeros. The digit-grouping flag ''' shows a thousands sepa- rator in digits to the left of the decimal point. This can be useful when displaying large numbers in fixed-point decimal; for example, with the format '%f', You have: mile You want: microfurlong * 8000000.000000 / 0.000000 the magnitude of the first result may not be immediately obvious with- out counting the digits to the left of the decimal point. If the thou- sands separator is the comma (','), the output with the format '%'f' might be You have: mile You want: microfurlong * 8,000,000.000000 / 0.000000 making the magnitude readily apparent. Unfortunately, few compilers support the digit-grouping flag. With the '-' flag, the output value is left aligned within the speci- fied field width. If a field width greater than needed to show the output value is specified, the '0' (zero) flag causes the output value to be left padded with zeros until the specified field width is reached; for example, with the format '%011.6f', You have: troypound You want: grain * 5760.000000 / 0000.000174 The '0' flag has no effect if the '-' (left align) flag is given. Field Width By default, the output value is left aligned and shown with the minimum width necessary for the specified (or default) precision. If a field width greater than this is specified, the value shown is right aligned, and padded on the left with enough spaces to provide the specified field width. A width specification is typically used with fixed-point decimal to have columns of numbers align at the decimal point; this ar- guably is less useful with units than with long columnar output, but it may nonetheless assist in quickly assessing the relative magnitudes of results. For example, with the format '%12.6f', You have: km You want: in * 39370.078740 / 0.000025 You have: km You want: rod * 198.838782 / 0.005029 You have: km You want: furlong * 4.970970 / 0.201168 Precision The meaning of "precision" depends on the format type. With 'g' or 'G', it specifies the number of significant digits (like the '--digits' option); with 'e', 'E', 'f', or 'F', it specifies the maximum number of digits to be shown after the decimal point. With the 'g' and 'G' format types, trailing zeros are suppressed, so the results may sometimes have fewer digits than the specified preci- sion (as indicated above, the '#' flag causes trailing zeros to be dis- played). The default precision is 6, so '%g' is equivalent to '%.6g', and would show the output to six significant digits. Similarly, '%e' or '%f' would show the output with six digits after the decimal point. The C printf function allows a precision of arbitrary size, whether or not all of the digits are meaningful. With most compilers, the maximum internal precision with units is 15 decimal digits (or 13 hexadecimal digits). With the '--digits' option, you are limited to the maximum internal precision; with the '--output-format' option, you may specify a precision greater than this, but it may not be meaningful. In some cases, specifying excess precision can result in rounding artifacts. For example, a pound is exactly 7000 grains, but with the format '%.18g', the output might be You have: pound You want: grain * 6999.9999999999991 / 0.00014285714285714287 With the format '%.25g' you might get the following: You have: 1/3 You want: Definition: 0.333333333333333314829616256247 In this case the displayed value includes a series of digits that rep- resent the underlying binary floating-point approximation to 1/3 but are not meaningful for the desired computation. In general, the result with excess precision is system dependent. The precision affects only the display of numbers; if a result relies on physical constants that are not known to the specified precision, the number of physically meaningful digits may be less than the number of digits shown. See the documentation for printf for more detailed descriptions of the format specification. The '--output-format' option is incompatible with the '--exponential' or '--digits' options; if the former is given in combination with ei- ther of the latter, the format is controlled by the last option given. LOCALIZATION Some units have different values in different locations. The localiza- tion feature accommodates this by allowing a units data file to specify definitions that depend on the user's locale. Locale A locale is a subset of a user's environment that indicates the user's language and country, and some attendant preferences, such as the for- matting of dates. The units program attempts to determine the locale from the POSIX setlocale function; if this cannot be done, units exam- ines the environment variables LC_CTYPE and LANG. On POSIX systems, a locale is of the form language_country, where language is the two-char- acter code from ISO 639-1 and country is the two-character code from ISO 3166-1; language is lower case and country is upper case. For exam- ple, the POSIX locale for the United Kingdom is en_GB. On systems running Microsoft Windows, the value returned by setlocale is different from that on POSIX systems; units attempts to map the Win- dows value to a POSIX value by means of a table in the file 'locale_map.txt' in the same directory as the other data files. The file includes entries for many combinations of language and country, and can be extended to include other combinations. The 'locale_map.txt' file comprises two tab-separated columns; each entry is of the form Windows-locale POSIX-locale where POSIX-locale is as described above, and Windows-locale typically spells out both the language and country. For example, the entry for the United States is English_United States en_US You can force units to run in a desired locale by using the '-l' op- tion. In order to create unit definitions for a particular locale you begin a block of definitions in a unit datafile with '!locale' followed by a locale name. The '!' must be the first character on the line. The units program reads the following definitions only if the current lo- cale matches. You end the block of localized units with '!endlocale'. Here is an example, which defines the British gallon. !locale en_GB gallon 4.54609 liter !endlocale Additional Localization Sometimes the locale isn't sufficient to determine unit preferences. There could be regional preferences, or a company could have specific preferences. Though probably uncommon, such differences could arise with the choice of English customary units outside of English-speaking countries. To address this, units allows specifying definitions that depend on environment variable settings. The environment variables can be controlled based on the current locale, or the user can set them to force a particular group of definitions. A conditional block of definitions in a units data file begins with ei- ther '!var' or '!varnot' following by an environment variable name and then a space separated list of values. The leading '!' must appear in the first column of a units data file, and the conditional block is terminated by '!endvar'. Definitions in blocks beginning with '!var' are executed only if the environment variable is exactly equal to one of the listed values. Definitions in blocks beginning with '!varnot' are executed only if the environment variable does not equal any of the list values. The inch has long been a customary measure of length in many places. The word comes from the Latin uncia meaning "one twelfth," referring to its relationship with the foot. By the 20th century, the inch was of- ficially defined in English-speaking countries relative to the yard, but until 1959, the yard differed slightly among those countries. In France the customary inch, which was displaced in 1799 by the meter, had a different length based on a french foot. These customary defini- tions could be accommodated as follows: !var INCH_UNIT usa yard 3600|3937 m !endvar !var INCH_UNIT canada yard 0.9144 meter !endvar !var INCH_UNIT uk yard 0.91439841 meter !endvar !var INCH_UNIT canada uk usa foot 1|3 yard inch 1|12 foot !endvar !var INCH_UNIT france foot 144|443.296 m inch 1|12 foot line 1|12 inch !endvar !varnot INCH_UNIT usa uk france canada !message Unknown value for INCH_UNIT !endvar When units reads the above definitions it will check the environment variable INCH_UNIT and load only the definitions for the appropriate section. If INCH_UNIT is unset or is not set to one of the four values listed, then units will run the last block. In this case that block uses the '!message' command to display a warning message. Alterna- tively that block could set default values. In order to create default values that are overridden by user settings the data file can use the '!set' command, which sets an environment variable only if it is not already set; these settings are only for the current units invocation and do not persist. So if the example above were preceded by '!set INCH_UNIT france', then this would make 'france' the default value for INCH_UNIT. If the user had set the variable in the environment before invoking units, then units would use the user's value. To link these settings to the user's locale you combine the '!set' com- mand with the '!locale' command. If you wanted to combine the above example with suitable locales you could do by preceding the above defi- nition with the following: !locale en_US !set INCH_UNIT usa !endlocale !locale en_GB !set INCH_UNIT uk !endlocale !locale en_CA !set INCH_UNIT canada !endlocale !locale fr_FR !set INCH_UNIT france !endlocale !set INCH_UNIT france These definitions set the overall default for INCH_UNIT to 'france' and set default values for four locales appropriately. The overall default setting comes last so that it only applies when INCH_UNIT was not set by one of the other commands or by the user. If the variable given after '!var' or '!varnot' is undefined, then units prints an error message and ignores the definitions that follow. Use '!set' to create defaults to prevent this situation from arising. The '-c' option only checks the definitions that are active for the current environment and locale, so when adding new definitions take care to check that all cases give rise to a well defined set of defini- tions. ENVIRONMENT VARIABLES The units program uses the following environment variables: HOME Specifies the location of your home directory; it is used by units to find a personal units data file '.units'. On systems running Microsoft Windows, the file is 'unitdef.units', and if HOME does not exist, units tries to determine your home direc- tory from the HOMEDRIVE and HOMEPATH environment variables; if these variables do not exist, units finally tries USERPROFILE--typically 'C:\Users\username' (Windows Vista and Windows 7) or 'C:\Documents and Settings\username' (Windows XP). LC_CTYPE, LANG Checked to determine the locale if units cannot obtain it from the operating system. Sections of the default main units data file are specific to certain locales. MYUNITSFILE Specifies your personal units data file. If this variable ex- ists, units uses its value rather than searching your home di- rectory for '.units'. The personal units file will not be loaded if any data files are given using the '-f' option. PAGER Specifies the pager to use for help and for displaying the con- formable units. The help function browses the units database and calls the pager using the '+n'n syntax for specifying a line number. The default pager is more; PAGER can be used to specify alternatives such as less, pg, emacs, or vi. UNITS_ENGLISH Set to either 'US' or 'GB' to choose United States or British volume definitions, overriding the default from your locale. UNITSFILE Specifies the units data file to use (instead of the default). You can only specify a single units data file using this envi- ronment variable. If units data files are given using the '-f' option, the file specified by UNITSFILE will be not be loaded unless the '-f' option is given with the empty string (- 'units -f ""'). UNITSLOCALEMAP Windows only; this variable has no effect on Unix-like systems. Specifies the units locale map file to use (instead of the de- fault). This variable seldom needs to be set, but you can use it to ensure that the locale map file will be found if you spec- ify a location for the units data file using either the '-f' op- tion or the UNITSFILE environment variable, and that location does not also contain the locale map file. UNITS_SYSTEM This environment variable is used in the default main data file to select CGS measurement systems. Currently supported systems are 'esu', 'emu', 'gauss[ian]', 'hlu', 'natural', 'natural-gauss', 'planck', 'planck-red', 'hartree' and 'si'. The default is 'si'. DATA FILES The units program uses four default data files: the main data file, 'definitions.units'; the atomic masses of the elements, 'elements.units'; currency exchange rates, 'currency.units', and the US Consumer Price Index, 'cpi.units'. The last three files are loaded by means of '!include' directives in the main file (see Database Command Syntax). The program can also use an optional personal units data file '.units' ('unitdef.units' under Windows) located in the user's home di- rectory. The personal units data file is described in more detail in Units Data Files. On Unix-like systems, the data files are typically located in '/usr/share/units' if units is provided with the operating system, or in '/usr/local/share/units' if units is compiled from the source dis- tribution. Note that the currency file 'currency.units' is a symbolic link to another location. On systems running Microsoft Windows, the files may be in the same lo- cations if Unix-like commands are available, a Unix-like file structure is present (e.g., 'C:/usr/local'), and units is compiled from the source distribution. If Unix-like commands are not available, a more common location is 'C:\Program Files (x86)\GNU\units' (for 64-bit Win- dows installations) or 'C:\Program Files\GNU\units' (for 32-bit instal- lations). If units is obtained from the GNU Win32 Project (http://gnuwin32.sourceforge.net/), the files are commonly in 'C:\Program Files\GnuWin32\share\units'. If the default main units data file is not an absolute pathname, units will look for the file in the directory that contains the units pro- gram; if the file is not found there, units will look in a directory ../share/units relative to the directory with the units program. You can determine the location of the files by running 'units --version'. Running 'units --info' will give you additional in- formation about the files, how units will attempt to find them, and the status of the related environment variables. UNICODE SUPPORT The standard units data file is in Unicode, using UTF-8 encoding. Most definitions use only ASCII characters (i.e., code points U+0000 through U+007F); definitions using non-ASCII characters appear in blocks begin- ning with '!utf8' and ending with '!endutf8'. The non-ASCII definitions are loaded only if the platform and the lo- cale support UTF-8. Platform support is determined when units is com- piled; the locale is checked at every invocation of units. To see if your version of units includes Unicode support, invoke the program with the '--version' option. When Unicode support is available, units checks every line within UTF-8 blocks in all of the units data files for invalid or non-printing UTF-8 sequences; if such sequences occur, units ignores the entire line. In addition to checking validity, units determines the display width of non-ASCII characters to ensure proper positioning of the pointer in some error messages and to align columns for the 'search' and '?' com- mands. As of early 2019, Microsoft Windows provides limited support for UTF-8 in console applications, and accordingly, units does not support Uni- code on Windows. The UTF-16 and UTF-32 encodings are not supported on any platforms. If Unicode support is available and definitions that contain non-ASCII UTF-8 characters are added to a units data file, those definitions should be enclosed within '!utf8' ... '!endutf8' to ensure that they are only loaded when Unicode support is available. As usual, the '!' must appear as the first character on the line. As discussed in Units Data Files, it's usually best to put such definitions in supplemental data files linked by an '!include' command or in a personal units data file. When Unicode support is not available, units makes no assumptions about character encoding, except that characters in the range 00-7F hexadeci- mal correspond to ASCII encoding. Non-ASCII characters are simply se- quences of bytes, and have no special meanings; for definitions in sup- plementary units data files, you can use any encoding consistent with this assumption. For example, if you wish to use non-ASCII characters in definitions when running units under Windows, you can use a charac- ter set such as Windows "ANSI" (code page 1252 in the US and Western Europe); if this is done, the console code page must be set to the same encoding for the characters to display properly. You can even use UTF-8, though some messages may be improperly aligned, and units will not detect invalid UTF-8 sequences. If you use UTF-8 encoding when Unicode support is not available, you should place any definitions with non-ASCII characters outside '!utf8' ... '!endutf8' blocks--otherwise, they will be ignored. Except for code examples, typeset material usually uses the Unicode symbols for mathematical operators. To facilitate copying and pasting from such sources, several typographical characters are converted to the ASCII operators used in units: the figure dash (U+2012), minus ('-'; U+2212), and en dash ('-'; U+2013) are converted to the operator '-'; the multiplication sign ('x'; U+00D7), N-ary times operator (U+2A09), dot operator ('.'; U+22C5), and middle dot ('.'; U+00B7) are converted to the operator '*'; the division sign ('/'; U+00F7) is con- verted to the operator '/'; and the fraction slash (U+2044) is con- verted to the operator '|'. READLINE SUPPORT If the readline package has been compiled in, then when units is used interactively, numerous command line editing features are available. To check if your version of units includes readline, invoke the program with the '--version' option. For complete information about readline, consult the documentation for the readline package. Without any configuration, units will allow editing in the style of emacs. Of particular use with units are the completion commands. If you type a few characters and then hit ESC followed by ?, then units will display a list of all the units that start with the characters typed. For example, if you type metr and then request completion, you will see something like this: You have: metr metre metriccup metrichorsepower metrictenth metretes metricfifth metricounce metricton metriccarat metricgrain metricquart metricyarncount You have: metr If there is a unique way to complete a unit name, you can hit the TAB key and units will provide the rest of the unit name. If units beeps, it means that there is no unique completion. Pressing the TAB key a second time will print the list of all completions. The readline library also keeps a history of the values you enter. You can move through this history using the up and down arrows. The his- tory is saved to the file '.units_history' in your home directory so that it will persist across multiple units invocations. If you wish to keep work for a certain project separate you can change the history filename using the '--history' option. You could, for example, make an alias for units to units --history .units_history so that units would save separate history in the current directory. The length of each history file is limited to 5000 lines. Note also that if you run sev- eral concurrent copies of units each one will save its new history to the history file upon exit. UPDATING CURRENCY EXCHANGE RATES AND CPI Currency Exchange Rates The units program database includes currency exchange rates and prices for some precious metals. Of course, these values change over time, sometimes very rapidly, and units cannot provide real-time values. To update the exchange rates, run units_cur, which rewrites the file con- taining the currency rates, typically '/var/lib/units/currency.units' or '/usr/local/com/units/currency.units' on a Unix-like system or 'C:\Program Files (x86)\GNU\units\definitions.units' on a Windows sys- tem. This program requires Python 3 (https://www.python.org). The program must be run with suitable permissions to write the file. To keep the rates updated automatically, run it using a cron job on a Unix-like system, or a similar scheduling program on a different system. Reliable free sources of currency exchange rates have been annoyingly ephemeral. The program currently supports several sources: * ExchangeRate-API.com (https://www.exchangerate-api.com). The default currency server. Allows open access without an API key, with unlimited API requests. Rates update once a day, the US dollar ('USD') is the default base currency, and you can choose your base currency with the '-b' option described below. You can optionally sign up for an API key to access paid benefits such as faster data update rates. * FloatRates (https://www/floatrates.com). The US dollar ('USD') is the default base currency. You can change the base currency with the '-b' option described below. Allowable base currencies are listed on the FloatRates website. Exchange rates update daily. * The European Central Bank (https://www.ecb.europa.eu). The base currency is always the euro ('EUR'). Exchange rates up- date daily. This source offers a more limited list of currencies than the others. * Fixer (https://fixer.io). Registration for a free API key is required. With a free API key, base currency is the euro; exchange rates are updated hourly, the service has a limit of 1,000 API calls per month, and SSL encryp- tion (https protocol) is not available. Most of these restrictions are eliminated or reduced with paid plans. * open exchange rates (https://openexchangerates.org). Registration for a free API key is required. With a free API key, the base currency is the US dollar; exchange rates are updated hourly, and there is a limit of 1,000 API calls per month. Most of these restrictions are eliminated or reduced with paid plans. The default source is FloatRates; you can select a different one using '-s' option described below. Precious metals pricing is obtained from Packetizer (www.packe- tizer.com). This site updates once per day. US Consumer Price Index The units program includes the US Consumer Price Index (CPI) published by the US Bureau of Labor Statistics: specifically, the Consumer Price Index for All Urban Consumers (CPI-U), Series CUUR0000SA0. The units_cur command updates the CPI and saves the result in 'cpi.units' in the same location as 'currency.units'. The data are obtained via the BLS Public Data API (https://www.bls.gov/developers/). This data updates once a month. When units_cur runs it will only attempt to up- date the CPI data if the current CPI data file is from a previous month, or if the current date is after the 18th of the month. Invoking units_cur You invoke units_cur like this: units_cur [options] [currency_file] [cpi_file] By default, the output is written to the default currency and CPI files described above; this is usually what you want, because this is where units looks for the files. If you wish, you can specify different filenames on the command line and units_cur will write the data to those files. If you give '-' for a file it will write to standard out- put. The following options are available: -h, --help Print a summary of the options for units_cur. -V, --version Print the units_cur version number. -v, --verbose Give slightly more verbose output when attempting to update cur- rency exchange rates. -s source, --source source Specify the source for currency exchange rates; currently sup- ported values are 'floatrates' (for FloatRates), 'eubank' (for the European Central Bank), 'fixer' (for Fixer), and 'openexchangerates' (for open exchange rates); the last two re- quire an API key to be given with the '-k' option. -b base, --base base Set the base currency (when allowed by the site providing the data). base should be a 3-letter ISO currency code, e.g., 'USD'. The specified currency will be the primitive currency unit used by units. You may find it convenient to specify your local currency. Conversions may be more accurate and you will be able to convert to your currency by simply hitting Enter at the 'You want:' prompt. This option is ignored if the source does not allow specifying the base currency. (Currently only floatrates supports this option.) -k key, --key key Set the API key to key for currency sources that require it. --blskey BLSkey Set the US Bureau of Labor Statistics (BLS) key for fetching CPI data. Without a BLS key you should be able to fetch the CPI data exactly one time per day. If you want to use a key you must request a personal key from BLS. DATABASE COMMAND SYNTAX unit definition Define a regular unit. prefix- definition Define a prefix. funcname(var) noerror units=[in-units,out-units] domain=[x1,x2] range=[y1,y2] definition(var) ; inverse(funcname) Define a nonlinear unit or unit function. The four optional keywords noerror, 'units=', 'range=' and 'domain=' can appear in any order. The definition of the inverse is optional. tabname[out-units] noerror pair-list Define a piecewise linear unit. The pair list gives the points on the table listed in ascending order. The noerror keyword is optional. !endlocale End a block of definitions beginning with '!locale' !endutf8 End a block of definitions begun with '!utf8' !endvar End a block of definitions begun with '!var' or '!varnot' !include file Include the specified file. !locale value Load the following definitions only of the locale is set to value. !message text Display text when the database is read unless the quiet option ('-q') is enabled. If you omit text, then units will display a blank line. Messages will also appear in the log file. !prompt text Prefix the 'You have:' prompt with the specified text. If you omit text, then any existing prefix is canceled. !set variable value Sets the environment variable, variable, to the specified value only if it is not already set. !unitlist alias definition Define a unit list alias. !utf8 Load the following definitions only if units is running with UTF-8 enabled. !var envar value-list Load the block of definitions that follows only if the environ- ment variable envar is set to one of the values listed in the space-separated value list. If envar is not set, units prints an error message and ignores the block of definitions. !varnot envar value-list Load the block of definitions that follows only if the environ- ment variable envar is set to value that is not listed in the space-separated value list. If envar is not set, units prints an error message and ignores the block of definitions. FILES /usr/local/share/units/definitions.units -- the standard units data file AUTHOR units was written by Adrian Mariano 16 February 2024 UNITS(1) units-2.23/units.c0000664000175000017500000055351414563775546013433 0ustar adrianadrian#define VERSION "2.23" /* * units, a program for units conversion * Copyright (C) 1996, 1997, 1999, 2000-2007, 2009, 2011-2020, 2022, 2024 * Free Software Foundation, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * This program was written by Adrian Mariano (adrianm@gnu.org) */ #define LICENSE "\ Copyright (C) 2024 Free Software Foundation, Inc.\n\ GNU Units comes with ABSOLUTELY NO WARRANTY.\n\ You may redistribute copies of GNU Units\n\ under the terms of the GNU General Public License." #define _XOPEN_SOURCE 600 #if defined (_WIN32) && defined (_MSC_VER) # include # include #endif #if defined (_WIN32) && defined (HAVE_MKS_TOOLKIT) # include #endif # include #include #include #include #include #include #include #if defined (_WIN32) && defined (_MSC_VER) # include # define fileno _fileno # define isatty _isatty # define stat _stat #endif #ifdef HAVE_IOCTL # include # include #endif #ifndef NO_SETLOCALE # include #endif #ifdef SUPPORT_UTF8 /* Apparently this define is needed to get wcswidth() prototype */ # include # include # define UTF8VERSTR "with utf8" #else # define UTF8VERSTR "without utf8" #endif #ifdef READLINE # define RVERSTR "with readline" # include # include # define HISTORY_FILE ".units_history" #else # define RVERSTR "without readline" #endif #include "getopt.h" #include "units.h" #ifndef UNITSFILE # define UNITSFILE "definitions.units" #endif #ifndef LOCALEMAP # define LOCALEMAP "locale_map.txt" #endif #ifndef DATADIR # ifdef _WIN32 # define DATADIR "..\\share\\units" # else # define DATADIR "../share/units" # endif #endif #if defined (_WIN32) && defined (_MSC_VER) # include # define getcwd _getcwd #else # include #endif #ifdef _WIN32 # define EXE_EXT ".exe" # define PATHSEP ';' # define DIRSEP '\\' # define DIRSEPSTR "\\" /* for building pathnames */ #else # define EXE_EXT "" # define PATHSEP ':' # define DIRSEP '/' # define DIRSEPSTR "/" /* for building pathnames */ #endif #define PRIMITIVECHAR '!' /* Character that marks irreducible units */ #define COMMENTCHAR '#' /* Comments marked by this character */ #define COMMANDCHAR '!' /* Unit database commands marked with this */ #define UNITSEPCHAR ';' /* Separator for unit lists. Include this */ /* char in rl_basic_word_break_characters */ /* and in nonunitchars defined in parse.y */ #define FUNCSEPCHAR ';' /* Separates forward and inverse definitions */ #define REDEFCHAR '+' /* Mark unit as redefinition to suppress warning message */ #ifdef _WIN32 # define DEFAULTPAGER "more" /* Default pager for Windows */ #else # define DEFAULTPAGER "/usr/bin/pager" /* Default pager for Unix */ #endif #define DEFAULTLOCALE "en_US" /* Default locale */ #define MAXINCLUDE 5 /* Max depth of include files */ #define MAXFILES 25 /* Max number of units files on command line */ #define NODIM "!dimensionless" /* Marks dimensionless primitive units, such */ /* as the radian, which are ignored when */ /* doing unit comparisons */ #define NOPOINT -1 /* suppress display of pointer in processunit*/ #define NOERRMSG -2 /* no error messages in checkunitlist() */ #define ERRMSG -3 #define SHOWFILES -4 #define MAXHISTORYFILE 5000 /* max length of history file for readline */ #define MAXPRODUCTREDUCTIONS 1000 /* If we make this many reductions, declare */ /* a circular reference */ /* values for output number format */ #define BASE_FORMATS "gGeEf" /* printf() format types recognized pre-C99 */ #define DEFAULTPRECISION 8 /* default significant digits for printf() */ #define DEFAULTTYPE 'g' /* default number format type for printf() */ #define MAXPRECISION DBL_DIG /* maximum number precision for printf() */ #define HOME_UNITS_ENV "MYUNITSFILE" /* Personal units file environment var */ #define NOERROR_KEYWORD "noerror " /* The trailing space is important */ #define CO_NOARG -1 #define HELPCOMMAND "help" /* Command to request help at prompt */ #define SEARCHCOMMAND "search" /* Command to request text search of units */ #define UNITMATCH "?" /* Command to request conformable units */ char *exit_commands[]={"quit","exit",0}; char *all_commands[]={"quit","exit",HELPCOMMAND,SEARCHCOMMAND,UNITMATCH,0}; /* Key words for function definitions */ struct { char *word; char delimit; int checkopen; /* allow open intervals with parentheses */ } fnkeywords[]={ {"units=", FUNCSEPCHAR, 0}, {"domain=", ',', 1}, {"range=", ',',1}, {NOERROR_KEYWORD, ' ',CO_NOARG}, {0,0}}; #define FN_UNITS 0 #define FN_DOMAIN 1 #define FN_RANGE 2 #define FN_NOERROR 3 char *builtins[] = {"sin", "cos", "tan","ln", "log", "exp", "acos", "atan", "asin", "sqrt", "cuberoot", "per", "sinh", "cosh", "tanh", "asinh", "atanh", "acosh", 0}; struct { char *format; /* printf() format specification for numeric output */ int width; /* printf() width from format */ int precision; /* printf() precision from format */ char type; /* printf() type from format */ } num_format; struct { /* Program command line option flags */ int interactive, unitlists, /* Perform unit list output if set */ oneline, /* Suppresses the second line of output */ quiet, /* Supress prompting (-q option) */ round, /* Round the last of unit list output to nearest integer */ showconformable, /* */ showfactor, /* */ strictconvert, /* Strict conversion (disables reciprocals) */ unitcheck, /* Enable unit checking: 1 for regular check, 2 for verbose*/ verbose, /* Flag for output verbosity */ readline; /* Using readline library? */ } flags; #define UTF8MARKER "\xEF\xBB\xBF" /* UTF-8 marker inserted by some Windows */ /* programs at start of a UTF-8 file */ struct parseflag parserflags; /* parser options */ char *homeunitsfile = ".units"; /* Units filename in home directory */ char *homedir = NULL; /* User's home direcotry */ char *homedir_error = NULL; /* Error message for home directory search */ char *pager; /* Actual pager (from PAGER environment var) */ char *mylocale; /* Locale in effect (from LC_CTYPE or LANG) */ int utf8mode; /* Activate UTF8 support */ char *powerstring = "^"; /* Exponent character used in output */ char *unitsfiles[MAXFILES+1]; /* Null terminated list of units file names */ char *logfilename=NULL; /* Filename for logging */ FILE *logfile=NULL; /* File for logging */ char *promptprefix=NULL; /* Prefix added to prompt */ char *progname; /* Used in error messages */ char *fullprogname; /* Full path of program; printversion() uses */ char *progdir; /* Used to find supporting files */ char *datadir; /* Used to find supporting files */ char *deftext=" Definition: ";/* Output text when printing definition */ char *digits = "0123456789.,"; #define QUERYHAVE "You have: " /* Prompt text for units to convert from */ #define QUERYWANT "You want: " /* Prompt text for units to convert to */ #define LOGFROM "From: " /* tag for log file */ #define LOGTO "To: " /* tag for log file */ #define HASHSIZE 101 /* Values from K&R 2nd ed., Sect. 6.6 */ #define HASHNUMBER 31 #define SIMPLEHASHSIZE 128 #define simplehash(str) (*(str) & 127) /* "hash" value for prefixes */ #define POINTER "^" /* pointer to location of a parse error */ #define ERRNUMFMT "%.8g" /* Numerical format for certain error messages */ char *errormsg[]={ /* 0 */ "Successful completion", /* 1 */ "Parse error", /* 2 */ "Product overflow", /* 3 */ "Unit reduction error (bad unit definition)", /* 4 */ "Circular unit definition", /* 5 */ "Invalid sum or difference of non-conformable units", /* 6 */ "Unit not dimensionless", /* 7 */ "Unit not a root", /* 8 */ "Unknown unit", /* 9 */ "Bad argument", /* 10 */ "Weird nonlinear unit type (bug in program)", /* 11 */ "Function argument has wrong dimension", /* 12 */ "Argument of function outside domain", /* 13 */ "Nonlinear unit definition has unit error", /* 14 */ "No inverse defined", /* 15 */ "Parser memory overflow (recursive function definition?)", /* 16 */ "Argument wrong dimension or bad nonlinear unit definition", /* 17 */ "Cannot open units file", /* 18 */ "Units file contains errors", /* 19 */ "Memory allocation error", /* 20 */ "Malformed number", /* 21 */ "Unit name ends with a digit other than 0 or 1 without preceding '_'", /* 22 */ "No previous result; '_' not set", /* 23 */ "Base unit not dimensionless; rational exponent required", /* 24 */ "Base unit not a root", /* 25 */ "Exponent not dimensionless", /* 26 */ "Unknown function name", /* 27 */ "Overflow: number too large", /* 28 */ "Underflow: number too small" }; char *invalid_utf8 = "invalid/nonprinting UTF-8"; char *irreducible=0; /* Name of last irreducible unit */ /* Hash table for unit definitions. */ struct unitlist { char *name; /* unit name */ char *value; /* unit value */ int linenumber; /* line in units data file where defined */ char *file; /* file where defined */ struct unitlist *next; /* next item in list */ } *utab[HASHSIZE]; /* Table for prefix definitions. */ struct prefixlist { int len; /* length of name string */ char *name; /* prefix name */ char *value; /* prefix value */ int linenumber; /* line in units data file where defined */ char *file; /* file where defined */ struct prefixlist *next; /* next item in list */ } *ptab[SIMPLEHASHSIZE]; struct wantalias { char *name; char *definition; struct wantalias *next; int linenumber; char *file; }; struct wantalias *firstalias = 0; struct wantalias **aliaslistend = &firstalias; /* Next list entry goes here */ /* Table for function definitions */ struct func *ftab[SIMPLEHASHSIZE]; /* Used for passing parameters to the parser when we are in the process of parsing a unit function. If function_parameter is non-nil, then whenever the text in function_parameter appears in a unit expression it is replaced by the unit value stored in parameter_value. */ char *function_parameter = 0; struct unittype *parameter_value = 0; /* Stores the last result value for replacement with '_' */ int lastunitset = 0; struct unittype lastunit; char *NULLUNIT = ""; /* Used for units that are canceled during reduction */ #define startswith(string, prefix) (!strncmp(string, prefix, strlen(prefix))) #define lastchar(string) (*((string)+strlen(string)-1)) #define emptystr(string) (*(string)==0) #define nonempty(list) ((list) && *(list)) #ifdef READLINE char *historyfile; /* Filename for readline history */ int init_history_length; /* Length of history read from the history file*/ int init_history_base; void save_history(void) { int newentries; int err; newentries = history_length-init_history_length; if (history_max_entries > 0){ newentries += history_base - init_history_base; if (newentries > history_max_entries) newentries = history_max_entries; } err = append_history(newentries,historyfile); if (err){ if (err == ENOENT) err = write_history(historyfile); if (err) { printf("Unable to write history to '%s': %s\n",historyfile,strerror(err)); return; } } history_truncate_file(historyfile,MAXHISTORYFILE); } #endif /* Increases the buffer by BUFGROW bytes and leaves the new pointer in buf and the new buffer size in bufsize. */ #define BUFGROW 100 void growbuffer(char **buf, int *bufsize) { int usemalloc; usemalloc = !*buf || !*bufsize; *bufsize += BUFGROW; if (usemalloc) *buf = malloc(*bufsize); else *buf = realloc(*buf,*bufsize); if (!*buf){ fprintf(stderr, "%s: memory allocation error (growbuffer)\n",progname); exit(EXIT_FAILURE); } } FILE * openfile(char *file,char *mode) { FILE *fileptr; struct stat statbuf; if (stat(file, &statbuf)==0 && statbuf.st_mode & S_IFDIR){ errno=EISDIR; return NULL; } fileptr = fopen(file,mode); return fileptr; } void logprintf(const char *format, ...) { va_list args; va_start(args, format); vprintf(format, args); va_end(args); if (logfile) { va_start(args, format); vfprintf(logfile, format, args); va_end(args); } } void logputchar(char c) { putchar(c); if (logfile) fputc(c, logfile); } void logputs(const char *s) { fputs(s, stdout); if (logfile) fputs(s, logfile); } /* Look for a subscript in the input string. A subscript starts with '_' and is followed by a sequence of only digits (matching the regexp "_[0-9]+"). The function returns 1 if it finds a subscript and zero otherwise. Note that it returns 1 for an input that is entirely subscript, with the '_' appearing in the first position. */ int hassubscript(const char *str) { const char *ptr = &lastchar(str); while (ptr>str){ if (!strchr(digits, *ptr)) return 0; ptr--; if (*ptr=='_') return 1; } return 0; } /* replace various Unicode operator symbols with stanard ASCII equivalents */ void replace_operators(char *input) { struct{ char *unicode; char replacement; } repl_table[]={ {"\xE2\x80\x92", '-'}, /* U+2012: figure dash */ {"\xE2\x80\x93", '-'}, /* U+2013: en dash */ {"\xE2\x88\x92", '-'}, /* U+2212: minus */ {"\xC3\x97", '*'}, /* U+00D7: times */ {"\xE2\xA8\x89" ,'*'}, /* U+2A09: N-ary times operator */ {"\xC2\xB7", '*'}, /* U+00B7: middle dot */ {"\xE2\x8B\x85", '*'}, /* U+22C5: dot operator */ {"\xC3\xB7", '/'}, /* U+00F7: division sign */ {"\xE2\x88\x95", '/'}, /* U+2215: division slash */ {"\xE2\x81\x84", '|'}, /* U+2044: fraction slash */ {0,0} }; char *inptr, *outptr, *ptr; for (int i=0; repl_table[i].unicode; i++) { inptr = outptr = input; do { ptr = strstr(inptr, repl_table[i].unicode); /* find next unicode symbol */ if (ptr) { while (inptr < ptr) /* copy the input up to the unicode */ *outptr++ = *inptr++; inptr = ptr + strlen(repl_table[i].unicode); /* skip over unicode */ *outptr++ = repl_table[i].replacement; /* Output replacement */ } } while (ptr); /* If replacement were made, copy remaining input to end of string */ if (inptr > input) { while (*inptr) *outptr++ = *inptr++; *outptr = '\0'; } } } /* Replace all control chars with a space */ void replacectrlchars(char *string) { for(;*string;string++) if (iscntrl(*string)) *string = ' '; } /* Fetch a line of data with backslash for continuation. The parameter count is incremented to report the number of newlines that are read so that line numbers can be accurately reported. */ char * fgetscont(char *buf, int size, FILE *file, int *count) { if (!fgets(buf,size,file)) return 0; (*count)++; while(strlen(buf)>=2 && 0==strcmp(buf+strlen(buf)-2,"\\\n")){ (*count)++; buf[strlen(buf)-2] = 0; /* delete trailing \n and \ char */ if (strlen(buf)>=size-1) /* return if the buffer is full */ return buf; if (!fgets(buf+strlen(buf), size - strlen(buf), file)) return buf; /* already read some data so return success */ } if (lastchar(buf) == '\\') { /* If last char of buffer is \ then */ ungetc('\\', file); /* we don't know if it is followed by */ lastchar(buf) = 0; /* a \n, so put it back and try again */ } return buf; } /* Gets arbitrarily long input data into a buffer using growbuffer(). Returns 0 if no data is read. Increments count by the number of newlines read unless it points to NULL. Replaces tabs and newlines with spaces before returning the result. */ char * fgetslong(char **buf, int *bufsize, FILE *file, int *count) { int dummy; if (!count) count = &dummy; if (!*bufsize) growbuffer(buf,bufsize); if (!fgetscont(*buf, *bufsize, file, count)) return 0; while (lastchar(*buf) != '\n' && !feof(file)){ growbuffer(buf, bufsize); fgetscont(*buf+strlen(*buf), *bufsize-strlen(*buf), file, count); (*count)--; } /* These nonprinting characters must be removed so that the test for UTF-8 validity will work. */ replacectrlchars(*buf); return *buf; } /* Allocates memory and aborts if malloc fails. */ void * mymalloc(int bytes,const char *mesg) { void *pointer; pointer = malloc(bytes); if (!pointer){ fprintf(stderr, "%s: memory allocation error %s\n", progname, mesg); exit(EXIT_FAILURE); } return pointer; } /* Duplicates a string */ char * dupstr(const char *str) { char *ret; ret = mymalloc(strlen(str) + 1,"(dupstr)"); strcpy(ret, str); return ret; } /* Duplicates a string that is not null-terminated, adding the null to the copy */ char * dupnstr(const char *string, int length) { char *newstr; newstr = mymalloc(length+1,"(dupnstr)"); strncpy(newstr, string, length); newstr[length]=0; return newstr; } #ifdef SUPPORT_UTF8 /* The strwidth function gives the printed width of a UTF-8 byte sequence. It will return -1 if the sequence is an invalid UTF-8 sequence or if the sequence contains "nonprinting" characters. Note that \n and \t are "nonprinting" characters. */ int strwidth(const char *str) { wchar_t *widestr; int len; if (!utf8mode) return strlen(str); len = strlen(str)+1; widestr = mymalloc(sizeof(wchar_t)*len, "(strwidth)"); len = mbsrtowcs(widestr, &str, len, NULL); if (len==-1){ free(widestr); return -1; /* invalid multibyte sequence */ } len=wcswidth(widestr, len); free(widestr); return len; } #else # define strwidth strlen #endif /* hashing algorithm for units */ unsigned uhash(const char *str) { unsigned hashval; for (hashval = 0; *str; str++) hashval = *str + HASHNUMBER * hashval; return (hashval % HASHSIZE); } /* Lookup a unit in the units table. Returns the definition, or NULL if the unit isn't found in the table. */ struct unitlist * ulookup(const char *str) { struct unitlist *uptr; for (uptr = utab[uhash(str)]; uptr; uptr = uptr->next) if (strcmp(str, uptr->name) == 0) return uptr; return NULL; } /* Lookup a prefix in the prefix table. Finds the longest prefix that matches the beginning of the input string. Returns NULL if no prefixes match. */ struct prefixlist * plookup(const char *str) { struct prefixlist *prefix; struct prefixlist *bestprefix=NULL; int bestlength=0; for (prefix = ptab[simplehash(str)]; prefix; prefix = prefix->next) { if (prefix->len > bestlength && !strncmp(str, prefix->name, prefix->len)){ bestlength = prefix->len; bestprefix = prefix; } } return bestprefix; } /* Look up function in the function linked list */ struct func * fnlookup(const char *str) { struct func *funcptr; for(funcptr=ftab[simplehash(str)];funcptr;funcptr = funcptr->next) if (!strcmp(funcptr->name, str)) return funcptr; return 0; } struct wantalias * aliaslookup(const char *str) { struct wantalias *aliasptr; for(aliasptr = firstalias; aliasptr; aliasptr=aliasptr->next) if (!strcmp(aliasptr->name, str)) return aliasptr; return 0; } /* Insert a new function into the linked list of functions */ void addfunction(struct func *newfunc) { int val; val = simplehash(newfunc->name); newfunc->next = ftab[val]; ftab[val] = newfunc; } /* Free the fields in the function except for the name so that it can be redefined. It remains in position in the linked list. */ void freefunction(struct func *funcentry) { if (funcentry->table){ free(funcentry->table); free(funcentry->tableunit); } else { free(funcentry->forward.param); free(funcentry->forward.def); if (funcentry->forward.domain_min) free(funcentry->forward.domain_min); if (funcentry->forward.domain_max) free(funcentry->forward.domain_max); if (funcentry->inverse.domain_min) free(funcentry->inverse.domain_min); if (funcentry->inverse.domain_max) free(funcentry->inverse.domain_max); if (funcentry->forward.dimen) free(funcentry->forward.dimen); if (funcentry->inverse.dimen) free(funcentry->inverse.dimen); if (funcentry->inverse.def) free(funcentry->inverse.def); if (funcentry->inverse.param) free(funcentry->inverse.param); } } /* Remove leading and trailing spaces from the input */ void removespaces(char *in) { char *ptr; if (*in) { for(ptr = &lastchar(in); *ptr==' '; ptr--); /* Last non-space */ *(ptr+1)=0; if (*in==' '){ ptr = in + strspn(in," "); memmove(in, ptr, strlen(ptr)+1); } } } /* Looks up an inverse function given as a ~ character followed by spaces and then the function name. The spaces will be deleted as a side effect. If an inverse function is found returns the function pointer, otherwise returns null. */ struct func * invfnlookup(char *str) { if (*str != '~') return 0; removespaces(str+1); return fnlookup(str+1); } char * strip_comment(char *line) { char *comment = 0; if ((line = strchr(line,COMMENTCHAR))) { comment = line+1; *line = 0; } return comment; } /* Print string but replace two consecutive spaces with one space. */ void tightprint(FILE *outfile, char *string) { while(*string){ fputc(*string, outfile); if (*string != ' ') string++; else while(*string==' ') string++; } } /* Copy string to buf, replacing two or more consecutive spaces with one space. */ void tightbufprint(char *buf, char *string) { while(*string) { *buf++ = *string; if (*string != ' ') string++; else { while(*string==' ') string++; } } *buf = '\0'; } #define readerror (goterr=1) && errfile && fprintf #define VAGUE_ERR "%s: error in units file '%s' line %d\n", \ progname, file, linenum /* Print out error message encountered while reading the units file. */ /* Splits the line into two parts. The first part is space delimited. The second part is everything else. Removes trailing spaces from the second part. Returned items are null if no parameter was found. */ void splitline(char *line, char **first, char **second) { *second = 0; *first = strtok(line, " "); if (*first){ *second = strtok(0, "\n"); if (*second){ removespaces(*second); if (emptystr(*second)) *second = 0; } } } /* see if character is part of a valid decimal number */ int isdecimal(char c) { return strchr(digits, c) != NULL; } /* Check for some invalid unit names. Print error message. Returns 1 if unit name is bad, zero otherwise. */ int checkunitname(char *name, int linenum, char *file, FILE *errfile) { char nonunitchars[] = "~;+-*/|^)"; /* Also defined in parse.y with a few more characters */ char **ptr; char *cptr; if ((cptr=strpbrk(name, nonunitchars))){ if (errfile) fprintf(errfile, "%s: unit '%s' in units file '%s' on line %d ignored. It contains invalid character '%c'\n", progname, name, file, linenum, *cptr); return 1; } if (strchr(digits, name[0])){ if (errfile) fprintf(errfile, "%s: unit '%s' in units file '%s' on line %d ignored. It starts with a digit\n", progname, name, file, linenum); return 1; } for(ptr=builtins;*ptr;ptr++) if (!strcmp(name, *ptr)){ if (errfile) fprintf(errfile, "%s: redefinition of built-in function '%s' in file '%s' on line %d ignored.\n", progname, name, file, linenum); return 1; } for(ptr=all_commands;*ptr;ptr++) if (!strcmp(name, *ptr)){ if (errfile) fprintf(errfile, "%s: unit name '%s' in file '%s' on line %d may be hidden by command with the same name.\n", progname, name, file, linenum); } return 0; } int newunit(char *unitname, char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine, int userunit) { struct unitlist *uptr; unsigned hashval; /* units ending with '_' create ambiguity for exponents */ if ((unitname[0]=='_' && !userunit) || lastchar(unitname)=='_'){ if (errfile) fprintf(errfile, "%s: unit '%s' on line %d of '%s' ignored. It starts or ends with '_'\n", progname, unitname, linenum, file); return E_BADFILE; } /* Units that end in [2-9] can never be accessed */ if (strchr(".,23456789", lastchar(unitname)) && !hassubscript(unitname)){ if (errfile) fprintf(errfile, "%s: unit '%s' on line %d of '%s' ignored. %s\n", progname, unitname, linenum, file,errormsg[E_UNITEND]); return E_BADFILE; } if (checkunitname(unitname, linenum, file, errfile)) return E_BADFILE; if ((uptr=ulookup(unitname))) { /* Is it a redefinition? */ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: unit '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, uptr->linenumber,uptr->file, linenum, file); free(uptr->value); } else { /* make new units table entry */ uptr = (struct unitlist *) mymalloc(sizeof(*uptr),"(newunit)"); uptr->name = dupstr(unitname); /* install unit name/value pair in list */ hashval = uhash(uptr->name); uptr->next = utab[hashval]; utab[hashval] = uptr; (*count)++; } uptr->value = dupstr(unitdef); uptr->linenumber = linenum; uptr->file = file; return 0; } int newprefix(char *unitname, char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine) { struct prefixlist *pfxptr; unsigned pval; lastchar(unitname) = 0; if (checkunitname(unitname,linenum,file,errfile)) return E_BADFILE; if ((pfxptr = plookup(unitname)) /* already there: redefinition */ && !strcmp(pfxptr->name, unitname)){ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: prefix '%s-' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, pfxptr->linenumber,pfxptr->file, linenum, file); free(pfxptr->value); } else { pfxptr = (struct prefixlist *) mymalloc(sizeof(*pfxptr),"(newprefix)"); pfxptr->name = dupstr(unitname); pfxptr->len = strlen(unitname); pval = simplehash(unitname); pfxptr->next = ptab[pval]; ptab[pval] = pfxptr; (*count)++; } pfxptr->value = dupstr(unitdef); pfxptr->linenumber = linenum; pfxptr->file = file; return 0; } /* parsepair() looks for data of the form [text1,text2] where the ',' is a specified delimiter. The second argument, text2, is optional and if it's missing then second is set to NULL. The parameters are allowed to be empty strings. The function returns the first character after the closing bracket if no errors occur or the NULL pointer on error. */ char * parsepair(char *input, char **first, char **second, int *firstopen, int *secondopen, char delimiter, int checkopen, char *unitname, int linenum, char *file,FILE *errfile) { char *start, *end, *middle; start = strpbrk(input, checkopen?"[(":"["); if (!start){ if (errfile) fprintf(errfile, "%s: expecting '[' %s in definition of '%s' in '%s' line %d\n", progname, checkopen ? "or '('":"", unitname, file, linenum); return 0; } if (*start=='(') *firstopen=1; else *firstopen=0; *start++=0; removespaces(input); if (!emptystr(input)){ if (errfile) fprintf(errfile, "%s: unexpected characters before '%c' in definition of '%s' in '%s' line %d\n", progname, *firstopen?'(':'[',unitname, file, linenum); return 0; } end = strpbrk(start, checkopen?"])":"]"); if (!end){ if (errfile) fprintf(errfile, "%s: expecting ']' %s in definition of '%s' in '%s' line %d\n", progname, checkopen?"or ')'":"",unitname, file, linenum); return 0; } if (*end==')') *secondopen=1; else *secondopen=0; *end++=0; middle = strchr(start,delimiter); if (middle){ *middle++=0; removespaces(middle); *second = middle; } else *second = 0; removespaces(start); *first = start; return end; } /* Extract numbers from two text strings and place them into pointers. Has two error codes for decreasing interval or bad numbers in the text strings. Returns 0 on success. */ #define EI_ERR_DEC 1 /* Decreasing interval */ #define EI_ERR_MALF 2 /* Malformed number */ int extract_interval(char *first, char *second, double **firstout, double **secondout) { double val; char *end; if (!emptystr(first)){ val = strtod(first, &end); if (*end) return EI_ERR_MALF; else { *firstout=(double *)mymalloc(sizeof(double), "(extract_interval)"); **firstout = val; } } if (nonempty(second)) { val = strtod(second, &end); if (*end) return EI_ERR_MALF; else if (*firstout && **firstout>=val) return EI_ERR_DEC; else { *secondout=(double *)mymalloc(sizeof(double), "(extract_interval)"); **secondout = val; } } return 0; } void copyfunctype(struct functype *dest, struct functype *src) { dest->domain_min_open = src->domain_min_open; dest->domain_max_open = src->domain_max_open; dest->param = dest->def = dest->dimen = NULL; dest->domain_min = dest->domain_max = NULL; if (src->param) dest->param = dupstr(src->param); if (src->def) dest->def = dupstr(src->def); if (src->dimen) dest->dimen = dupstr(src->dimen); if (src->domain_min){ dest->domain_min = (double *) mymalloc(sizeof(double), "(copyfunctype)"); *dest->domain_min = *src->domain_min; } if (src->domain_max){ dest->domain_max = (double *) mymalloc(sizeof(double), "(copyfunctype)"); *dest->domain_max = *src->domain_max; } } int copyfunction(char *unitname, char *funcname, int *count, int linenum, char *file, FILE *errfile) { struct func *source, *funcentry; int i; if (checkunitname(unitname, linenum, file, errfile)) return E_BADFILE; removespaces(funcname); i = strlen(funcname)-2; /* strip trailing () if present */ if (i>0 && !strcmp(funcname+i,"()")) funcname[i]=0; source = fnlookup(funcname); if (!source) { if (errfile){ if (!strpbrk(funcname," ;][()+*/-^")) fprintf(errfile,"%s: bad definition for '%s' in '%s' line %d, function '%s' not defined\n", progname, unitname, file, linenum, funcname); else fprintf(errfile,"%s: bad function definition of '%s' in '%s' line %d\n", progname,unitname,file,linenum); } return E_BADFILE; } if ((funcentry=fnlookup(unitname))){ if (flags.unitcheck && errfile) fprintf(errfile, "%s: function '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, funcentry->linenumber,funcentry->file, linenum, file); freefunction(funcentry); } else { funcentry = (struct func*)mymalloc(sizeof(struct func),"(newfunction)"); funcentry->name = dupstr(unitname); addfunction(funcentry); (*count)++; } funcentry->linenumber = linenum; funcentry->file = file; funcentry->skip_error_check = source->skip_error_check; if (source->table){ funcentry->tablelen = source->tablelen; funcentry->tableunit = dupstr(source->tableunit); funcentry->table = (struct pair *) mymalloc(sizeof(struct pair)*funcentry->tablelen, "(copyfunction)"); for(i=0;itablelen;i++){ funcentry->table[i].location = source->table[i].location; funcentry->table[i].value = source->table[i].value; } } else { funcentry->table = 0; copyfunctype(&funcentry->forward, &source->forward); copyfunctype(&funcentry->inverse, &source->inverse); } return 0; } #define FREE_STUFF {if (forward_dim) free(forward_dim);\ if (inverse_dim) free(inverse_dim);\ if (domain_min) free(domain_min);\ if (domain_max) free(domain_max);\ if (range_min) free(range_min);\ if (range_max) free(range_max);} #define REPEAT_ERR \ if (errfile) fprintf(errfile, \ "%s: keyword '%s' repeated in definition of '%s' on line %d of '%s'.\n",\ progname,fnkeywords[i].word,unitname, linenum, file) int newfunction(char *unitname, char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine) { char *start, *end, *inv, *forward_dim, *inverse_dim, *first, *second; double *domain_min, *domain_max, *range_min, *range_max; struct func *funcentry; int looking_for_keywords,i, firstopen, secondopen; int domain_min_open, domain_max_open, range_min_open, range_max_open; int noerror = 0; if (*unitname=='('){ if (errfile) fprintf(errfile, "%s: unit '%s' on line %d of '%s' ignored. It starts with a '('\n", progname, unitname, linenum, file); return E_BADFILE; } /* coverity[returned_null] */ start = strchr(unitname,'('); end = strchr(unitname,')'); *start++ = 0; if (checkunitname(unitname,linenum,file,errfile)) return E_BADFILE; if (start==end) /* no argument: function() so make a function copy */ return copyfunction(unitname, unitdef, count, linenum, file, errfile); if (!end || strlen(end)>1){ if (errfile) fprintf(errfile, "%s: bad function definition of '%s' in '%s' line %d\n", progname,unitname,file,linenum); return E_BADFILE; } *end=0; forward_dim = NULL; inverse_dim = NULL; domain_min = NULL; domain_max = NULL; range_min = NULL; range_max = NULL; domain_min_open = 0; domain_max_open = 0; range_min_open = 0; range_max_open = 0; looking_for_keywords=1; while (looking_for_keywords) { looking_for_keywords = 0; for(i=0;fnkeywords[i].word;i++){ if (startswith(unitdef, fnkeywords[i].word)){ looking_for_keywords = 1; /* found keyword so keep looking */ unitdef+=strlen(fnkeywords[i].word); if (fnkeywords[i].checkopen!=CO_NOARG){ unitdef = parsepair(unitdef,&first, &second, &firstopen, &secondopen, fnkeywords[i].delimit, fnkeywords[i].checkopen, unitname, linenum, file,errfile); if (!unitdef){ FREE_STUFF; return E_BADFILE; } removespaces(unitdef); } if (i==FN_NOERROR) noerror = 1; if (i==FN_UNITS){ if (forward_dim || inverse_dim){ REPEAT_ERR; return E_BADFILE; } forward_dim = dupstr(first); if (second) inverse_dim = dupstr(second); } if (i==FN_DOMAIN){ int err=0; if (domain_min || domain_max){ REPEAT_ERR; return E_BADFILE; } err = extract_interval(first,second,&domain_min, &domain_max); domain_min_open = firstopen; domain_max_open = secondopen; if (err) FREE_STUFF; if (err==EI_ERR_DEC){ if (errfile) fprintf(errfile, "%s: second endpoint for domain must be greater than the first\n in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } if (err==EI_ERR_MALF){ if (errfile) fprintf(errfile, "%s: malformed domain in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } } if (i==FN_RANGE){ int err=0; if (range_min || range_max){ REPEAT_ERR; FREE_STUFF; return E_BADFILE; } err = extract_interval(first,second,&range_min, &range_max); range_min_open = firstopen; range_max_open = secondopen; if (err) FREE_STUFF; if (err==EI_ERR_DEC){ if (errfile) fprintf(errfile, "%s: second endpoint for range must be greater than the first\n in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } if (err==EI_ERR_MALF){ if (errfile) fprintf(errfile, "%s: malformed range in definition of '%s' in '%s' line %d\n", progname, unitname, file, linenum); return E_BADFILE; } } } } } if (emptystr(unitdef)){ if (errfile) fprintf(errfile, "%s: function '%s' lacks a definition at line %d of '%s'\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } if (*unitdef=='['){ if (errfile) fprintf(errfile, "%s: function '%s' missing keyword before '[' on line %d of '%s'\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } /* Check that if domain and range are specified and nonzero then the units are given. Otherwise these are meaningless. */ if (!forward_dim && ((domain_min && *domain_min) || (domain_max && *domain_max))){ if (errfile) fprintf(errfile,"%s: function '%s' defined on line %d of '%s' has domain with no units.\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } if (!inverse_dim && ((range_min && *range_min) || (range_max && *range_max))){ if (errfile) fprintf(errfile,"%s: function '%s' defined on line %d of '%s' has range with no units.\n", progname, unitname, linenum, file); FREE_STUFF; return E_BADFILE; } if ((funcentry=fnlookup(unitname))){ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: function '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, funcentry->linenumber,funcentry->file, linenum, file); freefunction(funcentry); } else { funcentry = (struct func*)mymalloc(sizeof(struct func),"(newfunction)"); funcentry->name = dupstr(unitname); addfunction(funcentry); (*count)++; } funcentry->table = 0; funcentry->skip_error_check = noerror; funcentry->forward.dimen = forward_dim; funcentry->inverse.dimen = inverse_dim; funcentry->forward.domain_min = domain_min; funcentry->forward.domain_max = domain_max; funcentry->inverse.domain_min = range_min; funcentry->inverse.domain_max = range_max; funcentry->forward.domain_min_open = domain_min_open; funcentry->forward.domain_max_open = domain_max_open; funcentry->inverse.domain_min_open = range_min_open; funcentry->inverse.domain_max_open = range_max_open; inv = strchr(unitdef,FUNCSEPCHAR); if (inv) *inv++ = 0; funcentry->forward.param = dupstr(start); removespaces(unitdef); funcentry->forward.def = dupstr(unitdef); if (inv){ removespaces(inv); funcentry->inverse.def = dupstr(inv); funcentry->inverse.param = dupstr(unitname); } else { funcentry->inverse.def = 0; funcentry->inverse.param = 0; } funcentry->linenumber = linenum; funcentry->file = file; return 0; } int newtable(char *unitname,char *unitdef, int *count, int linenum, char *file,FILE *errfile, int redefine) { char *start, *end; char *tableunit; int tablealloc, tabpt; struct pair *tab; struct func *funcentry; int noerror = 0; /* coverity[returned_null] */ tableunit = strchr(unitname,'['); end = strchr(unitname,']'); *tableunit++=0; if (checkunitname(unitname, linenum, file, errfile)) return E_BADFILE; if (!end){ if (errfile) fprintf(errfile,"%s: missing ']' in units file '%s' line %d\n", progname,file,linenum); return E_BADFILE; } if (strlen(end)>1){ if (errfile) fprintf(errfile, "%s: unexpected characters after ']' in units file '%s' line %d\n", progname,file,linenum); return E_BADFILE; } *end=0; tab = (struct pair *)mymalloc(sizeof(struct pair)*20, "(newtable)"); tablealloc=20; tabpt = 0; start = unitdef; if (startswith(start, NOERROR_KEYWORD)) { noerror = 1; start += strlen(NOERROR_KEYWORD); removespaces(start); } while (1) { if (tabpt>=tablealloc){ tablealloc+=20; tab = (struct pair *)realloc(tab,sizeof(struct pair)*tablealloc); if (!tab){ if (errfile) fprintf(errfile, "%s: memory allocation error (newtable)\n", progname); return E_MEMORY; } } tab[tabpt].location = strtod(start,&end); if (start==end || (!emptystr(end) && *end !=' ')){ if (!emptystr(start)) { if (strlen(start)>15) start[15]=0; /* Truncate for error msg display */ if (errfile) fprintf(errfile, "%s: cannot parse table definition %s at '%s' on line %d of '%s'\n", progname, unitname, start, linenum, file); free(tab); return E_BADFILE; } break; } if (tabpt>0 && tab[tabpt].location<=tab[tabpt-1].location){ if (errfile) fprintf(errfile,"%s: points don't increase (" ERRNUMFMT " to " ERRNUMFMT ") in units file '%s' line %d\n", progname, tab[tabpt-1].location, tab[tabpt].location, file, linenum); free(tab); return E_BADFILE; } start=end+strspn(end," "); tab[tabpt].value = strtod(start,&end); if (start==end){ if (errfile) fprintf(errfile,"%s: missing value after " ERRNUMFMT " in units file '%s' line %d\n", progname, tab[tabpt].location, file, linenum); free(tab); return E_BADFILE; } tabpt++; start=end+strspn(end," ,"); } if ((funcentry=fnlookup(unitname))){ if (flags.unitcheck && errfile && !redefine) fprintf(errfile, "%s: unit '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, funcentry->linenumber,funcentry->file, linenum, file); freefunction(funcentry); } else { funcentry = (struct func *)mymalloc(sizeof(struct func),"(newtable)"); funcentry->name = dupstr(unitname); addfunction(funcentry); (*count)++; } funcentry->tableunit = dupstr(tableunit); funcentry->tablelen = tabpt; funcentry->table = tab; funcentry->skip_error_check = noerror; funcentry->linenumber = linenum; funcentry->file = file; return 0; } int newalias(char *unitname, char *unitdef,int linenum, char *file,FILE *errfile) { struct wantalias *aliasentry; if (!strchr(unitdef, UNITSEPCHAR)){ if (errfile) fprintf(errfile, "%s: unit list missing '%c' on line %d of '%s'\n", progname, UNITSEPCHAR, linenum, file); return E_BADFILE; } if ((aliasentry=aliaslookup(unitname))){ /* duplicate alias */ if (flags.unitcheck && errfile) fprintf(errfile, "%s: unit list '%s' defined on line %d of '%s' is redefined on line %d of '%s'.\n", progname, unitname, aliasentry->linenumber, aliasentry->file, linenum, file); free(aliasentry->definition); } else { aliasentry = (struct wantalias *) mymalloc(sizeof(struct wantalias),"(newalias)"); aliasentry->name = dupstr(unitname); aliasentry->next = 0; *aliaslistend = aliasentry; aliaslistend = &aliasentry->next; } aliasentry->definition = dupstr(unitdef); aliasentry->linenumber = linenum; aliasentry->file = file; return 0; } /* Check environment variable name to see if its value appears on the space delimited text string pointed to by list. Returns 2 if the environment variable is not set, return 1 if its value appears on the list and zero otherwise. */ int checkvar(char *name, char *list) { char *listitem; name = getenv(name); if (!name) return 2; listitem = strtok(list," "); while (listitem){ if (!strcmp(name, listitem)) return 1; listitem = strtok(0," "); } return 0; } #ifdef NO_SETENV int setenv(const char *name, const char *val, int overwrite) { char *environment; if (!overwrite && getenv(name) != NULL) return 0; environment = (char *) malloc(strlen(name) + strlen(val) + 2); if (!environment) return 1; strcpy(environment, name); strcat(environment, "="); strcat(environment, val); /* putenv() doesn't copy its argument, so don't free environment */ #if defined (_WIN32) && defined (_MSC_VER) return _putenv(environment); #else return putenv(environment); #endif } #endif #ifdef _WIN32 # define isdirsep(c) ((c) == '/' || (c) == '\\') # define hasdirsep(s) strpbrk((s),"/\\") #else # define isdirsep(c) ((c) == '/') # define hasdirsep(s) strchr((s),'/') #endif #define isexe(s) ((strlen(s) == 4) && (tolower(s[1]) == 'e') \ && (tolower(s[2]) == 'x') && (tolower(s[3]) == 'e')) /* Returns a pointer to the end of the pathname part of the specified filename */ char * pathend(char *filename) { char *pointer; for(pointer=filename+strlen(filename);pointer>filename;pointer--){ if (isdirsep(*pointer)) { pointer++; break; } } return pointer; } int isfullpath(char *path) { #ifdef _WIN32 /* handle Windows drive specifier */ if (isalpha(*path) && *(path + 1) == ':') path += 2; #endif return isdirsep(*path); } /* Read in units data. file - Filename to load errfile - File to receive messages about errors in the units database. Set it to 0 to suppress errors. unitcount, prefixcount, funccount - Return statistics to the caller. Must initialize to zero before calling. depth - Used to prevent recursive includes. Call with it set to zero. The global variable progname is used in error messages. */ int readunits(char *file, FILE *errfile, int *unitcount, int *prefixcount, int *funccount, int depth) { FILE *unitfile; char *line = 0, *lineptr, *unitdef, *unitname, *permfile; int linenum, linebufsize, goterr, retcode; int locunitcount, locprefixcount, locfunccount, redefinition; int wronglocale = 0; /* If set then we are currently reading data */ int inlocale = 0; /* for the wrong locale so we should skip it */ int in_utf8 = 0; /* If set we are reading utf8 data */ int invar = 0; /* If set we are in data for an env variable.*/ int wrongvar = 0; /* If set then we are not processing */ locunitcount = 0; locprefixcount = 0; locfunccount = 0; linenum = 0; linebufsize = 0; goterr = 0; unitfile = openfile(file, "rt"); if (!unitfile){ if (errfile) fprintf(errfile, "%s: Unable to read units file '%s': %s\n", progname, file, strerror(errno)); return E_FILE; } growbuffer(&line,&linebufsize); /* coverity[alloc_fn] */ permfile = dupstr(file); /* This is a permanent copy to reference in */ /* the database. It is never freed. */ while (!feof(unitfile)) { if (!fgetslong(&line, &linebufsize, unitfile, &linenum)) break; if (linenum==1 && startswith(line, UTF8MARKER)){ int i; for(lineptr=line,i=0;iMAXINCLUDE){ readerror(errfile, "%s: max include depth of %d exceeded in file '%s' line %d\n", progname, MAXINCLUDE, file, linenum); } else { int readerr; char *includefile; unitname = strtok(0, " "); if (!unitname){ readerror(errfile, "%s: missing include filename on line %d of '%s'\n", progname, linenum, file); continue; } includefile = mymalloc(strlen(file)+strlen(unitname)+1, "(readunits)"); if (isfullpath(unitname)) strcpy(includefile,unitname); else { strcpy(includefile,file); strcpy(pathend(includefile), unitname); } readerr = readunits(includefile, errfile, unitcount, prefixcount, funccount, depth+1); if (readerr == E_MEMORY){ fclose(unitfile); free(line); free(includefile); return readerr; } if (readerr == E_FILE) { readerror(errfile, "%s: file was included at line %d of file '%s'\n", progname,linenum, file); } if (readerr) goterr = 1; free(includefile); } } else /* not a valid command */ readerror(errfile,VAGUE_ERR); continue; } if (in_utf8 && !utf8mode) continue; if (wronglocale || wrongvar) continue; splitline(line, &unitname, &unitdef); if (!unitname) continue; if (*unitname == REDEFCHAR){ unitname++; redefinition=1; if (strlen(unitname)==0){ readerror(errfile, "%s: expecting name of unit to redefine after '+' at line %d of '%s'\n", progname, linenum,file); continue; } } else redefinition=0; if (!strcmp(unitname,"-")) { readerror(errfile, "%s: expecting prefix name before '-' at line %d of '%s'\n", progname, linenum,file); continue; } if (!unitdef){ readerror(errfile, "%s: unit '%s' lacks a definition at line %d of '%s'\n", progname, unitname, linenum, file); continue; } if (lastchar(unitname) == '-'){ /* it's a prefix definition */ if (newprefix(unitname,unitdef,&locprefixcount,linenum, permfile,errfile,redefinition)) goterr=1; } else if (strchr(unitname,'[')){ /* table definition */ retcode=newtable(unitname,unitdef,&locfunccount,linenum, permfile,errfile,redefinition); if (retcode){ if (retcode != E_BADFILE){ fclose(unitfile); free(line); return retcode; } goterr=1; } } else if (strchr(unitname,'(')){ /* function definition */ if (newfunction(unitname,unitdef,&locfunccount,linenum, permfile,errfile,redefinition)) goterr = 1; } else { /* ordinary unit definition */ if (newunit(unitname,unitdef,&locunitcount,linenum,permfile,errfile,redefinition,0)) goterr = 1; } } fclose(unitfile); free(line); if (unitcount) *unitcount+=locunitcount; if (prefixcount) *prefixcount+=locprefixcount; if (funccount) *funccount+=locfunccount; if (goterr) return E_BADFILE; else return 0; } /* Initialize a unit to be equal to 1. */ void initializeunit(struct unittype *theunit) { theunit->factor = 1.0; theunit->numerator[0] = theunit->denominator[0] = NULL; } /* Free a unit: frees all the strings used in the unit structure. Does not free the unit structure itself. */ void freeunit(struct unittype *theunit) { char **ptr; for(ptr = theunit->numerator; *ptr; ptr++) if (*ptr != NULLUNIT) free(*ptr); for(ptr = theunit->denominator; *ptr; ptr++) if (*ptr != NULLUNIT) free(*ptr); /* protect against repeated calls to freeunit() */ theunit->numerator[0] = 0; theunit->denominator[0] = 0; } /* Print out a unit */ void showunit(struct unittype *theunit) { char **ptr; int printedslash; int counter = 1; logprintf(num_format.format, theunit->factor); for (ptr = theunit->numerator; *ptr; ptr++) { if (ptr > theunit->numerator && **ptr && !strcmp(*ptr, *(ptr - 1))) counter++; else { if (counter > 1) logprintf("%s%d", powerstring, counter); if (**ptr) logprintf(" %s", *ptr); counter = 1; } } if (counter > 1) logprintf("%s%d", powerstring, counter); counter = 1; printedslash = 0; for (ptr = theunit->denominator; *ptr; ptr++) { if (ptr > theunit->denominator && **ptr && !strcmp(*ptr, *(ptr - 1))) counter++; else { if (counter > 1) logprintf("%s%d", powerstring, counter); if (**ptr) { if (!printedslash) logprintf(" /"); printedslash = 1; logprintf(" %s", *ptr); } counter = 1; } } if (counter > 1) logprintf("%s%d", powerstring, counter); } /* qsort comparison function */ int compare(const void *item1, const void *item2) { return strcmp(*(char **) item1, *(char **) item2); } /* Sort numerator and denominator of a unit so we can compare different units */ void sortunit(struct unittype *theunit) { char **ptr; int count; for (count = 0, ptr = theunit->numerator; *ptr; ptr++, count++); qsort(theunit->numerator, count, sizeof(char *), compare); for (count = 0, ptr = theunit->denominator; *ptr; ptr++, count++); qsort(theunit->denominator, count, sizeof(char *), compare); } /* Cancels duplicate units that appear in the numerator and denominator. The input unit must be sorted. */ void cancelunit(struct unittype *theunit) { char **den, **num; int comp; den = theunit->denominator; num = theunit->numerator; while (*num && *den) { comp = strcmp(*den, *num); if (!comp) { /* units match, so cancel them */ if (*den!=NULLUNIT) free(*den); if (*num!=NULLUNIT) free(*num); *den++ = NULLUNIT; *num++ = NULLUNIT; } else if (comp < 0) /* Move up whichever pointer is alphabetically */ den++; /* behind to look for future matches */ else num++; } } /* Looks up the definition for the specified unit including prefix processing and plural removal. Returns a pointer to the definition or a null pointer if the specified unit does not appear in the units table. Sometimes the returned pointer will be a pointer to the special buffer created to hold the data. This buffer grows as needed during program execution. Note that if you pass the output of lookupunit() back into the function again you will get correct results, but the data you passed in may get clobbered if it happened to be the internal buffer. */ static int bufsize=0; static char *buffer; /* buffer for lookupunit answers with prefixes */ /* Plural rules for english: add -s after x, sh, ch, ss add -es -y becomes -ies except after a vowel when you just add -s as usual */ char * lookupunit(char *unit,int prefixok) { char *copy; struct prefixlist *pfxptr; struct unitlist *uptr; if ((uptr = ulookup(unit))) return uptr->value; if (strwidth(unit)>2 && lastchar(unit) == 's') { copy = dupstr(unit); lastchar(copy) = 0; if (lookupunit(copy,prefixok)){ while(strlen(copy)+1 > bufsize) { growbuffer(&buffer, &bufsize); } strcpy(buffer, copy); /* Note: returning looked up result seems */ free(copy); /* better but it causes problems when it */ return buffer; /* contains PRIMITIVECHAR. */ } if (strlen(copy)>2 && lastchar(copy) == 'e') { lastchar(copy) = 0; if (lookupunit(copy,prefixok)){ while (strlen(copy)+1 > bufsize) { growbuffer(&buffer,&bufsize); } strcpy(buffer,copy); free(copy); return buffer; } } if (strlen(copy)>2 && lastchar(copy) == 'i') { lastchar(copy) = 'y'; if (lookupunit(copy,prefixok)){ while (strlen(copy)+1 > bufsize) { growbuffer(&buffer,&bufsize); } strcpy(buffer,copy); free(copy); return buffer; } } free(copy); } if (prefixok && (pfxptr = plookup(unit))) { copy = unit + pfxptr->len; if (emptystr(copy) || lookupunit(copy,0)) { char *tempbuf; while (strlen(pfxptr->value)+strlen(copy)+2 > bufsize){ growbuffer(&buffer, &bufsize); } tempbuf = dupstr(copy); /* copy might point into buffer */ strcpy(buffer, pfxptr->value); strcat(buffer, " "); strcat(buffer, tempbuf); free(tempbuf); return buffer; } } return 0; } /* Points entries of product[] to the strings stored in tomove[]. Leaves tomove pointing to a list of NULLUNITS. */ int moveproduct(char *product[], char *tomove[]) { char **dest, **src; dest=product; for(src = tomove; *src; src++){ if (*src == NULLUNIT) continue; for(; *dest && *dest != NULLUNIT; dest++); if (dest - product >= MAXSUBUNITS - 1) { return E_PRODOVERFLOW; } if (!*dest) *(dest + 1) = 0; *dest = *src; *src=NULLUNIT; } return 0; } /* Make a copy of a product list. Note that no error checking is done for overflowing the product list because it is assumed that the source list doesn't overflow, so the destination list shouldn't overflow either. (This assumption could be false if the destination is not actually at the start of a product buffer.) */ void copyproduct(char **dest, char **source) { for(;*source;source++,dest++) { if (*source==NULLUNIT) *dest = NULLUNIT; else *dest=dupstr(*source); } *dest=0; } /* Make a copy of a unit */ void unitcopy(struct unittype *dest, struct unittype *source) { dest->factor = source->factor; copyproduct(dest->numerator, source->numerator); copyproduct(dest->denominator, source->denominator); } /* Multiply left by right. In the process, all of the units are deleted from right (but it is not freed) */ int multunit(struct unittype *left, struct unittype *right) { int myerr; left->factor *= right->factor; myerr = moveproduct(left->numerator, right->numerator); if (!myerr) myerr = moveproduct(left->denominator, right->denominator); return myerr; } int divunit(struct unittype *left, struct unittype *right) { int myerr; left->factor /= right->factor; myerr = moveproduct(left->numerator, right->denominator); if (!myerr) myerr = moveproduct(left->denominator, right->numerator); return myerr; } /* reduces a product of symbolic units to primitive units. The three low bits are used to return flags: bit 0 set if reductions were performed without error. bit 1 set if no reductions are performed. bit 2 set if an unknown unit is discovered. Return values from multiple calls will be ORed together later. */ #define DIDREDUCTION (1<<0) #define NOREDUCTION (1<<1) #define REDUCTIONERROR (1<<2) #define CIRCULARDEF (1<<3) int reduceproduct(struct unittype *theunit, int flip) { char *toadd; char **product; int didsomething = NOREDUCTION; struct unittype newunit; int ret; int itcount=0; /* Count iterations to catch infinite loops */ if (flip) product = theunit->denominator; else product = theunit->numerator; for (; *product; product++) { for (;;) { if (!strlen(*product)) break; /* check for infinite loop */ itcount++; if (itcount>MAXPRODUCTREDUCTIONS) return CIRCULARDEF; toadd = lookupunit(*product,1); if (!toadd) { if (!irreducible) irreducible = dupstr(*product); return REDUCTIONERROR; } if (strchr(toadd, PRIMITIVECHAR)) break; didsomething = DIDREDUCTION; if (*product != NULLUNIT) { free(*product); *product = NULLUNIT; } if (parseunit(&newunit, toadd, 0, 0)) return REDUCTIONERROR; if (flip) ret=divunit(theunit,&newunit); else ret=multunit(theunit,&newunit); freeunit(&newunit); if (ret) return REDUCTIONERROR; } } return didsomething; } #if 0 void showunitdetail(struct unittype *foo) { char **ptr; printf("%.17g ", foo->factor); for(ptr=foo->numerator;*ptr;ptr++) if (*ptr==NULLUNIT) printf("NULL "); else printf("`%s' ", *ptr); printf(" / "); for(ptr=foo->denominator;*ptr;ptr++) if (*ptr==NULLUNIT) printf("NULL "); else printf("`%s' ", *ptr); putchar('\n'); } #endif /* Reduces numerator and denominator of the specified unit. Returns 0 on success, or 1 on unknown unit error. */ int reduceunit(struct unittype *theunit) { int ret; if (irreducible) free(irreducible); irreducible=0; ret = DIDREDUCTION; /* Keep calling reduceproduct until it doesn't do anything */ while (ret & DIDREDUCTION) { ret = reduceproduct(theunit, 0); if (!(ret & REDUCTIONERROR)) ret |= reduceproduct(theunit, 1); if (ret & REDUCTIONERROR){ if (irreducible) return E_UNKNOWNUNIT; else return E_REDUCE; } else if (ret & CIRCULARDEF) return E_CIRCULARDEF; } return 0; } /* Returns one if the argument unit is defined in the data file as a dimensionless unit. This is determined by comparing its definition to the string NODIM. */ int ignore_dimless(char *name) { struct unitlist *ul; if (!name) return 0; ul = ulookup(name); if (ul && !strcmp(ul->value, NODIM)) return 1; return 0; } int ignore_nothing(char *name) { return 0; } int ignore_primitive(char *name) { struct unitlist *ul; if (!name) return 0; ul = ulookup(name); if (ul && strchr(ul->value, PRIMITIVECHAR)) return 1; return 0; } /* Compare two product lists, return zero if they match and one if they do not match. They may contain embedded NULLUNITs which are ignored in the comparison. Units defined as NODIM are also ignored in the comparison. */ int compareproducts(char **one, char **two, int (*isdimless)(char *name)) { int oneblank, twoblank; while (*one || *two) { oneblank = (*one==NULLUNIT) || isdimless(*one); twoblank = (*two==NULLUNIT) || isdimless(*two); if (!*one && !twoblank) return 1; if (!*two && !oneblank) return 1; if (oneblank) one++; else if (twoblank) two++; else if (strcmp(*one, *two)) return 1; else one++, two++; } return 0; } /* Return zero if units are compatible, nonzero otherwise. The units must be reduced, sorted and canceled for this to work. */ int compareunits(struct unittype *first, struct unittype *second, int (*isdimless)(char *name)) { return compareproducts(first->numerator, second->numerator, isdimless) || compareproducts(first->denominator, second->denominator, isdimless); } /* Reduce a unit as much as possible */ int completereduce(struct unittype *unit) { int err; if ((err=reduceunit(unit))) return err; sortunit(unit); cancelunit(unit); return 0; } /* Raise theunit to the specified power. This function does not fill in NULLUNIT gaps, which could be considered a deficiency. */ int expunit(struct unittype *theunit, int power) { char **numptr, **denptr; double thefactor; int i, uind, denlen, numlen; if (power==0){ freeunit(theunit); initializeunit(theunit); return 0; } numlen=0; for(numptr=theunit->numerator;*numptr;numptr++) numlen++; denlen=0; for(denptr=theunit->denominator;*denptr;denptr++) denlen++; thefactor=theunit->factor; for(i=1;ifactor *= thefactor; for(uind=0;uindnumerator[uind]!=NULLUNIT){ if (numptr-theunit->numerator>=MAXSUBUNITS-1) { *numptr=*denptr=0; return E_PRODOVERFLOW; } *numptr++=dupstr(theunit->numerator[uind]); } } for(uind=0;uinddenominator[uind]!=NULLUNIT){ *denptr++=dupstr(theunit->denominator[uind]); if (denptr-theunit->denominator>=MAXSUBUNITS-1) { *numptr=*denptr=0; return E_PRODOVERFLOW; } } } } *numptr=0; *denptr=0; return 0; } int unit2num(struct unittype *input) { struct unittype one; int err; initializeunit(&one); if ((err=completereduce(input))) return err; if (compareunits(input,&one,ignore_nothing)) return E_NOTANUMBER; freeunit(input); return 0; } int unitdimless(struct unittype *input) { struct unittype one; initializeunit(&one); if (compareunits(input, &one, ignore_dimless)) return 0; freeunit(input); /* Eliminate dimensionless units from list */ return 1; } /* The unitroot function takes the nth root of an input unit which has been completely reduced. Returns 1 if the unit is not a power of n. Input data can contain NULLUNITs. */ int subunitroot(int n,char *current[], char *out[]) { char **ptr; int count=0; while(*current==NULLUNIT) current++; /* skip past NULLUNIT entries */ ptr=current; while(*ptr){ while(*ptr){ if (*ptr!=NULLUNIT){ if (strcmp(*current,*ptr)) break; count++; } ptr++; } if (count % n != 0){ /* If not dimensionless generate error, otherwise */ if (!ignore_dimless(*current)) /* just skip over it */ return E_NOTROOT; } else { for(count /= n;count>0;count--) *(out++) = dupstr(*current); } current=ptr; } *out = 0; return 0; } int rootunit(struct unittype *inunit,int n) { struct unittype outunit; int err; initializeunit(&outunit); if ((err=completereduce(inunit))) return err; /* Roots of negative numbers fail in pow(), even odd roots */ if (inunit->factor < 0) return E_NOTROOT; outunit.factor = pow(inunit->factor,1.0/(double)n); if ((err = subunitroot(n, inunit->numerator, outunit.numerator))) return err; if ((err = subunitroot(n, inunit->denominator, outunit.denominator))) return err; freeunit(inunit); initializeunit(inunit); return multunit(inunit,&outunit); } /* Compute the inverse of a unit (1/theunit) */ void invertunit(struct unittype *theunit) { char **ptr, *swap; int numlen, length, ind; theunit->factor = 1.0/theunit->factor; length=numlen=0; for(ptr=theunit->denominator;*ptr;ptr++,length++); for(ptr=theunit->numerator;*ptr;ptr++,numlen++); if (numlen>length) length=numlen; for(ind=0;ind<=length;ind++){ swap = theunit->numerator[ind]; theunit->numerator[ind] = theunit->denominator[ind]; theunit->denominator[ind] = swap; } } int float2rat(double y, int *p, int *q) { int coef[20]; /* How long does this buffer need to be? */ int i,termcount,saveq; double fracpart,x; /* Compute continued fraction approximation */ x=y; termcount=0; while(1){ coef[termcount] = (int) floor(x); fracpart = x-coef[termcount]; if (fracpart < .001 || termcount==19) break; x = 1/fracpart; termcount++; } /* Compress continued fraction into rational p/q */ *p=0; *q=1; for(i=termcount;i>=1;i--) { saveq=*q; *q = coef[i] * *q + *p; *p = saveq; } *p+=*q*coef[0]; return *qfactor = pow(base->factor,exponent->factor); if (errno) return E_FUNC; } else if (errcode==E_NOTANUMBER) { /* Base not dimensionless */ if (!float2rat(exponent->factor,&p,&q)){ /* Exponent must be rational */ if (unitdimless(base)){ base->factor = pow(base->factor,exponent->factor); if (errno) return E_FUNC; } else return E_IRRATIONAL_EXPONENT; } else { if (q!=1) { errcode = rootunit(base, q); if (errcode == E_NOTROOT) return E_BASE_NOTROOT; if (errcode) return errcode; } errcode = expunit(base, abs(p)); if (errcode) return errcode; if (p<0) invertunit(base); } } else return errcode; return 0; } /* Old units program would give message about what each operand reduced to, showing that they weren't conformable. Can this be achieved here? */ int addunit(struct unittype *unita, struct unittype *unitb) { int err; if ((err=completereduce(unita))) return err; if ((err=completereduce(unitb))) return err; if (compareunits(unita,unitb,ignore_nothing)) return E_BADSUM; unita->factor += unitb->factor; freeunit(unitb); return 0; } double linearinterp(double a, double b, double aval, double bval, double c) { double lambda; lambda = (b-c)/(b-a); return lambda*aval + (1-lambda)*bval; } /* evaluate a user function */ #define INVERSE 1 #define FUNCTION 0 #define ALLERR 1 #define NORMALERR 0 int evalfunc(struct unittype *theunit, struct func *infunc, int inverse, int allerrors) { struct unittype result; struct functype *thefunc; int err; double value; int foundit, count; struct unittype *save_value; char *save_function; if (infunc->table) { /* Tables are short, so use dumb search algorithm */ err = parseunit(&result, infunc->tableunit, 0, 0); if (err) return E_BADFUNCDIMEN; if (inverse){ err = divunit(theunit, &result); if (err) return err; err = unit2num(theunit); if (err==E_NOTANUMBER) return E_BADFUNCARG; if (err) return err; value = theunit->factor; foundit=0; for(count=0;counttablelen-1;count++) if ((infunc->table[count].value<=value && value<=infunc->table[count+1].value) || (infunc->table[count+1].value<=value && value<=infunc->table[count].value)){ foundit=1; value = linearinterp(infunc->table[count].value, infunc->table[count+1].value, infunc->table[count].location, infunc->table[count+1].location, value); break; } if (!foundit) return E_NOTINDOMAIN; freeunit(&result); freeunit(theunit); theunit->factor = value; return 0; } else { err=unit2num(theunit); if (err) return err; value=theunit->factor; foundit=0; for(count=0;counttablelen-1;count++) if (infunc->table[count].location<=value && value<=infunc->table[count+1].location){ foundit=1; value = linearinterp(infunc->table[count].location, infunc->table[count+1].location, infunc->table[count].value, infunc->table[count+1].value, value); break; } if (!foundit) return E_NOTINDOMAIN; result.factor *= value; } } else { /* it's a function */ if (inverse){ thefunc=&(infunc->inverse); if (!thefunc->def) return E_NOINVERSE; } else thefunc=&(infunc->forward); err = completereduce(theunit); if (err) return err; if (thefunc->dimen){ err = parseunit(&result, thefunc->dimen, 0, 0); if (err) return E_BADFUNCDIMEN; err = completereduce(&result); if (err) return E_BADFUNCDIMEN; if (compareunits(&result, theunit, ignore_nothing)) return E_BADFUNCARG; value = theunit->factor/result.factor; } else value = theunit->factor; if (thefunc->domain_max && (value > *thefunc->domain_max || (thefunc->domain_max_open && value == *thefunc->domain_max))) return E_NOTINDOMAIN; if (thefunc->domain_min && (value < *thefunc->domain_min || (thefunc->domain_min_open && value == *thefunc->domain_min))) return E_NOTINDOMAIN; save_value = parameter_value; save_function = function_parameter; parameter_value = theunit; function_parameter = thefunc->param; err = parseunit(&result, thefunc->def, 0,0); function_parameter = save_function; parameter_value = save_value; if (err && (allerrors == ALLERR || err==E_PARSEMEM || err==E_PRODOVERFLOW || err==E_NOTROOT || err==E_BADFUNCTYPE)) return err; if (err) return E_FUNARGDEF; } freeunit(theunit); initializeunit(theunit); multunit(theunit, &result); return 0; } /* append a formatted string to a buffer; first character of buffer should be '\0' on first call */ size_t vbufprintf(char **buf, size_t *bufsize, char *fmt, ...) { va_list args; size_t oldlen, /* length of current buffer contents */ newlen, /* length of string to be added */ buflen; /* length of new buffer contents */ double growfactor = 1.5; static char *newbuf = NULL; char *oldbuf; oldlen = strlen(*buf); oldbuf = dupstr(*buf); /* get length of formatted string to be appended to buffer */ va_start(args, fmt); newlen = vsnprintf(NULL, 0, fmt, args); va_end(args); /* allocate a buffer for the new string */ newbuf = (char *) malloc(newlen + 1); if (newbuf == NULL) { fprintf(stderr, "%s (bufprintf): memory allocation error\n", progname); exit(EXIT_FAILURE); } /* expand main buffer if necessary */ if (*bufsize < oldlen + newlen + 1) { *bufsize = (size_t) ((oldlen + newlen) * growfactor + 1); *buf = (char *) realloc(*buf, *bufsize); if (*buf == NULL) { fprintf(stderr, "%s (bufprintf): memory allocation error\n", progname); exit(EXIT_FAILURE); } } /* generate the new formatted string */ va_start(args, fmt); newlen = vsprintf(newbuf, fmt, args); va_end(args); /* copy old and new strings to buffer */ strcpy(*buf, oldbuf); strcat(*buf, newbuf); buflen = strlen(*buf); free(oldbuf); free(newbuf); return buflen; } /* similar to showunit(), but it saves the string in a buffer rather than sending it to an output stream */ char * buildunitstr(struct unittype *theunit) { char **ptr; char *buf; int printedslash; int counter = 1; size_t bufsize, newlen; bufsize = 256; buf = (char *) mymalloc(bufsize, "(buildunitstr)"); *buf = '\0'; /* factor */ newlen = vbufprintf(&buf, &bufsize, num_format.format, theunit->factor); /* numerator */ for (ptr = theunit->numerator; *ptr; ptr++) { if (ptr > theunit->numerator && **ptr && !strcmp(*ptr, *(ptr - 1))) counter++; else { if (counter > 1) newlen = vbufprintf(&buf, &bufsize, "%s%d", powerstring, counter); if (**ptr) newlen = vbufprintf(&buf, &bufsize, " %s", *ptr); counter = 1; } } if (counter > 1) newlen = vbufprintf(&buf, &bufsize, "%s%d", powerstring, counter); counter = 1; printedslash = 0; /* denominator */ for (ptr = theunit->denominator; *ptr; ptr++) { if (ptr > theunit->denominator && **ptr && !strcmp(*ptr, *(ptr - 1))) counter++; else { if (counter > 1) newlen = vbufprintf(&buf, &bufsize, "%s%d", powerstring, counter); if (**ptr) { if (!printedslash) newlen = vbufprintf(&buf, &bufsize, " /"); printedslash = 1; newlen = vbufprintf(&buf, &bufsize, " %s", *ptr); } counter = 1; } } if (counter > 1) newlen = vbufprintf(&buf, &bufsize, "%s%d", powerstring, counter); return buf; } /* If the given character string has only one unit name in it, then print out the rule for that unit. In any case, print out the reduced form for the unit. */ void showdefinition(char *unitstr, struct unittype *theunit) { size_t bufsize = 256; char *buf, *showstr; logputs(deftext); showstr = buildunitstr(theunit); buf = (char *) mymalloc(bufsize, "(showdefinition)"); while((unitstr = lookupunit(unitstr,1)) && strspn(unitstr,digits) != strlen(unitstr) && !strchr(unitstr,PRIMITIVECHAR)) { if (strlen(unitstr) > bufsize - 1) { bufsize = strlen(unitstr) + 1; buf = realloc(buf, bufsize); } tightbufprint(buf, unitstr); logputs(buf); if (strcmp(buf, showstr)) logputs(" = "); } if (strcmp(buf, showstr)) logputs(showstr); logputchar('\n'); free(buf); free(showstr); } void showfunction(struct functype *func) { struct unittype unit; int not_dimensionless, i; if (!func->def) { logputs(" is undefined"); return; } if (func->dimen){ /* coverity[check_return] */ parseunit(&unit,func->dimen,0,0); /* unit2num returns 0 for */ not_dimensionless = unit2num(&unit); /* dimensionless units */ } logprintf("(%s) = %s", func->param, func->def); if (func->domain_min || func->domain_max){ logputchar('\n'); for(i=strwidth(deftext);i;i--) logputchar(' '); logputs("defined for "); if (func->domain_min && func->domain_max) { logprintf(num_format.format, *func->domain_min); if (func->dimen && (not_dimensionless || unit.factor != 1)){ if (isdecimal(*func->dimen)) logputs(" *"); logprintf(" %s",func->dimen); } logputs(func->domain_min_open?" < ":" <= "); } logputs(func->param); if (func->domain_max){ logputs(func->domain_max_open?" < ":" <= "); logprintf(num_format.format, *func->domain_max); } else { logputs(func->domain_min_open?" > ":" >= "); logprintf(num_format.format, *func->domain_min); } if (func->dimen && (not_dimensionless || unit.factor != 1)){ if (isdecimal(*func->dimen)) logputs(" *"); logprintf(" %s",func->dimen); } if (!func->dimen) logputs(" (any units)"); } else if (func->dimen){ logputchar('\n'); for(i=strwidth(deftext);i;i--) logputchar(' '); if (not_dimensionless) logprintf("%s has units %s",func->param, func->dimen); else logprintf("%s is dimensionless",func->param); } logputchar('\n'); } void showtable(struct func *fun, int inverse) { int i; logprintf("%sinterpolated table with points\n",deftext); if (inverse){ int reverse, j; reverse = (fun->table[0].value > fun->table[fun->tablelen-1].value); for(i=0;itablelen;i++){ if (reverse) j = fun->tablelen-i-1; else j=i; if (flags.verbose>0) logputs("\t\t "); logprintf("~%s(", fun->name); logprintf(num_format.format, fun->table[j].value); if (isdecimal(fun->tableunit[0])) logputs(" *"); logprintf(" %s",fun->tableunit); logputs(") = "); logprintf(num_format.format, fun->table[j].location); logputchar('\n'); } } else { for(i=0;itablelen;i++){ if (flags.verbose>0) logputs("\t\t "); logprintf("%s(", fun->name); logprintf(num_format.format, fun->table[i].location); logputs(") = "); logprintf(num_format.format, fun->table[i].value); if (isdecimal(fun->tableunit[0])) logputs(" *"); logprintf(" %s\n",fun->tableunit); } } } void showfuncdefinition(struct func *fun, int inverse) { if (fun->table) /* It's a table */ showtable(fun, inverse); else { logprintf("%s%s%s", deftext,inverse?"~":"", fun->name); if (inverse) showfunction(&fun->inverse); else showfunction(&fun->forward); } } void showunitlistdef(struct wantalias *alias) { logprintf("%sunit list, ",deftext); tightprint(stdout,alias->definition); if (logfile) tightprint(logfile,alias->definition); logputchar('\n'); } /* Show conversion to a function. Input unit 'have' is replaced by the function inverse and completely reduced. */ int showfunc(char *havestr, struct unittype *have, struct func *fun) { int err; char *dimen; err = evalfunc(have, fun, INVERSE, NORMALERR); if (!err) err = completereduce(have); if (err) { if (err==E_BADFUNCARG){ logputs("conformability error"); if (fun->table) dimen = fun->tableunit; else if (fun->inverse.dimen) dimen = fun->inverse.dimen; else dimen = 0; if (!dimen) logputchar('\n'); else { struct unittype want; if (emptystr(dimen)) dimen = "1"; logprintf(": conversion requires dimensions of '%s'\n",dimen); if (flags.verbose==2) logprintf("\t%s = ",havestr); else if (flags.verbose==1) logputchar('\t'); showunit(have); if (flags.verbose==2) logprintf("\n\t%s = ",dimen); else if (flags.verbose==1) logprintf("\n\t"); else logputchar('\n'); /* coverity[check_return] */ parseunit(&want, dimen, 0, 0); /* coverity[check_return] */ completereduce(&want); /* dimen was already checked for */ showunit(&want); /* errors so no need to check here */ logputchar('\n'); } } else if (err==E_NOTINDOMAIN) logprintf("Value '%s' is not in the function's range\n",havestr); else if (err==E_NOINVERSE) logprintf("Inverse of the function '%s' is not defined\n",fun->name); else logputs("Function evaluation error (bad function definition)\n"); return 1; } if (flags.verbose==2) logprintf("\t%s = %s(", havestr, fun->name); else if (flags.verbose==1) logputchar('\t'); showunit(have); if (flags.verbose==2) logputchar(')'); logputchar('\n'); return 0; } /* Print the conformability error message */ void showconformabilityerr(char *havestr,struct unittype *have, char *wantstr,struct unittype *want) { logputs("conformability error\n"); if (flags.verbose==2) logprintf("\t%s = ",havestr); else if (flags.verbose==1) logputchar('\t'); showunit(have); if (flags.verbose==2) logprintf("\n\t%s = ",wantstr); else if (flags.verbose==1) logputs("\n\t"); else logputchar('\n'); showunit(want); logputchar('\n'); } /* end showconformabilityerr */ /* determine whether a unit string begins with a fraction; assume it does if it starts with an integer, '|', and another integer */ int isfract(const char *unitstr) { char *enddouble=0, *endlong=0; while (isdigit(*unitstr)) unitstr++; if (*unitstr++ == '|') { (void)strtod(unitstr, &enddouble); (void)strtol(unitstr, &endlong, 10); if (enddouble == endlong) return 1; } return 0; } int checksigdigits(char *arg) { int errors, ival; char *nonum; errors = 0; if (!strcmp(arg, "max")) num_format.precision = MAXPRECISION; else { ival = (int) strtol(arg, &nonum, 10); if (!emptystr(nonum)) { fprintf(stderr, "%s: invalid significant digits (%s)--integer value or 'max' required\n", progname, arg); errors++; } else if (ival <= 0) { fprintf(stderr, "%s: number of significant digits must be positive\n", progname); errors++; } else if (ival > MAXPRECISION) { fprintf(stderr, "%s: too many significant digits (%d)--using maximum value (%d)\n", progname, ival, MAXPRECISION); num_format.precision = MAXPRECISION; } else num_format.precision = ival; } if (errors) return -1; else return 0; } /* set output number format specification from significant digits and type */ int setnumformat() { size_t len; if (strchr("Ee", num_format.type)) num_format.precision--; len = 4; /* %, decimal point, type, terminating NUL */ if (num_format.precision > 0) len += (size_t) floor(log10((double) num_format.precision))+1; num_format.format = (char *) mymalloc(len, "(setnumformat)"); sprintf(num_format.format, "%%.%d%c", num_format.precision, num_format.type); return 0; } /* parse and validate the output number format specification and extract its type and precision into the num_format structure. Returns nonzero for invalid format. */ int parsenumformat() { static char *format_types = NULL; static char *format_flags = "+-# 0'"; static char badflag; char *two = "0x1p+1"; char *valid="ABCDEFGHIJKLMNOPQRSTUVWXYXabcdefghijklmnopqrstuvwxyx.01234567890"; char *dotptr, *lptr, *nonum, *p; char testbuf[80]; int errors, ndx; if (format_types == NULL){ format_types = (char *) mymalloc(strlen(BASE_FORMATS)+4, "(parsenumformat)"); strcpy(format_types,BASE_FORMATS); /* check for support of type 'F' (MS VS 2012 doesn't have it) */ sprintf(testbuf, "%.1F", 1.2); if (strlen(testbuf) == 3 && testbuf[0] == '1' && testbuf[2] == '2') strcat(format_types,"F"); /* check for support of hexadecimal floating point */ sprintf(testbuf, "%.0a", 2.0); if (!strcmp(testbuf,two)) strcat(format_types, "aA"); /* check for support of digit-grouping (') flag */ sprintf(testbuf, "%'.0f", 1234.0); if (strlen(testbuf) > 2 && testbuf[0] == '1' && testbuf[2] == '2') badflag = '\0'; /* supported */ else badflag = '\''; /* not supported */ } errors = 0; p = num_format.format; if (*p != '%') { fprintf(stderr, "%s: number format specification must start with '%%'\n", progname); errors++; } else if (strrchr(num_format.format, '%') != num_format.format) { fprintf(stderr, "%s: only one '%%' allowed in number format specification\n", progname); errors++; p++; } else p++; dotptr = strchr(num_format.format, '.'); if (dotptr && strrchr(num_format.format, '.') != dotptr) { fprintf(stderr, "%s: only one '.' allowed in number format specification\n", progname); errors++; } /* skip over flags */ while (*p && strchr(format_flags, *p)) { if (*p == badflag) { /* only if digit-grouping flag (') not supported */ fprintf(stderr, "%s: digit-grouping flag (') not supported\n", progname); errors++; } p++; } /* check for type length modifiers, which aren't allowed */ if ((lptr = strstr(num_format.format, "hh")) || (lptr = strstr(num_format.format, "ll"))) { fprintf(stderr, "%s: type length modifier (%.2s) not supported\n", progname, lptr); errors++; } else if ((lptr = strpbrk(num_format.format, "hjLltz"))) { fprintf(stderr, "%s: type length modifier (%c) not supported\n", progname, lptr[0]); errors++; } /* check for other invalid characters */ ndx = strspn(p, valid); if (ndx < strlen(p)) { fprintf(stderr, "%s: invalid character (%c) in width, precision, or type\n", progname, p[ndx]); errors++; } if (errors) { /* results of any other checks are likely to be misleading */ fprintf(stderr, "%s: invalid number format specification (%s)\n", progname, num_format.format); fprintf(stderr, "%s: valid specification is %%[flags][width][.precision]type\n", progname); return -1; } /* get width and precision if specified; check precision */ num_format.width = (int) strtol(p, &nonum, 10); if (*nonum == '.'){ if (isdigit(nonum[1])) num_format.precision = (int) strtol(nonum+1, &nonum, 10); else { num_format.precision = 0; nonum++; } } else /* precision not given--use printf() default */ num_format.precision = 6; /* check for valid format type */ if (emptystr(nonum)) { fprintf(stderr, "%s: missing format type\n", progname); errors++; } else { if (strchr(format_types, *nonum)) { if (nonum[1]) { fprintf(stderr, "%s: invalid character(s) (%s) after format type\n", progname, nonum + 1); errors++; } else num_format.type = *nonum; } else { fprintf(stderr, "%s: invalid format type (%c)--valid types are [%s]\n", progname, *nonum, format_types); errors++; } } if (num_format.precision == 0 && (num_format.type == 'G' || num_format.type == 'g')) num_format.precision = 1; if (errors) { fprintf(stderr, "%s: invalid number format specification (%s)\n", progname, num_format.format); fprintf(stderr, "%s: valid specification is %%[flags][width][.precision]type\n", progname); return -1; } else return 0; } /* round a number to the lesser of the displayed precision or the remaining significant digits; indicate in hasnondigits if a number will contain any character other than the digits 0-9 in the current display format. */ double round_output(double value, int sigdigits, int *hasnondigits) { int buflen; char *buf; double rounded; double mult_factor, rdigits; int fmt_digits; /* decimal significant digits in format */ if (!isfinite(value)){ if (hasnondigits) *hasnondigits = 1; return value; } fmt_digits = num_format.precision; switch (num_format.type) { case 'A': case 'a': sigdigits = round(sigdigits * log2(10) / 4); fmt_digits++; break; case 'E': case 'e': fmt_digits++; break; case 'F': case 'f': if (fabs(value) > 0) fmt_digits += ceil(log10(fabs(value))); break; } if (sigdigits < fmt_digits) rdigits = sigdigits; else rdigits = fmt_digits; /* place all significant digits to the right of the radix */ if (value != 0) rdigits -= ceil(log10(fabs(value))); /* then handle like rounding to specified decimal places */ mult_factor = pow(10.0, rdigits); rounded = round(value * mult_factor) / mult_factor; /* allow for sign (1), radix (1), exponent (5), E or E formats (1), NUL */ buflen = num_format.precision + 9; if (num_format.width > buflen) buflen = num_format.width; if (strchr("Ff", num_format.type)) { int len=num_format.precision+2; if (fabs(value) > 1.0) len += (int) floor(log10(fabs(value))) + 1; if (len > buflen) buflen = len; } /* allocate space for thousands separators with digit-grouping (') flag */ /* assume worst case--that all groups are two digits */ if (strchr(num_format.format, '\'') && strchr("FfGg", num_format.type)) buflen = buflen*3/2; buf = (char *) mymalloc(buflen, "(round_output)"); sprintf(buf, num_format.format, value); if (hasnondigits){ if (strspn(buf, "1234567890") != strlen(buf)) *hasnondigits = 1; else *hasnondigits = 0; } free(buf); return rounded; } /* Determine significant digits in remainder relative to an original value which is assumed to have full double precision. Returns the number of binary or decimal digits depending on the value of base, which must be 2 or 10. */ int getsigdigits(double original, double remainder, int base) { int sigdigits; double maxdigits; double (*logfunc)(double); if (base == 2) { maxdigits = DBL_MANT_DIG; logfunc = log2; } else { maxdigits = DBL_MANT_DIG * log10(2.0); logfunc = log10; } if (original == 0) return floor(maxdigits); else if (remainder == 0) return 0; sigdigits = floor(maxdigits - logfunc(fabs(original/remainder))); if (sigdigits < 0) sigdigits = 0; return sigdigits; } /* Rounds a double to the specified number of binary or decimal digits. The base argument must be 2 or 10. */ double round_digits(double value, int digits, int base) { double mult_factor; double (*logfunc)(double); if (digits == 0) return 0.0; if (base == 2) logfunc = log2; else logfunc = log10; if (value != 0) digits -= ceil(logfunc(fabs(value))); mult_factor = pow((double) base, digits); return round(value*mult_factor)/mult_factor; } /* Returns true if the value will display as equal to the reference and if hasnondigits is non-null then return true if the displayed output contains any character in "0123456789". */ int displays_as(double reference, double value, int *hasnondigits) { int buflen; char *buf; double rounded; if (!isfinite(value)){ if (hasnondigits) *hasnondigits = 1; return 0; } /* allow for sign (1), radix (1), exponent (5), E or E formats (1), NUL */ buflen = num_format.precision + 9; if (num_format.width > buflen) buflen = num_format.width; if (strchr("Ff", num_format.type)) { int len=num_format.precision+2; if (fabs(value) > 1.0) len += (int) floor(log10(fabs(value))) + 1; if (len > buflen) buflen = len; } /* allocate space for thousands separators with digit-grouping (') flag */ /* assume worst case--that all groups are two digits */ if (strchr(num_format.format, '\'') && strchr("FfGg", num_format.type)) buflen = buflen*3/2; buf = (char *) mymalloc(buflen, "(round_to_displayed)"); sprintf(buf, num_format.format, value); if (hasnondigits){ if (strspn(buf, "1234567890") != strlen(buf)) *hasnondigits = 1; else *hasnondigits = 0; } rounded = strtod(buf, NULL); free(buf); return rounded==reference; } /* Print the unit in 'unitstr' along with any necessary punctuation. The 'value' is the multiplier for the unit. If printnum is set to PRINTNUM then this value is printed, or set it to NOPRINTNUM to prevent the value from being printed. */ #define PRINTNUM 1 #define NOPRINTNUM 0 void showunitname(double value, char *unitstr, int printnum) { int hasnondigits; /* flag to indicate nondigits in displayed value */ int is_one; /* Does the value display as 1? */ is_one = displays_as(1, value, &hasnondigits); if (printnum && !(is_one && isdecimal(*unitstr))) logprintf(num_format.format, value); if (strpbrk(unitstr, "+-")) /* show sums and differences of units */ logprintf(" (%s)", unitstr); /* in parens */ /* fractional unit 1|x and multiplier is all digits and not one-- */ /* no space or asterisk or numerator (3|8 in instead of 3 * 1|8 in) */ else if (printnum && !flags.showfactor && startswith(unitstr,"1|") && isfract(unitstr) && !is_one && !hasnondigits) logputs(unitstr+1); /* multiplier is unity and unit begins with a number--no space or */ /* asterisk (multiplier was not shown, and the space was already output)*/ else if (is_one && isdecimal(*unitstr)) logputs(unitstr); /* unitstr begins with a non-fraction number and multiplier was */ /* shown--prefix a spaced asterisk */ else if (isdecimal(unitstr[0])) logprintf(" * %s", unitstr); else logprintf(" %s", unitstr); } /* Show the conversion factors or print the conformability error message */ int showanswer(char *havestr,struct unittype *have, char *wantstr,struct unittype *want) { struct unittype invhave; int doingrec; /* reciprocal conversion? */ char *right = NULL, *left = NULL; doingrec=0; if (compareunits(have, want, ignore_dimless)) { char **src,**dest; invhave.factor=1/have->factor; for(src=have->numerator,dest=invhave.denominator;*src;src++,dest++) *dest=*src; *dest=0; for(src=have->denominator,dest=invhave.numerator;*src;src++,dest++) *dest=*src; *dest=0; if (flags.strictconvert || compareunits(&invhave, want, ignore_dimless)){ showconformabilityerr(havestr, have, wantstr, want); return -1; } if (flags.verbose>0) logputchar('\t'); logputs("reciprocal conversion\n"); have=&invhave; doingrec=1; } if (flags.verbose==2) { if (!doingrec) left=right=""; else if (strchr(havestr,'/')) { left="1 / ("; right=")"; } else { left="1 / "; right=""; } } /* Print the first line of output. */ if (flags.verbose==2) logprintf("\t%s%s%s = ",left,havestr,right); else if (flags.verbose==1) logputs("\t* "); if (flags.verbose==2) showunitname(have->factor / want->factor, wantstr, PRINTNUM); else logprintf(num_format.format, have->factor / want->factor); /* Print the second line of output. */ if (!flags.oneline){ if (flags.verbose==2) logprintf("\n\t%s%s%s = (1 / ",left,havestr,right); else if (flags.verbose==1) logputs("\n\t/ "); else logputchar('\n'); logprintf(num_format.format, want->factor / have->factor); if (flags.verbose==2) { logputchar(')'); showunitname(0,wantstr, NOPRINTNUM); } } logputchar('\n'); return 0; } /* Checks that the function definition has a valid inverse Prints a message to stdout if function has bad definition or invalid inverse. */ #define SIGN(x) ( (x) > 0.0 ? 1 : \ ( (x) < 0.0 ? (-1) : \ 0 )) void checkfunc(struct func *infunc, int verbose) { struct unittype theunit, saveunit; struct prefixlist *prefix; int err, i; double direction; if (infunc->skip_error_check){ if (verbose) printf("skipped function '%s'\n", infunc->name); return; } if (verbose) printf("doing function '%s'\n", infunc->name); if ((prefix=plookup(infunc->name)) && strlen(prefix->name)==strlen(infunc->name)) printf("Warning: '%s' defined as prefix and function\n",infunc->name); if (infunc->table){ /* Check for valid unit for the table */ if (parseunit(&theunit, infunc->tableunit, 0, 0) || completereduce(&theunit)) printf("Table '%s' has invalid units '%s'\n", infunc->name, infunc->tableunit); freeunit(&theunit); /* Check for monotonicity which is needed for unique inverses */ if (infunc->tablelen<=1){ printf("Table '%s' has only one data point\n", infunc->name); return; } direction = SIGN(infunc->table[1].value - infunc->table[0].value); for(i=2;itablelen;i++) if (SIGN(infunc->table[i].value-infunc->table[i-1].value) != direction){ printf("Table '%s' lacks unique inverse around entry " ERRNUMFMT "\n", infunc->name, infunc->table[i].location); return; } return; } if (infunc->forward.dimen){ if (parseunit(&theunit, infunc->forward.dimen, 0, 0) || completereduce(&theunit)){ printf("Function '%s' has invalid units '%s'\n", infunc->name, infunc->forward.dimen); freeunit(&theunit); return; } } else initializeunit(&theunit); if (infunc->forward.domain_max && infunc->forward.domain_min) theunit.factor *= (*infunc->forward.domain_max+*infunc->forward.domain_min)/2; else if (infunc->forward.domain_max) theunit.factor = theunit.factor * *infunc->forward.domain_max - 1; else if (infunc->forward.domain_min) theunit.factor = theunit.factor * *infunc->forward.domain_min + 1; else theunit.factor *= 7; /* Arbitrary choice where we evaluate inverse */ if (infunc->forward.dimen){ unitcopy(&saveunit, &theunit); err = evalfunc(&theunit, infunc, FUNCTION, ALLERR); if (err) { printf("Error in definition %s(%s) as '%s':\n", infunc->name, infunc->forward.param, infunc->forward.def); printf(" %s\n",errormsg[err]); freeunit(&theunit); freeunit(&saveunit); return; } } else { # define MAXPOWERTOCHECK 4 struct unittype resultunit, arbunit; char unittext[9]; double factor; int errors[MAXPOWERTOCHECK], errcount=0; char *indent; strcpy(unittext,"(kg K)^ "); factor = theunit.factor; initializeunit(&saveunit); initializeunit(&resultunit); for(i=0;iname, infunc->forward.param, infunc->forward.def); printf(" appears to require a dimensionless argument, 'units' keyword not given\n"); indent = " "; } else if (errcount==MAXPOWERTOCHECK) { printf("Error or missing 'units' keyword in definion %s(%s) as '%s'\n", infunc->name, infunc->forward.param, infunc->forward.def); indent=" "; } else if (errcount){ printf("Warning: function '%s(%s)' defined as '%s'\n", infunc->name, infunc->forward.param, infunc->forward.def); printf(" failed for some test inputs:\n"); indent = " "; } for(i=0;iname); printf(num_format.format, factor); printf("%s): %s\n", unittext, errormsg[errors[i]]); } } if (completereduce(&theunit)){ printf("Definition %s(%s) as '%s' is irreducible\n", infunc->name, infunc->forward.param, infunc->forward.def); freeunit(&theunit); freeunit(&saveunit); return; } if (!(infunc->inverse.def)){ printf("Warning: no inverse for function '%s'\n", infunc->name); freeunit(&theunit); freeunit(&saveunit); return; } err = evalfunc(&theunit, infunc, INVERSE, ALLERR); if (err){ printf("Error in inverse ~%s(%s) as '%s':\n", infunc->name,infunc->inverse.param, infunc->inverse.def); printf(" %s\n",errormsg[err]); freeunit(&theunit); freeunit(&saveunit); return; } divunit(&theunit, &saveunit); if (unit2num(&theunit) || fabs(theunit.factor-1)>1e-12) printf("Inverse is not the inverse for function '%s'\n", infunc->name); freeunit(&theunit); } struct namedef { char *name; char *def; }; #define CONFORMABLE 1 #define TEXTMATCH 2 void addtolist(struct unittype *have, char *searchstring, char *rname, char *name, char *def, struct namedef **list, int *listsize, int *maxnamelen, int *count, int searchtype) { struct unittype want; int len = 0; int keepit = 0; if (!name) return; if (searchtype==CONFORMABLE){ initializeunit(&want); if (!parseunit(&want, name,0,0) && !completereduce(&want)) keepit = !compareunits(have,&want,ignore_dimless); } else if (searchtype == TEXTMATCH) { keepit = (strstr(rname,searchstring) != NULL); } if (keepit){ if (*count==*listsize){ *listsize += 100; *list = (struct namedef *) realloc(*list,*listsize*sizeof(struct namedef)); if (!*list){ fprintf(stderr, "%s: memory allocation error (addtolist)\n", progname); exit(EXIT_FAILURE); } } (*list)[*count].name = rname; if (strchr(def, PRIMITIVECHAR)) (*list)[*count].def = ""; else (*list)[*count].def = def; (*count)++; len = strwidth(name); if (len>*maxnamelen) *maxnamelen = len; } if (searchtype == CONFORMABLE) freeunit(&want); } int compnd(const void *a, const void *b) { return strcmp(((struct namedef *)a)->name, ((struct namedef *)b)->name); } int screensize() { int lines = 20; /* arbitrary but probably safe value */ #if defined (_WIN32) && defined (_MSC_VER) CONSOLE_SCREEN_BUFFER_INFO csbi; if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi)) lines = csbi.srWindow.Bottom - csbi.srWindow.Top + 1; #endif #ifdef HAVE_IOCTL struct winsize ws; int fd; fd = open("/dev/tty", O_RDWR); if (fd>=0 && ioctl(fd, TIOCGWINSZ, &ws)==0) lines = ws.ws_row; #endif return lines; } /* determines whether the output will fit on the screen, and opens a pager if it won't */ FILE * get_output_fp(int lines) { FILE *fp = NULL; if (isatty(fileno(stdout)) && screensize() < lines) { if ((fp = popen(pager, "w")) == NULL) { fprintf(stderr, "%s: can't run pager '%s--'", progname, pager); perror((char*) NULL); } } if (!fp) fp = stdout; return fp; } int countlines(char *msg) { int nlines = 0; char *p; for (p = msg; *p; p++) if (*p == '\n') nlines++; return nlines; } /* If have is non-NULL then search through all units and print the ones which are conformable with have. Otherwise search through all the units for ones whose names contain the second argument as a substring. */ void tryallunits(struct unittype *have, char *searchstring) { struct unitlist *uptr; struct namedef *list; int listsize, maxnamelen, count; struct func *funcptr; struct wantalias *aliasptr; int i, j, searchtype; FILE *outfile; char *seploc, *firstunit; list = (struct namedef *) mymalloc( 100 * sizeof(struct namedef), "(tryallunits)"); listsize = 100; maxnamelen = 0; count = 0; if (have) searchtype = CONFORMABLE; else { if (!searchstring) searchstring=""; searchtype = TEXTMATCH; } for(i=0;inext) addtolist(have, searchstring, uptr->name, uptr->name, uptr->value, &list, &listsize, &maxnamelen, &count, searchtype); for(i=0;inext){ if (funcptr->table) addtolist(have, searchstring, funcptr->name, funcptr->tableunit, "", &list, &listsize, &maxnamelen, &count, searchtype); else addtolist(have, searchstring, funcptr->name, funcptr->inverse.dimen, "", &list, &listsize, &maxnamelen, &count, searchtype); } for(aliasptr=firstalias;aliasptr;aliasptr=aliasptr->next){ firstunit = dupstr(aliasptr->definition);/* coverity[var_assigned] */ seploc = strchr(firstunit,UNITSEPCHAR); /* Alias definitions allowed in */ *seploc = 0; /* database contain UNITSEPCHAR */ addtolist(have, searchstring, aliasptr->name, firstunit, aliasptr->definition, &list, &listsize, &maxnamelen, &count, searchtype); free(firstunit); } qsort(list, count, sizeof(struct namedef), compnd); if (count==0) puts("No matching units found."); #ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); #endif /* see if we need a pager */ outfile = get_output_fp(count); for(i=0;i 0 || flags.interactive) { for(j=strwidth(list[i].name);j<=maxnamelen;j++) putc(' ',outfile); tightprint(outfile,list[i].def); } fputc('\n',outfile); } if (outfile != stdout) pclose(outfile); #ifdef SIGPIPE signal(SIGPIPE, SIG_DFL); #endif } /* If quiet is false then prompt user with the query. Fetch one line of input and return it in *buffer. The bufsize argument is a dummy argument if we are using readline. The readline version frees buffer if it is non-null. The other version keeps the same buffer and grows it as needed. If no data is read, then this function exits the program. */ void getuser_noreadline(char **buffer, int *bufsize, const char *query) { #ifdef SUPPORT_UTF8 int valid = 0; while(!valid){ fputs(query, stdout); if (!fgetslong(buffer, bufsize, stdin,0)){ if (!flags.quiet) putchar('\n'); exit(EXIT_SUCCESS); } valid = strwidth(*buffer)>=0; if (!valid) printf("Error: %s\n",invalid_utf8); } #else fputs(query, stdout); if (!fgetslong(buffer, bufsize, stdin,0)){ if (!flags.quiet) putchar('\n'); exit(EXIT_SUCCESS); } #endif } #ifndef READLINE # define getuser getuser_noreadline #else /* we DO have readline */ void getuser_readline(char **buffer, int *bufsize, const char *query) { #ifdef SUPPORT_UTF8 int valid = 0; while (!valid){ if (*buffer) free(*buffer); *buffer = readline(query); if (*buffer) replacectrlchars(*buffer); if (!*buffer || strwidth(*buffer)>=0) valid=1; else printf("Error: %s\n",invalid_utf8); } #else if (*buffer) free(*buffer); *buffer = readline(query); if (*buffer) replacectrlchars(*buffer); #endif if (nonempty(*buffer)) add_history(*buffer); if (!*buffer){ if (!flags.quiet) putchar('\n'); exit(EXIT_SUCCESS); } } void getuser(char **buffer, int *bufsize, const char *query) { if (flags.readline) getuser_readline(buffer,bufsize,query); else getuser_noreadline(buffer,bufsize,query); } /* Unit name completion for readline. Complete function names or alias names or builtin functions. Complete to the end of a prefix or complete to the end of a unit. If the text includes a full prefix plus part of a unit and if the prefix is longer than one character then complete that compound. Don't complete a prefix fragment into prefix plus anything. */ #define CU_ALIAS 0 #define CU_BUILTIN 1 #define CU_FUNC 2 #define CU_PREFIX 3 #define CU_UNITS 4 #define CU_DONE 5 char * completeunits(char *text, int state) { static int uhash, fhash, phash, checktype; static struct prefixlist *curprefix, *unitprefix; static struct unitlist *curunit; static struct func *curfunc; static struct wantalias *curalias; static char **curbuiltin; char *output = 0; #ifndef NO_SUPPRESS_APPEND rl_completion_suppress_append = 1; #endif if (!state){ /* state == 0 means this is the first call, so initialize */ checktype = 0; /* start at first type */ fhash = uhash = phash = 0; unitprefix=0; /* search for unit continuations starting with this prefix */ curfunc=ftab[fhash]; curunit=utab[uhash]; curprefix=ptab[phash]; curbuiltin = builtins; curalias = firstalias; } while (checktype != CU_DONE){ if (checktype == CU_ALIAS){ while(curalias){ if (startswith(curalias->name,text)) output = dupstr(curalias->name); curalias = curalias->next; if (output) return output; } checktype++; } if (checktype == CU_BUILTIN){ while(*curbuiltin){ if (startswith(*curbuiltin,text)) output = dupstr(*curbuiltin); curbuiltin++; if (output) return output; } checktype++; } while (checktype == CU_FUNC){ while (!curfunc && fhashname,text)) output = dupstr(curfunc->name); curfunc = curfunc->next; if (output) return output; } } while (checktype == CU_PREFIX){ while (!curprefix && phashname,text)) output = dupstr(curprefix->name); curprefix = curprefix->next; if (output) return output; } } while (checktype == CU_UNITS){ while (!curunit && uhashname)>1){ uhash = 0; curunit = utab[uhash]; } if (!curunit) { checktype++; break; } if (unitprefix){ if (startswith(curunit->name, text+unitprefix->len)){ output = (char *)mymalloc(1+strlen(curunit->name)+unitprefix->len, "(completeunits)"); strcpy(output, unitprefix->name); strcat(output, curunit->name); } } else if (startswith(curunit->name,text)) output = dupstr(curunit->name); curunit=curunit->next; if (output) return output; } } return 0; } #endif /* READLINE */ /* see if current directory contains an executable file */ int checkcwd (char *file) { FILE *fp; char *p; fp = openfile(file, "r"); if (fp){ fclose(fp); return 1; } #ifdef _WIN32 else if (!((p = strrchr(file, '.')) && isexe(p))) { char *pathname; pathname = mymalloc(strlen(file) + strlen(EXE_EXT) + 1, "(checkcwd)"); strcpy(pathname, file); strcat(pathname, EXE_EXT); fp = openfile(pathname, "r"); free(pathname); if (fp) { fclose(fp); return 1; } } #endif return 0; } /* return the last component of a pathname, and remove a .exe extension if one exists. */ char * getprogramname(char *path) { size_t proglen; char *p; path = pathend(path); /* get rid of filename extensions in Windows */ proglen = strlen(path); if ((p = strrchr(path, '.')) && isexe(p)) proglen -= 4; return dupnstr(path, proglen); } /* Find the directory that contains the invoked executable. */ char * getprogdir(char *progname, char **fullprogname) { char *progdir = NULL; char *p; #if defined (_WIN32) && defined (_MSC_VER) char buf[FILENAME_MAX + 1]; /* get the full pathname of the current executable and be done with it */ /* TODO: is there way to do this with gcc? */ if (GetModuleFileName(NULL, buf, FILENAME_MAX + 1)) progdir = dupstr(buf); #endif /* If path name is absolute or includes more than one component use it */ if (!progdir && (isfullpath(progname) || hasdirsep(progname))) progdir = dupstr(progname); /* command.com and cmd.exe under Windows always run a program that's in the current directory whether or not the current directory is in PATH, so we need to check the current directory. This could return a false positive if units is run from a Unix-like command interpreter under Windows if the current directory is not in PATH but contains 'units' or 'units.exe' */ #if defined (_WIN32) && !defined (_MSC_VER) if (!progdir && checkcwd(progname)) progdir = dupstr(progname); #endif /* search PATH to find the executable */ if (!progdir) { char *env; env = getenv("PATH"); if (env) { /* search PATH */ char *direc, *direc_end, *pathname; int len; FILE *fp; pathname = mymalloc(strlen(env)+strlen(progname)+strlen(EXE_EXT)+2, "(getprogdir)"); direc = env; while (direc) { direc_end = strchr(direc,PATHSEP); if (!direc_end) len = strlen(direc); else len = direc_end-direc; strncpy(pathname, direc, len); if (len>0) pathname[len++]=DIRSEP; strcpy(pathname+len, progname); fp = openfile(pathname, "r"); if (fp){ progdir = dupstr(pathname); break; } #ifdef _WIN32 /* executable may or may not have '.exe' suffix, so we need to look for both */ if (!((p = strrchr(pathname, '.')) && isexe(p))) { strcat(pathname, EXE_EXT); fp = openfile(pathname, "r"); if (fp){ progdir = dupstr(pathname); break; } } #endif direc = direc_end; if (direc) direc++; } free(pathname); if (fp) fclose(fp); } } if (!progdir) { fprintf(stderr, "%s: cannot find program directory\n", progname); exit(EXIT_FAILURE); } *fullprogname = dupstr(progdir); /* used by printversion() */ p = pathend(progdir); *p = '\0'; return progdir; } /* find a possible data directory relative to a 'bin' directory that contains the executable */ char * getdatadir() { int progdirlen; char *p; if (isfullpath(DATADIR)) return DATADIR; if (!progdir || emptystr(DATADIR)) return NULL; progdirlen = strlen(progdir); datadir = (char *) mymalloc(progdirlen + strlen(DATADIR) + 2, "(getdatadir)"); strcpy(datadir, progdir); if (isdirsep(progdir[progdirlen - 1])) datadir[progdirlen - 1] = '\0'; /* so pathend() can work */ p = pathend(datadir); if ((strlen(p) == 3) && (tolower(p[0]) == 'b') \ && (tolower(p[1]) == 'i') && (tolower(p[2]) == 'n')) { p = DATADIR; while (*p == '.') /* ignore "./", "../" */ p++; if (isdirsep(*p)) p++; strcpy(pathend(datadir), p); return datadir; } else return NULL; } void showfilecheck(int errnum, char *filename) { if (errnum==ENOENT) printf(" Checking %s\n", filename); else printf(" Checking %s: %s\n", filename, strerror(errnum)); } /* On Windows, find the locale map If print is set to ERRMSG then display error message if the file is not valid. If print is set to SHOWFILES then display files that are checked (when the filename is not a fully specified path). If print is set to NOERRMSG then do not display anything. Returns filename of valid local map file or NULL if no file was found. */ #ifdef _WIN32 char * findlocalemap(int print) { FILE *map = NULL; char *filename = NULL; char *file; /* Try the environment variable UNITSLOCALEMAP, then the #defined value LOCALEMAP, then the directory containing the units executable, then the directory given by datadir, and finally the directory containing the units data file. */ /* check the environment variable UNITSLOCALEMAP */ file = getenv("UNITSLOCALEMAP"); if (nonempty(file)) { map = openfile(file,"rt"); if (!map) { if (print == ERRMSG) { fprintf(stderr, "%s: cannot open locale map '%s'\n specified in UNITSLOCALEMAP environment variable. ", progname, file); perror((char *) NULL); } return NULL; } else filename = dupstr(file); } /* check the #defined value LOCALEMAP */ if (!map) { file = LOCALEMAP; map = openfile(file,"rt"); if (map) filename = dupstr(file); } if (!map && !progdir) { if (print == ERRMSG) { fprintf(stderr, "%s: cannot find locale map--program directory not set\n", progname); exit(EXIT_FAILURE); } else return NULL; } /* check the directory with the units executable */ if (!map) { filename = (char *) mymalloc(strlen(progdir) + strlen(file) + 2, "(findlocalemap)"); strcpy(filename, progdir); strcat(filename, file); map = openfile(filename,"rt"); if (print==SHOWFILES && !map) showfilecheck(errno, filename); } /* check data directory */ if (!map && datadir) { if (filename) free(filename); filename = (char *) mymalloc(strlen(datadir) + strlen(file) + 3, "(findlocalemap)"); strcpy(filename, datadir); strcat(filename, DIRSEPSTR); strcat(filename, file); map = openfile(filename, "rt"); if (print==SHOWFILES && !map) showfilecheck(errno, filename); } /* check the directory with the units data file */ if (!map && unitsfiles[0]) { char *lastfilename = NULL; if (filename) { if (datadir) lastfilename = dupstr(filename); free(filename); } filename = (char *) mymalloc(strlen(unitsfiles[0]) + strlen(file) + 2, "(findlocalemap)"); strcpy(filename, unitsfiles[0]); strcpy(pathend(filename), file); /* don't bother if we've just checked for it */ if (lastfilename && strcmp(filename, lastfilename)) { map = openfile(filename,"rt"); if (print==SHOWFILES && !map) showfilecheck(errno, filename); } } if (map) { fclose(map); return filename; } else { if (filename) free(filename); return NULL; } } #endif /* Find the units database file. If print is set to ERRMSG then display error message if the file is not valid. If print is set to SHOWFILES then display files that are checked (when the filename is not a fully specified path). If print is set to NOERRMSG then do not display anything. Returns filename of valid database file or NULL if no file was found. */ char * findunitsfile(int print) { FILE *testfile=0; char *file; file = getenv("UNITSFILE"); if (nonempty(file)) { testfile = openfile(file, "rt"); if (!testfile) { if (print==ERRMSG) { fprintf(stderr, "%s: cannot open units file '%s' in environment variable UNITSFILE. ", progname, file); perror((char *) NULL); } return NULL; } } if (!testfile && isfullpath(UNITSFILE)){ file = UNITSFILE; testfile = openfile(file, "rt"); if (!testfile) { if (print==ERRMSG) { fprintf(stderr, "%s: cannot open units data file '%s'. ", progname, UNITSFILE); perror((char *) NULL); } return NULL; } } if (!testfile && !progdir) { if (print==ERRMSG) { fprintf(stderr, "%s: cannot open units file '%s' and cannot find program directory.\n", progname, UNITSFILE); perror((char *) NULL); } return NULL; } if (!testfile) { /* check the directory containing the units executable */ file = (char *) mymalloc(strlen(progdir)+strlen(UNITSFILE)+1, "(findunitsfile)"); strcpy(file, progdir); strcat(file, UNITSFILE); testfile = openfile(file, "rt"); if (print==SHOWFILES && !testfile) showfilecheck(errno, file); if (!testfile) free(file); } /* check data directory */ if (!testfile && datadir) { file = (char *) mymalloc(strlen(datadir) + strlen(UNITSFILE) + 2, "(findunitsfile)"); strcpy(file, datadir); strcat(file, DIRSEPSTR); strcat(file, UNITSFILE); testfile = openfile(file, "rt"); if (print==SHOWFILES && !testfile) showfilecheck(errno, file); if (!testfile) free(file); } if (!testfile) { if (print==ERRMSG) fprintf(stderr,"%s: cannot find units file '%s'\n", progname, UNITSFILE); return NULL; } else { fclose(testfile); return file; } } /* Find the user's home directory. Unlike *nix, Windows doesn't usually set HOME, so we check several other places as well. */ char * findhome(char **errmsg) { struct stat statbuf; int allocated = 0; char *homedir; char notfound[] = "Specified home directory '%s' does not exist"; char notadir[] = "Specified home directory '%s' is not a directory"; /* Under UNIX just check HOME. Under Windows, if HOME is not set then check HOMEDRIVE:HOMEPATH and finally USERPROFILE */ homedir = getenv("HOME"); #ifdef _WIN32 if (!nonempty(homedir)) { /* try a few other places */ /* try HOMEDRIVE and HOMEPATH */ char *homedrive, *homepath; if ((homedrive = getenv("HOMEDRIVE")) && *homedrive && (homepath = getenv("HOMEPATH")) && *homepath) { homedir = mymalloc(strlen(homedrive)+strlen(homepath)+1,"(personalfile)"); allocated = 1; strcpy(homedir, homedrive); strcat(homedir, homepath); } else /* finally, try USERPROFILE */ homedir = getenv("USERPROFILE"); } #endif /* If a home directory is specified, see if it exists and is a directory. If not set error message text. */ if (nonempty(homedir)) { if (stat(homedir, &statbuf) != 0) { *errmsg = malloc(strlen(notfound)+strlen(homedir)); sprintf(*errmsg, notfound, homedir); } else if (!(statbuf.st_mode & S_IFDIR)) { *errmsg = malloc(strlen(notadir)+strlen(homedir)); sprintf(*errmsg, notadir, homedir); } if (!allocated) homedir = dupstr(homedir); return homedir; } else { *errmsg = "no home directory"; return NULL; } } /* Find a personal file. First checks the specified environment variable (envname) for the filename to use. If this is unset then search user's home directory for basename. If there is no home directory, returns NULL. Otherwise if the file exists then returns its name in newly allocated space and sets *exists to 1. If the file does not exist then sets *exist to zero and: With checkonly == 0, prints error message and returns NULL With checkonly != 0, returns filename (does not print error message) */ char * personalfile(const char *envname, const char *basename, int checkonly, int *exists) { FILE *testfile; char *filename=NULL; *exists = 0; /* First check the specified environment variable for a file name */ if (envname) filename = getenv(envname); if (nonempty(filename)){ testfile = openfile(filename, "rt"); if (testfile){ fclose(testfile); *exists = 1; return filename; } if (checkonly) return filename; else { fprintf(stderr, "%s: cannot open file '%s' specified in %s environment variable: ", progname, filename, envname); perror((char *) NULL); return NULL; } } /* Environment variable not set: look in home directory */ else if (nonempty(homedir)) { filename = mymalloc(strlen(homedir)+strlen(basename)+2, "(personalfile)"); strcpy(filename,homedir); if (strcmp(homedir, "/") && strcmp(homedir, "\\")) strcat(filename,DIRSEPSTR); strcat(filename,basename); testfile = openfile(filename, "rt"); if (testfile){ fclose(testfile); *exists = 1; return filename; } if (checkonly) return filename; else { if (errno==EACCES || errno==EISDIR) { fprintf(stderr,"%s: cannot open file '%s': ",progname,filename); perror(NULL); } free(filename); return NULL; } } else return NULL; } /* print usage message */ void usage() { int nlines; char *unitsfile; char *msg = "\nUsage: %s [options] ['from-unit' 'to-unit']\n\n\ Options:\n\ -h, --help show this help and exit\n\ -c, --check check that all units reduce to primitive units\n\ --check-verbose like --check, but lists units as they are checked\n\ --verbose-check so you can find units that cause endless loops\n\ -d, --digits show output to specified number of digits (default: %d)\n\ -e, --exponential exponential format output\n\ -f, --file specify a units data file (-f '' loads default file)\n" #ifdef READLINE "\ -H, --history specify readline history file (-H '' disables history)\n" #endif "\ -L, --log specify a file to log conversions\n\ -l, --locale specify a desired locale\n\ -m, --minus make - into a subtraction operator (default)\n\ --oldstar use old '*' precedence, higher than '/'\n\ --newstar use new '*' precedence, equal to '/'\n\ -n, --nolists disable conversion to unit lists\n\ -S, --show-factor show non-unity factor before 1|x in multi-unit output\n\ --conformable in non-interactive mode, show all conformable units\n\ -o, --output-format specify printf numeric output format (default: %%.%d%c)\n\ -p, --product make '-' into a product operator\n\ -q, --quiet suppress prompting\n\ --silent same as --quiet\n\ -s, --strict suppress reciprocal unit conversion (e.g. Hz<->s)\n\ -v, --verbose show slightly more verbose output\n\ --compact suppress printing of tab, '*', and '/' character\n\ -1, --one-line suppress the second line of output\n\ -t, --terse terse output (--strict --compact --quiet --one-line)\n\ -r, --round round last element of unit list output to an integer\n\ -U, --unitsfile show units data filename and exit\n\ -u, --units specify a CGS units system or natural units system:\n\ gauss[ian],esu,emu,hlu,natural,natural-gauss,\n\ hartree,planck,planck-red,si\n\ -V, --version show version, data filenames (with -t: version only)\n\ -I, --info show version, files, and program properties\n"; FILE *fp = NULL; unitsfile = findunitsfile(NOERRMSG); nlines = countlines(msg); /* see if we need a pager */ fp = get_output_fp(nlines + 4); fprintf(fp, msg, progname, DEFAULTPRECISION, DEFAULTPRECISION, DEFAULTTYPE); if (!unitsfile) fprintf(fp, "Units data file '%s' not found.\n\n", UNITSFILE); else fprintf(fp, "\nTo learn about the available units look in '%s'\n\n", unitsfile); fputs("Report bugs to adrianm@gnu.org.\n\n", fp); if (fp != stdout) pclose(fp); } /* Print message about how to get help */ void helpmsg() { fprintf(stderr,"\nTry '%s --help' for more information.\n",progname); exit(EXIT_FAILURE); } /* show units version, and optionally, additional information */ void printversion() { int exists; char *u_unitsfile = NULL; /* units data file specified in UNITSFILE */ char *m_unitsfile; /* personal units data file from HOME_UNITS_ENV */ char *p_unitsfile; /* personal units data file */ FILE *fp, *histfile; #ifdef _WIN32 char *localemap; #endif if (flags.verbose == 0) { printf("GNU Units version %s\n", VERSION); return; } printf("GNU Units version %s\n%s, %s, locale %s\n", VERSION, RVERSTR,UTF8VERSTR,mylocale); #if defined (_WIN32) && defined (HAVE_MKS_TOOLKIT) puts("With MKS Toolkit"); #endif if (flags.verbose == 2) { if (!fullprogname) getprogdir(progname, &fullprogname); if (fullprogname) printf("\n%s program is %s\n", progname, fullprogname); } /* units data file */ putchar('\n'); if (isfullpath(UNITSFILE)) printf("Default units data file is '%s'\n", UNITSFILE); else printf("Default units data file is '%s';\n %s will search for this file\n", UNITSFILE, progname); if (flags.verbose < 2) printf("Default personal units file: %s\n", homeunitsfile); if (flags.verbose == 2){ u_unitsfile = getenv("UNITSFILE"); if (u_unitsfile) printf("Environment variable UNITSFILE set to '%s'\n", u_unitsfile); else puts("Environment variable UNITSFILE not set"); unitsfiles[0] = findunitsfile(SHOWFILES); if (unitsfiles[0]) { /* We searched for the file in program and data dirs */ if (!isfullpath(UNITSFILE) && !nonempty(u_unitsfile)) printf("Found data file '%s'\n", unitsfiles[0]); else printf("Units data file is '%s'\n", unitsfiles[0]); } else { if (errno && (nonempty(u_unitsfile) || isfullpath(UNITSFILE))) printf("*** Units data file invalid: %s ***\n",strerror(errno)); else puts("*** Units data file not found ***"); } if (homedir_error) printf("\n%s\n", homedir_error); else printf("\nHome directory is '%s'\n", homedir); } /* personal units data file: environment */ if (flags.verbose == 2){ m_unitsfile = getenv(HOME_UNITS_ENV); putchar('\n'); if (m_unitsfile) { printf("Environment variable %s set to '%s'\n", HOME_UNITS_ENV,m_unitsfile); } else printf("Environment variable %s not set\n", HOME_UNITS_ENV); p_unitsfile = personalfile(HOME_UNITS_ENV, homeunitsfile, 1, &exists); if (p_unitsfile) { printf("Personal units data file is '%s'\n", p_unitsfile); if (!exists){ if (homedir_error && !nonempty(m_unitsfile)) printf(" (File invalid: %s)\n", homedir_error); else if (errno==ENOENT && !nonempty(m_unitsfile)) puts(" (File does not exist)"); else printf(" (File invalid: %s)\n",strerror(errno)); } } else puts("Personal units data file not found: no home directory"); } #ifdef READLINE if (flags.verbose == 2) { historyfile = personalfile(NULL,HISTORY_FILE,1,&exists); if (historyfile){ printf("\nDefault readline history file is '%s'\n", historyfile); histfile = openfile(historyfile,"r+"); if (!histfile) printf(" (File invalid: %s)\n", homedir_error ? homedir_error : strerror(errno)); else fclose(histfile); } else puts("\nReadline history file unusable: no home directory"); } #endif #ifdef _WIN32 /* locale map */ if (flags.verbose == 2) { putchar('\n'); localemap = getenv("UNITSLOCALEMAP"); if (localemap) printf("Environment variable UNITSLOCALEMAP set to '%s'\n", localemap); else puts("Environment variable UNITSLOCALEMAP not set"); if (isfullpath(LOCALEMAP)) printf("Default locale map is '%s'\n", LOCALEMAP); else printf("Default locale map is '%s';\n %s will search for this file\n", LOCALEMAP, progname); localemap = findlocalemap(SHOWFILES); if (localemap && !isfullpath(LOCALEMAP)) printf("Found locale map '%s'\n", localemap); else if (localemap) printf("Locale map is '%s'\n", localemap); else puts("*** Locale map not found ***"); } #endif printf("\n%s\n\n", LICENSE); } void showunitsfile() { char *unitsfile; unitsfile = findunitsfile(NOERRMSG); if (unitsfile) printf("%s\n", unitsfile); else puts("Units data file not found"); } char *shortoptions = "VIUu:vqechSstf:o:d:mnpr1l:L:" #ifdef READLINE "H:" #endif ; struct option longoptions[] = { {"check", no_argument, &flags.unitcheck, 1}, {"check-verbose", no_argument, &flags.unitcheck, 2}, {"compact", no_argument, &flags.verbose, 0}, {"digits", required_argument, 0, 'd'}, {"exponential", no_argument, 0, 'e'}, {"file", required_argument, 0, 'f'}, {"help", no_argument, 0, 'h'}, #ifdef READLINE {"history", required_argument, 0, 'H'}, #endif {"info", no_argument, 0, 'I'}, {"locale", required_argument, 0, 'l'}, {"log", required_argument, 0, 'L'}, {"minus", no_argument, &parserflags.minusminus, 1}, {"newstar", no_argument, &parserflags.oldstar, 0}, {"nolists", no_argument, 0, 'n'}, {"oldstar", no_argument, &parserflags.oldstar, 1}, {"one-line", no_argument, &flags.oneline, 1}, {"output-format", required_argument, 0, 'o'}, {"product", no_argument, &parserflags.minusminus, 0}, {"quiet", no_argument, &flags.quiet, 1}, {"round",no_argument, 0, 'r'}, {"show-factor", no_argument, 0, 'S'}, {"conformable", no_argument, &flags.showconformable, 1 }, {"silent", no_argument, &flags.quiet, 1}, {"strict",no_argument,&flags.strictconvert, 1}, {"terse",no_argument, 0, 't'}, {"unitsfile", no_argument, 0, 'U'}, {"units", required_argument, 0, 'u'}, {"verbose", no_argument, &flags.verbose, 2}, {"verbose-check", no_argument, &flags.unitcheck, 2}, {"version", no_argument, 0, 'V'}, {0,0,0,0} }; /* Process the args. Returns 1 if interactive mode is desired, and 0 for command line operation. If units appear on the command line they are returned in the from and to parameters. */ int processargs(int argc, char **argv, char **from, char **to) { extern char *optarg; extern int optind; int optchar, optindex; int ind; int doprintversion=0; char *unitsys=0, *temp; while ( -1 != (optchar = getopt_long(argc, argv,shortoptions,longoptions, &optindex ))) { switch (optchar) { case 'm': parserflags.minusminus = 1; break; case 'p': parserflags.minusminus = 0; break; case 't': flags.oneline = 1; flags.quiet = 1; flags.strictconvert = 1; flags.verbose = 0; break; /* numeric output format */ case 'd': if (checksigdigits(optarg) < 0) exit(EXIT_FAILURE); else /* ignore anything given with 'o' option */ num_format.format = NULL; break; case 'e': /* ignore anything given with 'o' option */ num_format.format = NULL; num_format.type = 'e'; break; case 'o': num_format.format = optarg; break; case 'c': flags.unitcheck = 1; break; case 'f': for(ind=0;unitsfiles[ind];ind++); if (ind==MAXFILES){ fprintf(stderr, "At most %d -f specifications are allowed\n", MAXFILES); exit(EXIT_FAILURE); } if (optarg && *optarg) unitsfiles[ind] = optarg; else { unitsfiles[ind] = findunitsfile(ERRMSG); if (!unitsfiles[ind]) exit(EXIT_FAILURE); } unitsfiles[ind+1] = 0; break; case 'L': logfilename = optarg; break; case 'l': mylocale = optarg; break; case 'n': flags.unitlists = 0; break; case 'q': flags.quiet = 1; break; case 'r': flags.round = 1; break; case 'S': flags.showfactor = 1; break; case 's': flags.strictconvert = 1; break; case 'v': flags.verbose = 2; break; case '1': flags.oneline = 1; break; case 'I': flags.verbose = 2; /* fall through */ case 'V': doprintversion = 1; break; case 'U': showunitsfile(); exit(EXIT_SUCCESS); break; case 'u': unitsys = optarg; for(ind=0;unitsys[ind];ind++) unitsys[ind] = tolower(unitsys[ind]); break; case 'h': usage(); exit(EXIT_SUCCESS); #ifdef READLINE case 'H': if (emptystr(optarg)) historyfile=NULL; else historyfile = optarg; break; #endif case 0: break; /* This is reached if a long option is processed with no return value set. */ case '?': /* Invalid option or missing argument returns '?' */ default: helpmsg(); /* helpmsg() exits with error */ } } temp = strchr(mylocale,'.'); if (temp) *temp = '\0'; if (doprintversion){ printversion(); exit(EXIT_SUCCESS); } /* command-line option overwrites environment */ if (unitsys) setenv("UNITS_SYSTEM", unitsys, 1); if (flags.unitcheck) { if (optind != argc){ fprintf(stderr, "Too many arguments (arguments are not allowed with -c).\n"); helpmsg(); /* helpmsg() exits with error */ } } else { if (optind == argc - 2) { if (flags.showconformable) { fprintf(stderr,"Too many arguments (only one unit expression allowed with '--conformable').\n"); helpmsg(); /* helpmsg() exits with error */ } flags.quiet=1; *from = argv[optind]; *to = dupstr(argv[optind+1]); /* This string may get rewritten later */ return 0; /* and we might call free() on it */ } if (optind == argc - 1) { flags.quiet=1; *from = argv[optind]; *to=0; return 0; } if (optind < argc - 2) { fprintf(stderr,"Too many arguments (maybe you need quotes).\n"); helpmsg(); /* helpmsg() exits with error */ } } return 1; } /* Show a pointer under the input to indicate a problem. Prints 'position' spaces and then the pointer. If 'position' is negative, nothing is printed. */ void showpointer(int position) { if (position >= 0){ while (position--) putchar(' '); puts(POINTER); } } /* end showpointer */ /* Process the string 'unitstr' as a unit, placing the processed data in the unit structure 'theunit'. Returns 0 on success and 1 on failure. If an error occurs an error message is printed to stdout. A pointer ('^') will be printed if an error is detected, and promptlen should be set to the printing width of the prompt string, or set it to NOPOINT to supress printing of the pointer. */ int processunit(struct unittype *theunit, char *unitstr, int promptlen) { char *errmsg; int errloc,err; char savechar; if (flags.unitlists && strchr(unitstr, UNITSEPCHAR)){ puts("Unit list not allowed"); return 1; } if ((err=parseunit(theunit, unitstr, &errmsg, &errloc))){ if (promptlen >= 0){ if (err!=E_UNKNOWNUNIT || !irreducible){ if (errloc>0) { savechar = unitstr[errloc]; unitstr[errloc] = 0; showpointer(promptlen+strwidth(unitstr)-1); unitstr[errloc] = savechar; } else showpointer(promptlen); } } else printf("Error in '%s': ", unitstr); fputs(errmsg,stdout); if (err==E_UNKNOWNUNIT && irreducible) printf(" '%s'", irreducible); putchar('\n'); return 1; } if ((err=completereduce(theunit))){ fputs(errormsg[err],stdout); if (err==E_UNKNOWNUNIT) printf(" '%s'", irreducible); putchar('\n'); return 1; } return 0; } /* Checks for a new unit defined on the prompt with the form _ = */ int definevariable(char *def, int promptlen) { int dummy, err; struct unittype unit; char *value = strchr(def,'='); if (!value) return 0; *value++=0; if (processunit(&unit, value, promptlen + (value-def))) return 1; removespaces(def); removespaces(value); err = *def!='_' || newunit(def,value, &dummy, 0, 0, NULL, 1, 1); if (err) printf("Invalid variable name: %s\n", def); return 1; } /* Checks the input parameter unitstr (a list of units separated by UNITSEPCHAR) for errors. All units must be parseable and conformable to each other. Returns 0 on success and 1 on failure. If an error is found then print an error message on stdout. A pointer ('^') will be printed to mark the error. The promptlen parameter should be set to the printing width of the prompt string so that the pointer is correctly aligned. To suppress the printing of the pointer set promptlen to NOPOINT. To suppress printing of error messages entirely set promptlen to NOERRMSG. */ int checkunitlist(char *unitstr, int promptlen) { struct unittype unit[2], one; char *firstunitstr,*nextunitstr; int unitidx = 0; int printerror = promptlen != NOERRMSG; initializeunit(&one); firstunitstr = unitstr; initializeunit(unit); initializeunit(unit+1); while (unitstr) { if ((nextunitstr = strchr(unitstr, UNITSEPCHAR)) != 0) *nextunitstr = '\0'; if (!unitstr[strspn(unitstr, " ")]) { /* unitstr is blank */ if (!nextunitstr) { /* terminal UNITSEPCHAR indicates repetition */ freeunit(unit); /* of last unit and is permitted */ return 0; } else { /* internal blank units are not allowed */ if (printerror){ showpointer(promptlen); puts("Error: blank unit not allowed"); } freeunit(unit); return 1; } } /* processunit() prints error messages; avoid it to supress them */ if ((printerror && processunit(unit+unitidx,unitstr,promptlen)) || (!printerror && (parseunit(unit+unitidx, unitstr,0,0) || completereduce(unit+unitidx) || compareunits(unit+unitidx,&one, ignore_primitive)))){ if (printerror) printf("Error in unit list entry: %s\n",unitstr); freeunit(unit); freeunit(unit+1); return 1; } if (unitidx == 0) unitidx = 1; else { if (compareunits(unit, unit+1, ignore_dimless)){ if (printerror){ int wasverbose = flags.verbose; FILE *savelog = logfile; logfile=0; flags.verbose = 2; /* always use verbose form to be unambiguous */ /* coverity[returned_null] */ *(strchr(firstunitstr, UNITSEPCHAR)) = '\0'; removespaces(firstunitstr); removespaces(unitstr); showpointer(promptlen); showconformabilityerr(firstunitstr, unit, unitstr, unit+1); flags.verbose = wasverbose; logfile = savelog; } freeunit(unit); freeunit(unit+1); return 1; } freeunit(unit+1); } if (nextunitstr) { if (promptlen >= 0) promptlen += strwidth(unitstr)+1; *(nextunitstr++) = UNITSEPCHAR; } unitstr = nextunitstr; } freeunit(unit); return 0; } /* end checkunitlist */ /* Call either processunit or checkunitlist, depending on whether the string 'unitstr' contains a separator character. Returns 0 on success and 1 on failure. If an error occurs an error message is printed to stdout. A pointer will be printed if an error is detected, and promptlen should be set to the printing width of the prompt string, or set it to NOPOINT to supress printing of the pointer. */ int processwant(struct unittype *theunit, char *unitstr, int promptlen) { if (flags.unitlists && strchr(unitstr, UNITSEPCHAR)) return checkunitlist(unitstr, promptlen); else return processunit(theunit, unitstr, promptlen); } void checkallaliases(int verbose) { struct wantalias *aliasptr; for(aliasptr = firstalias; aliasptr; aliasptr=aliasptr->next){ if (verbose) printf("doing unit list '%s'\n", aliasptr->name); if (checkunitlist(aliasptr->definition,NOERRMSG)) printf("Unit list '%s' contains errors\n", aliasptr->name); if (ulookup(aliasptr->name)) printf("Unit list '%s' hides a unit definition.\n", aliasptr->name); if (fnlookup(aliasptr->name)) printf("Unit list '%s' hides a function definition.\n", aliasptr->name); } } /* Check that all units and prefixes are reducible to primitive units and that function definitions are valid and have correct inverses. A message is printed for every unit that does not reduce to primitive units. */ void checkunits(int verbosecheck) { struct unittype have,second,one; struct unitlist *uptr; struct prefixlist *pptr; struct func *funcptr; char *prefixbuf, *testunit; int i, reduce_err; char *err; initializeunit(&one); /* Check all functions for valid definition and correct inverse */ for(i=0;inext) checkfunc(funcptr, verbosecheck); checkallaliases(verbosecheck); /* Now check all units for validity */ for(i=0;inext){ if (verbosecheck) printf("doing '%s'\n",uptr->name); if (strchr(uptr->value, PRIMITIVECHAR)) continue; else if (fnlookup(uptr->name)) printf("Unit '%s' hidden by function '%s'\n", uptr->name, uptr->name); else if (parseunit(&have, uptr->value,&err,0)) printf("'%s' defined as '%s': %s\n",uptr->name, uptr->value,err); else if ((reduce_err=completereduce(&have))){ printf("'%s' defined as '%s' irreducible: %s",uptr->name, uptr->value,errormsg[reduce_err]); if (reduce_err==E_UNKNOWNUNIT && irreducible) printf(" '%s'", irreducible); putchar('\n'); } else { parserflags.minusminus = !parserflags.minusminus; /* coverity[check_return] */ parseunit(&second, uptr->name, 0, 0); /* coverity[check_return] */ completereduce(&second); /* Can't fail because it worked above */ if (compareunits(&have, &second, ignore_nothing)){ printf("'%s': replace '-' with '+-' for subtraction or '*' to multiply\n", uptr->name); } freeunit(&second); parserflags.minusminus=!parserflags.minusminus; } freeunit(&have); } /* Check prefixes */ testunit="meter"; for(i=0;inext){ if (verbosecheck) printf("doing '%s-'\n",pptr->name); prefixbuf = mymalloc(strlen(pptr->name) + strlen(testunit) + 1, "(checkunits)"); strcpy(prefixbuf,pptr->name); strcat(prefixbuf,testunit); if (parseunit(&have, prefixbuf,0,0) || completereduce(&have) || compareunits(&have,&one,ignore_primitive)) printf("'%s-' defined as '%s' irreducible\n",pptr->name, pptr->value); else { int plevel; /* check for bad '/' character in prefix */ char *ch; plevel = 0; for(ch=pptr->value;*ch;ch++){ if (*ch==')') plevel--; else if (*ch=='(') plevel++; else if (plevel==0 && *ch=='/'){ printf( "'%s-' defined as '%s' contains a bad '/'. (Add parentheses.)\n", pptr->name, pptr->value); break; } } } freeunit(&have); free(prefixbuf); } } /* Converts the input value 'havestr' (which is already parsed into the unit structure 'have') into a sum of the UNITSEPCHAR-separated units listed in 'wantstr'. You must call checkunitlist first to ensure 'wantstr' is error-free. Prints the results (or an error message) on stdout. Returns 0 on success and 1 on failure. */ int showunitlist(char *havestr, struct unittype *have, char *wantstr) { struct unittype want, lastwant; char *lastunitstr, *nextunitstr, *lastwantstr=0; double remainder; /* portion of have->factor remaining */ double round_dir; /* direction of rounding */ double value; /* value (rounded to integer with 'r' option) */ int firstunit = 1; /* first unit in a multi-unit string */ int value_shown = 0; /* has a value been shown? */ int sigdigits; char val_sign; initializeunit(&want); remainder = fabs(have->factor); val_sign = have->factor < 0 ? '-' : '+'; lastunitstr = 0; nextunitstr = 0; round_dir = 0; if (flags.round) { /* disable unit repetition with terminal UNITSEPCHAR when rounding */ if (lastchar(wantstr) == UNITSEPCHAR) lastchar(wantstr) = 0; if ((lastwantstr = strrchr(wantstr, UNITSEPCHAR))) lastwantstr++; } while (wantstr) { if ((nextunitstr = strchr(wantstr, UNITSEPCHAR))) *(nextunitstr++) = '\0'; removespaces(wantstr); /* if wantstr ends in UNITSEPCHAR, repeat last unit--to give integer and fractional parts (3 oz + 0.371241 oz rather than 3.371241 oz) */ if (emptystr(wantstr)) /* coverity[alias_transfer] */ wantstr = lastunitstr; if (processunit(&want, wantstr, NOPOINT)) { freeunit(&want); return 1; } if (firstunit){ /* checkunitlist() ensures conformability within 'wantstr', so we just need to check the first unit to see if it conforms to 'have' */ if (compareunits(have, &want, ignore_dimless)) { showconformabilityerr(havestr, have, wantstr, &want); freeunit(&want); return 1; } /* round to nearest integral multiple of last unit */ if (flags.round) { value = remainder; if (nonempty(lastwantstr)) { /* more than one unit */ removespaces(lastwantstr); initializeunit(&lastwant); if (processunit(&lastwant, lastwantstr, NOPOINT)) { freeunit(&lastwant); return 1; } remainder = round(remainder / lastwant.factor) * lastwant.factor; } else /* first unit is last unit */ remainder = round(remainder / want.factor) * want.factor; round_dir = remainder - value; } if (flags.verbose == 2) { removespaces(havestr); logprintf("\t%s = ", havestr); } else if (flags.verbose == 1) logputchar('\t'); } /* end if first unit */ if (0==(sigdigits = getsigdigits(have->factor, remainder, 10))) break; /* nothing left */ /* Remove sub-precision junk accumulating in the remainder. Rounding is base 2 to ensure that we keep all valid bits. */ remainder = round_digits(remainder, getsigdigits(have->factor,remainder,2),2); if (nextunitstr) remainder = want.factor * modf(remainder / want.factor, &value); else value = remainder / want.factor; /* The remainder represents less than one of the current want unit. But with display rounding it may round up to 1, leading to an output like "4 feet + 12 inch". Check for this case and if the remainder indeed rounds up to 1 then add that remainder into the current unit and set the remainder to zero. */ if (nextunitstr){ double rounded_next = round_digits(remainder/want.factor, getsigdigits(have->factor, remainder / want.factor, 10), 10); if (displays_as(1,rounded_next, NULL)){ value++; remainder = 0; /* Remainder is zero */ } } /* Round the value to significant digits to prevent display of bogus sub-precision decimal digits */ value = round_digits(value,sigdigits,10); /* This ensures that testing value against zero will work below at the last unit, which is the only case where value is not integer */ if (!nextunitstr && displays_as(0, value, NULL)) value=0; if (!flags.verbose){ if (!firstunit) logputchar(UNITSEPCHAR); logprintf(num_format.format,value); value_shown=1; } else { /* verbose case */ if (value != 0) { if (value_shown) /* have already displayed a number so need a '+' */ logprintf(" %c ",val_sign); else if (val_sign=='-') logputs("-"); showunitname(value, wantstr, PRINTNUM); if (sigdigits <= floor(log10(value))+1) /* Used all sig digits */ logprintf(" (at %d-digit precision limit)", DBL_DIG); value_shown=1; } } freeunit(&want); lastunitstr = wantstr; wantstr = nextunitstr; firstunit = 0; } /* if the final unit value was rounded print indication */ if (!value_shown) { /* provide output if every value rounded to zero */ logputs("0 "); if (isdecimal(*lastunitstr)) logputs("* "); logputs(lastunitstr); } if (round_dir != 0) { if (flags.verbose){ if (round_dir > 0) logprintf(" (rounded up to nearest %s) ", lastunitstr); else logprintf(" (rounded down to nearest %s) ", lastunitstr); } else logprintf("%c%c", UNITSEPCHAR, round_dir > 0 ?'-':'+'); } logputchar('\n'); return 0; } /* end showunitlist */ #if defined (_WIN32) && defined (HAVE_MKS_TOOLKIT) int ismksmore(char *pager) { static int mksmore = -1; if (mksmore >= 0) return mksmore; /* Tries to determine whether the MKS Toolkit version of more(1) or less(1) will run. In older versions of the Toolkit, neither accepted '+', insisting on the POSIX-compliant '+g'. */ if (strstr(pager, "more") || strstr(pager, "less")) { char *mypager, *mkspager, *mksroot, *p; char pathbuf[FILENAME_MAX + 1]; struct _stat mybuf, mksbuf; mypager = NULL; mkspager = NULL; mksmore = 0; if (strlen(pager) > FILENAME_MAX) { fprintf(stderr, "%s: cannot invoke pager--value '%s' in PAGER too long\n", progname, pager); return 0; /* TODO: this really isn't the right value */ } else if (!isfullpath(pager)) { mypager = (char *) mymalloc(strlen(pager) + strlen(EXE_EXT) + 1, "(ishelpquery)"); strcpy(mypager, pager); if (!((p = strrchr(mypager, '.')) && isexe(p))) strcat(mypager, EXE_EXT); _searchenv(mypager, "PATH", pathbuf); } else strcpy(pathbuf, pager); mksroot = getenv("ROOTDIR"); if (mksroot) { char * mksprog; if (strstr(pager, "more")) mksprog = "more.exe"; else mksprog = "less.exe"; mkspager = (char *) mymalloc(strlen(mksroot) + strlen("/mksnt/") + strlen(mksprog) + 1, "(ishelpquery)"); strcpy(mkspager, mksroot); strcat(mkspager, "\\mksnt\\"); strcat(mkspager, mksprog); } if (*pathbuf && mksroot) { if (_stat(mkspager, &mksbuf)) { fprintf(stderr, "%s: cannot stat file '%s'. ", progname, mkspager); perror((char *) NULL); return 0; } if (_stat(pathbuf, &mybuf)) { fprintf(stderr, "%s: cannot stat file '%s'. ", progname, pathbuf); perror((char *) NULL); return 0; } /* if we had inodes, this would be simple ... but if it walks like a duck and swims like a duck and quacks like a duck ... */ if (mybuf.st_size == mksbuf.st_size && mybuf.st_ctime == mksbuf.st_ctime && mybuf.st_mtime == mksbuf.st_mtime && mybuf.st_atime == mksbuf.st_atime && mybuf.st_mode == mksbuf.st_mode) mksmore = 1; } if (mypager) free(mypager); if (mkspager) free(mkspager); } return mksmore; } #endif /* Checks to see if the input string contains HELPCOMMAND possibly followed by a unit name on which help is sought. If not, then return 0. Otherwise invoke the pager on units file at the line where the specified unit is defined. Then return 1. */ int ishelpquery(char *str, struct unittype *have) { struct unitlist *unit; struct func *function; struct wantalias *alias; struct prefixlist *prefix; char commandbuf[1000]; /* Hopefully this is enough overkill as no bounds */ int unitline; /* checking is performed. */ char *file; char **exitptr; char *commandstr; /* command string varies with OS */ if (have && !strcmp(str, UNITMATCH)){ tryallunits(have,0); return 1; } for(exitptr=exit_commands;*exitptr;exitptr++) if (!strcmp(str, *exitptr)) exit(EXIT_SUCCESS); if (startswith(str, SEARCHCOMMAND)){ str+=strlen(SEARCHCOMMAND); if (!emptystr(str) && *str != ' ') return 0; removespaces(str); if (emptystr(str)){ printf("\n\ Type 'search text' to see a list of all unit names \n\ containing 'text' as a substring\n\n"); return 1; } tryallunits(0,str); return 1; } if (startswith(str, HELPCOMMAND)){ str+=strlen(HELPCOMMAND); if (!emptystr(str) && *str != ' ') return 0; removespaces(str); if (emptystr(str)){ int nlines; char *unitsfile; char *msg = "\n\ %s converts between different measuring systems and %s6 inches\n\ acts as a units-aware calculator. At the '%s' %scm\n\ prompt, type in the units you want to convert from or * 15.24\n\ an expression to evaluate. At the '%s' prompt, / 0.065\n\ enter the units to convert to or press return to see\n\ the reduced form or definition. %stempF(75)\n\ %stempC\n\ The first example shows that 6 inches is about 15 cm 23.889\n\ or (1/0.065) cm. The second example shows how to\n\ convert 75 degrees Fahrenheit to Celsius. The third %sbu^(1/3)\n\ example converts the cube root of a bushel to a list %sft;in\n\ of semicolon-separated units. 1 ft + 0.9 in\n\ \n\ To quit from %s type 'quit' or 'exit'. %s2 btu + 450 ft lbf\n\ %s(kg^2/s)/(day lb/m^2)\n\ At the '%s' prompt type '%s' to get a * 1.0660684e+08\n\ list of conformable units. At either prompt you / 9.3802611e-09\n\ type 'help myunit' to browse the units database\n\ and read the comments relating to myunit or see %s6 tbsp sugar\n\ other units related to myunit. Typing 'search %sg\n\ text' will show units whose names contain 'text'. * 75\n\ / 0.013333333\n\n"; char *fmsg = "To learn about the available units look in '%s'\n\n"; FILE *fp; /* presumably, this cannot fail because it was already checked at startup */ unitsfile = findunitsfile(NOERRMSG); nlines = countlines(msg); /* but check again anyway ... */ if (unitsfile) nlines += countlines(fmsg); /* see if we need a pager */ fp = get_output_fp(nlines); fprintf(fp, msg, progname, QUERYHAVE, QUERYHAVE, QUERYWANT, QUERYWANT, QUERYHAVE,QUERYWANT,QUERYHAVE,QUERYWANT, progname, QUERYHAVE,QUERYWANT, QUERYWANT, UNITMATCH, QUERYHAVE,QUERYWANT); if (unitsfile) fprintf(fp, fmsg, unitsfile); if (fp != stdout) pclose(fp); return 1; } if ((function = fnlookup(str))){ file = function->file; unitline = function->linenumber; } else if ((unit = ulookup(str))){ unitline = unit->linenumber; file = unit->file; } else if ((prefix = plookup(str)) && strlen(str)==prefix->len){ unitline = prefix->linenumber; file = prefix->file; } else if ((alias = aliaslookup(str))){ unitline = alias->linenumber; file = alias->file; } else { printf("Unknown unit '%s'\n",str); return 1; } /* With Microsoft compilers, system() uses cmd.exe. Inner escaped quotes are necessary for filenames with spaces; outer escaped quotes are necessary for cmd.exe to see the command as a single string containing one or more quoted strings (e.g., cmd /c ""command" "arg1" "arg2" ... ") */ #if defined (_WIN32) #if defined (HAVE_MKS_TOOLKIT) if (strstr(pager, "pg")) commandstr = "\"\"%s\" +%d \"%s\"\""; else if (ismksmore(pager)) { /* use the POSIX-compliant '+g' for compatibility with older versions of the Toolkit that don't accept '+' */ commandstr = "\"\"%s\" +%dg \"%s\"\""; } else { /* more.com apparently takes the number as an offset rather than a line number, so that '+1' starts at line 2 of the file. more.com also cannot back up, so allow two lines of preceding context. */ unitline -= 3; if (unitline < 0) unitline = 0; commandstr = "\"\"%s\" +%d \"%s\"\""; } #else /* more.com is probably the only option */ unitline -= 3; if (unitline < 0) unitline = 0; commandstr = "\"\"%s\" +%d \"%s\"\""; #endif #else /* *nix */ commandstr = "%s +%d %s"; #endif sprintf(commandbuf, commandstr, pager, unitline, file); if (system(commandbuf)) fprintf(stderr,"%s: cannot invoke pager '%s' to display help\n", progname, pager); return 1; } return 0; } #ifdef SUPPORT_UTF8 void checklocale() { char *temp; temp = setlocale(LC_CTYPE,""); utf8mode = (strcmp(nl_langinfo(CODESET),"UTF-8")==0); if (temp){ mylocale = dupstr(temp); temp = strchr(mylocale,'.'); if (temp) *temp = 0; } else mylocale = DEFAULTLOCALE; } #else void checklocale() { char *temp=0; /* environment overrides system */ temp = getenv("LC_CTYPE"); if (!temp) temp = getenv("LC_ALL"); if (!temp) temp = getenv("LANG"); #ifndef NO_SETLOCALE if (temp) temp = setlocale(LC_CTYPE,temp); if (!temp) temp = setlocale(LC_CTYPE,""); /* try system default */ #endif if (!temp) mylocale = DEFAULTLOCALE; else { mylocale = dupstr(temp); temp = strchr(mylocale,'.'); if (temp) *temp = 0; } } #endif /* Replaces an alias in the specified string input. Returns 1 if the alias that is found contains errors. */ int replacealias(char **string, int *buflen) { int usefree = 1; struct wantalias *aliasptr; char *input; if (!flags.readline && buflen) usefree = 0; if (nonempty(*string)) { /* check that string is defined and nonempty */ input = *string; removespaces(input); if ((aliasptr=aliaslookup(input))){ if (checkunitlist(aliasptr->definition,NOERRMSG)){ puts("Unit list definition contains errors."); return 1; } if (usefree){ free(*string); *string = dupstr(aliasptr->definition); } else { /* coverity[dead_error_line] */ while (strlen(aliasptr->definition)>*buflen) growbuffer(string, buflen); strcpy(*string, aliasptr->definition); } } } return 0; } /* Remaps the locale name returned on Windows systems to the value returned on Unix-like systems */ void remaplocale(char *filename) { FILE *map; char *value; char name[80]; map = openfile(filename,"rt"); if (!map) { fprintf(stderr,"%s: cannot open locale map '%s'. ",progname,filename); perror((char *) NULL); } else { while(!feof(map)){ if (!fgets(name,80,map)) break; lastchar(name) = 0; value=strchr(name,'#'); if (value) *value=0; value=strchr(name,'\t'); if (!value) continue; *value++=0; removespaces(value); removespaces(name); if (!strcmp(name, mylocale)) mylocale = dupstr(value); } fclose(map); } } void close_logfile(void) { if (logfile){ fputc('\n',logfile); fclose(logfile); } } void open_logfile(void) { time_t logtime; char * timestr; logfile = openfile(logfilename, "at"); if (!logfile){ fprintf(stderr, "%s: cannot write to log file '%s'. ", progname, logfilename); perror(0); exit(EXIT_FAILURE); } time(&logtime); timestr = ctime(&logtime); fprintf(logfile, "### Log started %s \n", timestr); atexit(close_logfile); } void write_files_sig(int sig) { #ifdef READLINE if (historyfile) save_history(); #endif close_logfile(); signal(sig, SIG_DFL); raise(sig); } int main(int argc, char **argv) { static struct unittype have, want; char *havestr=0, *wantstr=0; int leading_spaces; struct func *funcval; struct wantalias *alias; int havestrsize=0; /* Only used if READLINE is undefined */ int wantstrsize=0; /* Only used if READLINE is undefined */ int readerr; char **unitfileptr; int unitcount=0, prefixcount=0, funccount=0; /* for counting units */ char *queryhave, *querywant, *comment; int queryhavewidth, querywantwidth; #ifdef _WIN32 char *localemap; #endif /* Set program parameter defaults */ num_format.format = NULL; num_format.precision = DEFAULTPRECISION; num_format.type = DEFAULTTYPE; flags.quiet = 0; /* Do not supress prompting */ flags.unitcheck = 0; /* Unit checking is off */ flags.verbose = 1; /* Medium verbosity */ flags.round = 0; /* Rounding off */ flags.strictconvert=0; /* Strict conversion disabled (reciprocals active) */ flags.unitlists = 1; /* Multi-unit conversion active */ flags.oneline = 0; /* One line output is disabled */ flags.showconformable=0; /* show unit conversion rather than all conformable units */ flags.showfactor = 0; /* Don't show a multiplier for a 1|x fraction */ /* in unit list output */ parserflags.minusminus = 1; /* '-' character gives subtraction */ parserflags.oldstar = 0; /* '*' has same precedence as '/' */ progname = getprogramname(argv[0]); /* unless UNITSFILE and LOCALEMAP have absolute pathnames, we may need progdir to search for supporting files */ if (!(isfullpath(UNITSFILE) && isfullpath(LOCALEMAP))) progdir = getprogdir(argv[0], &fullprogname); else { progdir = NULL; fullprogname = NULL; } datadir = getdatadir(); /* directory to search as last resort */ checklocale(); homedir = findhome(&homedir_error); #ifdef READLINE # if RL_READLINE_VERSION > 0x0402 rl_completion_entry_function = (rl_compentry_func_t *)completeunits; # else rl_completion_entry_function = (Function *)completeunits; # endif rl_basic_word_break_characters = " \t+-*/()|^;"; flags.readline = isatty(0); if (flags.readline){ int file_exists; historyfile = personalfile(NULL,HISTORY_FILE,1,&file_exists); } #else flags.readline = 0; #endif unitsfiles[0] = 0; #ifdef _WIN32 if (!strcmp(homeunitsfile,".units")) homeunitsfile = "unitdef.units"; #endif pager = getenv("PAGER"); if (!pager) pager = DEFAULTPAGER; flags.interactive = processargs(argc, argv, &havestr, &wantstr); #ifdef READLINE if (flags.interactive && flags.readline && historyfile){ rl_initialize(); read_history(historyfile); init_history_length = history_length; init_history_base = history_base; atexit(save_history); } #endif signal(SIGINT, write_files_sig); signal(SIGTERM, write_files_sig); #ifdef SIGQUIT signal(SIGQUIT, SIG_IGN); /* Ignore QUIT signal sent by Ctrl-\ or Ctrl-4 */ #endif if (logfilename) { if (!flags.interactive) fprintf(stderr, "Log file '%s' ignored in non-interactive mode.\n",logfilename); else open_logfile(); } /* user has specified the complete format--use it */ if (num_format.format != NULL) { if (parsenumformat()) exit(EXIT_FAILURE); } else setnumformat(); if (flags.verbose==0) deftext = ""; if (!unitsfiles[0]){ char *unitsfile; unitsfile = findunitsfile(ERRMSG); if (!unitsfile) exit(EXIT_FAILURE); else { int file_exists; unitsfiles[0] = unitsfile; unitsfiles[1] = personalfile(HOME_UNITS_ENV,homeunitsfile, 0, &file_exists); unitsfiles[2] = 0; } } #ifdef _WIN32 localemap = findlocalemap(ERRMSG); if (localemap) remaplocale(localemap); #endif for(unitfileptr=unitsfiles;*unitfileptr;unitfileptr++){ readerr = readunits(*unitfileptr, stderr, &unitcount, &prefixcount, &funccount, 0); if (readerr==E_MEMORY || readerr==E_FILE) exit(EXIT_FAILURE); } if (flags.quiet) queryhave = querywant = ""; /* No prompts are being printed */ else { if (!promptprefix){ queryhave = QUERYHAVE; querywant = QUERYWANT; } else { queryhave = (char *)mymalloc(strlen(promptprefix)+strlen(QUERYHAVE)+1, "(main)"); querywant = (char *)mymalloc(strlen(promptprefix)+strlen(QUERYWANT)+1, "(main)"); strcpy(queryhave, promptprefix); strcat(queryhave, QUERYHAVE); memset(querywant, ' ', strlen(promptprefix)); strcpy(querywant+strlen(promptprefix), QUERYWANT); } printf("%d units, %d prefixes, %d nonlinear units\n\n", unitcount, prefixcount,funccount); } queryhavewidth = strwidth(queryhave); querywantwidth = strwidth(querywant); if (flags.unitcheck) { checkunits(flags.unitcheck==2 || flags.verbose==2); exit(EXIT_SUCCESS); } if (!flags.interactive) { replacectrlchars(havestr); if (wantstr) replacectrlchars(wantstr); #ifdef SUPPORT_UTF8 if (strwidth(havestr)<0){ printf("Error: %s on input\n",invalid_utf8); exit(EXIT_FAILURE); } if (wantstr && strwidth(wantstr)<0){ printf("Error: %s on input\n",invalid_utf8); exit(EXIT_FAILURE); } #endif replace_operators(havestr); removespaces(havestr); if (wantstr) { replace_operators(wantstr); removespaces(wantstr); } if ((funcval = fnlookup(havestr))){ showfuncdefinition(funcval, FUNCTION); exit(EXIT_SUCCESS); } if ((funcval = invfnlookup(havestr))){ showfuncdefinition(funcval, INVERSE); exit(EXIT_SUCCESS); } if ((alias = aliaslookup(havestr))){ showunitlistdef(alias); exit(EXIT_SUCCESS); } if (processunit(&have, havestr, NOPOINT)) exit(EXIT_FAILURE); if (flags.showconformable == 1) { tryallunits(&have,0); exit(EXIT_SUCCESS); } if (!wantstr){ showdefinition(havestr,&have); exit(EXIT_SUCCESS); } if (replacealias(&wantstr, 0)) /* the 0 says that we can free wantstr */ exit(EXIT_FAILURE); if ((funcval = fnlookup(wantstr))){ if (showfunc(havestr, &have, funcval)) /* Clobbers have */ exit(EXIT_FAILURE); else exit(EXIT_SUCCESS); } if (processwant(&want, wantstr, NOPOINT)) exit(EXIT_FAILURE); if (strchr(wantstr, UNITSEPCHAR)){ if (showunitlist(havestr, &have, wantstr)) exit(EXIT_FAILURE); else exit(EXIT_SUCCESS); } if (showanswer(havestr,&have,wantstr,&want)) exit(EXIT_FAILURE); else exit(EXIT_SUCCESS); } else { /******************/ /** interactive **/ /******************/ for (;;) { do { fflush(stdout); getuser(&havestr,&havestrsize,queryhave); replace_operators(havestr); comment = strip_comment(havestr); leading_spaces = strspn(havestr," "); removespaces(havestr); if (logfile && comment && emptystr(havestr)) fprintf(logfile, "#%s\n", comment); } while (emptystr(havestr) || ishelpquery(havestr,0) || definevariable(havestr,queryhavewidth+leading_spaces) || (!fnlookup(havestr) && !invfnlookup(havestr) && !aliaslookup(havestr) && processunit(&have, havestr, queryhavewidth+leading_spaces))); if (logfile) { if (comment) fprintf(logfile, "%s%s\t#%s\n", LOGFROM, havestr,comment); else fprintf(logfile, "%s%s\n", LOGFROM, havestr); } if ((alias = aliaslookup(havestr))){ showunitlistdef(alias); continue; } if ((funcval = fnlookup(havestr))){ showfuncdefinition(funcval, FUNCTION); continue; } if ((funcval = invfnlookup(havestr))){ showfuncdefinition(funcval, INVERSE); continue; } do { int repeat; do { repeat = 0; fflush(stdout); getuser(&wantstr,&wantstrsize,querywant); replace_operators(wantstr); comment = strip_comment(wantstr); leading_spaces = strspn(wantstr," "); removespaces(wantstr); if (logfile && comment && emptystr(wantstr)){ fprintf(logfile, "#%s\n", comment); repeat = 1; } if (ishelpquery(wantstr, &have)){ repeat = 1; printf("%s%s\n",queryhave, havestr); } } while (repeat); } while (replacealias(&wantstr, &wantstrsize) || (!fnlookup(wantstr) && processwant(&want, wantstr, querywantwidth+leading_spaces))); if (logfile) { fprintf(logfile, "%s", LOGTO); tightprint(logfile, wantstr); if (comment) fprintf(logfile, "\t#%s", comment); putc('\n', logfile); } if (emptystr(wantstr)) showdefinition(havestr,&have); else if (strchr(wantstr, UNITSEPCHAR)) showunitlist(havestr, &have, wantstr); else if ((funcval = fnlookup(wantstr))) showfunc(havestr, &have, funcval); /* Clobbers have */ else { showanswer(havestr,&have,wantstr, &want); freeunit(&want); } unitcopy(&lastunit, &have); lastunitset=1; freeunit(&have); } } return (0); } /* NOTES: mymalloc, growbuffer and tryallunits are the only places with print statements that should (?) be removed to make a library. How can error reporting in these functions (memory allocation errors) be handled cleanly for a library implementation? Way to report the reduced form of the two operands of a sum when they are not conformable. Way to report the required domain when getting an domain error. */ units-2.23/UnitsMKS.texinfo0000664000175000017500000004703714564532470015162 0ustar adrianadrian\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename UnitsMKS.info @finalout @setchapternewpage off @firstparagraphindent none @set EDITION 2.21 @set VERSION 2.23 @set TKVERSION 10.4 @set OSVERSION 10 @set VSVERSION 2022 @set BUILDDATE @w{17 February} 2024 @c %**end of header @copying This manual is for building and installing GNU @command{units} (version @value{VERSION}) on Microsoft Windows with the PTC MKS Toolkit. Copyright @copyright{} 2016--2024 Free Software Foundation, Inc. @end copying @titlepage @title @w{Building and Installing} @w{GNU @command{units}} on @w{Microsoft Windows} with the @w{MKS Toolkit} @subtitle Edition @value{EDITION} for @command{units} Version @value{VERSION} @author Jeff Conrad @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @iftex @headings off @everyheading Building @command{units} on Windows with MKS Toolkit @| @| @thispage @end iftex @macro label {text} @w{@sansserif{\text\}} @end macro @node Preface @unnumbered Preface This manual covers configuring, building, and installing GNU @command{units} from the MKS Korn shell on Microsoft Windows. The process runs much as it would on Unix-like systems, and much of what follows assumes that the installation will be in the same places as they would on Unix-like systems (e.g., @file{C:/usr/local/bin} for the executable). Most of the discussion implicitly assumes using Microsoft Visual Studio for compiling. You can also build @command{units} from the Windows command prompt using @file{Makefile.Win}---@pxref{Top,,,UnitsWin,UnitsWin} for details. The system on which the build was done had @file{/bin} as a symbolic link to @w{@file{C:/Program Files/MKS Toolkit/mksnt}}; with this approach, there is no need to change the first lines of any scripts in the units distribution. The most recent build was for @command{units} version @value{VERSION}, using the MKS Toolkit for Developers version @value{TKVERSION} and Microsoft Visual Studio @value{VSVERSION} on Microsoft Windows Professional @value{OSVERSION} on @value{BUILDDATE}. --- Jeff Conrad (@email{jeff_conrad@@msn.com}) @value{BUILDDATE} @node Building and Installing @command{units} @unnumbered Building and Installing @command{units} @node Overview @unnumberedsec Overview On Unix-like systems, building and installing @command{units} is simple; just type @example ./configure; make; make install @end example @noindent On Windows---even if Unix-like utilities such as the MKS Toolkit are available---additional steps are usually needed. A more realistic procedure might be as follows: @enumerate @item Create a @file{config.site} file that specifies several parameters for @command{configure}. Alternatively, you can pass the parameters to @command{configure} at invocation. @item Start an instance of the Korn shell with administrative privilege. @item If you are using Microsoft Visual Studio, initialize the environment variables for Visual Studio with the @command{setvcvars} script: @example . ./setvcvars @end example @item Prepare the files needed to build @command{units} by running the configuration script: @example ./configure @end example @item Manually adjust @file{Makefile} if necessary. @item Build the executable and support files: @example make @end example @item If the build is successful, install the package: @example make install @end example @end enumerate @noindent Some of the issues involved are discussed below. @node Configuring @command{configure} @unnumberedsec Configuring @command{configure} The @command{configure} script attempts to make the build process system independent. But on non--Unix-like systems, @command{configure} often needs some help. When using the MKS Toolkit on Windows, @command{configure} depends on the environment variables @env{ac_executable_extensions} and @env{PATH_SEPARATOR}. It is often easier to use the Microsoft Visual Studio C compiler @command{cl} directly rather than through the MKS wrapper @command{cc}; for this to happen, the variable @env{CC} must be set to @code{cl} or @code{cl.exe}. The variables can be given to @command{configure} in several ways: @itemize @bullet @item The variables can be passed to @command{configure} at invocation as name--value pairs, i.e., @example ./configure [@var{name}=@var{value} ...] @end example @item The variables can be set and marked for export, e.g., @example @group export ac_executable_extensions=".exe .sh .ksh" export PATH_SEPARATOR=";" @end group @end example @item The variables can be set in a site configuration script that is read by @command{configure} at invocation. Such a script might include @example @group ac_executable_extensions=".exe .sh .ksh" PATH_SEPARATOR=";" @end group @end example @noindent By default, the script is @w{@file{/usr/local/share/config.site}}. If you specify a location other than @file{/usr/local/} for the installation with the @option{--prefix} option to @command{configure}, the configuration script is expected to be @w{@file{@var{prefix}/local/ share/config.site}}. If you wish to have a fixed location for the configuration script, you can do so with the @env{CONFIG_SITE} environment variable. For example, if you have a configuration script that you want read regardless of the @option{--prefix} option, you could give @example CONFIG_SITE="C:/usr/local/share/config.site" @end example @noindent A more complete @file{config.site} might include @example @group ac_executable_extensions=".exe .sh .ksh" ac_ext=cpp prefix=C:/usr/local PATH_SEPARATOR=";" INSTALL="C:/usr/local/bin/install.exe -c" CC=cl.exe CFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo" CXX=cl.exe CXXFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo" @end group @end example (@env{ac_ext}, @env{CXX}, and @env{CXXFLAGS} are not needed for building @command{units}) @end itemize @node Customizing the Installation @unnumberedsec Customizing the Installation By default, @samp{make install} installs @command{units} in subdirectories of @file{/usr/local}; you can specify a different location using the @option{--prefix} option. For example, if you want to install @command{units} in @file{C:/Program Files/GNU}, you might invoke @command{configure} with @example @./configure --prefix=C:/Progra~1/GNU @end example @noindent The Windows ``8.3'' short name is used because the installation process does not like spaces or parentheses in pathnames. The short name for @file{C:/Program Files} is usually as shown, but can vary from system to system. You can find the actual short name on your system with the @command{dosname} command, e.g., @example dosname "C:/Program Files" @end example If you don't specify a prefix, or you specify a prefix without a drive letter, the installation will be on the same drive as the MKS Toolkit. @command{configure} provides many other options for customizing the installation; typing @example ./configure --help @end example @noindent gives a summary of these options. Running @command{configure} is discussed in detail under the section ``Running @command{configure} Scripts'' in the GNU documentation for @command{autoconf}, available at @url{http:// www.gnu.org/software/autoconf/}. @node Administrative Privilege @unnumberedsec Administrative Privilege If you plan to install @command{units} in a location where you lack write permission, you'll need administrative permission for the installation and perhaps for the configuration and build (@pxref{``install'' Programs}). The easiest way to do this is to start the shell by right-clicking on the shell icon (or a shortcut) from Explorer and using the @label{Run as administrator} option from the context menu. @node Environment Variables for Visual Studio @unnumberedsec Environment Variables for Visual Studio Microsoft Visual Studio requires that several environment variables (e.g., @env{PATH}) be set to include numerous directories for a build from the command line. Visual Studio provides an option on the Windows Start Menu to run an instance of the Windows command interpreter with these variables initialized. @node Initialization with the Korn Shell @unnumberedsubsec Initialization with the Korn Shell The @command{setvcvars} script included in the units distribution will set these variables for the shell by running the batch file used for the Visual Studio command prompt, writing the variable values to the standard output, and reading them into the shell. For the values to persist, the script must of course be run in the current environment, e.g., @samp{source ./setvcvars} or @w{@samp{. ./setvcvars}}. These variables must be set for any command-line build with Visual Studio, so it may be helpful to copy the script to a directory that's in @env{PATH} (e.g., @file{/usr/local/bin}). The default compilation is 64 bit; to compile a 32-bit version, set the environment by passing the script an argument of @samp{x86}, e.g., @samp{source ./setvcvars x86} or @w{@samp{. ./setvcvars x86}}. @node Adjustment for Different Visual Studio Installations @unnumberedsubsec Adjustment for Different Visual Studio Installations The name and location of the batch file and the values of the environment variables are installation specific; the @command{setvcvars} script assumes a standard installation of Visual Studio 2022 Community. For a nonstandard installation or for a different version, the value of @code{vsbatfile} in the script may need to be modified. On @w{Windows 10}, find @label{Visual Studio 2@var{yyy}} on the Start Menu, click to open the menu, right click on @label{x64 Native Tools Command Prompt for VS 2@var{yyy}}, find @label{More}, right click, and select @label{Open file location}. In the instance of File Explorer that opens, find the @label{x64 Native Tools Command Prompt for VS 2@var{yyy}} shortcut, right click, and select @label{Properties}; the @label{Target} on the @label{Shortcut} tab should contain the proper path for the batch file. If you prefer to compile a 32-bit version, use the procedure above but choose @label{x86 Native Tools Command Prompt for VS 2@var{yyy}} to find the proper batch file. The exact names of the menu choices may vary with the version of Visual Studio that is installed. Earlier versions of Windows may require slightly different steps, but the objective is the same: find the name and location of the batch file that is opened by the appropriate Visual Studio command prompt and assign it to @code{vsbatfile} in the @command{setvcvars} script. @node ``install'' Programs @unnumberedsec ``install'' Programs If you have an executable @command{install} program, you may get an error message to the effect of @example cannot execute: The requested operation requires elevation @end example @noindent while running @command{configure} without elevated privileges on Windows Vista or later with User Account Control (UAC) enabled. If UAC is enabled, the system thinks executable programs whose names contain ``install'', ``patch'', ``update'', and similar always require elevated privilege, and will refuse to run them without this privilege. If this happens, @command{configure} will simply use the @command{install-sh} script included with the @command{units} distribution. But if for some reason you wish to use your version of @command{install}, there are several ways to do so. @node Running with Administrative Privilege @unnumberedsubsec Running with Administrative Privilege The easiest solution is to do the configure with a shell with administrative privilege, as discussed in @ref{Administrative Privilege}. After installation, testing should be done using a shell without elevated privilege. @node Providing a Manifest File @unnumberedsubsec Providing a Manifest File An alternative is to tell UAC that elevated privilege is not required. To do this, create a manifest file containing @example @group @end group @end example @noindent name it @file{install.exe.manifest}, and place it in the same directory as install.exe. Sometimes this has no effect; if this happens, adjust the modification times of the manifest and executable so they match. The procedure is discussed at @url{https://github.com/bmatzelle/gow/issues/156}, and a similar discussion for GNU patch is given at @url{http://math.nist.gov/oommf/software-patchsets/patch_on_Windows7.html}. @noindent Last access: 16 May 2016 @node Embedding a Manifest in the install Program @unnumberedsubsec Embedding a Manifest in the install Program If you are using MS Visual Studio, an alternative to having the manifest file in the executable directory is to embed the manifest in the executable using the manifest tool @command{mt.exe}, obviating the need to worry about the time stamps of the files. This is discussed in NIST link above; if the command is run from the shell, the semicolon must be escaped: @example mt -manifest install.exe.manifest -outputresource:install.exe@backslashchar{};1 @end example @noindent Microsoft describe manifests at @url{https://msdn.microsoft.com/en-us/library/bb756929.aspx}. The Code Project also discusses UAC awareness: @url{http://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware}. @node Fine Tuning @file{Makefile} @unnumbered Fine Tuning @file{Makefile} @node MKS @command{make} and Suffix Rules @unnumberedsec MKS @command{make} and Suffix Rules The MKS version of @command{make} ignores suffix rules in @file{Makefile} unless the line @example .POSIX: @end example @noindent appears in @file{Makefile} before any suffix rules. This target is also required for the currency updater @command{units_cur} to run properly from @file{Makefile}. The configure script attempts to detect the Toolkit by running mksinfo, and if this succeeds, the @code{.POSIX} target is added. If you have the MKS Toolkit and it somehow is not detected, you should add this line manually. @node Install Program @unnumberedsec Install Program If the @env{PATH} at shell invocation uses the backslash as the path separator, and you have a BSD-compatible @command{install} program that is detected by @command{configure}, the backslashes may be removed, giving an incorrect @file{Makefile} entry something like @example INSTALL = c:usrlocalbin/install.exe -c @end example @noindent Add the slashes to get @example INSTALL = c:/usr/local/bin/install.exe -c @end example @noindent If you will always want to use the same installation program, you can specify it with the @env{INSTALL} variable---@pxref{Configuring @command{configure}}. Giving a @env{PATH} with forward slashes in a file given by @env{ENV} will have no effect because configure unsets that variable, and the file will not be read. @node Icons and File Association @unnumbered Icons and File Association Two icons are provided: @file{unitsfile.ico} and @file{unitsprog.ico}. The former is made the default icon for @command{units} data files, and the latter is embedded in the executable file by the build process. The latter also may be useful if you wish to create a shortcut to the @command{units} program. Both icons are copied to the same directory as the @command{units} data files. The installation process associates @command{units} data files with the MKS graphical @command{vi} editor @command{viw}; double-clicking on the file icon opens the file for editing. The encoding is set to UTF-8. @node MKS @command{units} @unnumbered MKS @command{units} The MKS Toolkit includes a very old version of @command{units}; if the MKS executable directory is earlier in @env{PATH} than the installation directory for GNU @command{units}, a command-line invocation will run the MKS version. To ensure that you run GNU @command{units}, either change @env{PATH} so that GNU @command{units} is found first, or create an alias for GNU @command{units}. @node Currency Definitions Updater @unnumbered Currency Definitions Updater The script @command{units_cur} is used to update currency definitions; it requires Python (available from @url{https://www.python.org/}). @node Installing Python @unnumberedsec Installing Python If you want to use the currency updater, install Python if it is not already installed; ensure that Python is installed @emph{before} running @command{configure}. If you need to install Python, unless you have (or anticipate having) applications that depend on @w{Python 2}, the best choice is probably to install @w{Python 3}. Python's location must be included in @env{PATH} so the shell can find it; the Python installer usually offers to do this. When you first run @command{units_cur}, you may get a complaint about a missing module; for example, @codequoteundirected on @example ModuleNotFoundError: No module named 'requests' @end example @codequoteundirected off @noindent If so, you will need to install the missing module. The easiest way to do this is with the @command{pip} command; for example, @example pip install requests @end example @noindent If you have @w{Python 2.7.9} or later or @w{Python 3.4} or later, you should have @command{pip}, though you may need to upgrade to the latest version. If you do not have @command{pip}, you will need to install it manually; see the Python documentation or the Python website for instructions on how to do this. @node Python and @command{configure} @unnumberedsec Python and @command{configure} The complete pathname in @file{Makefile} may contain backslashes; for example, @example PYTHON = C:\Program Files\Python\Python37/python.exe @end example @noindent or @example PYTHON = C:\Progra~1\Python\Python37/python.exe @end example @noindent The build will fail unless the backslashes are changed to forward slashes; for example, @example PYTHON = C:/Progra~1/Python/Python37/python.exe @end example The backslashes can be avoided by passing @env{PYTHON} to @command{configure} at invocation, or by specifying it in @file{config.site}, e.g., @example PYTHON=C:/Progra~1/Python/Python37/python.exe @end example @noindent A disadvantage is that if the installation directory changes with a future version of Python, @file{config.site} will need to be manually updated. A better approach is to give the normal Unix/Linux pathname: @example PYTHON=/usr/bin/python @end example @noindent This file need not exist; it simply tells the shell to use Python. Do not include the volume specifier (e.g., @code{C:}) or the @code{.exe} extension; if you do, the shell will assume that the path @emph{does} exist, and will complain that it cannot find it. @node Running the Currency Updater @unnumbered Running the Currency Updater @node Updating from the Command Line @unnumberedsec Updating from the Command Line If the location of @command{units_cur} is on your @env{PATH}, you can update the currency definitions by entering @samp{units_cur} from the command line; you will need elevated permission if you lack write permission on the file. Reliable free sources of currency exchange rates have been annoyingly ephemeral, sometimes causing update attempts to fail. Accordingly, several different sources are now supported---see the units manual for details. @node Automatic Updates @unnumberedsec Automatic Updates The easiest way to keep definitions updated is to create an entry in the Windows Task Scheduler. The Task Scheduler is fussy about the format for the action, which must be an executable file; an entry might look something like @example C:\Windows\py.exe "C:\usr\local\bin\units\units_cur" @end example @noindent if the Python launcher is in @file{C:\Windows} and the script is in @file{C:\usr\local\bin}. @bye units-2.23/getopt.h0000664000175000017500000001066112040123025013526 0ustar adrianadrian/* Declarations for getopt. Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. */ #ifdef STRINGS_H # include #else # include #endif #ifndef _GETOPT_H #define _GETOPT_H 1 #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns EOF, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { #if defined (__STDC__) && __STDC__ const char *name; #else char *name; #endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ #define no_argument 0 #define required_argument 1 #define optional_argument 2 #if defined (__STDC__) && __STDC__ #ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int argc, char *const *argv, const char *shortopts); #else /* not __GNU_LIBRARY__ */ extern int getopt (); #endif /* __GNU_LIBRARY__ */ extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind, int long_only); #else /* not __STDC__ */ extern int getopt (); extern int getopt_long (); extern int getopt_long_only (); extern int _getopt_internal (); #endif /* __STDC__ */ #ifdef __cplusplus } #endif #endif /* _GETOPT_H */ units-2.23/Makefile.Win0000664000175000017500000001031214564532464014270 0ustar adrianadrian# Makefile for units, a program for units conversion # created for Microsoft Visual C/C++ under Microsoft Windows(R) # # Copyright (C) 1996, 1997, 1999, 2005, 2006, 2012, 2013, 2014, 2017, 2020, # 2022, 2024 # Free Software Foundation, Inc # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # # The units program was written by Adrian Mariano (adrianm@gnu.org). # This makefile was written by Adrian Mariano and Jeff Conrad # (jeff_conrad@msn.com), and tested with Microsoft Visual Studio 2022 # on Windows 10 Professional. # It was previously tested with MS Visual Studio 2015 and MS Visual Studio # 2019 on Windows 10 Professional, and before that, with MS Visual C/C++ 6.0, # and MS Visual Studio 2005, 2008, and 2010 on Windows XP Professional SP3. # Change these to suit the system configuration # Normal location on 32-bit system # ProgFilesDir = %ProgramFiles% # Normal location for 32-bit executable on 64-bit system # ProgFilesDir = %ProgramFiles(x86)% # Normal location on 64-bit system ProgFilesDir = %ProgramFiles% bindir = "$(ProgFilesDir)\GNU\units" datadir = "$(ProgFilesDir)\GNU\units" srcdir = . # These are for Microsoft Visual Studio; edit to suit for other compilers. # Do NOT give the 'Za' flag with MSVC. CC = cl RC = rc.exe RES = units.res .rc.res: $(RC) /fo $@ $< CFLAGS = /O2 /W3 /nologo OBJS = units.obj getopt.obj getopt1.obj parse.tab.obj # suppress warnings about "unsafe" functions CDEFS = /DNO_SETENV /D_CRT_SECURE_NO_WARNINGS # add this to CDEFS if compiler version doesn't have isfinite() # /DNO_ISFINITE UDEFS = /DUNITSFILE=\"definitions.units\" /DLOCALEMAP=\"locale_map.txt\" RES = units.res all: units.exe units_cur.py units.exe: $(OBJS) $(RES) $(CC) $(CFLAGS) $(CDEFS) $(UDEFS) $(OBJS) $(RES) $(LIBS) getopt.obj: getopt.c $(CC) $(CFLAGS) $(CDEFS) /c getopt.c getopt1.obj: getopt1.c getopt.h $(CC) $(CFLAGS) $(CDEFS) /c getopt1.c units.obj: units.c units.h $(CC) $(CFLAGS) $(CDEFS) $(UDEFS) /c units.c parse.tab.obj: parse.tab.c units.h $(CC) $(CFLAGS) $(CDEFS) /c parse.tab.c units_cur.py: units_cur copy units_cur units_cur.py showdest: @echo datadir=$(datadir) & echo bindir=$(bindir) @if not exist "$(ProgFilesDir)" \ echo '$(ProgFilesDir)' does not exist and will be created echo: echo $(bindir) $(datadir) install: all $(srcdir)\winmkdirs $(bindir) $(datadir) copy /y units.exe $(bindir) copy /y definitions.units $(datadir) copy /y currency.units $(datadir) copy /y cpi.units $(datadir) copy /y elements.units $(datadir) copy /y locale_map.txt $(datadir) copy /y unitsfile.ico $(datadir) copy /y unitsprog.ico $(datadir) cacls $(datadir)\definitions.units /e /g Users:c cacls $(datadir)\definitions.units /e /g "Power Users":c cacls $(datadir)\currency.units /e /g Users:c cacls $(datadir)\currency.units /e /g "Power Users":c cacls $(datadir)\cpi.units /e /g Users:c cacls $(datadir)\cpi.units /e /g "Power Users":c cacls $(datadir)\elements.units /e /g Users:c cacls $(datadir)\elements.units /e /g "Power Users":c copy /y units_cur.py $(datadir) cacls $(datadir)\units_cur.py /e /g Users:c cacls $(datadir)\units_cur.py /e /g "Power Users":c # ensure that if the MKS Toolkit is installed, the cmd internal command # is run rather than the assoc script cmd /c assoc .units=Units.DataFile # change this if you want a different editor for units data files for %%i in (notepad.exe) do \ if exist %%~$$PATH:i (ftype Units.DataFile="%%~$$PATH:i" "%1") \ else (ftype Units.DataFile=notepad.exe "%1") reg add "HKCR\Units.DataFile\DefaultIcon" /f /ve /d $(datadir)\unitsfile.ico /t REG_SZ clean: -del /f/q $(OBJS) $(RES) units_cur.py units-2.23/parse.y0000664000175000017500000003773714557011526013415 0ustar adrianadrian/* * parse.y: the parser for GNU units, a program for units conversion * Copyright (C) 1999-2002, 2007, 2009, 2014, 2017-2018, 2020, 2024 * Free Software Foundation, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * This program was written by Adrian Mariano (adrianm@gnu.org) */ %{ #include #include #include "units.h" struct commtype { int location; const char *data; struct unittype *result; int errorcode; }; static int err; /* value used by parser to store return values */ /* The CHECK macro aborts parse if an error has occurred. It optionally destroys a variable. Call with CHECK(0) if no variables need destruction on error. */ #define CHECK(var) if (err) { comm->errorcode=err; \ if (var) destroyunit(var); \ YYABORT; } int yylex(); void yyerror(struct commtype *comm, char *); #define MAXMEM 100 int unitcount=0; /* Counts the number of units allocated by the parser */ struct function { char *name; double (*func)(double); int type; }; #define DIMENSIONLESS 0 #define ANGLEIN 1 #define ANGLEOUT 2 #define NATURAL 3 struct unittype * getnewunit() { struct unittype *unit; if (unitcount>=MAXMEM) return 0; unit = (struct unittype *) mymalloc(sizeof(struct unittype),"(getnewunit)"); if (!unit) return 0; initializeunit(unit); unitcount++; return unit; } void destroyunit(struct unittype *unit) { freeunit(unit); free(unit); unitcount--; } struct unittype * makenumunit(double num,int *myerr) { struct unittype *ret; ret=getnewunit(); if (!ret){ *myerr = E_PARSEMEM; return 0; } ret->factor = num; *myerr = 0; return ret; } int logunit(struct unittype *theunit, int base) { if ((err=unit2num(theunit))) return err; if (base==2) theunit->factor = log2(theunit->factor); else if (base==10) theunit->factor = log10(theunit->factor); else theunit->factor = log(theunit->factor)/log((double)base); if (errno) return E_FUNC; return 0; } int funcunit(struct unittype *theunit, struct function const *fun) { struct unittype angleunit; if (fun->type==ANGLEIN){ err=unit2num(theunit); if (err==E_NOTANUMBER){ initializeunit(&angleunit); angleunit.denominator[0] = dupstr("radian"); angleunit.denominator[1] = 0; err = multunit(theunit, &angleunit); freeunit(&angleunit); if (!err) err = unit2num(theunit); } if (err) return err; } else if (fun->type==ANGLEOUT || fun->type == DIMENSIONLESS || fun->type == NATURAL) { if ((err=unit2num(theunit))) return err; if (fun->type==NATURAL && (theunit->factor<0 || trunc(theunit->factor)!=theunit->factor)) return E_NOTINDOMAIN; } else return E_BADFUNCTYPE; errno = 0; theunit->factor = (*(fun->func))(theunit->factor); if (errno) return E_FUNC; if (fun->type==ANGLEOUT) { theunit->numerator[0] = dupstr("radian"); theunit->numerator[1] = 0; } return 0; } %} %parse-param {struct commtype *comm} %lex-param {struct commtype *comm} %define api.pure full %define api.prefix {units} %union { double number; int integer; struct unittype *unit; struct function *realfunc; struct func *unitfunc; } %token REAL %token UNIT %token REALFUNC %token LOG %token UNITFUNC %token EXPONENT %token MULTIPLY %token MULTSTAR %token DIVIDE %token NUMDIV %token SQRT %token CUBEROOT %token MULTMINUS %token EOL %token FUNCINV %token MEMERROR %token BADNUMBER %token NUMOVERFLOW %token NUMUNDERFLOW %token UNITEND %token LASTUNSET %type numexpr %type expr %type list %type pexpr %type unitexpr %type divlist %destructor { destroyunit($$);} %left ADD MINUS %left UNARY %left DIVIDE MULTSTAR %left MULTIPLY MULTMINUS %nonassoc '(' SQRT CUBEROOT REALFUNC LOG UNIT REAL UNITFUNC FUNCINV MEMERROR BADNUMBER NUMOVERFLOW NUMUNDERFLOW UNITEND LASTUNSET %right EXPONENT %left NUMDIV %% input: EOL { comm->result = makenumunit(1,&err); CHECK(0); comm->errorcode = 0; YYACCEPT; } | unitexpr EOL { comm->result = $1; comm->errorcode = 0; YYACCEPT; } | error { YYABORT; } ; unitexpr: expr { $$ = $1;} | divlist { $$ = $1;} ; divlist: DIVIDE list { invertunit($2); $$=$2;} | divlist divlist %prec MULTIPLY {err = multunit($1,$2); destroyunit($2); CHECK($1);$$=$1;} ; expr: list { $$ = $1; } | MULTMINUS list %prec UNARY { $$ = $2; $$->factor *= -1; } | MINUS list %prec UNARY { $$ = $2; $$->factor *= -1; } | expr ADD expr { err = addunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | expr MINUS expr { $3->factor *= -1; err = addunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | expr DIVIDE expr { err = divunit($1, $3); destroyunit($3); CHECK($1);$$=$1;} | expr MULTIPLY expr { err = multunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | expr MULTSTAR expr { err = multunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} ; numexpr: REAL { $$ = $1; } | numexpr NUMDIV numexpr { $$ = $1 / $3; } ; pexpr: '(' expr ')' { $$ = $2; } ; /* list is a list of units, possibly raised to powers, to be multiplied together. */ list: numexpr { $$ = makenumunit($1,&err); CHECK(0);} | UNIT { $$ = $1; } | list EXPONENT list { err = unitpower($1,$3);destroyunit($3); CHECK($1);$$=$1;} | list MULTMINUS list { err = multunit($1,$3); destroyunit($3); CHECK($1);$$=$1;} | list list %prec MULTIPLY { err = multunit($1,$2); destroyunit($2); CHECK($1);$$=$1;} | pexpr { $$=$1; } | SQRT pexpr { err = rootunit($2,2); CHECK($2); $$=$2;} | CUBEROOT pexpr { err = rootunit($2,3); CHECK($2); $$=$2;} | REALFUNC pexpr { err = funcunit($2,$1);CHECK($2); $$=$2;} | LOG pexpr { err = logunit($2,$1); CHECK($2); $$=$2;} | UNITFUNC pexpr { err = evalfunc($2,$1,0,0); CHECK($2);$$=$2;} | FUNCINV UNITFUNC pexpr { err = evalfunc($3,$2,1,0); CHECK($3);$$=$3;} | list EXPONENT MULTMINUS list %prec EXPONENT { $4->factor *= -1; err = unitpower($1,$4); destroyunit($4);CHECK($1);$$=$1;} | list EXPONENT MINUS list %prec EXPONENT { $4->factor *= -1; err = unitpower($1,$4); destroyunit($4);CHECK($1);$$=$1;} | BADNUMBER { err = E_BADNUM; CHECK(0); } | NUMOVERFLOW { err = E_OVERFLOW; CHECK(0); } | NUMUNDERFLOW { err = E_UNDERFLOW;CHECK(0); } | MEMERROR { err = E_PARSEMEM; CHECK(0); } | UNITEND { err = E_UNITEND; CHECK(0); } | LASTUNSET { err = E_LASTUNSET;CHECK(0); } | FUNCINV UNIT { err = E_NOTAFUNC; CHECK($2);} ; %% double factorial(double x) { return tgamma(x+1); } struct function realfunctions[] = { {"sin", sin, ANGLEIN}, {"cos", cos, ANGLEIN}, {"tan", tan, ANGLEIN}, {"ln", log, DIMENSIONLESS}, {"log", log10, DIMENSIONLESS}, {"exp", exp, DIMENSIONLESS}, {"acos", acos, ANGLEOUT}, {"atan", atan, ANGLEOUT}, {"asin", asin, ANGLEOUT}, {"sinh", sinh, DIMENSIONLESS}, {"cosh", cosh, DIMENSIONLESS}, {"tanh", tanh, DIMENSIONLESS}, {"asinh", asinh, DIMENSIONLESS}, {"acosh", acosh, DIMENSIONLESS}, {"atanh", atanh, DIMENSIONLESS}, {"round", round, DIMENSIONLESS}, {"floor", floor, DIMENSIONLESS}, {"ceil", ceil, DIMENSIONLESS}, {"erf", erf, DIMENSIONLESS}, {"erfc", erfc, DIMENSIONLESS}, {"Gamma", tgamma, DIMENSIONLESS}, {"lnGamma", lgamma, DIMENSIONLESS}, {"factorial", factorial, NATURAL}, {0, 0, 0}}; struct { char op; int value; } optable[] = { {'*', MULTIPLY}, {'/', DIVIDE}, {'|', NUMDIV}, {'+', ADD}, {'(', '('}, {')', ')'}, {'^', EXPONENT}, {'~', FUNCINV}, {0, 0}}; struct { char *name; int value; } strtable[] = { {"sqrt", SQRT}, {"cuberoot", CUBEROOT}, {"per" , DIVIDE}, {0, 0}}; #define LASTUNIT '_' /* Last unit symbol */ int yylex(YYSTYPE *lvalp, struct commtype *comm) { int length, count; struct unittype *output; const char *inptr; char *name; char *nonunitchars = "~;+-*/|\t\n^ ()"; /* Chars not allowed in unit name --- also defined in units.c */ char *nonunitstart = ".,"; /* Can't start a unit */ char *nonunitend = ".,_"; /* Can't end a unit */ char *number_start = ".,0123456789"; /* Can be first char of a number */ if (comm->location==-1) return 0; inptr = comm->data + comm->location; /* Point to start of data */ /* Skip spaces */ while(*inptr==' ') inptr++, comm->location++; if (*inptr==0) { comm->location = -1; return EOL; /* Return failure if string has ended */ } /* Check for **, an exponent operator. */ if (0==strncmp("**",inptr,2)){ comm->location += 2; return EXPONENT; } /* Check for '-' and '*' which get special handling */ if (*inptr=='-'){ comm->location++; if (parserflags.minusminus) return MINUS; return MULTMINUS; } if (*inptr=='*'){ comm->location++; if (parserflags.oldstar) return MULTIPLY; return MULTSTAR; } /* Look for single character ops */ for(count=0; optable[count].op; count++){ if (*inptr==optable[count].op) { comm->location++; return optable[count].value; } } /* Look for numbers */ if (strchr(number_start,*inptr)){ /* prevent "nan" from being recognized */ char *endloc; errno=0; lvalp->number = strtod(inptr, &endloc); if (inptr != endloc) { comm->location += (endloc-inptr); if (*endloc && strchr(number_start,*endloc)) return BADNUMBER; else if (errno){ errno=0; if (fabs(lvalp->number)==HUGE_VAL) return NUMOVERFLOW; else return NUMUNDERFLOW; } else return REAL; } } /* Look for a word (function name or unit name) */ length = strcspn(inptr,nonunitchars); if (!length){ /* Next char is not a valid unit char */ comm->location++; return 0; } /* Check for the "last unit" symbol, with possible exponent */ if (*inptr == LASTUNIT && (length==1 || length==2 && strchr("23456789",inptr[1]))){ comm->location++; if (!lastunitset) return LASTUNSET; output = getnewunit(); if (!output) return MEMERROR; unitcopy(output, &lastunit); if (length==2){ expunit(output, inptr[1]-'0'); comm->location++; } lvalp->unit = output; return UNIT; } /* Check that unit name doesn't start or end with forbidden chars */ if (strchr(nonunitstart,*inptr)){ comm->location++; return 0; } if (strchr(nonunitend, inptr[length-1])){ comm->location+=length; return 0; } name = dupnstr(inptr, length); /* Look for string operators */ for(count=0;strtable[count].name;count++){ if (!strcmp(name,strtable[count].name)){ free(name); comm->location += length; return strtable[count].value; } } /* Look for real function names */ for(count=0;realfunctions[count].name;count++){ if (!strcmp(name,realfunctions[count].name)){ lvalp->realfunc = realfunctions+count; comm->location += length; free(name); return REALFUNC; } } /* Check for arbitrary base log */ if (!strncmp(name, "log",3)){ count = strspn(name+3,"1234567890"); if (count+3 == strlen(name)){ lvalp->integer=atoi(name+3); if (lvalp->integer>1){ /* Log base must be larger than 1 */ comm->location += length; free(name); return LOG; } } } /* Look for function parameter */ if (function_parameter && !strcmp(name,function_parameter)){ free(name); output = getnewunit(); if (!output) return MEMERROR; unitcopy(output, parameter_value); lvalp->unit = output; comm->location += length; return UNIT; } /* Look for user defined function */ lvalp->unitfunc = fnlookup(name); if (lvalp->unitfunc){ comm->location += length; free(name); return UNITFUNC; } /* Didn't find a special string, so treat it as unit name */ comm->location+=length; if (strchr("23456789",inptr[length-1]) && !hassubscript(name)) { /* ends with digit but not a subscript, so do exponent handling like m3 */ count = name[length-1] - '0'; length--; if (strchr(number_start, name[length-1])){ free(name); return UNITEND; } } else count=1; free(name); output = getnewunit(); if (!output) return MEMERROR; output->numerator[count--]=0; for(;count>=0;count--) output->numerator[count] = dupnstr(inptr, length); lvalp->unit=output; return UNIT; } void yyerror(struct commtype *comm, char *s){} int parseunit(struct unittype *output, char const *input,char **errstr,int *errloc) { struct commtype comm; int saveunitcount; saveunitcount = unitcount; initializeunit(output); comm.result = 0; comm.location = 0; comm.data = input; comm.errorcode = E_PARSE; /* Assume parse error */ errno=0; /* errno should only be set in the case of invalid function arguments */ if (yyparse(&comm) || errno){ if (comm.location==-1) comm.location = strlen(input); if (errstr){ if (comm.errorcode==E_FUNC || errno) *errstr = strerror(errno); else *errstr=errormsg[comm.errorcode]; } if (errloc) *errloc = comm.location; if (unitcount!=saveunitcount) fprintf(stderr,"units: Parser leaked memory with error: %d in %d out\n", saveunitcount, unitcount); return comm.errorcode; } else { if (errstr) *errstr = 0; multunit(output,comm.result); destroyunit(comm.result); if (unitcount!=saveunitcount) fprintf(stderr,"units: Parser leaked memory without error: %d in %d out\n", saveunitcount, unitcount); return 0; } } units-2.23/Makefile.in0000664000175000017500000003063514557020456014146 0ustar adrianadrian# @configure_input@ # Makefile for units, a program for units conversion # # Copyright (C) 1996, 1997, 1999, 2005, 2006, 2012, 2014, 2017, 2018, 2022, 2024 # Free Software Foundation, Inc # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # # This program was written by Adrian Mariano (adrianm@gnu.org) # @MKS_POSIX@ SHELL = /bin/sh prefix = @MKS_DRIVE@@prefix@ exec_prefix = @exec_prefix@ srcdir = @srcdir@ CC = @CC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ MAKEINFO = makeinfo TEXI2DVI = texi2dvi TEXI2PDF = texi2pdf MKDIR_P = @MKDIR_P@ LDFLAGS = @LDFLAGS@ LIBS= @LIBS@ VPATH = @srcdir@ HAVE_PYTHON = @HAVE_PYTHON@ PYTHON = @PYTHON@ HAVE_MKS = @HAVE_MKS@ datarootdir = @datarootdir@ datadir = @datadir@ sharedstatedir = @sharedstatedir@ bindir = @bindir@ infodir = @infodir@ mandir = @mandir@ transform=@program_transform_name@ DEFS=-DUNITSFILE=\"@UDATADIR@definitions.units\" -DLOCALEMAP=\"@UDATADIR@locale_map.txt\" \ @DEFIS@ @DEFS@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ OBJECTS = units.@OBJEXT@ parse.tab.@OBJEXT@ getopt.@OBJEXT@ getopt1.@OBJEXT@ @STRFUNC@ .PHONY: currency-update-check .SUFFIXES: .SUFFIXES: .c .@OBJEXT@ .rc .res .texinfo .pdf RC = rc.exe RES = units.res .rc.res: $(RC) -fo $@ $< .texinfo.pdf: $(TEXI2PDF) $< .c.@OBJEXT@: $(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -I$(srcdir) -c $< # %.@OBJEXT@: %.c # $(CC) $(DEFS) $(CFLAGS) -I$(srcdir) -c %.c DISTFILES = README units.info units.txt getopt1.c units.dvi \ Makefile.in units.c getopt.c getopt.h definitions.units units.texinfo \ configure.ac configure strfunc.c COPYING install-sh \ units.man NEWS texi2man INSTALL units.pdf units_cur \ parse.tab.c parse.y units.h locale_map.txt fdl-1.3.texi currency.units cpi.units elements.units \ unitsfile.ico unitsprog.ico units.rc icon_ms.png \ Makefile.OS2 makeobjs.cmd README.OS2 \ UnitsMKS.texinfo UnitsMKS.pdf setvcvars.sh \ UnitsWin.texinfo UnitsWin.pdf winmkdirs.bat Makefile.Win dehtml elemcvt.sh all: units@EXEEXT@ units.1 units.info units_cur_inst units.@OBJEXT@: units.c units.h parse.tab.c: parse.y units.h bison parse.y parse.tab.@OBJEXT@: parse.tab.c units.h units@EXEEXT@: $(OBJECTS) @MKS_RES@ $(CC) $(CFLAGS) $(LDFLAGS) -o units@EXEEXT@ $(OBJECTS) @MKS_RES@ $(LIBS) units_cur_inst: units_cur sed -e "s*output_dir = ''*output_dir='@CDAT@'*"\ -e "s@/usr/bin/python@$(PYTHON)@" \ $(srcdir)/units_cur > units_cur_inst install-support: definitions.units elements.units units_cur_inst $(MKDIR_P) $(DESTDIR)@UDAT@ $(DESTDIR)$(bindir) $(DESTDIR)@CDAT@ $(INSTALL_DATA) $(srcdir)/definitions.units $(DESTDIR)@UDAT@definitions.units $(INSTALL_DATA) $(srcdir)/elements.units $(DESTDIR)@UDAT@elements.units -rm -f $(DESTDIR)@UDAT@currency.units $(DESTDIR)@UDAT@cpi.units $(INSTALL_DATA) $(srcdir)/currency.units $(DESTDIR)@CDAT@currency.units $(INSTALL_DATA) $(srcdir)/cpi.units $(DESTDIR)@CDAT@cpi.units if [ $(DESTDIR)@CDAT@ != $(DESTDIR)@UDAT@ ];then ln -sf @CDAT@currency.units $(DESTDIR)@UDAT@currency.units;fi if [ $(DESTDIR)@CDAT@ != $(DESTDIR)@UDAT@ ];then ln -sf @CDAT@cpi.units $(DESTDIR)@UDAT@cpi.units;fi $(INSTALL_DATA) $(srcdir)/locale_map.txt $(DESTDIR)@UDAT@locale_map.txt if test $(HAVE_PYTHON) = yes; then \ $(INSTALL_PROGRAM) units_cur_inst $(DESTDIR)$(bindir)/`echo units_cur|sed '$(transform)'`;fi if test $(HAVE_MKS) = yes; then make install-mks; fi install: units@EXEEXT@ install-doc install-support $(MKDIR_P) $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) units@EXEEXT@ $(DESTDIR)$(bindir)/`echo units@EXEEXT@|sed '$(transform)'` install-strip: units@EXEEXT@ install-doc install-support $(MKDIR_P) $(DESTDIR)$(bindir) $(INSTALL_PROGRAM) -s units@EXEEXT@ $(DESTDIR)$(bindir)/`echo units@EXEEXT@|sed '$(transform)'` install-doc: install-man install-info install-man: units.1 $(MKDIR_P) $(DESTDIR)$(mandir)/man1 $(INSTALL_DATA) units.1 $(DESTDIR)$(mandir)/man1/`echo units|sed '$(transform)'`.1 # file association and DefaultIcon # assume that if we're running the MKS Toolkit, we're running the Korn # shell, and can use pattern replacement install-mks: $(INSTALL_DATA) $(srcdir)/unitsfile.ico $(DESTDIR)@UDAT@unitsfile.ico $(INSTALL_DATA) $(srcdir)/unitsprog.ico $(DESTDIR)@UDAT@unitsprog.ico assoc .units Units.DataFile vidir="$${ROOTDIR//\//\\}"; \ ftype Units.DataFile "\"$$vidir"'\mksnt\viw.exe" -Uc8p8 "%1"' registry -s -k "HKCR\\Units.DataFile" -v 'GNU units data file' iconfile=$(DESTDIR)@UDAT@unitsfile.ico; \ registry -s -k "HKCR\\Units.DataFile\\DefaultIcon" -n '' -v "$${iconfile//\//\\}" units.man: units.texinfo texi2man ./texi2man units.texinfo > units.man elements.units: curl 'https://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl?ele=&ascii=ascii2&isotype=all' \ | ./elemcvt.sh > elements.units units.1: units.man sed s!@DATAFILE@!@UDAT@definitions.units! $(srcdir)/units.man > units.1 install-info: units.info $(POST_INSTALL) $(MKDIR_P) $(DESTDIR)$(infodir) $(INSTALL_DATA) $(srcdir)/units.info $(DESTDIR)$(infodir) # Run install-info only if it exists. # Use `if' instead of just prepending `-' to the # line so we notice real errors from install-info. # We use `$(SHELL) -c' because some shells do not # fail gracefully when there is an unknown command. if test -f $(DESTDIR)$(infodir)/dir; then \ if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ install-info --dir-file=$(DESTDIR)$(infodir)/dir \ $(DESTDIR)$(infodir)/units.info; \ else true; fi \ else true; fi Makefile: Makefile.in config.status ./config.status uninstall: -rm -f $(DESTDIR)$(bindir)/`echo units@EXEEXT@|sed '$(transform)'` \ $(DESTDIR)$(mandir)/man1/`echo units|sed '$(transform)'`.1 \ $(DESTDIR)$(infodir)/units.info \ $(DESTDIR)@UDAT@definitions.units \ $(DESTDIR)@UDAT@elements.units \ $(DESTDIR)@CDAT@currency.units \ $(DESTDIR)@UDAT@currency.units \ $(DESTDIR)@CDAT@cpi.units \ $(DESTDIR)@UDAT@cpi.units \ $(DESTDIR)@UDAT@locale_map.txt \ $(DESTDIR)@UDAT@unitsfile.ico \ $(DESTDIR)@UDAT@unitsprog.ico \ $(DESTDIR)$(bindir)/`echo units_cur|sed '$(transform)'` -rmdir $(DESTDIR)@UDAT@ @if test -f $(DESTDIR)$(infodir)/dir; then \ echo You may need to remove units.info from $(DESTDIR)$(infodir)/dir; \ else true; fi clean mostlyclean: texclean -rm -f *.@OBJEXT@ *.res units@EXEEXT@ units.dvi units.1 distname .chk units_cur_inst currency.units.test cpi.units.text -rm -rf wwwold wwwnew distclean: clean -rm -f config.* Makefile TAGS maintainer-clean: clean -rm -f units.txt units.info units.pdf units.dvi \ UnitsMKS.pdf UnitsWin.pdf \ units-*.tar.gz parse.tab.c currency.units cpi.units # get rid of the TeX auxilliary files texclean: -rm -f units.log UnitsMKS.log UnitsWin.log \ *.aux *.cp *.fn *.ky *.op *.pg *.toc *.tp *.vr currency-update-check: @echo "Trying to update currency.units and cpi.units" -$(srcdir)/units_cur currency.units.test cpi.units.test @echo "--------------------------------" @if [ ! -s currency.units.test ]; then echo "Currency update failed"; else echo "Currency update appears OK"; fi @if [ ! -s cpi.units.test ]; then echo "Currency update failed"; else echo "CPI update appears OK"; fi @rm -f currency.units.test cpi.units.text sig: echo units-`sed -n -e '/\#.*VERSION/s/.*"\(.*\)"/\1/gp' \ $(srcdir)/units.c`.tar.gz > distname echo 'version: 1.2' > `cat distname`.directive echo 'directory: units' >> `cat distname`.directive echo 'filename: '`cat distname` >> `cat distname`.directive gpg --clearsign `cat distname`.directive gpg -b `cat distname` -rm -f `cat distname`.directive distname dist: $(DISTFILES) units @./units_cur @echo Updated currencies, running check: @for system in si emu esu gaussian gauss hlu natural \ natural-gauss hartree planck planck-red ; do \ echo $$system; ./units -f definitions.units -c -u $$system; done @echo '' @chmod g+rw,o+r * @echo units-`sed -n -e '/\#.*VERSION/s/.*"\(.*\)"/\1/gp' \ $(srcdir)/units.c` > distname -@if [ -d `cat distname` ]; then rm -r `cat distname`; fi -@if [ -e `cat distname`.tar.gz ]; then rm `cat distname`.tar.gz; fi @mkdir `cat distname` @dst=`cat distname`; for f in $(DISTFILES); do \ ln $(srcdir)/$$f $$dst/$$f || { echo copying $$f; \ cp -p $(srcdir)/$$f $$dst/$$f ; } \ done @chmod 777 `cat distname` @tar czf `cat distname`.tar.gz `cat distname` @echo `cat distname`.tar.gz created -@rm -rf `cat distname` distname dvi: units.dvi pdf: units.pdf winpdf winpdf: UnitsWin.pdf UnitsMKS.pdf units.dvi: units.texinfo $(TEXI2DVI) $(srcdir)/units.texinfo info: units.info units.info: units.texinfo $(MAKEINFO) $(srcdir)/units.texinfo units.txt: units.1 nroff -Tascii -man $(srcdir)/units.1 | col -b > units.txt doc: units.dvi units.info units.txt units.pdf UnitsMKS.pdf UnitsWin.pdf check: all currency-update-check @echo Checking units @./units -f $(srcdir)/definitions.units \ '(((square(kiloinch)+2.84m2) /0.5) meters^2)^(1|4)' m \ | sed -n -e 's/ \* //p' > .chk @if [ "`cat .chk`" = 6 ]; then echo Units seems to work; \ else echo Something is wrong: units failed the check: ;cat .chk; fi @rm -f .chk configure: configure.ac autoconf TAGS: units.c etags $(srcdir)/units.c $(srcdir)/parse.y tags: units.c ctags $(srcdir)/units.c smalldist: units.c units.h parse.y parse.tab.c echo units-`sed -n -e '/\#.*VERSION/s/.*"\(.*\)"/\1/gp' \ $(srcdir)/units.c` > distname -rm -r `cat distname` `cat distname`.tar `cat distname`.tar.gz tar cf `cat distname`.tar units.c units.h parse.y parse.tab.c\ getopt1.c getopt.c getopt.h gzip `cat distname`.tar # # This section attempts to update the manual on the GNU web server # If all works correctly, it will add/remove files from the CVS tree as required. # It assumes there are only files in the manual and manual/html_node directories. # www: doc -rm -r wwwold wwwnew mkdir wwwnew ./mygendocs.sh --email adrianm@gnu.org -o wwwnew/units/manual units "GNU Units Manual" mkdir wwwold cd wwwold;CVS_RSH=ssh cvs -z3 -d:ext:adrianm@cvs.savannah.gnu.org:/webcvs/units co units cd wwwold/units/manual;ls > /tmp/wwwunits.listold cd wwwnew/units/manual;ls > /tmp/wwwunits.listnew cd wwwold/units/manual/html_node;ls > /tmp/wwwunits.hlistold cd wwwnew/units/manual/html_node;ls > /tmp/wwwunits.hlistnew -grep -vf /tmp/wwwunits.listold /tmp/wwwunits.listnew > /tmp/wwwunits.add -grep -vf /tmp/wwwunits.listnew /tmp/wwwunits.listold | grep -v CVS > /tmp/wwwunits.rm -grep -vf /tmp/wwwunits.hlistold /tmp/wwwunits.hlistnew > /tmp/wwwunits.html.add -grep -vf /tmp/wwwunits.hlistnew /tmp/wwwunits.hlistold | grep -v CVS > /tmp/wwwunits.html.rm rsync -Cr --del -v wwwnew/units/manual wwwold/units/ @if [ -s /tmp/wwwunits.add ]; then cd wwwold/units/manual; cvs add `cat /tmp/wwwunits.add`; \ cvs commit `cat /tmp/wwwunits.add`; fi @if [ -s /tmp/wwwunits.rm ]; then cd wwwold/units/manual; cvs remove `cat /tmp/wwwunits.rm`; \ cvs commit `cat /tmp/wwwunits.rm`; fi @if [ -s /tmp/wwwunits.html.add ]; then cd wwwold/units/manual/html_node; \ cvs add `cat /tmp/wwwunits.add`; cvs add `cat /tmp/wwwunits.add`; fi @if [ -s /tmp/wwwunits.html.rm ]; then cd wwwold/units/manual/html_node; \ cvs remove `cat /tmp/wwwunits.htmlrm`; cvs remove `cat /tmp/wwwunits.rm`; fi cd wwwold/units; cvs commit -rm /tmp/wwwunits.hlistnew /tmp/wwwunits.hlistold /tmp/wwwunits.listnew /tmp/wwwunits.listold -rm /tmp/wwwunits.html.rm /tmp/wwwunits.html.add /tmp/wwwunits.add /tmp/wwwunits.rm -rm -r wwwold wwwnew # # Not very portable code to compile into library (written for Linux) # libunits.a: $(OBJECTS) ar -r libunits.a $^ libunits.so: $(OBJECTS) $(CC) $(LDFLAGS) -shared -o $@ $^ # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: units-2.23/icon_ms.png0000664000175000017500000000051612312651560014222 0ustar adrianadrian‰PNG  IHDRóÿasRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜC%+ÎIDAT8Ë­Ó½jBA†á'•RÚ™:XŸJHS¤³°’$×`¡¼Œx‚—›ÖFmì‚X& XXi³²Ž?,ìÌð~3̲\A;t±Ä/èà?x,bð‰ ÚØÄ_G¸’Ô ’¥H¼À}¬³N”÷Cwçô"õÂI .ª‹àtŠä\xƒ÷p¯‡gýÃ<“?ªUØzª)š¸Cƒ. Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO #define _NO_PROTO #endif #ifdef HAVE_CONFIG_H #include #endif #if !defined (__STDC__) && !defined (_MSC_VER) || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #if defined (_LIBC) || !defined (__GNU_LIBRARY__) /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ #include #endif /* GNU C library. */ /* This is for other GNU distributions with internationalized messages. The GNU C Library itself does not yet support such messages. */ #if HAVE_LIBINTL_H # include #else # define gettext(msgid) (msgid) #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg = NULL; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns EOF, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* XXX 1003.2 says this must be 1 before any call. */ int optind = 0; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return EOF with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ #include #define my_index strchr #else /* Avoid depending on library functions or files whose names are inconsistent. */ char *getenv (); static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ #if !defined (__STDC__) || !__STDC__ /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); #endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ static const char * _getopt_initialize (optstring) const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind = 1; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns `EOF'. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { optarg = NULL; if (optind == 0) optstring = _getopt_initialize (optstring); if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && (argv[optind][0] != '-' || argv[optind][1] == '\0')) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return EOF; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if ((argv[optind][0] != '-' || argv[optind][1] == '\0')) { if (ordering == REQUIRE_ORDER) return EOF; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if (nameend - nextchar == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (opterr) fprintf (stderr, gettext ("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (opterr) if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, gettext ("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, gettext ("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (opterr) fprintf (stderr, gettext ("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (opterr) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, gettext ("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, gettext ("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (opterr) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, gettext ("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, gettext ("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (opterr) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, gettext ("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* _LIBC or not __GNU_LIBRARY__. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == EOF) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ units-2.23/UnitsMKS.pdf0000664000175000017500000045435214564532666014270 0ustar adrianadrian%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 363 /Filter /FlateDecode >> stream xÚ…‘_Oƒ0Åßù}„jo/ý÷:3gf¢¢>¨Ë€­!˾¾…n„™EÓ‡Þ¶§çôþ „¹Ä0¢©I4Ù|lØm¶Ä‹Žº¹›ÿ”Ľ&æÎ à¥K0ÊPõÊY\ÝhN8£RhAÒ¢—Ð’ ãVy g{[f¶ÚF1*®«Ì·UÛ­ËryžÙÎ} †œrðUQ7ž‚S ¥©”ê¬_IÎHL_"aÞ´ÓCB1q`Æ ©rMÅ K(¨ãÿ.ówèù\×U³Î.÷A8%Ô<ù«Ö¦Ë endstream endobj 15 0 obj << /Length 361 /Filter /FlateDecode >> stream xÚ}QËNÃ0¼ç+|t$büÌãJE+@EŒ8P!I‹ÔF‰K…øyì¸AABȇ̬';»c°;dŒ¡‚ç ÚGx¬ö;Àý*"'gÔ}ÿ•$‚R̺]Èè|) ¸ @n½q4%ÈÆ/òÚ§scJSÄÒÌ :ú´²ÃI÷k@FPÆÅ$Û`?üXM?(£ƒE”¹ ØT]«ª7ƒÙÚ@Ÿ”®ÿó8Ú€„Šâ" Ú•mã„1mÛxÀá\„Êúæ!ç ßšîMY4öîQЦæÝ{}öj×z`Gàˆf `ÄhtUX9åó•†0sÏ7Óm0¥C8<Ò¡˜¤_S]úAû¦ ìÁGá÷i˾™iÌA×¥uyž…╮ƥ¢K}Ò3Ÿß endstream endobj 43 0 obj << /Length 1698 /Filter /FlateDecode >> stream xÚíšËrÛ6†÷~ NWÒB(qºËµ“¦™z7›¦ E¢l¶Ù¡$§ÉÓ @¤AÓĉ{¼-ó§ñ:çà³\ýÀLæÇH"²Õî$oßmÎ3sñúçhã*páE>>;ùñ9¥ÌÌ%ÌÎ6…Hînw¶Îþ˜•ó?Ï~9yvæîCJÔ‘WÊ R¢Õ31AÄĨÍ%™-ßo‹ùs:«7æõI]Í1œ ó²×ÏdnE& é[©ÿŽ dîtÚ›åª0‘0~(%@p¡þ¢üi¾€Œ›6øí3ßü¢7»Ý8b„('gÓŽHt ']ô w¬ô®oÚš¯HÓPBS¥mô5ÒÓ\¹Q}|,·ë²:7t.«µ¹xQíËíV`¥þMÔHÎ`‡Ý±*;Gxb‚wÏ)ÛíX¥ÚÞ‡Çl÷ ˜¶=MÚÙ>’æC˜•»HF%ˆK#ýÛå‰YÑ\–ÅcÃþ8b_Ò½»”îzÞ"-á×l¢^x€¢ñM'N•U‘×H:p¹ÙJ®Šè»’ócãeƒò/A¤#wUW›R!ÈU%XÜZÈ¿­u©öá1}PÁ4ÙÁ¨¤CQÕSv÷‡zW~2¥ãÙáBwz˜t¥sy(U«ª¢Håÿî%Ð)𬠩4õá1š|kÃ4¥É¶4E%M©ÞÈ6Ö»²*÷‡FQcвê´)/ËmqÌ\jjïH_­í³íóÑùcg:…\i”ö!”šÛj鯈Ҕ™vRÍìÃcfú#63M¶53*éêAž„ì å;ˆIi<ø¡k7êóf¹ š!Õ%{h[¿qí±þ¥r؇Ç8ô¡ AÓd[£’]R!‚ƒœ[É×ǪrÓ¨¾èŒzbžÖ«“ï¦úLPÐ^"^x„‚%A e5qIGÇ@"ÜírÔ¦=];–¦N¼ZVå¦ØÛ‚ò\ytáÏè;îÑBÎTÖŒT¨úðT¾Ãa¨Òd[¨¢’*–ÎížÊ³fêý|¡§ÔëYx@™•Õ ÛÅ3[ͧ¶6û¤rÞm]Cœ²ÛSªÝ}xÌnìiÐî4ÙÖî‘ä•},‚sÀ„ퟞ—•Ýim7^ÕÄÖ•„ wå«åßÅÆå“ÑÞÃ*…ÝüÖê7ÜoØóêÆ5qÏË ìy Ì¢S{^‰ÒÝž×X:Üôõ8ˆØu—W/ß„6 P¸µ´âÂF î¨'LÄÑc6Kõ\ø¨&>ì_“'^ë9ŽÞõ‡³`Í%àôaSís[ ëijúêÃcéË%œ¾ÒdÛô•tlæ*I·ãê ŽÕ®1$ݾùYgg*–}x KŸ‘0–i²-–#É+UsÛ½Ý+½43<Ò6àíÕ£ý^/åÀÙªôv»FeTÏÈ#wöˆÒD‘ì†)±Hzá‘"9ûÉ"™(Ýɸ´v+‡ºck®>Û&õ€H¦øaˆß«óh7Ș5&•±><Ƙï6›d,MÚ1•ÖŒ©z‡¨ìöΛ¦¨VMyZè³zÿÁåšßÿiÓÊzy(š fb€øí.S¦Ú‘H5µ™êï´©iÒÎÔ‘t¸ƒA*¿ë3~~ãæÙ§áS‚BñCóUw¢ké,LìZ¼ðH×2à"„dª¬îZâ’EN³í»%Ϭö¨Ö%|HL™zH !ú°¶xsëQÖ»T]tŒ@‡0€Iš-C½+å iIÇûª”™ÅD}ðPô®¯pˆªŠŠnY'5QÓº?±¦yᑚ6S>UÓ¥»š6–žH$z9ˆØÅ*mÚ*WÖ6M½ŒxRïvnAèW½<!†ü¾ÙšúêÛÑNýî÷á±/¿o!~ûÓdÛ¯TÒQ£ –ÒvÖŽ‡z§Y"zˆŠðî:ɇsà SZçR ìÃcú8„ ŒÉþ<ÉM endstream endobj 154 0 obj << /Length 2225 /Filter /FlateDecode >> stream xÚ•X[oܶ~ϯØG-à¥E‰Ô%}9MÎiÑnƒÆiqpzPp%®ÍZ—…(Ùu‘ߥ•ÖrâÀ€—¢Fœá\¾ùH¾ áoòp“Æ1ËE¶)êW¡›ín64øåûWÜËí@p7“|sýêò;)7“ÐǸ·p¹©¥î(‡½ðW·ª§Ñ¡­ª)qBY;ÔÚ?ô“\›Å%|UoÐR·˜A×áh?i0 .¾óUíGÇ òqÒ7‰=Ò‡'‡Ì÷4«>ùÔ;0e-º„~e¨Ù »XK1‡,9åØÛ×—ƒí.«¶PÕåÞ4ké–K&ù)ÝÚŽÔ¸½ÅRú/]`PˆN¯ö•8ä‰äQpÕÚžÄÑý‹ÏJc‹ÁºpÌQŸ¢Q”@ùÆËhšúX™ÂôÕ#Ë(ŸÁR]!úÌò5–ª¤>ôh_iZz¤m€LÑÖGƒ•Éœ~.]hO™ô0ú_‡dH†A¡¨Ê¶4Úã†Bvîî,c–ûbEs'ñ²¢qiÊ,×ÙÑÖµƒ|€"¬=É+¦Da qœ”\©;}0•f¿­G=ÉXMQÿdµ>nÀZ Rq–¾ sÍ$©sågkpê>¢£¼as•<†äˆø õŽÒO•ËeIä,…`/,˜ò£Ô½2•e@àç2=faì‹ÆX«øûpkF ÂÇ~”Ýc£ð"ø‘ʶñ·j5¡¢D²<›ê÷¹š…„J’|”WW£¡÷¾9ƒ…nŠàΛٮ©ÞÅ>ލc@}ù8ŽÂ(¢Ñ¸ÖÙ‡ Å ÈìðÐ=®ÇÃi…ÒÁS_Ø1ô¾TçèÏüÉü“Ç”3oÛ¦S嘊2|„YÌÂPnD¿B~ ½ôn&N@¸L“³EqêÃá™ó¯Ú6 Ϲ1QÎYÜüeÆŒÒOYäâù¢Îdärµ@W‹§®¦ä^ vQèC[He|vFÂîS ?œ;-%çKáJ1_«'T)X,’hR‰‚@,[ËÏ÷ÛxzwoôÃ3žCãòÙñ³Ç“sÚ‡¸C´ï‚ö§­8€*Ih:{KY'  ¿ò,h<¤YäfúÒõç`=õê<ú_í&Q±,L•À.!ÓŽUÚuÀ@ )³!ü–ÖŒ},£5Ó|æ@¾àPŸ<ù7æ@¿ç.†)€êÊôÆÁ?<ÚÓqž”Ÿ%¨ÇSÌ<=ýâkÕùU.r¿ Ü)ó'U–¦' YóÑû›Öp´Pn$ÄØîtég"ø–ê¶óͬӪ‚΃Og¶rW«ÍÍ-å÷÷ól{äÌäPåO‚¯¡ÀFªþFîŸ@ã} j{\"Gæ±’ gQ2QLŠ<³¦_=®'P~¡Áî\ù¥éœCS²G:ƒã™Å\äð¥yçðÝQiÑh ::X¢Üs-4O˜8±ç)M×L…ÓÄò¢è‚RõºkÔÎóÈ$dÙ9÷0¾/>bòø¢~¤!À>\•µg,cÜN7¾Xåp<“ó{ŸÏoC2žMõ®ú‰Þ¸ÜG·ÎÝ…:±8@BH,À„eÒ'DäâC¯º~¢Oœ¦#½Â¡ ^R­‰“½Ã{ >e“§«'UÖ¦A‚¥FOzÏtæXéfSiq Ù{Û~p·üäï(©Öpv¤;07ã øf$øŠÈ†cH@HF ”Ýß~‰ñrÇš|hº¶©iìWHH@«AH°4E´ V÷š‡,Éä2{F¦³ô ún% ÒlZ«ûûâ^uöÙ,˜†˜îëU@ç¡`2‰—±g„Øìò³J¶˜p;:EFøÈ¼ïôQH6¥;!€£ß”÷N»!øW« @t“¯ìxûãGÀšÆw[qÊÑÓÅ ¿%r=òs^KàPŸ{íò³•¹æ.éÝu5Ý^N—%¥kË+ÊÓ°XÏnÖ4Šœ 9QsýŽ×~ȼ°<p@-÷“xãÞйeI¼>ܽт¸€×†#ñ‡vD ô×Ï\hŸ»Ä†/¹o41Á¾ýÉæ‰ó nü0T Žu†WG:­Þ¹>£¿Êì/ò ç À[h¡™'OÚzœ³¬4Öút>¯³ÛŠp²<£þjnœ÷dÀß•²‘þÿG-L< endstream endobj 158 0 obj << /Length 2410 /Filter /FlateDecode >> stream xÚ½YmoÛ8þÞ_äËÉ@̈/’¨.ò!ëk{¹ë¦Eâ^Ø.rª,ÛBmÉä6¹î·ß ‡zs˜Æ·(bj4$‡óú ÅO|øã'±IÉb¥OÒí ßP«Õ nÞ¼à–o ŒÓçÏó篃à„û,öc~2_—š/N~ó~Þç›E^¬&¿Ïÿ¼áW)†#Ÿ8÷EÞÔ–m´¤LD¢e+‹ÉTJé}Ì‹E9ÚûV#AyßòfM¯~ùÇ- æ-½r2®ró%o&S®e$<Û¼x5ïq¤ó‘ ´8áŠI «‚P+Æ¥"‰geñÉçjµ¯:=è`8AkÆb˜–Å2æÌ¥‹©åò˜qau<_g.õ É‚Pµl2Ùi¸N«|ºRR{IÓdÛØž"¯)‰ºM¾ æ3zjÖvðmMœ»ŠÔžfuM/뇖¢1˜.ÛÁûÈË`TL`аÉ4 "ð»3Ø]ÇLk –Œ$`Q|(òûé&oå:²;Ôg.]pN‡Ç)C±0êôV.ÐlPdÙ¢ÆaèÕåÖîºÎ6;]‰Øû¸n9÷u^L¸·¢'£ ÇÄé©í‘y²8Œí™9É1ðwç ΄œÓAÇJ¦Ðh Œ¤8 ƒ_#7ÐDÚûšWe±¥qC/¾N‚ÀKª<ù¼ã7÷j§úuÄ”ŽÚ-“ô.»ÏÒ}ó2‚†ë¼,œÑ?±bŠÆÚHŠ…Óå9 Ugå÷—ó¿Ýݾzys9wãZ\ûM]3¡ò®ðp‘ôòš~­à0Kê<«hŒÁ€¿û:³„µü’§UYÃ4|TÞ?ó ªt³‡A²!êmƒO‹¼¤ÇMMËí.ßÀŽÃI®YÄãÎħº”ðA]áX]‹¼ÊÒfó0AmzU¢V8F'Q›uUîWë–œ•\(ߪdgcÖ)!ó}ÝI—º¤ãœ©@µ“0T]ꬡÊÒºª[Àß·†°t*¶—¡ê×a:Î2 ¥O÷ŒKæk/‡roÍ@\wºÉ‹V¡_'Æ¿LŒáîšà¿‡ú%­š%?`WãBµœÚ,ìóÞÿ®†]R×Ùâ»: øxð't4´nN©õPšhK“&'Ì£¼ÄŠW$Ûì{³·§Ø%yUŸÙEXÆœEbÊ£é8ë‹÷‚À ¼ß¬®Åpn¤ v;ó¢î4€Ã–ëµPÀ"ÑÅÜWsW¶»3c¿;€GôÿÇlÄKS~Ì`›TAÄar¾Èî)q•Uc’±•Û(B³ùa2Ì#[±ßÖ¼>Ü{mëŠÞg÷Év·É0ÿ`ä,‰ÚH*£^•‚T)\Š­bÈT$âÛ¶(®ÛÃ\LÛµÍ@©Úf9±0¢ÊVIµØ˜Ë|.—e>Îˆâ¢øÈpt\Îg!Ór¿±Â´hß ãˆRÚœ/Yóâtöò{ùúØ2riñUYe­€hËÆ)•Aég¢2l(»w|¡rÍÿ±Å–Vi.RèvoɺCÅ]±׺º¾_¾}{`¦Ïyqn+K/ö4u®0›]ôMè ³×o/ßÜ^œNß »ÆGi½›ÝÌA¾Ù‡›Ww×ïî>^Þ\_]¿¹µ¯‹rS®J÷†¿þêÚ±û#6=Â%?ùffL(9ºÚjžïÏxfØ!L8˜³˜DÃ+«³¾qaÃh˜&ZM=Ÿ&’ÊvFEi3^}¶­o×ã|þÎÝ>—ò¨Ë}Pó AÅÜÞ®Ô¡R‚ɱÏ~Åí½÷l_7å6ÿ7Š¥³½°„ÁU‡’ʵ«?¾@GÌ*[Ìj«äÚû—Ì¡¢ú£äKÖ&³ãó ç/´•åwÂ_%œ÷˜ï"~Ž.Q`ázO€‡®üÊ*7--WXS{ÅŠù‘œ:ñ[4üƒ·wÂT؃Úf”bˆ« Ú‚iÁòp‡È µVfU·jÂ/ƒû®ÕWôö©Ê¨`u,ÐÕâ 2â ° E(ƒ"p§E g!Š@Qº.*|H_Jp2¢ô‘g\WûžÕ³–L—€‡]¦³wb‘è“ÈËó÷U¹ª’-¹éë@Æù›ëîÛY1Ì.˜ð¨\ö·U_ž ±€PãÇ_Šu¬UºJ1$\@_ò™k¬Öúþß:û0ß‹Á=~—}jDÂ'.•fòÔ~ B$·Æv¬j쇢dk§ævÆÞ\âȶ#ib¾ ¥i÷ɇYËPƟѲ BfM‚ÆÁðSˆ´K`Š«\’Wso—´Ñ¶ÎjûáÆ¼0yÄ04kµYÑöõÔó@b$–âÓgíGÝÿ]ªÕ‰ endstream endobj 164 0 obj << /Length 2967 /Filter /FlateDecode >> stream xÚY[oÝ6~ϯ0úÈ‘%‘Ô¥}J³I7[¤ o‹¦@eIç˜锒츿~g8CÝ,_ RÃáp8—ox³þ…gYp–ág2=+Ž/;kgDüöÓ‹ùvÀ¸›qþxùââRgaàgAž]îç¢.˳߽]—º9œÿqù/àç¼RúHÄ94ºï˜m!RD~”DŽ­mÎwBï?º)Ûó(õn;œÞ­î¯éÓ‡Ÿ?qyž ¯=ßW[Õýù.LEy·yñör<˜Š¢gZ9Ÿ6AœJ?’4¾`c'^‘7DÜœ«ØËÍö¦=ÕÝu}ÅtßÎçüó’±÷ßóTzí°÷%eSò²ëŠˆ¼è‡¼f×­ašüÈ -¯¾C#¶ƒY¨öóîBᇊN1™·ØºMáÇ"v×T¶Ýjã>1‰ÇX´ÇcÞ”¯HvåüW[Òw*õU,@%ågJ.7[QÞwo¾¿øhÚƒÉ4ñN×U÷Ý–x®ä“0AÂÞïÁQÔh”mó²'²;YGª ½¿£™œþœL…7ð Ž~êµ§Ó¥œ'ÓÜý‚£4úEU4¬«¾¯ ïeoguÓõy]罆kÅËÛ…\Tò†îëšì|EêЀBJ²ïÀDGNmž8μ›\À.¹j …š¿u‰£N3³m³×‡ÁlºŠR~˜ŽâdlÀßè²â˜ÏÁ™;>¨e˜<¡%˜kßòl1t}{Ôc>ZžC7ç¡ì¡×á,ùÛÅîqz ‹ídè‹H-=Ó¿˜Îeq·»®êÓ¦3F©Ÿ.mrà…¤´Ž€º"“†„LÐîiNÐUDò™!U$%~šæ£(÷WS>v±/ÃÔ±jÖ¨Ôز«JR¬GÓUŸëšè2Rˆ~z†¸8oÀ“2ºXúfWÖy! ÅÞHž ý,}žúÊW‡™õSaô©‡œ`7Ñv3åRfìýôË¿‰(©fñ²þÕçN5ei˵3å 9*•}‹Šmæ?å§á˜ÿ0ñ%î=ÛÖ]çW5›J¤U“liª¼_ׯ0>ø37ô“X>QÃ÷nÆNuly¤•P»÷uߟ¾¿¸ ð¹½½õÍà·æpѵûþ67Õ…;úÅZI‚£'ñ3•tÜ÷•\‚ƒ•PŠ>2{aÆ2Ž(Î"–UDœ¯Ë£nt׸á›saV$ÊûyÊÇaÓ©°0f~¥SáŒÇ„ƒSÕ),ä2÷Ș™/ÕÓJh:ÖZÍ;åô§fïe§Å©[HŒÕ=-…Wç¿2—Ñ=sq¹2GÝu œTci|‰U¹š 2WáG"^ †|a[.7±´²Î ,?ÎÓ±+D±X–5û)' #F ¯óSGŸx¹Ëê0nˆÅ’Ã(A8 p@ÓÒáøú¨ «ª{ABÚÌÄ™L`õT1÷nƾá¿k¡Vß1ÿñÙ1Y pHð7Ö…þ€á+úrÊQr­q®ô\#JéwìJ-o´¨59:U~™æQK‡ 'H]د@¡'X¯ÎÜñ–.†OO3ŒßzûíT·Æb‘£1t´-ogã9–ñûq:ö8PúæxKÎB  6‚³šM,á-NOÀ€$²²Õ„žƒ?x`¬sÕ·žØláƒ"¾™IJ¡aFâß6˜8o´i\&0ÁÙ$úù<ÕÆrÖÑÅ(~Óµ'@ê‡R·eZÞéƒ.L‹…Ö¥ñ$h–aiSý5hŒ›cpç}-çe]EÖ¸µTäÇ !è÷iã` =âÁ&E¨ÄÏÂ1}|}ùÏ­SE’Ž‹ dO ÜjÉJô­ƒŸFr‘buSÔC‰+ ;[Ͳ˜vèh¦ÔPUk´Õ>ˆÙü…”ø‡R }"Ç\ ·f4¨uSa´‹ÙÝÁôhwañy2âs˜É›­üêü1R‡ø—;™ÌöõpwV¶ö8÷‰²’¨¤Óòâ–þb*X`Îmm –Þî7¶Ÿpb<4-¦°0ЦÁÿ[‡YôÅÇÓÚq–2Ýë¼ÖWå,¨„ +pP «T8vW¹ Nx«ÄAV ~n üdó×1”@kÎØèr»{Ÿ ¢¾‚óÝ7¹ÙJø¼³˜Ì•%ÎK7¢¿dë,a8cÉ“™¾Ø²„{S¤¬çóÂŽ—® ŠSÖ—ò;g‚³]CZucÑ·5¶¹w9¬|þ*ïm¥¸&FøPó§Áö;‹0âeñƒ!±!ˆã©Ç²Ø¢²ÄÓöósn<ÂÐçz°N§üH”:Ä“bÝlÊÜ”4j‡þ4Ø “Äá8{•—´3­<ž~O"Õ>?eÞ;ûüdV ”¥0öÖz9ÖÁu¿ÚŠ+Djt#@WoKOÇ#ÛéGѦcî+!q`0ä‘°88“Ðb0fLè8±‘éÁ:2rO@FÞŸ›©=‚ÔžŒO(Sð£ˆñh¸„ÐÙ˜î_’ƒJ¨ Y²Ê‹Ø(C/¸©Äp¬ÿ¬­“ÈÄ;î ‹Rè`/ùÉ ¹—§pêhóª5>ŒÆ’„Ý‚ LœÝ“¦ˆ¥ñªîhÀ¾¾ÃJÁ«©¼àGÊ]8ùY3JË?J“…SIqá¤X'!‡öôñè@%&Yöè‰5móLE{—pƒ€Ó£×)îÓàcNCW;y„/;¢u³é!PŸUôdí-å¬ö?Œ&ÀcS¸¿ÕÞÅЙ‹º-òúâjTd±è1{4#”n +èÑ’åC•EîpZYíó¡îiWyÒ®í ûð“ /–4¾ÒýBìÓ–Óí®4‹¤иnŠ$¹SæâˆuxB‚ÝxÌ\fóTBbÍ;‚Ø)?3ÙYw¹8‰hçrs&Œ‡3˜^ãχ^Ê"5^×·4ÞŒðdnð—p¼ 2g$7eËÌO¦G¸‡Š…í‹ïxÓKÒK>á œA°J1Û¹ÍÄ#‰å12±8ú&²Ùe±…áß¼.ÿIfÙ/ŒÍÁ?4Ô]Q™ÙWȈúÀ!¸Wƒ¥ßÏž ºgâ °QÈ¿ˆ e+$5=d¸£ ‚0 JŸ{·tpèÀÂBÖÈ<¯Ý8¾'m³ á•jž¥Q¼©¶Êéê½$’³P»_´£ä¡ŸpÂ0†&ž‡•L«‹5Ü‚b ý&R¶Ñ@5&\É 5ÑøwÄQ@Om!Þ\èÇÁª«‚(ÂŽDxo ôXГò|—j-RPbþ¦m&¤X?4áŒ[AµN·´œ|“oH¬“›TŒŽäØ Àµ³Øý–áW(¯ÇÚëú?‰èfõCÆxØÄOo/Òk\ãdA¬üÔ²ú)èHo‡ö’;,D÷ ǯÖN¡k þVxa`M»Ÿ%7ž;B,lÙè<ã¥Ãê1¤ŽøüÙ|mœ#ŒOŸwwwuØSÞ²ª|'‘ë'qîì™d½ÇÇ"b¶8[ޤµ0ŽÕáÿ¸FJÕÖû>e½% “ù8l›-%€åxÏß°ð¢M~ÁÇT¾ëKëÙüó6çé7Ø;ñLÜwÀš¶ïà÷ÛìbþüéCGAŒõqC‡©óß2 ë¢‹=6ï^ÊÆûû@êlz:”‹Ùïþ,{aJwW‰÷•­/ã¤ñê÷4Dâ›J ˜nK+%|²ö¯ÓU£yÆ&èåãúú }¨Ë³rF€›Þ7¤õ$¦g aú‹ÁÞY…3ÓS"-ÃÇ+ËéTëÀ qšÌŒm%pfÇWàÿñ¨5 endstream endobj 11 0 obj << /Type /ObjStm /N 100 /First 820 /Length 1919 /Filter /FlateDecode >> stream xÚµYÙrÛF}çWô[’—FïKÊ•{<šRe\£’”Ù<® L‚P dçëç\4HÑm¬’ˆîÆísîÖÝ€e‚“†Iï™ÔL¹ÈŒbÚ8Œ0'ßךÉÈ‚ñL m`J2)\)Ť ‚)¨(™Š)ˤíà˜tT'Exý@k™ÆTáÓ˜*ƒiLUü5BC@Am…Aí544 ó JtèG@ÅŒæƒBk¡FFâ a‹¾1‘YˆX ´ d  a«¥¥>Tr}@;( ohçóÀu1ŽEÑìmUÕÀùH%ôÉ2i«’¢J¦‹J.&]lº$3TBQ E%PtBÑ E'PtBÑ E'PtB1 å?:ýGÙÅòsÛõÿVV¿²wu3)šdºøDîíÆ(Ž"@ùÎUB+¸Åús}k!÷¶‹ÖËþZ_Ö,{Ͼ—?Ph^N),ðÊšRîÂqMÇ`£â +ÕPñˆ‘{mŽJç÷Â$ºÐµ·Ò©W¢sšÓC®£óš[«J‡°yÑÓ9ÁñüÝJ§_‰NGî|OgU”àÑ•OrX¤ð|ûª3¯D ìéJ ˆ w&•ÎKDO$7ñ¸tUËÊDçÇ>q+}¢i¢íºhbû‡‰²·P®°»ê,Tp®RǤÓÈÍèm¢p®WÇt¨Fº×Õ«ÏË£RjϱἧD9Ã)c+¥{%J…àï)¤;Âè^'Œ8oñ”3*Z®£?*™ÇƒÝ¤j­B×>¦7•‘ÜG½v'*7®Û)ý+Yˆç‘P©b+ ת£²IŃïÙ”âÖf{éi›ýëßÿ¡#«ÇV¹ZÎfŸöîý7N.’VvxŒÁ1̸'Ÿc¾Õõ¬)¦ù¸è4^wRï–ålRVWÿFäÕ„.§Õ¢Íg³~pY•í"Ú_ªÛ²©«9c$ù¼)óϳbAiÝtcåb™Ï¨uÑ.'eXž3qÀ~Šp•ù¬ü£³•$ïÊözÃ?×M7|q]Ìf‰ø‰s¶øï7x}¥w¯êûr:-š•-ô~“ÅÊÏ/h÷ë¯eøî»¹úªÉç=ã®›”óeUõ9µrÎÁ´yâœ-«½¾-׋“~>äU9-+N0kUÊ ³tþ¹˜ìœSVÑï=´áŸ>__1Ð褬:ÙËåÊiòß‹éÚÊ=÷X~¾ 96 ÛÅr:-¿Pë|‰u•`'ºemwÊé#,=E[lQ„ºäX,êq¹QÌ#¸ËöÿÍÈ–ÊÚ`u¿vk þ¤bÐÓþr3ÉÛ¢YUÖƒr»¼ÔÇëìk{½6mÛá èÆ7<ðàù±çþ¾Ügå¦Eߘú8ÑCw£Ÿ7mêùæüz>ïUÄÖ¥×þ òÚ»Äc³Ç÷­Šè¶;ûÞˆšÁ+Q«žùªÑ¦M ½Î~á+½Hïcp ô…Æqzso½åÑÝoOàqJé–¿™LX;è¼óÐe}³s¹SS}j\KúÊһøR´{üFuv¿™üåü4ý|?ÏËY[ÿø[1þÉØä“?Í×óÛLú°wŸùL™n{ÍA95å¾×ÞØçÒÇ;Øç>û½|f¡{Æ›ùÎRÿ¯=]†ÒÃÇð|mÖßÐV°5¾È{n¸†Ýs×°ë×°Û·†w, ¡¹¦¯e&rmp@8€Ñ×/ê>jù\·íÍYÆîîîøUµäus•-êi{m³• |ö²ó¡”XÖtðE=˼{½‡Ú²ãx¿o¹‘-îkõŒÕž{dÙ!9¹ âA9m-ò°œŒtÞû?Oå— endstream endobj 172 0 obj << /Length 2654 /Filter /FlateDecode >> stream xÚÍÙŽÛFòÝ_¡' 0)6o9¶‰áÞÝA<ö>ÄAÀ![RÇ<6©ñì×§ª«xIÔØû¶Ðû¨®®ûh‰• ?±Úº«Ø÷m¬²ò™kV›ýŠ¿þøL0œ €öòû»g›Âp%\gënÅên7Eu—¯~³¾ïT‘«j¿þýîŸMaƒÀÁ‘K]¥ZÍ`3”¾çx±×ƒÕÕÚö}ßúªòzí%փƅÀzPí¶~ú×{Ü­ߪ×6@ÕÅgÕ®m‘ø±gxͳ·wc¡ç}£òB‘{&‚( áDñ—( r~N[u’D- ¤iÚS—@¡U¦ÕZX9ÁýÒÔå±¥ýá·¡Ì£Ç"ÛNIðÜÈÙÆ½È—äê\ýAüúP7mÖµÏm ·¨ýo룭•*ÃégÞN+¤/J,-‘äBf-]1…}'ô¢þ`æhX–M«ä¢²ƒÈñ¿?ð‚¬ìÀK[øŽi§=ÈÅ 'N’þ¸Ñj„¶—í¢mùމsÛº‚µîo{à÷R m‘Ï ãõ6½'Ü ç®Èiœ¡ìàR”sª&—›Áq”/¤dáµ©Ùøû´5:b˜O® éˆ.Ë¡ã±ßíÖv”¸Ö#ž©;˜Ä[¸Sîð:Ühkúf`ªÒšïÙ÷èO¸tZ{1ШU]uÄQduhÅå1°c¸ÉdÞ5=¶{ò$ÐÐú}×ò݆!ö½¨[àŒÁÌ:¾$Ñÿ§Ë 'R{›¨ jªÊgÚzí‘«YP±?W±ü'ñLÅw¸¯ü’fìÉUZJMÃzGß¶+e…JèØçIö*ëáKãJ49­ÃÐJžqð";­é¢Y̯û¨t—4~ßv¹ªû“iËÖ:Õ¨ ^kLUºM‹BæÄö \[}›6…2NãÎÈдbè€ï<ƒ¸Sþ`ÒÈ¿:…vŠ]˜p[ma¶+W |Ÿu#HIU0ñD+ƒ¥ÈšñÉI»#ëO›Š¤uÅ”pZ–„ ¾XcP-Ç=r$CX©1k³àr°†‚=œÂ(öH“ÓSƒ)™Á™U¢b›h%ù†ûA‚”é¹Qpši½ “îÌu‹ÀøX—%‡Ï ˜)JµV{ŽŠ7Á³ê Ïu8²ÃI¯;Œl ž†ŽH†Ä Îñ/œèï3©lOÙ)môU¼C1£³F[‡aÔí‘gš $ò#pìØ£Ÿ ª`¸ÁLb´Ú7i¹xJvë/#>rñˆ–Œ'‡”ƒ/¡‘,íÈ/R[z_,ò,¼Ð Âp”!j1úN<ÖG¢÷ù@J¤ÿƒLØsrš¦æ0L§{9èzž7/ïÌ8Šƒ‘/pÎå:>(y2³´ªj8z! } g&˜â#ƒÿÎiZeÃÕïBÜÐŒ¢'Ú\ ø¢“ÌC×ÃÁdZä«éªêJáRÇÊ-««ÚcN½foCZÂ0]w,X¤m Q(5¬PÎQ'¸/¹¤>«µc®µ}ôÞ6eNŽ iæ•x`}аFÌÓÉ<’ÝfYÝõQÓ HÇ&µM]ÐÂ'7t?Ü"Ä Z”%$;‰±j\E°ØzC PÐç¦\2\Ö ¿Ç!,ªês>š¼™'Î5Ä)Ñ« ;„ÀÈ95ØnQc9‡{S2Â@˜¥cf§‹Õ{9ðÖ˜q¿Û×'ˆQ«RiC÷¥Å²MžÃ4 © ¡gZ¾ ·ƒÊÙ!‡°ú€×+¸µ(ØåÎÔuÆ×ØçÀF‡"´äs£‰¡O*Ý› â«.3÷¤$ BÁǂЃètœTA(ƒçK^‘x`êÉ·yEäÑvô ä/Ñ"zL5˜è‘Ã3µ·‰ã»ÑY´õaéÚ(kD þ„\UYÑåè‡x'9ЗbYá÷¬0xªƒÂáÞœ·QP”@XBچХ£ÂB×R;úîŒ[ÃÀˆ».%Í™jÂI߀²} ™1ø’½Œ°§8« C÷J|ö!à™š}Ú°%kÉí‹©HÝqƒ;MLÎ_]O6ô@'[è¨1.›~åðm’4GDÝæ¥ªPؘ¬}ª‡Lg縖Çc(üIYø9Eª¡•niA×EG©gƉüØ0€ó¼æy|ë;ã%f‡ ¶RFxÆ7æ{3¨p@ˆi,*([Š›`~Y§µÉ9Щêü1 /ŽW~$ £Š¾ò ÓCÛð…w©s¤†”ßn8A¢H}]¿—¿£Qm#èÀMÕ‘ø–Nµ<‚‚¾hþ Íg( Éà°!8ì펲- £"–×à!¦Þ`‚[I;È1ÂáØ þ›¹ÎëŠ=Æóˆ¾YtÑdΘ$È1Ø8.¢>¥œp(,üÑ2žôœá‘ýâ¤òÁ}Rúü”Vjglg?\©Ü{gá×·[Œ11dÈ$VMõ ‹&;Ź8Ì[bF\tð25>xƬ ¬M1Æ–)"qŸ“1V+!PÝ?IâVÞß éõ•@k¶•´.yO9Ê`x mL*+eãe¹ùš'YÞc®ÃjõKYTúÕM×T/t=Õv©²¦Öõ®µ¡{‘êÒ9‰‚îIùH¡üÕpÜ›×”Û$œ³ìô²m:ݾ«võÿr™ÿF ÕZ£ÚÇ H8 ó/‡Z}ˆ¯ú |ÿ°m®õàèÃí àhþ¸'˜XN—ÿC+QI™÷ ƒm¿^ÒìHë[S…‚Hÿ-O’é(pøê&ÕïªSýY6¬ƒNA ÝЫ›]Zhy³yÝ¿÷MØcü›«Â°g¢ëéÙÌÅk/Šl3hõ©›{3{ý•6ˆ`=þàaC¿ôÇXÚEëé@ñî î±p€š)_ßL„ìß(úŠ4o¥oE[ÔZ‚ËÁ§³¶6ï_ &áþÄH Fj×zœ͢f,Ünçl½Ç^_-Xöšo*Þš†’[ÚïpQ¥69üÚ<µPD¯LD ÐZaùÏÎDŒ ï’á\Y½>eã4ÕÃ5ý¹1Á ¥wÙTLÛ(ª˜†.»û²o®ö¦È‰CÿâÝ×åмI-Ëô~8ÍÊ^ì91ªå§“2ÁÚ`ÊÉó:Ch(=´íQ¿Ølö»{B׿øû/ĹÙ×¥5øÝF„ÑÅÿNÂü±ñmô1ð%óÖfŽ’MýÚß(Æú#Ó@Â'{K\cé³ÀÍþ_ÿøó:Žï…¸ŽšÁå=çY>z©?Š? W[ÏrýkõÛ#ô‚nÎPÊÝ€>mg_Ÿ6u]–» —:1£ž=±Bz€ÁFîZ¶zcFÔÕæ1äAÇΡ-‹ ®¼ÀID´Š·Žçú_ãŠíz© œ£ä*ïý}® endstream endobj 180 0 obj << /Length 2784 /Filter /FlateDecode >> stream xÚ¥Ymoܸþž_±µ@ÄI½:è'½\Ý&ipÞ\[Ü YâzUk¥­(Å1Ðß!g¨•ÖrìkaÀ¢¨Yr8/ϼ¯øã«,X%R²,LWÅáU`g»Û~úñ':ý åÛí«Íû(Zñ€eAÆWÛÝt©m¹úÅ{;TuY5·ëß¶ÚxJ†ÌŒ¤šª×D6[R &áÈÚfíK)½¿UMÙ®EêÝk3z÷U¿ÇOÿrƒí:•^»öª­ïª~íóT&‹Ì6¯~ØŽ‹„x¡ åó"ˆÓq"ÇrÝ#?yQ(àÁÓúbí‡aèñ˜8Î×"ñðE0m劗 £ 3ë‚ì…`OpÙkɽø ÷TieìË$òr||Ì›j§ìÎðV5øì÷ÊMè>¯k|ùܵ·]~X>lÊ»³\í€q«F¦¾äÂÁ -føñŸ?Wk8¯9ôƒ¼ÆÙë~(«ö5¼ˆÌËZ¦îU×ä}õÕ,NKö->÷¹™ü:®ob‡ñœæí×€‡5}©š3RõMùæŒöP’ñˆã¡Š¡Ïo̯D{eÕ©¢o»|­´y&–ó®†kSªÄ9»!²¼À1QÉ=­Ð̨bÃÆdÇÄImFs:•v6¼äE2 YÄÎ?=ƒ ý(d2Ýk+ P@ʲ„äAvƒ¢MX›ŠœÙD¡×(sh;ÕâóÞZBgäerM;ôg¿ì«ƒÂ)0¼ÃQã¸ÝÑ×=}Dj¶ö£ õ¶ûŠñ‚zt1hkPÈIˆ¶ $Ÿ®®·Kê­«æŽü˜³ç³Fö±£Ú!²ƒ¢=€ Júªq²{v]{ÀOãô^ÕõëÙ*¡§Õ¡*ÚÚA–5Á ´6”xD©t‘Ý÷J0¢‹%eƒ¶R8]Äx&¾AT"òü“ɘWòoc lþÅ݇¾SººB]L(Ìz×lǼñǪèZÝî ªÊ(óJ8CW‘gМÛYÓ{ÞŸ#¯HÆÓp%`Åaô ú:jBŽ|&¥ù¢–ß}ßõÅfsÐeÃŽyšÞ¨Æô¦®nº¼{Ø cðŒ¶ššÒÍMÅ™ÈX®ßÎÂã…ìsfá3GqÔþ„|!˜œ/jÙ`Èb”±ˆÏ•²µX'ïBFI¯€ð ýÈû`Îäµnq4u)S_.©¾#JeÍ?úF™àuvrŒ¸\EaÌdÀŸ9¹£ö'ä J<_tT"èðþþWªcךY%¢LDL‹Oí²ë«@eÓ,N7ó;6ÿ`þþåñXW ]Ûø_.ßù—÷&˜tÂFMá™ãµ?!_Pìù¢'ÅbÜO˜à wë{ ­(9Ë(¯z_5É·ë,4ɓ˱ÒhúcdLD™C}8»ÚUµ:íA!Œ…ÝÇÑ‚†3ú$Sãº'â’²Sîv€e—–”†ñÔQ! Ë×À|ü _~@5‹˜“€f™qEÆE:1ðI’wºr0 1e9yL³ÍÇóMEÌ"@ ¢ªn›¶Sÿzäví,×vâÏâ~!KÒtYðó=Ã̺ø˜ÃÊú,’ÔFÝ »ø"‚”09ƒföù¯×W¿x!çÇ#‚vÞ™m“ä‰E®¿ô<™”Ž’"®í®ùL<àËI¨IŠB5¡?‰]è’>ïnUOœi¤Dô23ú÷)[‰o° ýÝ’»‚igÃj£Â ãAGÁäƒJ£Ì!]¬ZëÓªåŸf“A€ÄB>V.˜BR!báz‘ä»ú¿ÙÌbaÓ,cIü2áG,å#%3)6G¯1ëmc2¬Û¡Sȃ‰ÙÇ?æ}¯Ç^ã›c·T½ ˆ®öðót%¥ Õ–™½qÊÎ2sòsJøp¸ƒ¼wg‹6À´MÅàÙ£þáWz€²I•ÚRbʵ˜qkÁÔÓà”%# Œ¶ev¦ýò²T%.–™­wÌœ«w¬¤ØØÜl¨@¡Òe–~§µY)æ™$”êö öXÛÒ*q›–~‚:Q%%œc5f½o‡šV„£8 qkÔ¦ kˆÅúâù߃á-¸©;c–e®~Gå8n[9ÉSêƒÐ&ùXÄ|¾Üþi&OH™›Tª›{ãêU3j匱émóbÂNÝä…¡½Óu®÷8•ŸÓó~SZó.‡âÐV®1jΜÊa -Á&óf&§|-eñ™Õ¼½þ£É lQÝÔ‹‚³ŽÄh¯®l_r|É9‚Í‘C–˜÷óR† k ;C~ºÉ$Äᤄì* KˆÇ§áóõ̹´•v6肊"ã@èg © ŒbŠ6:´SGÃZ‰6º­°A€^å¢sÕ)!Øã£AèM£ß¤•µ³¾£–MžÁkÁÍÜþuu·vGyµy 8*³y¾út½½üð«´?ࣸtW·E^ßTÍfRªQ-W¼0Æ_ž€ÀÕ¦' Ö›§ÁÂU˼n€Ùåvóÿ±ka7`ƒ—ûÊ¢ŒòËk8š¾ÚT ÎØCÁÜž&ö4ÐùFÄ"„™!Ç1yõŒ"'M¥zQíhÞñh›´Ù‚(ÏzNŽOø³ãÙ×uxÓU¦mô­Õ((³(‰VB,NŸ«£µ?!_*>ϵœüònÌ!žèëÆ\%úðâ7ŠgÇü–¬T<.5C(Ëù Ï騟9çù¢Ó"[€ã ™ÌíóÇÊu"S÷GIbÌÂS2òpž²:´³$d±To—81:«yÁ¾¦ÙØ>N-ÏÔ ¢ø¦gœ‰S3ð‡O?/òÇYò6ʺó\ÇÌ4->p#±ÇÀÇ6i‘DH8KÏ»*³¤Ôèh´êõÃ@No"žT™ï§ Åg†ho[¼ô ÙÔ¯»øÇJQߥ8§Ž=&2œ^ùØŸOš/Kn’‰é}Ë÷¯-å™Á¥™sÓ,‰º¸2ƒrÆÔj6¹ìííÙ˜¨À·©-˜À Ef  hì©Í# X(äK˜ÏbqÆ> stream xÚ¥X[¯Û6~ϯð[m æo"•ƒ>l»MoHt]‹v±Ð‘i[ˆlyuéÉyéoïp†º9rŽÓ…D‘cÎ…ß|3_Dðã‹$Z)Y¢ì";¾ˆp¶Ú/hðó·/x[ƒàz$ùÕæÅÝk­²ß}pYÛ¤EXØæ•Ëš’¬GPÇb-âˆ) .ל6wiUä®I-ÁåY¨ÅL+ÕYóî›ïfmŽ™Ñ½ÍÍ!=Ñžd®°yݤE‘6$XÛ ¯»²"Éoßþ2gOBݽ¸{é÷´x~°uVéi».ò“ë}†³Ã$dd!…,‰ù4dyQÀ_V­÷DDÁIщàcD°ÕZPæWÝ©n+×ý7mhö h'{ókÑN“Ç#B.ä;:ìŸy­p\{7§ÆH&¬¼áðUd;©:x‰žaeb!å4Ž×³LÇŸËlyM¬µ+ÛÓ–8í÷ˆ«ın^Ò d²Ê¥£¹40bZäi¿E» CðåóÏMØàf˜HÚÿº­*wÊ|V½ü§óŽ€@RMS¿œá i^Tsš£@xvBxñ²ÎªüÜÌù¤%‹ìÔ¥ÿfíìæZ3Éõ$î°u ‘†! Q/›2,€­Â ­4‘ ÞØvìÝ} ІÖ*÷¿"hx÷Ôˆ]5­ŽÒlûÇJÇË4/ûi<²LMq¶«ÊãeÑâ\3c-8‚±y¦puÒë‘8Õï)2.6E퇦9ׯîîÙ}`eµ¿»4H(Ã4W7ÔIlЂ›¢A<>B£b]hä:ì*}¡èùžhÛ·!¾pó°ã ã¢û£¯WQ2b5-ýKŠ”ÛÐ2VÚÚ…‰CŒo$K ÷ ÍUWQh½ÇŒ±TžyÐ(…ç© i°} R€]ÚÉm=¹íøÙ#*š‚)°u"… 'I_ã (>v „)Ûw-+ éâÙÆ?¯PœÖ}½ƒ‚pºÖ B¶›^0+O»|ìÿ(}9s=°Ò:†„G•`2tTðrr˜ËàÑà]p¢†€ÃP‘Ò(\ÝuÐZÕ$r õ¦¯ºŽf|N#óÂ8$Ïò3ñÆðˆ€p;Ÿ‹œêuM3Ýñ@sáˆyÖ˜ ³’ùÅ 4ÞÌÁâ‚ÌÕaªež…åÐJu˜ ÇÎUùôD[b°¤ ÊÌX§Ääó‰—(ÏT†qR†Ä¾¨ —E‰d]ÇSGoO‹ÖÁ[06 ˜ÚÕm÷6[º|kmí Õ\ 8­C‚RŒ`P\—t™§ü4d2y§¿ ™Ôgs´ŽÒ¤ pª Ÿµ­[1-ak ͳ‹ð6<›C^_é¯çµBï5ÐJ4¶Â@ÂKåË×lÄ Ösy[]œ$–g¨DOUÁOô²wAwJhLÏEš÷ÌèWè|ËßE'yÌëšØØ¿PϺm wOyè …*a,YÌ“IT݇Ô¸—Wú.B*Å›Òïû¶l^û®ê›ª*«W+¸ÅéåÛ’žG” ñ)=zôù!Wûê yTûñìÝl¤o\1¬ÄaøÆ¥ÃÆ]Û ë™lè2`mH6?‰ƒÙQ¤ô8Ržõ"ú"XriSÊ{5X¡ú“ŠƒMpóïd{˜¡gÜÝžƒê™Ð^ðE~žÍºî†v q¼¨ÜOzRõÉ„¶ÔŠiD½*<‘>@þ¥;šçŽÅŒŽ:°á4”¹$ðqƒæy•1$ˆ–ÃrÝ*»©)+ªy•L5ׇ²¥{w<µb&$pÁc6é›ð+‘÷ÎZ>N]åÛ²ÝHe§Ÿî2†³b3)nCnËŸ2àžíy_¥[7毧0ð®"ü`|yoL(ürÌ%2€Ñ«*Ãÿž‹„€XÂÕgGâRqÈÂY/;Q˜xÌ¢DOO½gBä9døûpªÎÑZø¼1ê¯Q½/…íÈMWAŽså˜Íî¡Î›°=e’¢f¦j³®wP¡A€•}›íþ&¥G ¥ç²—ަMto4ÐÕÃ'­áÖ2©“›z¸u¥v;ßòd¨$®»àBuðÌÜ5%³m4š\ôÇþ&}ïvy1«ZA ;´¤#Ô+o2/_ÄPÙCŠíÓûºH¡eÀÛˆõ×ëOQ\E€BŒžÑ»o¾ûé-qØ—ôøúÕï\ªwU ùu¤©×`z³ôa$Í]¸€¹îFî+«ÛJå3¦ýÉÿoƒìÅ1?øÃÝ×Ûú—Ðjîà:L¡#=RÀÃÅ¡„¯UX¾mÇÝ,÷Ùd@8¬ÏõÆucàÝQ înäª 1¸Ð ëfì:Lfi¸Â Ít"–™–9õÔ(! ‚Æç”Z‹9¹€¾kø^JÎ]ïü¢¾¹„HϦ&KbsÛÍNCÿЫ¥kÇÏ›fæó&_âÕ'cpùR™¸ÛŽ2÷·š.à.ËwOÔUyBi>E,è-’SërñŒý±`I’LjÛ³+ Y¦#1‡¦/oGÿó:ë endstream endobj 190 0 obj << /Length 1581 /Filter /FlateDecode >> stream xÚWëoÛ6ÿž¿Âè—É@̈¢dI)ö¡íÝ»h] Ã:lŒDÛDô‚HÕ1°?~w0£­ZrÝ6e!÷®;éªÇ€¥J¢lK¿wpq(ZÔˆP `ñ™8Cç¼XJ«J¶Þ$Ûa‚Öª<]×·²@ˆÄA|/ï:h2ÜsžhÚ¾–š±Úø‡“©œžÿ¾Ñ7?kzÚEX'í±‘µº]‚*ÊX*¶ 9©xóÇîõo¿~}3˜þæN77Ãy ¹ÍãaF»£³CdÁ‡Ç•"Ú#)ò xh-ÑêAûè8 ´%I£ëÎÁ ûVU•WFæãþQ9÷ ¯¥ßÁø=Š>Nòà¿ÛŒ·i¼ºÀH¬ Jå/5;´Ûj¨]ŒLäa5äZUh´Ëy1ŒÀÆ$TìÀcp ؤb «W·KrÎbàxPÇIqë/À×-¨9 ùT“˜zXŒëhË¢pR®¬j0‰q.\öâgg÷@‹²½Fb<à°é3(i â䟈õ`|¬;Ó¾rþMÙüM[&² (Ž ÔbEÝÄ€N¥³Tv1sMa-›r,ª2ÂGj_}ýÓ€¢ðŠƒB6> „ PÒ€ûŒžE+ž²ˆ'±/#PDÑ‹îò·CÓ`—€DLÆŒL‚WCß«¦8Óê}‡ðºÐ?ªŒ™ˆ·‘W‡,‹SŸ®“ø¤xß·õ§W´uMÖÂ’{Ñݱ9ã‘ïi? Ó1À¨¨Ç¾<# *éBte ÛÆ³†÷w1ôKW& ™MM*XŒÚÏXÝÚéäìŽ$bI8|ób÷z1‚#$G)t{Î/î‡qQ{?±Ûå<¦üä¦,„ôwî× âÞ¡ê3ת´ÐyP®®‚kÉ[Qü³83$,O„³$žD¿"¥>øh°Š)`QA`GñÀ÷‰”¯¸ Á5ßJQO·Êk訓õ5: ì§qW@`¦·’®eß2ù–%i6æÔk`‰9a‡Êeïï$#O³®ç›ÞÐÑÛç_£ÔXW=AÓ°sìã4D[{×€(•…çö…bˆDùt°m 婸¬”š'¼¾*ŽÁ;Òhe,-NèdIyí*þÞ;ÀTG«Ëz`ˆu9ÍG›¹Š¢WÎsqá¸L—ཿM{¶7û"@†ÿ¥¹_š:ÞQ«r¨TÌ"}<èV3QbÑ$–Â0Mþ¹É êÍ£í`IÂŽ:÷8]Ú‰&éiWÏ5ÍK§£¦+i¯vÞ7þ¬Ÿwý±fÉ6ZŠÁúŸ ÂsŠ&éËÆš¸¬õáè¾Jhé;Z{OKLB{¤ÊŒ»ú~í¦õ' ½¯n?À·óÎÉ ÙÝ\ßRIðŒva ÆŸª-d… ÇŽY0XèŸ=mXvµö1Ÿb7Áâ€ì‹e%‡Æ»Õ'“öÙ¦›%«¸H.¿Ug&-~ø„—íUŽÃÐôSôº³—7‹/ܜǟ_¼€ÖÒ#rζbšRÙøÑû¿A½ endstream endobj 202 0 obj << /Length1 2185 /Length2 16205 /Length3 0 /Length 17493 /Filter /FlateDecode >> stream xÚŒõPœ[Ó† Cîî0¸»\ƒ»» î.Á%¸;ÁÝCpwwwww‡pØû•ì÷ûÿªsjªfæZÝ«»ïõt¯‡ŒH^‰NÐØÖ(fkãDÇDÏÈ –Rgb02²Ð322Ñ)›;Yÿ³C¦ tp4·µáþ‡‡°ÐÀécMÄÀéÃQÆÖ él`b0±s3qp32˜¹þãhëÀ 1p17ÈÐ$mm€Ž0d¶vîæ¦fNyþó@iD`âââ ý{;@Ðè`nd`1p2Zd42°(Ù™Üÿ'%™““7ƒ««+½µ#½­ƒ)-ÀÕÜÉ  t:¸IÈXÿ-†  lfîø/ƒ’­‰“«ð±`en´qüØâlc t|d(IHäì€6ÿr–þ—-à߇`¢gúo¸ïþ+¹Íß› ŒŒl­í lÜÍmL&æV@€œ˜4½“›-ÀÀÆø/G+GÛý.æV†—nT|(ü·>G#s;'GzGs«¿42üæã˜EmŒ…m­­6NŽ0Õ'bî4ú8ww†?\KÏÿ‰¹±É_2ŒíTlÌí"ÿöùX‚ù³f t°122r°s€ö ›‘Ã_ ”Ý퀙þZþÐàåigk0ùô27~üÀx:¸NÎ@/Ïþ—`˜˜ÆæFNC ©¹ ÌŸèË@“ñÇów0wh1~´€ñ¯Ïÿé|t˜±­•û÷¿1ƒ¨²°š¢*Í¿%ÿ×($dëð¤ccÐ1³1˜˜X¸lŒ¯ÿ#o`þï:ÿì•°1±pý«ÜsúOÉ.ÿîÊàcÉÚ~t.@ù§ÑµÙ>¾˜þ?·ûß[þÿuù_Qþ_ýÿV$æleõ·ò_ÿ?vks+÷{|t®³ÓÇÈØ~Ì‚ÍÿuUþkt…l­Œÿ¯MÂÉàcmL­þ{ŒæŽbæn@cys'#³µË¿ÖUþ4+s ¼­£ù_W €Ž‰‘ñÿØ>¦ËÈòãúpüèÉ¿MÀáùß”¢6F¶ÆM3;ÀÀÁÁÀ†ñ£•˜ÙØžLãh tû»‹ ô6¶N[â¼&¶0=Qv6ƒà_Kÿ"vƒÐâ0ÿ!NƒÈâúh¸ÿ#€Aì1Äÿ €Aâ±$ÿÐGv©?ô‘]ú}d—ùCÙeÿÐGv¹ÿçGvù?Ä `PüCÙ•þÐGvå?ô‘]å}dWýCÙÕþK\dð‡>j1üCµý—þz† ÆÿÀ³þ?Š3ùƒF“ ë_hþ‡ÿrþƒü.ÿŒö±búüØoöü÷`Œú,þ’,ÿš¬þ¢¬ÿQç‡(›àGݶÿEÖßwÜ?ÌuÛý9Ÿ²w¶uZYMœþk`aýcø×-ñ'‡Éáø¡ÄñÏ9üE@àŸ‚Ø>Ü?îË?>´þ3܇Vçà‡V—àGý®ÿ8ô­ÿÅü¡Õýø¡ÆãoüŸ14rvpøxý}Q~Ìèøï7è4‚Yš·5úhñ+°õñ§ ®+ÝÞ8ï ÙžZ ç’C›ó3d"UÕÿ ‡{ÁÄ¡n¤ÕQÊ;eÂ7Ï“¦ZÈïÍñ -/ß^õb§öZ`'1ú'òOkúð¡ñè”ö¿½ÙSõ³kí$˶wæDÏE}tíw«é+] žßSدb—‚}-¦‹T‰Ðö+š%Ë1̘Ã"†p¢Ã‡¢F¹tCœ½»ŸAÉšx'”Œ¥ñ:d)ðÔÜdŽzšóX+WfvìÄ&ÅÖÄ»C"÷:L’Ä\ð,.Œ– /4Á×oàkC4°g­&êXâ)™ØÁ:Òó.EÜ™ Ž6RØ&:²RÊjÇBÉ®á(š~cÒ˃qTh?xÃð¯˜ýáÀßoét&Ïü=µ'Ί ðŽ’¢ýðûaÒû"vn—÷4EmÜ»@ì"³aŽ“V—§üYû'ŽÇ+¯‰ q¨L­[e3>åI¼!ƒa&3¢¬/úg™jƒý•(ï–| ¸%‘SŸ¤,F«7$;<Þ{d3OŒø—uyöŸà>m.Ø+ï9.—j§¢Ò,¸%»l>H½„‘0+åþÔJ8éË2Dá-—õ· üÅQUl`ŸšKÓøÝô¶èAŸ{¼vªd:öȸJÈ8îÛ”DéäyÐW]×Äʲ ‰ˆÈSF‹Z|^g(ýèäM‡$=ûBå,>OŠ2¶ÌÐ)q_ %v¹¬ÿzfÜvI:_ƒ¦E×½YîPMŠÊoת÷«˜×ZҘݞÉmí-5YzáJÕií Ùý}¼ì¶îFdðYAþk+=$Ç®™`ù†‡RØö(w%÷â­ùÃMä±}.g|»¨þ{ùíÁ˜Ÿ²ÎóTÒ¼Îf%QsþÓƒ"ãK9Í]ò³áºE^X „à³0»tÅã*Ôc+,åÞ÷;_ \1<ö¸?Í A¶"ÌoÑ'L¡¹5—bä¹`%—âP¦ù£ðhò„±/¦±I­Ì¦Õ€ÎÐx¼"‹·å0‚Ruú8h”LJq/T¡ å‚bÁ—äpH¨Îù½Ïïe«½7¥+êÀ×ýàê×ÔLÇ·þf„iø½:ÆoÈ_BÛ:X$ØÛ&5áxï î>›QûÍD.ÝáóâüçÄV?¹Þwo¨åµ±³¨ôŠNDP°/ ”ÃËû„~É]&Õð¯ FjÉ")oØÅœ ÃÏŠý”ÚˆÅÍ㨹Ÿ{—¦;Ò^Ií.Qã‰&‰ñWo¸j"¼š×^%?VcthN<€AXªZ©ÃÐ8ÖutíÔ;›¬…h¤K ª"štUI]•©³jËRIvuUpç¹õ9ÞÊΗór'5Lè±åDO~xÞéä¬ùàG«Ó}´¼Í4#¥ªb˜Fû,},?G°8-û`ÍNõÀÏ ¬ZÐm b6 Òöêüîe;àg;¸/sŠ´RIDzŒ¹'ÍÐçS-Þ„_d˜wõGÙ*¥£o¸ó°vkòŸ7+ÚǼ7e£,ÈèCo†¢™péñÉWyA‰å—ÜWð/î§ &Ö§@îA±Æ·âsz?©@ÑHb?a["cÃñðÑ~õ®Ô-Uá«òFFY÷¦úÌ…™$žE‡¦H31û"™ù±5Æ:Í|ÿi<ƒ Ä¡:±äô¶O³ì|t"jŒs[^Ôú0‚Ä(";•VÂÞŒ›ðÄUèÂk&Ú©§NÙï,û˜IÉ…St€iÌ6Ï“»®ÎZ Þ†J} §.œñS”@ò>ª¬½I{qVG= «9‰ ¶2ýuÉŠºqv—[¯ŽŽÏnˆã>±Qºù¥v`Q3s@Ø»fÀêîé®< ¥Å8•)Œ›Áï`JD‹6Ӷꙃ 0Ns ÉÅ¢ê hOTˆ´š?¯¬«ß†ç!úBø ÔÝžfk¿ì ~Z²6ÑGðzßåÁ‚ÁarnùG€&¾<ëO“y9;u½'o[’V´¢&)Y¶ðºkJáÕ «¼ j‚«™a‡Ï×'sQ¯@ÿ:-ÄëS‡DEôGRü™W0-ÑlVOÔ ^;Eµ§#:è¿b= ðýºxk³øR É5Ek£ï–}zC}Ƽ0£3žJîþiyéÞ ­à´+1 k ézßtS~ /I%P@ŠZíS«hh•Óg½!:ɶ„XCüñ¼ïy7šÆÑ—%fß“b~…G÷ò¹Éž•ä®ÛíD;‚f4‰Kû.ɘñÝdÍØFÞΜdgàt‚,K~¹”¤Ñ¶†'Ä“Ä~aÇî¶ÄFš·öã"†…è‹Lwiµ]ÍØ]=xx×+]¼ÒGåA„ 6 ¦©Ã¾9 .$ŸšHõÓÜV0ùUDÅ+Ù<å÷íx“Dúè!SëàgÖi›_¡?IŽ™ÿ¶I±–HÕLÚ²CÜ©•ž@¼îCÍÅUÙ] @1·H­»ð yh*àêJÏ0Ê+Ú§Ý­Ps 9K˵ŽóúŒyŸ¿ê­IB¿ ûKðó°]€Ã*Ãy8Õžy9Kë'É,ú–¶sdJµÏÀ‚?´\ï¯qºËÂ=¯¯cò¿e»èStÓ‹ãá±ä,í'J‘&b£åB§¶hY|~¥%M¯9ödˆ`¶lÎ(¾‡Æt+Ã×ûŽUC–1ŸÆù½º‹hËÔ"+q}]¼TˆlËp0¹/Ò}ÕfcûžH²³ä‚®¤1QK…~€!µ«T ‹WëmÓ”Z!ƒ£þBËIžÇaßoLú;y-V׉A ÅoÑ}¢Ã§£«ꦜµQAÊ“j‰w $HM¤Õ˜¯Åx¼¬™n·”ˆcHD“~7ŒþV~ObNÌÞ!‰ M(¯>²áaˆP˜¥l4ýàõîwFE†)½(e"ÇŒ¸Vé·½  ”­U‰©¢«¾·9ødE\;Ã)–5¹G([Zað5Slþúz6·Î5åO—@õÔñâ\ ÓéLƒfUk|·ËZwÔèQb$íø=ãQYB‹¼Üeç5h?‚_-Tö1\ºþ§,¸ùʴɉØ,C?lÈh‚-Òø¨žÁQö*ü¶Ð±“·¿vf:xùz‚"CªkþÉá †ÌsqÆHú‚˜«Ïà"JçÚ§V³S~ŒÀn4ja¡¾Ð¡ŠP>Æ pq\:ž‚ ·f¹4|õEÜ«@û€"m9'Ú¦“dP—ïSôtöúls¥—Dd¬ñhY⨤Ïf+ÙÁªßQ”¤Öpc©¡îã»!3™î”Û§X&ò&ŸFÐ4™Zƒ#«Z×¾j]T¦íŠ€5+¹Lç™Õ»L»“¼§½ê¹F"sÞðN×>…>ÎèPF],Ãpï]07çóO¡®®zeïíˆgÍgB üâîϱ*îs4Øç<\jožV 3i¹•DnÍYm?)•åÑo:¢ã?¿ÓùBws‚!î¥DJ`ð îaËn¡ÞÒ™âÂ5é­*ÙÝDì8%pÝ®§–™­)¾×K‚z½SHx‚Ï?MNo¼•5å•{;±ÚPô [U'©~ZõòÉ6€ø»”­£±aŒNó)öûhÖº «¸îh¹e¥çAÏ÷* TjÝïu: dâ!N∑ß?zuÖë¨ÙЃ# Êx®OØs¿^czf¿Ò/ÌŒC|Z§bwsÐê«©Q‡ßMdµ×b,د¦HYëáä¹2^‹+Ń,Y"–ƒfú‘ÚYÎÆ|W_Ì›qõÚÏCÑalÅô¦R,ïdÓgà môsŸ]Ð稘ÓWRãvIIÎàÙŸ¦<_@½–lWÖk‹¹Ü©œªáÃvøZùk™ÖÎ"Y°{ Ã΢¯ÇÅéZZ ÿºpGl^%ÃûMH5IfS¯6'öCŽM)Õ½ÂgmöÀûFÓ¾í¬d™Ð\"7È´0KxD9Ú- ´Oç¥ô ‰ê–Ð< Ô‰U3=IdVÇz/ÔOu$vYî%ÞÏ·ò®•ÊÄüwÌ5Ý'I•þl-“ŸÊê³ ô8AFß1Âý T>‡Ð>˜q\pÊä²NãA{rqïŒÖlYü¶vp¹K—¿"ç‹Ë†2ôu»nÙÑ{h)‘îiìÍ‚u/ .øy;Á†8¥(Ààir¢ |åUf<Ü 5¸pクãPsDTÆÚò–5s×a"ŸgÛpæÛ!3C£KA›‚pήǰ¢æi¶86t1Ä:•vÏXRG Ë cŒ©yYQÖÍ^©âz'G,ºðâƒ?yy}Â+ÝÃÓO˜8¥EäÆˆ‚¼ó›z§éééÙs»NHˆwÆ92@Q¯ ]Û5¦g@fj ïÝâc¸s(¥6[v¢’í| zŸ>,›œ{O+˜ž›C|²â«=¨Ø2ÚÉ î§a°ÊžòFóz Ûφm—ÿ¡†ŽªfÔâ=‰zŠÁïÓ­Jkì ªMú¥°Ü OY±“ M†³KäÔ§qR:ËQÃ3T¤–„ö1@ÄÓ DÛâK©M’ñpÅØ˜”(\…]üœÁ Áýªž02&(Ó¼1Âëð«¨(Â*+qG!ÖñP¹8‡/Ùbsê¯%³D½e(EE‘+˜!ϨP"Êý·/Û±°•Vbž‹¥´è÷?ö ¸`P)hù¬Nðò4íí~êc„b¡ ‡ÿ<§E`Ç^þv­‚}øK‹y Äó±qtoßóV¯/죹­2Zµ:)ïRVEËw‚b~×JÑ3:Q•Ä ™\ÞÍÍÞp$BDYM٤ɸî©óü€ý6ßñ˜Óx¹îŠÅLÒ2Ìýmd²•}=gõëÓÏ‚YK‡+o‰@ѨëÛÙ«4—ŠÐ*CÚn­4·R¿­A$ †”M›ÒÊ…˜þÏÌîþtfP¨¥³Uô5ŸCt +]¾´m±…ÞVo7{DÇà6Éíþ¨k²Fj^ËδGÇZ:›ü­¼ö ¤`òÊÆqáðæaÑ*dâXÂÈí{auíwœõ®õÁ†é‰ýÆÈçëI¨`Ij(ÑÑ»Ë/þõ‰uþ½’àœSA7IÿÉ‘Q+¤•N¹ Ä¨L4¿Ùl+{÷mÃÿ„/=ÚÖ+.þ×v>”ë‘•ñð¸Óý†Â'ŠV-`M^%Q8„Ÿ-¢½žºA’+·ø;Ç7í ïÖ95cË([{ÜÊ1m•º—ËÁt–fÊ3¶PÓQ7KàÒVK£‡ NÔÿ†2b®²_Y6Åæ VÒ8?ú¥¥âÑÈKR|»×«ÐLЊOY'Dq5|Œ‰ùHø[K¹ïL„äIï;©jãÝgeÃrkãÂx„Ë«çôÊešhÁQ×G*»¬ú¨_t¨ç ò8ÉRŒL»­*ú×%OäA:" /„†cV?JŽÔt¹ýšgüá‡e‚‰xæ$ 5˜öÙhÕÒÖí˧ãâõ]²D¡ _ÜjÒ9g:¼X»5¶Di9Ðøš B޼æÓJÂöÊR…‡Êµ°+ñE#'a?‘{Šl$ÎÛª†§Â . ‘“×Av0'— þ÷R5<ttr ²øÙÿ]3 }÷´Î’€‹i‡$÷†1ò¨@d7ÿþQÚΉY÷È—°zn%«OóðrÖàQ¥Dan)I¢} 3V„ùý#Y ¾/,ó­X(zQ?Ð c²²u‰hT­jV+¥`¹]Üù™E\„F¿“8ötÇ.ôÙÃ3vf¥ÎXâñ¢¶ÈlÑ+ãJb¹PG"6Õ¾Œ_f ÿH· PØö'Á3E *HŠ™,‚H«C¡MÐZŠ“¹«¤§7¸fJî_˵ “jUw9° ó+÷ÓúðŠŠ6Ü«crºv>Öpˆ$ÛÆøÁåf¨ï£Wc…ÞÀÀ´hë7R;*„Æ@ä–xÚ®\e:îo nQilÖý\GOh@~ŠÔÆÇ×}'’{ „y8|_ŒV ‚…²mÇð½ü™³Ú¨’]TŒïî^@äÔÝ.|ùjñêµ=>“é¾-¤#è¾Ý‚ÎA®â> ^í2_naKøVÇë åWR28¦cË̯ó¶°ÏKã%Ù^ÔQ8@ѽxÉBR§ûåRy âg¹o¬8>„ê9ËÎÁÝN‰s—;’éZˆ6šC¸q¯nÏùâ}!óZzO\Tê×Φ†–øÙÓ˜lÀª>®A„¤˜eA0•Ùëkí =ï|fì‘–]3Dѵ¬ò{¦ºüÓ$u=¾—Ö×ö(;ŽÎPó])ò€¢»B{ÿ› $$k;ݺ̧y†˜d6iìÉJÍá¶LmK‡$²ÓÊÜl*AdÞf*?#ã]×Ú`KPmË5=ÚìZªKa×CØ–Ç>k‡Ÿõ_ï&‰¿ßþÛAbÒ9å¡ÈÅxÝmF-߻רš<“&k2)„L’tб¡¨ÂdƒO.ôÖ.÷¯Üˆú¦3»SŒKÓ¥ÂRœpöE v"ÂP¯Ó©%§™¤.ðùж®«Rz}ÚõÔäN:›Äýu±Ì¶ 會ry°2bTiSñû#å®Át¤Š©"‰D¿ª«€/[Ëéýü¬…9‰.ÏÅNä>÷•Ö#V£¶ ²¢<¢Á<&ÖˆÖZç!sÉp#²õ%ÑÅ”‡sú(|Z]»÷Íñ§=L[*‚ÚíŠP£ó§®¸$Ådî8VTQqè&ÙÝÓ-PƸ² Ö~kŽúd†iCK¥#…_WhÆ"ç÷jGwÔÛ]jCsïx†¾Oˆi Év£l]Ûno®ŽnœZÌr.†m‰‹¢/|ÝgQ<9ˆxøåNzZu†_?ÂCÀ(Ýœ?€[¢FµK1¤ÚTDcU6&æ…h”}‚¼|EEïgNÌÊ«µÅ÷cç¬]Ò‚ãÇ[ëTVÍE c>Ï`*~t\Î}6v›Èî)~6¤z™?¦~K¸ìGÇ!‰7úî'ŠcpÅ;öÔ+عS¿€Ø¸ûø]Ø-lN¯èä² m·¤”¡o˜Åó3ÂÄ‚¶ì.‘xã¯f3Ë Å Ïµû–/€Ý˰‡J…È¥=fL®í‡öèÑBÌqÄœì½Þqî0„‘èÖ¤Ü'îÁÜ® Pÿ­*lÍùÆMÂæ°’áZjÚH1™zk3áFÈ‘wT0x­ù&&Øô,gkŒ¶BĽw´ÊsŸïä5žSn—-õ­W Ö˜˜¡-»oü“UWÓö"-ø—âÛžø}+Û!™Ñêœî=µõ´(€"Úê’ù5‰EÃuÆ,  3iv*–ÖL1‹ôV!¿\£ ÇóšÅGÀ’¢¶2†¶š;Í>qQY v[”<Ø®‰¾öuÕ_0°Àf;WQQWŒ»¹w†$ÀÚ)@a§Éã,©õáÕ¬LÇ9xŒŽŒÓ„ã}BÆE^š’Ä:üÑþõe\¡‚“5L>^!±ÂóâUY´^4Ùå·q˨ l8€²¡É3&›¼TDSAwV£ÓúÅ"vÂè}†æ4Ðë±¢óÁ±¼¿;˜H²d=ÀŸ¤f£ãSsί3c]R§¤/gýöù-W…¸ S*R÷mº!Ñ_8»¹ÖúêAe4¤[‹P{”4êÒ<37~­­ñùNúÉ4ÿ¯HpEwBã!Á,ͤì Õû,c!ñÉú{ÅŸ*f¯N®bïAqÂì^—Ì;à¹øCû†_þÒMn¿,ˆõK\#R)¶s€÷õ·™¾%k”'oæQºp•e•(¦Þl´Ã– ”’36rmýÙߣ8fõåk?¦Â,ØR£|`S`FkèM¤É»AUDi¢Yôy—,ˆØ¢_˜Ñé›}Áäù¸°=‹åŸ©ÎoHs;‘²ãÙý›—ÓÃaóÍu‹ ÆÈc¡ÏqÕà oƒ'·Jµìv}EJ'ao(äøë'–{¨…ì~xIÎJ§ÞWJ(§«4 © Y”%ËÝ¢¡\€ˆÞª2wMH•Âñ+W~›Þhô!ŽM¿—½ÊÊóÊdTf²gB{›¡®p½ÛçhŠ«˜H%8UèÐ$]ã¹t¬¡ƒh1MA…0ˇ— ›,»nŸ(Kó[Åi âŠà"ç¡”¢jÇe_oˆÊ~Ô’¾ê_ÐK.@Þ$ÿDš#‘lÊ$9Ò¤…bn ›ŽÈ®}e ;3=‚×»J¸GRm’_iûN€by8ø“‡q@é’¶¼"ÐïYÇ5Ñ`¨ ™#q#|%3òÈ\H¯'‹io‡C)cR³G°á³É*É(ühñ×ß}²ûÄãDySz4îßÎ)L·úCø&#ï–3y‚¸¼I ¿{›ÈAn!¦sãÂ~Léùkè`X;ºëÊl&ÛS\rŸ¬ ƒZ…î¨ìRÉ ßÓÍ[±'r[íB @ªu¯Ä__E;J¬`¢6ŠãVÊýR”höëeW¾”#Ò×ÛͯªvF.‹£È_î{”š{txî_#“²ŒHmB¸˜[rÛÞÇ¥MöüO- $»·[VŽp™ì†ó`Lø?T7­oË[ßVDøÆ=Í…8ðÖB#ßÀ³©ðp ÌÖº¤êu䟲J¦ÂœÉñ…6 «"seCMb¢œ•`cÐë.Pk>…5b&á+¿ ƒ©gÓÙ-\Þ¬%u·Ž«˜p™£*iJ =|sHÅ6„N±„ü»/Û’aRÊçk~ËE€wHzدŸz›KÏÆBbfÛÚ>d¢qOèÚÝ‹³/Dß~E ™Ž”¨ ‘=EW¡F,K% o õ°,=ZËló,Ó¥SC[ôe8ÿÖ¸²›¢ (®ŒÑ a€-ïZ þnýè ¾õû²Âíx¦èfCiksœ&oÝX[餅4Ó.S4IÒû [ÄÙN‰3tû¢×€õÛÖU{ùPÌOKLpa¾ ˜r²@îM'¹ cШŠïS·fä­92?=k{(»-¢c‡k‹7KÄŒŒåÖ{G+{B?ûê¡–Iß fr+Vs9ˆ2óïŽ~»É¾¦­XmÀÔ‰8¹? wÝmÎÈœõJ¥¬Gœì‚¤oR­©Ð%oPSÜgçéÛѲn¤XétHá>¡8³±¨×T¡]¶‰Ò]Ÿ9Iÿ8†‡ì“y<v®ÏÆb©”øù"½lìzt;qÊ|oèbí Qnø­kˆÕ) ¶˜/L‰Ö,³\‚jåù0tž@B :³6j2bëbÕ¡…qå^d:þ¸Ãb¯ï–xÄrUɿͅÀná§Ú¸~ç=ýsÚÚÆ3³Ïó¨ÿ¨¬,®8[¯Ï2ÜïŒ0ˆ! %ê×Úv qWâ¥_:¾·#ÁÁ3Öêv‚2IãëUWpÏÌ×ÕËÛ™Çô¶Â.;˯Óq¥Ÿ@Êôª«»Y©ˆM—$ú–ú½B•Þyß6ÁŸ?}‰E»ŽG>6Í“¬:øé.:ÈØû«ËNJ çü5ÑíR"˜Þ¦8lã—‹JeA™ãZLa̶í5o|¶}‚ÓôÙgfÏ#”ás76m´u"ÝÑ.Ý/ýn5ð)ø&í‚TaLy#lM;¸ÅQ}§éV‘ ¾é9ے²4ÂÓ,!·õ [7?kG£9GÖh ¨+AR„}½«wª¨·rˆyç´qÆÜr‰^zàÀG³W&éù²™ï>Mã£ÒÿΚ'f¯èòÚn“¸å=Frž/Gu\7×Ò¿1&9’áþ[à'tp¡|×Ù^ž#f¯²DN£Š#~ˆÔö$|nB…âz½Y\¾æj§±_°ú»SXb^êÆL?íg$nM¥úwÓ&©Ã¼á»5G¨#Rº/Þ*>xD;-DÈЕj=Ý?:oÓ<‡8²$<-§öϵ-ÔN¶În~\‘iþtÛÐÿ¤úƒÚ-bAE÷‚*ÊÆ4«%èow–#®=FT5̾aÐIO+° “³N‚ö%xNòÎÀ7µ55¬îqq+C)Vì_ <Õ$è¡ùجÈO~ËóCô‰Ì¨ˆ¡|Â[-âÅCÛsK¦Ž\ ¼DböJ ë”ë-$ø_t-÷±¸ÆÖ}µŒí®…˜N¤øebCoVxhŒ‚FÓŠzž˜s×=AÙê(õ5$ùbŽ%Ô¼µ@WÕvÚ4v–R­ˆç ÆuuÙÉáäpëÑåzb,î†ä ²å6#·E r„Îôk 䕺/³Dd7Žz²àæß¶¢h¥]DÚ¥©¾Kó¯qU›ø‰nðtývµ•Që¥ÝMn…β§·ÑUÒØEy›NÔÃ6t;q2ލ;B®—ç®`](G5y íG9èÉÒQ9]ü•ý´¸ÂSÿkt¸ªŸv[xò²4Y ÁƒNft?é»È´’‡wPMy²úÇ©ãP‡·ei«—èõUÎçr¢¾Ï|“³O‚Ås€8‚e/Aw¿Q¨Þ\WE8&#–>øeö]äíüO³À—WDT Yw0ôl¢‚O³ºŸ¦Z—©fÍg[}´ŸËíåØWëBÔÌ EQh"ÅGPägKÉúº¤–½’ñd‚Â$¹y¯î3’=‚cîLJóR14bž Àø®Í;ìÐÞÞ#é §~ ï)¡Ì”¹¹xh<»§]p€ž¬¼ôE@+“zmò¯õ^vŽÅxï~®Ù­íMrÖE/œJ¸úâ7 h[˜¶Ëžìi,î_ïc¹Ð1´Ð4E‡³ºö,L@©Û,‹Ü‹ÌÓ¼Wi¾i $a‹ÐSš:²…àcÚ¥\ß"½U4&„wËÚçŒHaÀG"Î,@´œ¦¨$wØUbût[7åJ·O±mù߇Hzª"–ù2ò|6.b)¤Lž¶´8× |Šÿ®R·ékƒÜwýUù+%ØŠ¦Vʸ{‘jd†~A:%VdýOJÿKë~"YL5ñ£'ÁµÍ§G2oxßy².„=j”(~ž/)‹%2õ–šŒ·0Ž(WÊö!˜ôAàAóf¡9ó`§Ð½•/ÎEéF¦¦( ͇e €ãï[¢ƒ­§æVCP”ø”ôOiÅ´RjWMìhÈŠ8’„=*–_;”ÎÆÛÛéVZÚö4¹4¤ —_<– 8 ?7êô ö–à©s®J6ø¶FS‹ & ð>2çÒ9éx.p¦æ$ìº os‘änïÁÿ°àõAÝ…t$á´LÓÑtÛ m€ý*ç'’7‘mîú¦N1Àê¢ïÌßÚxB[#¡5É1‘\¤¿@`+'œT«¥{‡Ëw4™îÏ”fš\1Ö,xàcÃâéøÖ:(d¾Ç­gȧ‡(W"š[PЖ~ JaÝ iª„"ôÔGâg­¸ÄWfô}P>&àLv ·±}¨}ŠÓ¸úõäµóíSƒ$½Ü¢Ûõ37ÿ…ýý8iƒÁB-HÒ$¾WY5õ«`EÌ)‘žšð÷\ó#ŒQ'oÍײƒ8Še‹òù9¼"ù‘€èBPbt…;`Pžÿ/‹ìæ·p)y™²ú˜ŒÌõß·ú=>!“çg4û\GˆµO©©9ÕꊜyW¶cYÐtXxQöÌ9©è„R/”ظ)©JL¹ëý‹ íK‘Ì8G4…Åä]Í(ºš¦Ö³þÙÌkîñ„‹Û½±9¨Nõ)v1ôÌé¼?öެiœG¨ùž¿BŒçrMÂ5 $%÷¸$#ÞÇ·Ù€ÆN;;Ú"ÒM לF±$·á’…¦< [¥¶7‘ñUÿËœ,ÿŽ¸Ý¹Õ1I—Ñ!IÝ -Îý>Æ8¢öxͧk€‚ÚòPß_DøÐjË©•úi¤ÜX"ø´§Ü4‹-òa¸_tàk¬ÙØjȦìžc#(Šoj?ƒ17Þë¼úÓ|áR7ü¹\Þ†ïê@Û!Lœ€uùBóA0CiHS2{K¢f°Ë`¡o\G!l½0& f’• ò•Æ}QöT(8?RLïí)Š‘ö2%G:ûBßÐÀÎü¬ ëMÅÈ+ ïH7´öÉ&¥Ù&Íû“eÏXUÚŽq\Y×ËÍ¿Zø/¨Ü9px€´è"i‹w#4 )Ì÷[”„4^&¹WÚ‹œ‘ÌõçåÌ_±-ÛO´Ô⎠ܙ>¥|ÝÓg<âá'sûƒÞd“Ù„løïY¡&Ö³†X 0K`¡HT 0\.Ø~ÜMséû¯­åþbX€Þaw8ºìXЋ$L`ô®Ì™]xÿÀÆç ½\èc¾ÃCUrôpr–/}µˆ¦t¬xRXòã\Ï1 €ÍÀVæ™Ê¡¸z¿Šˆ^[ν¡ïaõáQý}ž¯ƒÄÕ»êÔcïø Ø; c!:)äÊ7·tR%í£¢ý|óçÕïs"ú‹ù™Eàë9BÑÂ. ®ã Ü|àZl;ýL™FI­ §¿oš±&¾î8J=\gúäò™,‰U›ßû `Ýwí±Vj,Ù0ÐI±gõÄfn_§;ùJ/øÓi©H€ã7•"¶lœ8;¤?*W׫à5ÆÐcŒZfv¥ä >FÑž[™p`Eh's “F„¾}£`9M•R¿ñîÛÄjõÓ1¤mP£_Ýýœî6ªöcºˆvÍ<§ÿÌê¢C×xàÊžMÙ†_ï7¥ ƒŠ,TÄ ìÎz¼Cíñ+«z’|Á6_lÁO”³Åù„Ü#{Lž¹Ø+‘N!ÌÌ’›51Ø]-ƒ\^vêãÁ e‘ೂ´a”¦«¾¦§{=4nkåeÿpó…ÚÔÚ2:Úo›ÍvŸôf­D™$×eôL˜˜˜ŸU9' C桳z¿/6ªT–1ç0¾Þ25Y•îF ·ÝÑ‘œ‰ÂÌ›¡7ïZ*Ýå£× ‰ˆi·Ü‘Ì(ʃö+RyË™R«²åY0ð$é‚ ¤4eýdíÇãwüE6¸HÊ9­¯Ïšz d¦d‡õBÈ"Xm0 GůRžŠéêðšQ]f-JÎ`©œè²Lþ™¡‰âÕäpaèa Ñ”Дϭ4»îÁß0…ö{åömòg…NP7É#ÁŸk¤¼ÄCçH½¯øú@c>ª™>0þC«†¥A¸¾¨ëˆó¹ø"›†c=¶¾_›±×6ø$_˜Ùq†áÍœ;&±N…æ÷‚žšµrØMBŠ^Áùä \Ýòˆ¹hØ;ñËÑ&üŠžÇñéÜ»Édž”ÞŬ¸ , ç¡É…’¤"ð7ÅF`ï/ë»1퀸0lç7ëÅò}ºha¶kEã@#‡FXØ?‹©¯ç|C¨iu`‚Ù*GÃ;P6mx¦­ÉÄÊDؼ•¢/8‹¡Å­nny+¬SèØ2è ä¥K6ËfC¶Ê9½p[€o‡Å,,Stü„¶-ÎûÉjõG_¸ï:‚k^¤ÈftÛoq3¹Øß `Å"°ú¶[Ä’ûl³š¯Ï+³\‰d " Fë¹;ª9úï—¸AyÝâ³§­,Ñe“› ¦!]ÇÚØwCÒ+ÎbÏÇ„%—~¬‚ 7­ìæ¢=éË´g¤È0*êI8,~»?ƨB. ð𠇾EJÎŽ^óN 6tì÷ó†Í]™åµjµœáÖ0Æi/ jóí„w0ù0†àŽ·¬â›®V‡!§=€ Q¢æCˆ¯ì¼#2а'œdúRþÕÛ '¶ßŽZ07/ÃÛ÷c‚Þç±ZÝüø1~´N iÈ,É;¼M’K QLâ4wè,YîTºÆ»7ÊœX1Æ]çEnðôD:ß6bâ32‚Ò=[[)0Iù´±·Vc¿fR Â÷)5Ümç˨±¤½ S¯æ¨1Lů¡ïOaچݔmôÝÔGç‹÷sȯ,¹èÜÞFb–…q?¡ÂN&å„q³vŽ• )˜×sRgü/äêïØPAq|±¯›)cÐÞ„ U{cÃR"´e+ê‹øJòöÔx•íщËÊbøM‡ï¤ÑmÅš{Û$¦¿ðõø &J`›  ƒ3¹uQ GU­ÚJˆŒdŒ6êà ÇpÕ€'ËmU2džÛ(?„I/¾–^Ën:Ûž&*àU)ÐwtÏiš†¬1º¦W…Žz£¾é‹,à·§©Ùaåá%]«HVÁ£Ñ^š+´GeAò l·jþF¶±í?J«Þ.í­¡¾§Î¡oj‘4‘Ÿ3õ©-_CßWdÕ*åÜ›Kkbm:xwžÊŽžq:væç¸/ÒLüô(ÛþÅÄó7,|dÃØ—³ÐÕ+”iÓŠ¢ÉÜöt|_?¸oIv„GV’àKÝ¡´Û‡ `Ü'µö÷huWŸzh¸ß:…3ÇËÂÿŸØ'ý aNÜ‹é~•®kw¤ô¤|¶& wƒG϶^ŽIá‚NàÒžÓnÃô‰ôy˜® ¹®]ízÄÕ _‘£‚ ‰Ðýµe‰Úe3: ŒÂ}〨*81ËB ¨ÌïòÃ+ÛQjl@ˆµk;r¯û1Føùë­|<þ«O¡Õ‡Õ×ÏÈp·[Ò¹šD*↩—°‡È„× 2ìsÕtÉyîÒ³€8ýÕ5–¨Ênònyù»‘ÿ­(¢ÿJ‹RDxbWÚ/h߀bãÛÓ‹±6û[£¢€B8ïÏ¢h:Mζ0TD°?bé¤/7ß·AÄ‘>½«Ð~ÆËI"©òû˳_X YI…"íü¶#³ñ.SƸµz¸4™ ÚÊXÑ0Tdõó •Ï[Ø$˜Ì¤ðΈ @Fæ’X+ìUû H²žÝ61ĶõÅ8ÙåÕ‡ËrüÂ%¯NÎUD'J!g`4\rcªK»iN =Ëm6ÂçcS+×÷µ+hÒ &ÒÁ.úÞ…t§¸8Q'€† œ”:#ÜZÄt-Qî9< +‘%……øàc|>^3G:þ t$¡Ð‘ 铬¯$7KV°-óh' ý£ÂÉœg,[fŠK-ꟛɡkǾ5›§:iz ü¸\òެyÿÌeäfán¢M x…+¦¦kÁ<úÕ/˜VªRb&¼ùéN!²ü¹©aTÝÜÐ5 ¬\^mQÌ9íáI!¢çì±§¨Íÿ²¤ª†ëŸ×Ÿû›‘Gm0ÔÙïƒWßß `Œ» "¾9Pº‡z#Ýç ?£í#0[²8%òILHè=(¦EÌW;®ܹU`º¿Þ!dDr¸ñÇàƒxµi¤Š£YÅ¡¨ŸpE2KJêÿF¤¸Ìuö3`[ãº^-à%> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„ Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­ ¸¦Žìoƒ Êç ÁÀ…  Gb .îH$dšhé Ðpäo°îo€ ðÏåÁÂà…ûã}üå BQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°P à c.ç=Šœ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ÃuF¢<‘>Kö$Ìþ¼ ˜;ZÄ ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØÃ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0 éâýoø¯‹¨˜ikê« üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤= xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬а Èÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚à 8¨ãoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.à KõÏ:ÔPì|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(% äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú ]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€ Lécgúr Åž,ôÓ×Ü2ŸÝá žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë 8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†à Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ —Ö}¤ ¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ +¾)pF¿œ'‰%QcÌ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ ?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…f ìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï– $U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý: êw6‰D?~©ôرƒ¥ ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê ¾­â/þWûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ ®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­ áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸðO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰ fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxk Ð4¾Ýºù›ÖÃ㯢3Ìå7© Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒ žíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT 9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­ 2N ¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg ´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{` š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ §˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F ~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ ©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*› ¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š ~È 7W g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJ šâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää ¦Å =¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº —Gõ°·Í¼/ »Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 206 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚŒ¶tœ Û.¶il6ÉÄ6Û¶LlÛjФqÛlì6¶m3ûÝû{ÛýýÿZ第5™ëÆuûy†ŒHA™NÐÄÎ(fgëLÇDÏÈ–Ubb02²Ð322Ã’‘©X8[ÿÃ’©,ìl¹þ0v:ƒd"†Î ;Y;[€”‹5€‰ÀÄÎÅô‰‹‘ÀÌÈÈù?†vŽ\CW €,=@ÊÎèK&lgïáhafî ó?_”ÆT&NÎO´ÿqÚ-Œ m²†Îæ@PDcCk€²±ÐÙã_”<æÎÎö\ nnnô†6NôvŽf|T´7 gs€Ð èè 4üU0@ÎÐøweô°ds §¿åÊv¦În†Ž@H`ma ´uy¸Øš àeI€¼=Ðöoc™¿ hÿôÀDÏô_º¼ÿ"²°ý³¡±±½¡­‡…­ÀÔ“¡wvw¦Úšüehhídò7t5´°64ü'sC€˜ "ÀTà?å9;ZØ;;Ñ;YXÿU"Ã_4 .‹ÚšÛÙØm`ÿÊOÄÂh j»Ãß“µ²µs³õú˜ZØš˜þU„‰‹=ƒª­…ƒ PRäö·Ì è `cddüÄÉ:€îÆæ Ñ«xØÿ£dúK ªÀÇËÞÎ` *èca ýƒõr2tœ]€>^*þ`™˜&ÆÎ# ™…-ìovhú7 ßÑ ÍÚ=&ã_ÿý¦ Z/;[kßæÿ™/ƒ’°ˆ¼”8ÍßÿW'$dçð¢ceÐ1³1˜þZ²O />ÿ¦Q0´ø'?|%mMíœg jÓÿdìúÏPþsT€sÉÙ¶ ü½ä:ŒlŒÆ ¦ÿçUÿËÿ߆ÿÅò[òÿ˜‹µõÔ”ÿÑÿÔ†6Öÿ€–ÖÅt²v 3°ýߦêÀ¿Vhbáb󿵒Ά C´5³þo-œÄ,Ü& ÎÆæoËßrÕ¿®ÌÚ¨`çdñ×c@ÍÿÒNËØ ôèp­äT@Ðåü;¤¨­±É_'ÆÌÆ0tt4ô€ „Ø^L [4ºÿg‰ ô¶vÎ ¨<€©#ì_eg0þ%ú±„~£Oá߈À òqDÿ‹>1Ä~#&ƒøoÄ`üX R¿(ºôoŠ.ó¢ËþF èr¿(ºü(ºÂoÄ º„ß]ù7EWù@ÑU#Ptµß]ý7ÅÓü/âé #PfF¿¨v#GCc+ èmbêü[Îò_ùßñ_ˆÚø¿ˆ Dflg Ú†ÿ‘°²þ%±±ùð¯5a0ù‚B3€Êþ+3ˆhcbèdþ‡ ”h™þ%cuÎô7ÑšþYÿ‚0€ðoÈÆòtý#¿ôv.ŽЃLÌþ€ ÂßÁYA³0÷°7Úþa’ýT™å4«? ¨sÖ@P[mþ¨Ô²ßÌl W[Ðyý¡k÷;³Ý¿Ô bì«Adö ·¦í¿&ÌÊôôßóeemzÎÙý11Ðo‡ß"wp±sšYÿ‹‘…õ·â- û?šÛsþ#ý·1Ó_£ûcL ¶:ýîÈÉ hcñï­cûËèúÇ4Ø@$N WÒëõÐÉú_ûÃÊêwXгžÁÙÜøÇJ€úæìf÷‡ˆÃå¡ë”™Ûûòvÿ‚è=þ€ &zþNÄä tü;Ô¿ž—Æ.Ž 9ÿçÚÿÿÁÿù}ºaç쌹ƒ-kƒÛî«ñÜèvÇx§ÉvÕS¨è¼Û]ß'RU¥®;Þ &þD^Ù¥¼X"|ñ:n®{Ö¯Øúäý¬ÿUir·va³o<ÿXð{/þ‡t*{Þ/ÞjVÍàRdÙ.ˆ ¹h÷n=âîß{K—GBçv÷ªØ¥ážK§è¢U£tŠfÈrŒ2f±‰ß9ÓáÃP£^¸#ÍÜÜN£f¿J}¥õ9‰f)ðÒÚ`þò0ë¹Z®ÂìÔ…CŠ£…yƒ:2Iî%t$…5ïU\°Ò·àÞÌS@˜…@›¼B‡LÀœVe¡iÛØ]ã:²ØÁ´“¦ÀëCÛ‰¯)iD×w$–ǨjÕDs®a±ât˜ ­¶Ýªý0µLþ¸Ä9õý 0ƒ i~ìßôÃë©Îaup¨î.4¹å~°qhû‡z/ÿG37&jQs툕e®4üdèRçQˆ.u $:2í’k"Ç3´aWà/¡G\¦­|FF-ènð‘glÙÞ¿¾øTÔ_ÈulÌ Ì[»¡ê½±Ë½u&_\ä㘳ˆ¤‡R椉þøœ³C¡È] ¬Ÿ *e¸Ø¨À¤)ñ ”‰Ûb[øÕOZÀ*)Þ½;_9¡èaùÀ™G¦V¡ÚË–§H´sI7zP0 ÒÃykr°u[V&¤‡qh§öpQá.4øeSåSpÎç%ÿ¬.'ùTqÁHˆÂ»íÙîF$§*B®D61Hê*¼Û£]…Ïn´¥’"d‹²½Ò‡ÚÜt²:Êúëǯí;²oìþeÙ5zíw†Î™„0òLÇ9 `b¿X<HR·‘deç'Ä{µ^Vµ!mÊßZ<Ç£ÄüÞ}@µ.}(#þ)ÅW „ZPŠQú賯F µ¢<°lC›s°Vt®„ŠÙ„YÐÞ*ÝYÚ®AÐ.5éï~Uˆ­¯=¦¡Ž‚Õu­˜]… ¢ðvã”ý ¢³] rô3lŠwÁüe@cí… sT¼›‹Õ0ÅbgÁ•XW0tôÄQÅЯÎEïÓ*c" .ÝéF­Š‘¥é7²÷åöZ-ùP¡È‚y ¦Æ½Ó6>ˆ€Z)O/Ÿ¹aAÛÆÁQ6GtÒb–ūû!@,¶ñ(-v¯’cô”òµC-à‹5¥µYåŒ%£©ŠèU¢¦ƒÒÙ¤ÙaÍ—CVE&¬ê_@ç–ƒZASÑH ÎIÏê4×ÉäKš-¢ç×0ï+òöó¹æ>Êdzâè~A¹(u„‹(È- r•鈔ÿÄI*)cñJ/¸`†·ikÍî&õ!FL¾þ’GúÃî±Âh¾üAAì!×Ðx¿µ)ë\òýú{ÍÝù:ŠÅ10õ¥‰Ý ò®\ÆiÀ+Æ7‹‹S.Œ2q Ãrô÷x JÌf±€ÃzÐ_jg»7o­:3 ºT”fÀÛ ŽÓk³æ)/0¹%МKòÏä€¸ØæEFjWáz‰S‰|wʸi>Ùë仹ã jn‰Ãê­²‰VŽ®Äc ~ÌÒ_iN¯¿Û¼8ô§$„·nD›„&è(&þÄ£.]±PÁü} '¸5ÑÏ“5ÊU&Sù.×"ý)¦ †F)uîDÛ± íy@ó¦íTÓèÓV³ð¾ ònA3LáñvL \U4÷äê5êbZ:¨kI"Š¢¶ž\KQ` IrqÙ,oç-)½K»˜êSyÇs¶ù˜m| Ρ&Å̲áÏ•î_Ž~3ë© ¶ú¶‰R29˜p0”I°µûÙÃß`+êåð½¤Åê×—/ô¬ÒŒÖ~ÚùbžÈTåéÂ,æ«æ€7÷z=‡£ºnˬ¯´ì岯_3¥ú¡9Ú¾9%¢ÿ컺´ÕZ‡¤Nmå-¹rº¹°KC7ðúê1C$,Lé…e C¯î§ÕprN°Çˆe ·adbæ¤bBJ7©s[56“F.Ãcß …Ú„dïÝì›VÇqðH?Ø“Ô@c:ÖïéQìD¸©_+äY9–zÍÌï:Óóâèªíf>¬[Ü0ˆg6ß6i9 ÛÌm‘è=,Ìý§]±šʺ¾¿B² R+¬í„æËã?&e¸1>4Fˆ%¯®?ž•ˆ®j‡šÞ+¸³úK„dcx½W®ã^'˜CGÖD#fºf[¼z޻ߔÐ!ž.Ó~wÏ”4–zjÌ&wÏYjÏÇüIªUèåªÞ‰ò,¢ÁŒòºÄC‘Ñ™O»r‹c4^Ü©·)€‹P‰”S—<üÑÆ£’Ê¢'ÂuðÐòç­zq¤L’¾’¡uç±ûwýìyÍ ®Z6Ù¢*¨õ½³eôóˆ÷h_Z+êñüŠŸ,óC6zsˆ|Ö ÎŽEÈÕ?ú”îÌ)j4“¾“X/ÚGq–̯hûà70K¿¨ùñ—À‚-F™c²þõ‰íJÀO„ùçmgA9h:Û¤Èd~hý5L=ýe3ô¸zßL̾îh‚ê‰Óbi¡°µ v`Oê¯M°| ÖŠö_CqËrý¦©ºB2ê .¢¹ß+ãPÀë5ßpí8CIÕX ¡»—}¥dâkÁXVt€øRÒŸ`¥BÑ|‘‰ÌÉë€g»°ãàl-#̯Ñ`ÅM†uø:ßã0UÀ¿9áÉ$¬LÓõ1O©Û—8¡Ì< ÇR&•$»4œhMùkºž† 8¨¸Ë`c/Ç&ý \ýáMÕ½¼°f!‘T±¡Õ<]Åê­êÓÙÛ³ß}]ü]0I4œ¤™xrö@4. 3£¹[<…#Mv`\ ZÕtBð”Æ+´8"©‹ç¯üŽé@r5Ý‚bŽ8¢­*c^ªI·è«ìøêaÈUÐ/™à&à„Šþ¨ U2‰¥ †"Àæ·º>I‰ {Ÿþ•.£;¨qPDÂ2,yÛ Ã#Ð}% vþ'ßÒÄ\UUθUrå’u7yR ÏþÒ·êK`,•é䎘gšAc#1˜€²yÏt[ÜÐÕŒ- C,ð£Î¶ZM)Kï•a… ‘‡GÛ6ׯiôLc¢<÷ è¤@£qÙ׹ϛ ¦>,ëIiÇÃ…ýÛÄâ%I(û¦²N“ïg5ÔU_|žoë›4{ê£õàügæÉ,Gû‰$:Î#å%Þ`G¿ê?4Dr„ÕŽ]ú}Ý’jrÍA¬ Ð]!%]|_Š´L!lÎÀ–ʬŒý‚ßz:\ýã—@|vƇo†åuþtè©‚~Æ¡‡Övêàu²”—1ïÁ‹H– æ'l5½,— X¼­!\ñ+ Z($­³_ü6jˆvëžsn¦~x%ä¾­J9ç³7<Ѓ X0?–·‚4ÈhH{ Â=Ï¡?(ÏJ’2é­Í™M¦¨T²Ë¸ÞÇÛœ ‹ô«§ÈšêøÏX·VÍhšö—r-®±óýžñüÞt¦ÎËzk¿E`^?¸Ë½®7Tù !ÆÜJøAÝ·>½%v¼3†LÉ'ËÔÂ„íª±dƒ©ŽÑ̼Ÿn¸? O ðàs<÷,.e ƒ±P},‡ª÷žò"v}zýÜ‘öÎÕ ß§îÚ†9}Ia´¥FôB¬²æ×*ñ¼ŠLBäkÚç8%´§“™$È{‚<—6àÔ“ý4HÊ=[ít*åoqníÓÓyþL‡1÷¢8´Y,gdB³ÜÖ±œiGü!z±HõC›çä•ّ٨áΗX—:±ìÉTžn4GÕ¦Òò ˆGê6ˆ³Û7V~ fÝŸ±¬ÅßFsÓæ/¿éý˜pÚÕ¦§¨ž^ùÂßÄÅM|â;¡êË¿J•°Í„h)®üD|è%ªÄÃÀìü"ÛÛýà´[èÿdÅ)©qgšW’> ¹õ6þòDƒ¶X¨!zR”„<@´IÔ5ÑML-µ¬ü ±kI“  æãô¹å2>ùÔ¢àK*usƒÙ¶p¾·ùÜÁ7ßMàÆ©šˆÔ¬wrK‹’Ïd‘°cÄVŸÊ€àÀœ)ö DJ^\‚‚7tñt›ôí4ÉØW•ìFD±»G}Ü—;½™xH|\H8îÔ]ÞGJž@ —ö7ÅÞ—‰Š E–#nw’¦/„,W„Ê#\¥–F(§ËdMÎR_ß3ð åÈ¿¥ã;ª­üÄq×­n~ׯGµužõ£^×ß:ã’Í®Y{?gBŒ™V޼˜Í¢$B§FNñ‡ä¥ÄÌèõa¿ שÀ‚Ø9Ö¾ÜÜ{e«Œ5<åT­æêsïÚYM›ÅDÍc–龫@Pé)COÒ„غù¼ÐÂ…kÉ5‰bLƒ_WÝÁiÂE+Aë=ÎÜ^°´MéÀ6,8Ÿ¾¾jn²Ä`‰ùê§¹ÿˆ‚TÍôŽ¤Ðˆ«ï @RCf—„Ó!L Þ_¹å{æTÓ‚ä›-䤖dôÁœ®×!öZÀ€9gQ]òìû5è²#–n 9²˜r£°^^bŸ,aû?? y¿vî°dšìKÜw|À¨ìš¬|Å‘rýI+Mè þá².d15"zμ0!¡ðéVÁ©æŽú ]­Ø ª¨ì×yÝoBŸ·²HQÁt1“ñ(6ïmùîAšëmlŽœTûåõ“,õ{™Ú»MãƒY]I®p$çÑ…HÍú~x!|“h÷‰¦Â÷&óÊÀåv9£_ôFnÕeÛw…˜÷:^¤Z•`㟂팴‡eލåÍÀ_ÔíŠ]BÕ|«|7áŒýt –Ñ5ùÕÃ}6ÊIBµí’\÷ç6¶!Nøe ž4ÖQÍÕPĪ‚eÐ>ÅÃ8¥VÒÎ(°@I=6[¹Ÿ³¨3LÞ|ÇqOáÓ.L{õ)õQˆ÷ŒÐïrÄo”u-ï ¯?eþ ¡\Ë´`†uä«=þ伩r_ЕºD ÿúŠ‘oš/RI3õáTmßÚ©³»?cA¾³“  ë°¾§c²Ö-i©‹“7ZƷ뺔q#ùm¬ ~ÕF^…çœð·xÒùˆØ]¸3ý˜ƒbh« PŸñ•V©DJº®;Í:zZëNƒ-UÄÍvš„èU{‚S° ã%/T* J˜K]ú^ue9á„Ð[)0¯õ³èKjjšàÉy¹žîù¬Îw5•¶ÁØdq6ÞóEÖÓ°ì/BpsG…ü \¼1*¡ÓxÄwhn^ŸEe"$·yÚ«ˆ– _ #nÝ/\çÛ…a¨,‰j»%Ê•Eçþ‰LãC©hÒ •ñІŠ\UØøyTb2\”뛃Aá¡®–xï©î¥N¬ ¼ò(•¡µ=$„4Ì.‰a—EéÉÇ/“=Ô2hÜxN¥&{ùÐÙz‚†5]ŠŠ€:éÚÜ¥g 3>Â6£YmÃÃ%ˆOaâ+Œd'ÃùJ÷XC­L)±q®~Y×xéáy®Š îìïÇZi:‚NІ‰ø9¨›©"¾ðŠ6µzI_Ö¤£éð»§ÿÊ/=¦Ì³¨~áæBx±øˆïý°õºV©{Üô#éÜ1­¾S@:üà æ·'ÚY!ˆ™ð‰ÍÃ¥!ѹ篳æ}ü7ŠL¤ªZ†pÍðîwÐ_æY‰æ9–çÛÚ¨nò Å|¤WµI¨kë“Z·'0RÝ“”^#Uź>þIÚÓ–›í þ¡¦lÏ!¡üóð.x½‘†= Іþóy\‹3oÎÈvíD^‚©ÿúKb±Õ®DP QÞã@ºaæwzÏ[­T³…¶ñÍ+ðïöBÁ·õ‰ogÚ~ÍWRLb’ib°y§Cžfá1C?r•(ç̹­TÌÀ]1—À¿ÎG÷hŸ#-®;ocó›•6ïzkº,ˆ+–±_ÇŒhqÆs!Ìß©1x|½{­O9Á»?w# j¯ÉRîÄ…ŸÔï{û¶>…t‚^ù¹yg”gsî#³«'‹"Ðueš Ãéôv–¡ñ¦VàõL¹jg=K âÚ T>y°ø2ƒæ!ð+djø‚D³;Þ€8c.sÍÁ•»ˆG*eÝ’[ÐtˆÂsý»ðmFÞuØ3ûø…”CÀìGü’ÛæÐ¬Á,ú«ªX„7Å„øÁ¦óÛ$§u‰~ß( Seïa>yEkgÅøÃ´HmÉŸÓ˜ õý¸ò_tl9QN õVâpE®Ôy¹{y} jxx½šºê±6—Pg9!2wËÌÒs0¤œiÇ ;®.ÌAp’ÒdÔˆ ½(?ȵt­ëc‰ ï''ˆfäúkJ, Y¾]½M…Nš}`5曾M·ÊÔü»f9º9¢+ãâm÷—É•—¼¶kâÁü|«á:*›í¡ÓÄ[ÞOHÈÌŸg¢#½NQoÑ-x ƒU¼ìô°[=-Îk:Í•™z{SÓ&»]ïÖv·.fÂl¿¯a5× ›†_Q¬È ÏÈxižLa¸*7š9þ9¨ºnl1@Ôüö¬Ÿ³ñEñ²¶‡ÅçÑ´’7­²ןþà¤n–«¨æì~Äyibý\„»–ч–ïá¢]Uùh¼rØà*©z†# Îa • Mà æFwxf×»å˜ms«–¡*wЕÆmæ_ ¼¶l&Ô“r2¹É}ÏÑÆu/޳Y“K ßù¡ù‘Rï¸mòXõ»ÐB‘_uÞ h«Ö´\fá ¹WÝØØçÛnjgq½à¶Ÿâ?Ù6’ÚÑ®µäŸš<“ÀïÛQ¡¹ð*äb]àDúñpOwÁ’ç5ñ¾ðÔê~讎ިæº>¼ ¬[·ç“z¹V´nx˜$ô¶“Ö}ô¸  B±%Ü{Êh{v #²BÃÇ‘¢›f2·\.{çi噬î«gjÒlsŸX™¦»ÜáÅÓ°g ù´oß0AãGäkM]x3ËP#a:QBV¦÷()Š®%æÃ·÷9ºé骚^Vòg£xü3iSw-M%&ñSš>qg +aêFC&R¿…ÿœ•$æ8bh^âý9¹¾Ú°Š'ÑÖíÑ%òt‰N˜G ]DLLÍ>ò9넇8eÀlƒ«-g­Ë U~±€Ì+¼^rŒ= wŽ[ÿa¨›»?Ú– *¬@û,!+v˜?O'Ñ_ €f販p€bSÓÞ…§½j-m…ß„ŸÞ»"iâòWÊ£?ôœÛS‘çk^çj² “÷k´GpÜ*aBƒÌTd˜wÇÒÀüµœ¯IälS¾Vbþ³8íÙ*CL"ÒºLKUÝù#Éü­kyy‚Vb Þ ØÊ Ñ~>yJE©ªñEE5E.øvUvr‘ÃÝÑzø™ç;£ä™…³é!ùõbo¡òr«¾¶x«ÐÛR oçAܹ§5$Kµ0a¾CCÂoÝv|¯f@ÊMð5öÞ:ƒžq£Ò†ª{"_;wù´ƒ$ûÝëo¦Ã¦š^kü¥t3=a¶WÉKg¢_ öBÐZòSpa¶\ƒé>vè«ìËͧúåo8%eÔw—?™Íê£Â–fÌl‹¥÷i˜°<ßðçøgP`ÂØ™bÁ³MµÇ#|.Ê%ë$ߪ̆¤m¥[?'6#)Æk[yâ¶Ñíi&Usû¬­‡[žß÷"’dù`aMû ñëðNf…1ѼÖMÕ}¤{GÊò¦èJ±¶ùKéÝØI?äŒâL·ÛG×âK¶E#5,Žpù'²áyˆ°ªNOÏwÒío-¶r“IµßíN1áÚ•êPøù<Ö¦ýÈ<>cæ„õåzèÑ òBEͽïÏÐçf wzÑ+°O÷OŸæ-?7. 2B㺃éÅo­‡çùÈââ8AZ‰¦Ë±Cz5õ™Ý}­8­Bæó“n¿¨DÇâLVLÓžè›@nRôÌN–±ædNǼÙÐsïŹ ]ýl“,*Ÿ§KnN–h网æ•ÅæÔ"néˆ_Ø÷O¡ôrܯ\Ç7úxàu[òAúá¡Gôw‡?NfòܳÛF¾K»òÉt–Xndé‚Y:æWy¡>é*iÜj&r(ªˆÜžb»:ðúØ©e¦|+ýt2VÑæÈ¹àŸÊ©»AH.÷ÙZ€ÈÞX]\GF¡è]²“A¦ó,¾q%n+1E»NN“©Ã–Z’úMª ¦[ÀÌ|»Îöj÷"±·r-¯œ4L©Ñ‹¶óß‹ÙH¼cMø5“ˆW>rCƒf¼’(XÑ…Ym*. Úò´ˆSM`Tè™úh‹êtM·d(ZK`SLˆênŸAñ3Ó``Ôe¹?.‘®=Ë £~à šöGãMó)¦nÞÛóTÆtÒ̽°fÞÐk=4'1XÒSqÜ}ñ©Q÷è±Îýòx}tw¤Øxd ?SfÜF;ÉÙjmå§æ¹I6ª–@ºd¹¨QÚ¦t Q³L°ÔÓá6>Úï˜ †}|×¼Õ%ºLð°Z ¼JaôäÞdüù&†¨‰š½¨Ô—ý—™^âûÎw²¶3õÏ»~h7¹Sæ*íT5ºöÀ‚AÔõÍɈÚaÉðØ®õñɵaµÌ“°Ÿ#¶á—ø`XjšæR± (SRЛÕiFâ4Š-låÑ_­½US¥Óœ )np¼]V?€ãÔýG¾ê¯ þæ’ƒÌwõÑ&x×pðCBØ¢'áðÝW"•Dm–¢0g-Áïo7V9˾Œ£‘ÀhŽŒhWö†ZŠ7•¿¹;+9.ažË-¢Á ò?ØK¢÷¤#`NëBÊãŒnÎÞëÈ%Ìü(1$Jï"bL{¹]Tô‡‡×Ò’¾b¸è¿Y¸Y^Tæ3•‡x4{.&ä K®¡#6¼É ‹Nûü²û–1æÔOªŒ&×¼Wï=’θÖÊ/‡‡\®„¾Nsˆn ¥,|™]œeV¯¤oí 0¯…þ9®§ ˜7& ‚wüÒÎÁ£”$eþ°Šu$±jd‰o– e¤%ˆ©¡d)eË'Z;èQ¹—ÂÞ+é ¡¬ßºósqŸ¨èLÜè|µ˜¿©M¡Ý[ê£Mž¡Ú‹Ni’ZQ#:8L؈ Ãõ¬_"ôñ ŒÑ–„CY·øNÿî%0²Ñ~ÿ3s1•;_+ÖJàîþªýbŒÍ>¡KDÍwîÕû0[dú}6&­Œ|±ÉwÎö–ýÈÉ9ʲXö‚ó‚‚€"«[…!,’Õ{üŽ „ë Ø,ÆmØ®Sƒœ-³—ÝÆ6¨Þ%ט½f¬IÌW]7õ–iÌßO8–à#´Œ„cÀ€ED•ý˜$Ò%ÏòèÉ;b_¶ú8[²IôBÏ–”»ùd—ù€·Ô%ˆDy ßr¬½Ú¾Sä3ì†÷~ Ü¡m!ÚrsrÎ>Y6ú@þ¼•v°õòZ þ í­€¤è ßO &ÒâŒj^©_¾\F5«‹rÌWaÚQ5”îþK6ЃµÃó”ÂÌ•1{“kà¥ø)ý$ÌC“ˆGöŠ~óÀLm}¯”§è'”¶­Îàx’¼F-\uï‘XUô¯ü"@¶«ð×¶çnPic¡K›²ÐÅ`ö:Ôî[[.9eÕ3Ͻ²' wïס¬”´0-ÈôáªÕ¤â™h@@ýk›=æîø&jù×8„R\íÏ12æQ ß §ã{|G{˜¼3«B¯7œhÓ|gß.HyчyIUè}2c·LLy2¿µM²9¼«¼Í )d Ôæ–~é®Ô'pDÓ®Á¡òÛé)aËòšŒ‰"Õ€˜›ÞO,”˜nˆºü*‚™#p5Vée˜Aª‡ªð ‚U(Rè¤Ê,ùzZt ~™¨­¹"“·Ìþó:Ò;ÞŠâ”äŒ6±l²|ò~ùûAEWŸ£ûÀ&oq½îDÉÒFÔ©õ HËI¬wëôÅ-œ¬Ìç ¼0'›¡a¸% ¾°Ù»¨È¯¶:* ÃÜþ²bH?MD”Aêba¾´Gþ\§9Ákï¾}ÕŠt #öž6:ôh³1W#"ÙæÃ><¡ĠÛ ù°Ï;â—÷²«Z3Ï&§lFêÚYlA8܈m.e«ä%/Å@¬ðìï™ã­ê‚%xa\4b ŠŸˆû‚•W{~:ak|(»3w7ŸeÜóøÂ.b/Ey ŸurÏ$377ŠìuP/3Dæ¹[86Ÿ¨[I…wXDõ¸¬NUq~Ià{wí̽Ÿäbq«§B¢t"¨uÉnë‰9¨KcQe Œ†¾Ë6`ü&4ÚÞÿð.$xî,F¢úÉoY&§ˆœ%ê¦oÍù-4 źÃU¢=™.׋ž¹`Šç™Jjc:­n9n­¯«½&ÆÌŸ<)\µ)‹[eÔÄÂA ·Çæ›ë£u '‹p©Ž©ãUÑ’TGÝÒí,%¦´Ä×…ŸÉÕƒ²Gw/f¥gÏñ‹¯807‘”±=xá—“ŽûóãyÓØ)kâS‰‚(×K´…tØ{5vãÒ2š/3Ãì-ÇÆ¹zd̤‹ÚO©ÃÒ„´„̨¸ißÍ«ûG|ç¢?ô‹RÈÆ¼C¡r¯"AH %›Áœú$â_¹Ol2ã‰0/2ÊŸktRœ´þIþyvcËük¸Q\ÚKL?Ïwbˆ¯˜8)tŒÄ~§ÔPÙÆÁ.ˆ°(°ƒø9ú…vÀzËóÄž¢D]Jïh‰ˆp>¤®³`ví÷Ù²Ë Ÿ‘«÷ _’ƒ,¹Š Â]! ìcåºYö\à …àÎcîT ¥©²‹IËùV®løÁ”k°2IÍ›4eRí2É5éÐ9Ó¢ú³Lm4ǽå£8KØ‹^:T.¯éͽR;áÝ;4ƒeÞºŒÉBð‹ yã!ë3±ƒ™KqÛ¡¿ß•Ü\@î¨jŸüÖòÚ²tÜI£}0™‚ãA=­¬ÓûÐ2Z«:½—ãõçµÅY!£F)Ð2'ÅD6SËÚOÜÑØ4jù¬y¨5Á•ûÎç´ ÄU<ÝÙ­.åO¥§Ø¹a»QNÃKVpÓQ. ÀŠ‚[IÀý)/®º­ù µ›SÚsú‡É‚¥œ»qRä•FQDê•QôªB>É”)ý¸ÂJÎñFrYÖž£s´¯õñ1w”ýXÖ—÷AèCÔ!§ôj´Ä”¶k¢‹U(ˆU¯oi+õUÔ”û*¶ñý˜&•huï˜Ӄ*°Íû? ÉŸE)šAšÔÉ[‡Îs¢ÿbtÍp™Ãi{á½Ì:¨~¾ù Í\¨ˆ€Í/SÂ|ÑYÔ×RÖ M3û˜Ã1‹öȆço‚{Ê烃5 c$ÍôË×Ö5ï²öÐË#)BÑ6¶sGÇ5møžˆÑmÔ/OÚ:¹ì¶Égæäà‡µ"'ÿsÓx #ºnUŒ¸­Ø”>D ×gpwåk T÷Ï’¶ágx’™{a© ÕC‚€[%Ñ=go1 ÒôÁóë¹H°é*`•oCn¿ø¸ñ2ØquÜMSœI¤ûêórÄ žt&ZÃp žlYé²ÏÑàOÕëè"|Ò5åëM3ZR;iNεêïUŒÕ-¿*iî.8¹e Yœ„’­ð³ä Èñgük´RH™v(kŒ´K×àèÜÞ¬æ³ëtǼ÷x§S:?Õ,5jSˆdˆðé8žèJªË‘³Å^dBA±Û¿tÊü8ÑÍÎù¼ŸŽ(êpL‹IhYzX«ë™}Ÿßð®KŽšîVrl”ÿ¦ðâ^$ÀEpy/× lÔ¡àãâ“ÑOL˜¦Šb± ž^/ R† &ét. 1œ» Ší®•ÈÝ3ŽZ*TðlúуIÁÜpM˜ŠòÉwèMêÌR4š_¸‘¯ãžÊ»w ÷K"ûg/÷oN \‹½øþÜJJ¬‰ÆÆD2<äH*âfÆ–!ÄŒGg$fI£Ë4„Zxå%xâN¥Ýª=S/] be´Žx¡×Ø÷±˜ͨ† Ô†Æ;Ÿán²KêU}íÀ‰’×”÷C n?d;Ç+ôGië%|wõ¿+ÞE”fdïäæÞÑ.mÆŠA »±MÁ¿»SÏñ…£S4Ez4eO|ºÖ´ kÁ7ëTDÅ,Ô\³Ï׽ܲâûþÀþ¼A:ÄΞ»'§7Ðë(W¤/FY¨¿× Œdq®Ã›ßÕöP`§ô[G›üšéŽ^ÒÍSo@³À¾Ò±Ç¬bøe°Ü¯V·©B‡jÃÛŽh00 œ O² §l “‹ÒØ)-Ëæ(=-V¸7”n§IÛú#2+ëû©TÙƒáih®GÕ%s†ºEÝ+;$±>©TüÁL`jÒƒ¯LO2+ék>ÊV^BT≘ 9àÉÃÅI\+ñ&=Àûí²® ÕR•ó–)ÕeÔñp^¹Aˆd~µ~Á¼…ýx y˸óòÛŽßÖpõÃÎÑE†»ŸGcÖ&ï„§Ò…s£¾0„ðh>›j>Rø‰_òZé^߯zb?Ùg3äÏÒP>i¶Xo „Ïj ‹dÆ"-9VUÑÞuyÖž#?»@Ô¬‚Ì7‰ô ™í̵ÞQ“QÞgײK^¹Fèè±Ë­ô;® N茑iSd®œ~fº‹ W­ àÒ˜Î Úï´1å¶ @ ™W»A–Nf´šµW'·+–ë,IúQÝ(hg&Œ[²¹fãôœÀ`±À1ä“ÍiCÂ@¬Õ±d.¿— ¦ÕGM7t¨£L îÎ\ýKxšúàíÅ¢%Jgì}œJ‰f΂Lou¾YhUˆWyÂ꫈xyËÄŽá;Å5Væpg°‹xNzsX®Oº,V)¿‚îµ)à íÅVøD|©â¢½íÓIQ]£´c;„‹;'#ì°61˜/mY  ÓÓËÊ¥¶Â^˜ÃC* ž¯ìylÕ¿m{G{„ÿh¨•õÿÞvCßÓÇ~‹=ro€*-3³É¢éøeXE*«¶ý6;¼«ÁBLn\ýàÇÒÅÆ7c°Â“®Á¤Wv… /Q86-Ù©—­Iñd…îÐS\ëî㡉÷\Ôù´'Ç‹t:I×·íó6áƒV½7ù±²ƒŸgfP[TZ°b£{]X:to«\³M/’ ª8Ðöˆ`ÉŠžœ'X-VqåÉ,CI®º( øfÕ Yâ¶5B¡ìü_U>–`Ü X;Ô ¨†$:›·Ð\ç– Vè@tG;§b½N™(:æúZD¶xªËJýÕ3†Kÿí½ÀGȦúk{—ã2dÍ. b¢[2!C×¶Îõ¨WŒXU(0èkî‡Át9A¦–ÆÄq¤ojŠò1 —ãgµr,ÁxÊIT>š›ˆ×…ŸÍdCRüŒC#9Ê×c“'$MR×ã.tr›¯ íµÞ¹í‡ i*\Ù>‰ê@/r(€‰×ðà@»Ú̃i7ÄÑcŸ&Ýú‚šh*À*ÒÚpþ  p/ñj4õráëÑçBŽp‘5I’ŒÚ{§ÚãdÞ$gÈÏ……GÝ+»·þTŒÔÚþÝÜ| EÔC˜›Ú¨Wû³ §¬BÕ;ÁÊÁZOëaÈ™ù”«ø-È&st¥þñc`.½«D^8Q©:~<'ËZˆÙ®{wYS]Q~\‚j íÔÜ"î=\,•‹ºò|Ó2¾1¡‚2¤ŽS¼5nõúöšKõéý„g`©î5Æ"zÔ¨jì(˜På"¹#.ƒ–Ñ×~/ÚI‡”K=…º»äÎqeÅ0:ã¢Í0L—[;w>ƒŽ ¦'õ÷o˜ð‰ë‘;+>sÖK´½iS_Ë‘%yøôþŒyôÁ0bi·ìjê Y(§óÕ>áùÅ4f?æÙã±òBm‰î8 „_¨Ü—U~Ö>­5³éÛàæ9»Þð§ªÒSU;—LN†Æ[NiLˆ×”ûy:ô¯Ë_xW4ï5“×[YÜóT çmÁ)Áy%qËá®ÛÖC> wãïŸ.m®ŽsÿôP£v]ÈtÅ«áÜðøkMÓˆ½B:þt‹Cêü‘ñØ Í 1Q7ºÂÓEÀ»…ŽO0P.nuÚYéãâ£?‘}ª‡Rï{–*ZûÕ*añE¿#Ã,”E~¢ÊÏ®3É ñŸ‚< ¬{²ÙœRù7åcl¹K··¤¬§,pái•‚P ßfÞ™´|«]ä'¹óËÇý¢  Èô³2´¯®¤ý-Æíu5t’]ä¡‚Vm83ƒh羇/{šË×Pî;nîÁù9°ùønL6$"«Ó`à¨äõîžE’$ã«ïÕ¸ÁVxø«{ÅPü””sÁøx#•ÇÁÿ%>nMI[É¥ €ÑYöf«Æ(Û˜QZ¹ôºò¼º ÖÐ(З±Â$-æÛäPFdÞX£ö²Mæ(ᙡ2탶\·D¢c`I²Ê¥·¥8Š1£í’[-?N´qÔWev~û}Ë[ë6ûl¾¿:…6ÎS e\=ÖF‡É8/Ì¢y~ÊÐÖ„Ð’¹õžñ]ñý£"ïôØÍMjgÎ}Üz¸UÓ•j‹ ýÆBÁžÐ¥é]êU0ïï8’­%rcÕusv ¶¤\(UQ;NFêK7R›3äwHKÛ¨Âw]2L¶wÓýéð¸è³õZ jB  ðòþÿv}4lÏÍËe¤µÆ9©JÈMeÑ$6hÚŠ¦Ô¢ VGíi áÛ 'h»R ¯«Ä6x3¨tg»údÛRc›iâR>8 Hô¨ƒœŽ4ª#…Ù=Z9@z³ƒ »Ü<²‰,IÀk¸~‘Áô‹ñâ´`xMÿZTNè€cìÈw™;Œøt&t 0Û ÛIH4€]žœåÌÅޞʠû#AØá]I¶·óMõVÀyVVâ¿ÊH4]’ˆ i}ö„Ê<‰r·Ç†–ž •‡)\y«àïèA^\ozJ±W·tãtOIr1ꬸ0ät2vB³ÔË>}eË+µ-èåµ—ñßû¶d+ ¡¾¸´Íô«i\³/`±b zŸ#-à«ûr$߈½3±OŸ¯šÒ`ooVJá,ÛOJæx™(¯­çÛ3â¬0j(èÒ ¼hßò;߅Ϥ½œbéî¦ °êb)Àd'â캼Ïbë+¿ÏúÑ žªú¤£»Fi¹&+ê˜?ÕÏç«•üò£ù˜¬ÞЀø(DZ[š‡˜o†ý%2›¯¼ Ù qâ@›üæ·7ÉsVûŠLdÞa¼^x«β³6íäËÕž¼_!ÛFòFjÏĉjZ1« îì¡W>B¡´g¬FW f/¡NÚÉMÔ] V(£¡G‰ ö ¢¬“1„eÓÌ)^p¸Fìf¹GÚÒ ŒôMÓÒ KPxúVíj„rŒ= ´¸ù¿¼´¿ß\Ñð ’fêHþÉðFëÕ¶cý*Î;šVÚ½7б/_‡Ë+}:uÙ%ÅWÎr8 ÓÚ¦q·CÌa²Éë“Ò>7ž‹¨‘šn“_€ùÚŽ¥ö*¿H±<–eÚÕvŸãè 1,%íœC™¦( ØTóDÐ]¶¬pL<–P]ü© Ýï¡47ï8KQìÍŸ’sX–ƒìØ|©¹yӚܤ “í /  üI( z·¦¢=§!*¯ÙßTw0h§…ÏÃVN½ú…Á9vÒÁ/(¼^©°þóò×»òèÿõMpg‹-ÂÈ¡<Æ­wK^Ú ¢ìn Ë*'©Žr Í®S,&|(EÐïʧ©|¬åè~œÖè !ý˜'Ü—lÚ»äÄ[w×¾Žýš3ó"çD¨ÿŠÉú–]UL­•€ãGºµ¾Á»¯Ŷ†]Â(ó£Ù î+ÖdŹì=½³£ö‚TÔ‘TÔÃ&3c[É\ùNm·¼á*xåzìÛlúE•çaNäÞE°áp{7¬é¶×~Vå{F»ç zˆ]ÁM?opßš”ëƒÎÇ'Ç›+c”|²ÄÿI^‘¬†HØ\f%}Ò; ‚ ð6Ô­5՛ɥ «ÎGޝ1Ú£ªù—Õñ Xݼ[ôõçV”æNÈúd[4#>x•E<Íš Ýø,X5§Õžg9Jìd7tÊå© …SɆ¾Ðs2urÞëW)sF¿ {ôŒwð:·UÖÛT—,Ôíj‚]—Eí8Õ‰5¨c5ÎK¯i4´D1¸0qjkWUa}‹’ÙßJÉåL}oŒ!‰â1Ý<þÄÍÚiðïœq1_œ»¬€™ñxÿ®âëT4½ ¶P?r^/ä•p2ÂïÚà«»“ëDHy{Jº²Ûpâ DAýëËyä¢*ÕêA¨‚ÒÓà«S𪄜RóG€1`ÝÆ'ì&]yѺ®¢ €âU;U ~Ó˜>Ép(­Nv['=„R4+ĪB[q¼¼@ U.ç(Šz…$Ú7C“Ïë£g:ø#:yéŒÒëh<•Ã>リ/NÕNù^a°Ze#kÖȬظœÎ¢WD • †k÷ÓUM#q–zÉ–S䮪;{¶GGƒ¸>cž'[Àû¶=áFᬠ.ò¡K‘°ï“‰5Õã˜È·€ã‚zR+•w?D;ð²M@§È¶Fð•9öö$~U?É>} Ù‰ ‚rõÇíÛK*&ódøø¾'–µ•¾¹za’o˜Ôµöv íãØ¾w’u ~`ÏÐâÆÝp33«ØO$m~O¨·:$¤ð'jÔ›8 Œzg,Ÿnú…h?££¸Ö1Ê8„V¸×žëŒAiÈÆ‹à:Ý«}”¥e˜|dÒ1µkljµúH¨ ç™ÔQ«c5ÍYî{K4GžK=&P|…+¡#&7!læ¤ÝO=*Ê®FÞ¸vÝH½Ä.Ec¿¤¨e79†Ó/èXÜ^n’õƒ[{Â|J#>Y×ãWŸ¥‘’ßùMt€ö­ZŠ©œÀ"Cmæ$–iOfpn`‡`ÑôF‰å Nµ§ÀGçÉ+¾ŸM­}cpV¢Õ#b/ë,òWP³+$ªbxqµû>¨Ì–•±jwá1&#¸×>ÆäY„xü`›Û%5}:tZb\É&¨Â9¸‘Ðþ” ”iûüû”15öŸS<c<üT„äßlR¾6:"Pã/3-mž&"F’4*7 !¤ô9Ý…í< @œ±cêèγ7V#dO²kÕ½z±€…DpJnȺÐk‰Mrb ð¡?ÿú‰k…- Ü‘kùКaP)Ð`¬g˜e„®Ú × ™rÆ:ÚQNÇk¹[Ê»úXÜÕœø £¹æ§¦«°•¥FÃ;Yú… Íy ·¤7Ø‚qè5ëÿñš,*¹¶Èéà&ë"—”Ã…'¬À E¶8„`½øË çÝQºyœ)‚–VšÉ&`Ÿ°“–C³£˜&Ý `¶È!ܺfï-t‘ýÕM #$Ž&;Eá•Åý“ЯâW»UÉ¿lÓN€Öß[núÃp4“ê­TÙtc6¦õ‹xäÆ¿ÂAª=ÏZvïçÉÁŸmQ©,,ðÆ߸uó3ÿ:/LÎîk¿" Œ¯³³¨“a­vð¡›p •ug¶EÚ¹vF“ªWPGcw=<äXiÖ·šÿO”šû”MEñwmIM*<ËËù(<.G¸®V«j‹ƒ_®\Sc¨)\rn‘ò¹²­E%$‹AoÉžba¼<´·%îÜÌ43a3fSöeG’ø B}¼®«üm `¹ e¿ßb `­(aÅþt‰˜ÜBë–Vžã#H>g•Æ«Á@ œJ‡†ôÇ‹HOœ 3®É¥íjO¥!Lþ,¥DãÙ¯¨ 8W0-9/£>äÅÊ#ÒM³H2ôÜì'ø^;³è×- ‰›ŕڑGMuižæn~“ñå™ÕÕÌ)mÈ‹^¡ Ë^u®ãíœ2<äeAh¯«—¢:éLæå‡½¢?¿Vµš5h …Î!И‹¬W6,6ñjk4¼„J¢» FL}ý|!cýþrE £46²x”U2SünªÐÂÆôó'!ÆÓ‡·-°çÈâÛ‡IÙµ?°†`i¢E’Å–+,ž[Àaì4©aIIÄè©Ë_§ãÜØ†Ì*ÖÓt•ì=h€Ó5 úÆþ¨;ÿÕÚš*ˆ°Z4´rQeUÕë_£­a›g}`l#´‰J¦Íй¢º og{•pYÃ`ÆŸ”ÿWˆ=WwÆ…)“¬?DTF}{­ÂàÆ¢Ç(yÞn5 ÑÎ}¦Ÿü·r`…(g»ˆ`‰±FÓ(MÁãx[½°ç‰X|GÕ÷U]j;‘sBîðMxD¥Ö*€7ìÏJ=oi3gè?íÉ[¦³KïÇIëQ¦aš¢àGx¾íh'Û¤àVÝ'W:¶mÜå2ÜêG‘n퇞Qù´z5üãˉ§Zj¤ó ¤Þ9Y!‚—¢`¹`3eÞÒè$´¶@ BðNHÔÏDü gŸ3 ü9[’†ßÝGÍÉV0k·ü¥ xóÞ Ñ,ÎÖóÿÿæ“úþð¼5Wí]©X!?)§JGƒ’B$BÐÚoYïÈBá{>)’7ŸIZ¡R1 RéÜÂ%1S7·ÜÄÚêúêì•îO‹ác²eE~dÝOZëfc»DZýéÃ[kî䤦·ÓvÁ¡>¼«Šée³'Gµ@rm±Ø3˜"ÁXâ´ç.{üšVËì-É®^õ¢LZqWfÏÇTÂÁf~ºaåíœõéAèHº‡§t ƒC빎@@ÊÒЦ~¿gÃô·Ê匙ŭwèñ'ôžÁI¾N™\ЍkÇ?­\7‡“qì¨+Ø5p!/KÛ2)œ02ò}œqVæÂÉü|öŽZû‹ë[O¯H¥´Þûê}ysÚÙç…O8ËŸƒ27IP;üà—-8GºªYÙ’¬ Ÿ%îJtýþOŸ$,ÏÅÞØ»I±qRéxÔMCòuÙñ³±aOÁ [~[vØ/ÚªÕºlh¯”ÔdÙz÷ Û|¬¨öŒx†\§«‹*šèÌu×çŦÉG¥þ´ÄS¯»‘–„Ù9 È%³],4[³÷Y‚mHÙ`áôðž)ÿUÏIn¸zc…‚mîNƒI)÷ñ뚺Ë>¹¯ š‰[JÇ(17ƒLÒ3‚w3¸° ªÝÍmð*º<§"œÚ•Îåä©DLø€«óeqà ³RÂ±Ž­´ò ^Ž7˜§v@¾ÙtßîoŸ9Hʇ‡z˜R8ü£Z)mbA[¼ñ2\qÄæa(†uf#Ý¢Ë×"çhÓ͑ƃ¼OßPšO”¢ìÙ§Äsˆ%'j´\S'­ÖĤöÃN1Ÿ]ŽŠã%eCˆ´«MK¢†}hqk«ÊùÕ«Š€üˆ‹ ú ª ÑrRfÑÃw–XX”Á-§šòßçS”:ìMˆ›†þmI%ªóý½U'Mù$æC3º!ßÊÂë*v¡ƒe˜¯îV¬ç;¥NIj¨ª )=cÉgÈèÔ­÷£éêZ¶ŠrðÊ?–4dFpܦþ Ä|ùÅá>„Ë{er÷©‡jŽü å =ÛÄC6o2O9¾rÿÊd&ðÖºó¦‚ûùþ4û4iÎc$â•pšÎ7žo›ì Õmy9-"ð¬^Dê.¤»ŠÕ—96†z=ÖZŠOéìÂ÷aU›ñÔ ( {ä×¼À´X-Áì÷ö–]Rwç¼ì´ŸÉƒÑ®CTÛÊ­qnB 'üŸ.ìÓöÇsD¿r?åu4”’¤“.Q$_òb²rê?{»Í¹ ,!²¤8ÿ0/â éÑr°Ld¯…Y¯:#~ݯ×bS%Öõ™Y¶è*“®A$.·3Á«ȲTª‰_l¼éÃ(rOZ‰²ø’Ÿr·^žöb§,Ud¿g×ÿ=è܈c¡?qð–zQj_cà~Y˜ÆìÕe+¢Î¸Ñër°™ö¹‹ÅÛ³QU³¨‡<;Ý 4~&·Fq`;|+C1r-ê^ñŒÇð&mR]*ö=‰ŽÞ½¥$;7w6º3Y2ÙlõE^û!Õ¬«¢ñù¿ÔŸ$Saðòµ3aÁŸ¤‹'NæDÔ¯e/†g¶E2|@ºp´¡?•¹¾|g‰SÕ‰®[[<ÜäA—‰ìŽzÍ…µ§á¨ÚÞŽ2]p®¾bKŽƒ»{drö{¥[âTì,Rwaò¸µ| öËQË$Ú“óåÚRÓ ìàLÄ­ˆ±ß ´÷ÓÍ{»ÜS\…ÙI äHbˆÐðÀÜÉÏþçB¤!ÛºGň"êäí)"PaÔÿJ'<;°¡¡ÎþÆ¿,;ô©–J;•KH•e2Ça=·1ˆYñ²ßmÜé_Y]LéˇÒ*TðôÉYP’£©ÿ1¬ZÁ5h)ôJ6÷ÆÍ06È$Š4G"µçPœ¡÷a¼½Dfûºô¡ÃqàVåË"›·DpÆ3ùÈmªyLZ¾R 5Ma-ÍK:oÙ6®9µQ…M@³¶ºØ1¥Î‡Ÿk®Û×9›Úî®9[ Å˜à™ï£-Ûþåž9«áDh/FùCâ¾>šº[¶¯=)m¤†ÆNÖ?žr‘÷¹Og9F‘ÇÞìÐê×ÞófóÒPøJ[(—±8Š"‹]^äÚý endstream endobj 210 0 obj << /Length1 1464 /Length2 7432 /Length3 0 /Length 8413 /Filter /FlateDecode >> stream xÚ·XÓí>.ÝJ—Dº»ABa”4H 6`ÄlÀEi¤»‘%¤Kn)éé.éø¡ïû~ëÿ¿®ßïÚumÏ9ç>ç9çyîû³…QK‡[ ·„(ÃaHn~> €‚ºŽ?€O‡OŸ…EŠt€üãÇgч¸  p˜Ä \ äO„¼ªÃaUW¿ €_D‚_T‚ ÀÇ'þî"P¹AÁu€*Aà³(À<\ 6¶È»}þYجØüââ¢\ÒòލP!m!Žw;Z:p+(éñ_%ؤl‘H' ^^www#‚îb#ÃÎp‡"mÚÄÅ ü r„ü=> @׊ø+ ·Fºƒ\ €;‡Ô CÜ¥¸ÂÀÀÝî5€¦öXí/àïÃðóðÿ«ÜßÙ¿ Aa’AVVpG'Ì ³XC Me5$ ÉÁÀ¿ ü.ä‚:€,ïZ”å_@wþ=ÂÊê„Dð  ¿gäý]æî˜•``¸£#†DàÿîO걺;wÞ¿/×w‡yýcYCa`ëßc€]xõ`PgWˆŠâߘ;þ¿}6$@˜OT\ q@PV¶¼¿7Ðõp‚ü òÿvßÍðÊË î°¾ò j ¹ûÀ÷B€Ü ¤‹+ä•×þÛÂç瀡VH€%Ä Ãÿwõ;7Äú/ûîþ] (ÀK¾;úñø~¿þµ2½csðø7üÏó*>50Òrþ=ò¿‚OŸÂQ/n·€0€Ÿ_@ z·xõßu´@пûø\˜5 þW»wçôOËns€ío°þ»–ü޹Û¿‰nÂ'Ìgu÷ÆÿÿL÷?)ÿ,ÿ]åÿJôÿíHÙÕÁáOœí/Àÿ'r„:xü¸c®+òNêð;-ÀþjùKºê0ÔÕñ£*HÐäa6wŒæçùË E(CQ°ieûiþòëý–›Ñ‚# ¿0n~>¾ÿ‰ÝiÌÊþî!‚¸cæŸäNBÿ½­Ì þ­5aÈÅäwÕw–0À‹ÿN”`ê—¼<08ò.p7â+€5Üÿ÷½Š xõ~»þ²D¼ÿ²øùî‚ЛwÜâ…ý‡yEü‡)àEþÛàðzü1ÿ«_+W—;íþáÕÝ0ÿØ b…?5·’ô·+÷¯?+•èν2 DÔyøî×`Y‰Æmí…¯‚Ôù‘`Nè¤|óèjèùé–@Þm½!%Ÿ½ÙïäP Ê©Êz,kËŸ\Þƒ¤Ò[5WU`S“±… lC¹÷E»ÛýXn„ŠËù`e,mã™Ô“/ŧE¶{8¬ÕÛ<„èá¡8Ôbb‚„èþ òi ÅOËäGFU#åvbé”7Γ;z„—:§ ¸Ð ‹É77‰œ€Çi›2Ië­"´@‹AÀËr«õe›ïq½ÿ[6KDŸŽ,³dºÊòàáóÃÝtÃJâÛ¡È s5.b‚JqV3ØøWCM y³à²zG´º}èÞ)E×s¡ZGm‹1L\Í=£º0¹9 »à#¤i †·à7‚½ºvY*c=¿~Vßêá™ÏZÃòêEyÐÄw¼ã¼´DŸø'ÓŒ¤Š¾å›lÕºàQÅ'€†²Çbûtæ¦t·-!š$¸>DÐjÚtDÉŸ4ªã‰HÑ[…)w[³?`léuÑ} ›èò¨®0m"äþñÞ†2d’_Yǀ͌""mï|ýÕ×¼fÈe<ÎîìÀÛ)ß-·,­CË^˜±Ó¾m}°™÷³bÀi"Qénäúºõ„F»Æáz¶;ËÞûégï‘þ¨ÍD>ËzÅïÁÓÖ´,ÍÓ‚F1õ55Ñw)ÚZÔoë·B_ZúÉ ×9 ¿uÊ¿•Ò±w¨B g¼ò‘ºv‘Þ£eWaì=‹,À+²/OI!öÃïÊ^Äœd¬Éh¸’AŸýÅuñ FÂU²~öJ÷—ÌJÅ:#κ`ðXÏìÌ<áš®ê!?Ò-Õ«h­ƒçH–.\bÄsn§è–þ\áUâÑA9¢veâ"›šö âg>…:Š~°(uÞoLñr޽•«„%5’ •w$q=âZÛvs­1_`Ìb€Ú‹p ŠÚÝ.UX7´´hËïF³Oˆ\Ã[¬ŒÀÚ¿ ”©›{(~™çÎÆÕxŠŒÂWtÀ¼­'ÅVm¤]~›±¢}ëøš:ÝS™Ü@®ªëÖl*Å_•64HƒZž{1DZàJÈŒºÁÈCÄ2CCµS_7ØLäZ'S,óm8e¤nhá ~€ Â) Ï €;vk0Jì(ÃxAùîdB¶‹*¬]É4Ò]ãÚ®QÃûR¡sì6€à9V‚¡ŽAYWôVüø1—mÎÒs¾×\Ä(’LR%Û=gœ<‚åLvÓMŸÅw%+§ïja|Ø ÎSžÙ…UgP›*ÆŒ†·€^<ߨ_êÃ%œ¾aSbÚ Nfh­iú9æWÊ…Lû 2šb†·¨톤¬Fdæ Ó7i ­É¾'˜÷ãžhû¾ÀðÆZ’GÂ`Á˜Úx~SñÔ*y/U2Ÿ `h6BDtmitxÉßÛ`ÔqÊoûŒÌ¡òÕƒ†¥[Ë0{ ]£S ÈÓd‚«šË«ûLW{2÷PšÛ¬ƒð#;æ%]UVtÍ.´¯»gËŸó¸~(½oKÍ¡­Ðà+ Âkú€{óÂb½é¢—Š Èùƒc›Q Ø&"~<~i¶æO˜Ñ'jÛ e½y)ö5ÅÇù£ÀéÔ×?îx¯Œü,ÒÆ¹Ç´'͹>ºá‡—Ù˜û¬ÿ±À Á[OýÉz’/{ëM²Àº§‚85ͼ·¬7¬‡§‘èìó;þr]‡|Ë¡ ´èòX‡Ñ“æ¿ï¸'/Fù‚×૳2œêsFðÑå€ÿ´xCPÃVþ0?36K̓’LÕQçÍ‘“xµÍgÖ. »œÑ[t9_TX“µ\}ø‰Ò²‰øùjçQ“ˈš«8>Oö>ó±c£]RÂrëªÓõV5­¬¯0&­Bõ‰VÿDU`}XËòêE Bè^x‰…)Ò\â]ì«? “G±Á±÷pê’t+ÆÐ×µ‹ªßéOrµ?¿•jJÅDÀˆR^PXò\;òG`EX3±‹P¶NÁÌχ¿ë7^s³ù”ÇzŠÚ ¥\™\Ñeï0©bHÜ¿F"Öàx.4ï<æg8¢ê͘Îm©dö«žìcïÌÉYhKÄ¯ì ¹O¥Ùs[¤Mpíz옿4%ײ勞™•ºÅx]F‰^Î*Sˆ³È ûÎý3-“\7|ÿþôgË2V«Óó¸‰]wT”áþ ×ÈA‡—öDÁа5D‘¡ÙéQZ¡V¯ïgÎí|’Â- Œ8 ŽC £<ùµÅ°Ð_™WhfPyŽ1ùï¯)o¬rÓ•W·5¹g™Öl€áÄõ_>K?•J”Á¹`.V9Ÿç q–Ú„|Ðp¡žfu¿ñ'ãò⾌øIOñ…º‰¹ÉMDŽ_ûÀî©15ИaÜ ¬úåàü˜= üá¤Tf¥Ó÷(½p¢±”ËŸŸÎ7ì73© ü8’Þø*ûº]<÷£[cñfMãú½: iL8Ã_¤}èÜKuÀýºÒÍ‘ÄLò©Ó»•µÅ0ÙGŸ+æè¯ýÁÖA! Ëá¾×’T+KŽL|I_á(ïæÓjý05öqÑz…÷P‹À”ˆVî£ð@&ñÒó·Kã NË$°“5”Ö$å,*ÏÔòÃgªF'ö‰‚W}éVè—3?ö_ráò06qF–Dîos€[Úø' ¡¥t‡f 9”ç.ñ`táôF_ \=ü:®sV@âí&þ.ÐX¡{¸…´<Ž5¶…ç_ÌpøÙ;mTîh›Æmæ¬*Ø¢ª×ÊÄRrÚ&¾fÆ8õß¼x¸`æÅôù«NÄ¡ÎûÌ)ÓÍã)V5Õ{­/ª—;°ÉÁÁŒ@â‰ZýÔs)¶:9oñ¸œ¡IÁ,óø.Í ª†ê4=ôа.q«áqòâšÚz<£v‹íùïM_ŸuŠ–LÙŽŒÕ²Ô>bv+kíT¤ÜÙ>ÉØÖôá´«/ŸdœPÌï¹Nè?;x].?´ø(¨ÓgÅK+ cëûÈ𤬾>ãP?¯yv¿{$E rÁ[« vÔ _íŠ{9›öNÀi‡SH\ kYªñ"«L$§P±Ô¶Hþ¶lf›ßJ “añÌÂH:?| pš¡º0³þ4á'Q2¼S°‘ÒìüòÇêÊŸ¦úÓ¬?•ÀÜ&óõ‡úWZS>=nG^ÑÒ4‰µkIÈBZ#´¤Ý6b {Qï^Ô¯"óIPËA‚®1"k‡yxœBAæŸNÒ¶@ù […ÉRf×–Ÿ «ûñ;¡ï¦B(¼U] ä„ÎÔ¡Ë®^õF8Û¶€Ã{Õ(eµ.Ú}v{„ÍF~:Ñz? Í¥ÀÍVb cøÁ‘’8—(—ÚsÚœ‹(©G»ØÙÆ+OcP¡a¦&¹Ç/3Ç]|OO®´Ìò$Ò‘™™âÀ˜I92.øÎÕÁ­Í»´¾€ÛÁ|–e¼æ…b‰~ÍŸê6:ZJîî®ÉFéÎTôÕ’1‹×H ‡À®ÄWq?-væšK|ýÖ*å´ÞèÐÔÂòo jÄÚhL˜¥íÕù¢qÕtßvD$•îI²Go’-}¸‹c­§ì›lköL)K˜&—[ÑŸ!Cw!YëÇ“òfßâT9¼þÛI#°sî¦-}§’èø¥<¤C›¥Of</eôO®tI|­~Y<4_9^W½Ìý~˜¬¶ÒãËNÈìÉ› »LÛ7÷Ÿ£9Jú^]©¬RŒ&¥rr# l­ÉŽê9ż1¥áÅËgÎZð³u»^õþô)2)––§\Ÿä'ã0föƒ?ÓôÂúüàÙpI§¹Ax˜e&PçÙèH7!÷ëÐ~ Ï+­knoô>ÃÛ§íØyýO³Õï'Q±­v5€B=s¨Ãæ<­OÑ{ß6¾-Åh&n}_«±(àá`È:è,ŽgŠNhÃŽÍ`!zÎvëÙg JÎv=jM èGwÒ40ì¿vaa½p^e· ¬_RRkZ :N ½è–öè'|ÆP'ŒlS°w¡ªë+›§é½Jç鵜Ñô!ëúèþ=‘9ºœ"ùôÖò‚ÓË£€GäHR҄ڬ晀™ N’å£?˜4ä"Ö<¹§¾ÝJZc]~"§öÃo¿§œ³E\Ó•›hdzFùê¨Ø n?±x´-éÖuàÖBŒ#E“\ó-¢ŠºNíICVæ ¬|S:ëTž3П;~ïäð¹’ðÉò2fF£#–NÁ—Í)_ræ(œÇÏ=y%Ù$~¢Rïþ&²Rü|]ÅK >Ïl“5(ŽÌŠ´³,wf°:tÏZÀ}¿YíåŸMóîzß·7Žj³¿WRÚÇthïaÛ¬£œŠÑU¿v¦wKãVz­¼?Ø?]m÷š;íÂôp3G£2êçÎŽ 3Õ¶ôðqجôaxÉä+pã¬#oŒ‹£É¡0 ûSN+!>VpèÙ†wë²5Á?Ø“ôIÈAq]¥‚³ø=1ÝJˆåÓKÇi<$™UàÀ_}•àx›x'è /ËñÁIt)¤±ŸGùß–Ì4,xxZªïOxPü$üÞÛ–v ¾Ÿ®b†|M쯟˜G‰"7‰/‘ŸfÇØrØpÍ86÷8‘3¤S,™r¢ ¦_¹ÎÙâ˜V±s«MeÞÓ;Ö; d¾Va,žâF´v²“”õS§´öկŎ#¼sMùU0u°[@¶x9G^‰x]!烈äÆíƒnN¬÷´ºL†Ï·bŠžzé ¤ã»lèö/g!XA%¢R/!Dr‰ÎêfªßJf‘ñø„…j• ç)'?7ö¸L b²ú2©YUöí§ÃbæõjÅ>óD†~yák¬iš]¤ðj†*¥e‰h÷tYÿƒ$+izOH¾Ä4Qqaï{Õh†*?°GªÞïN5s·/tžÉ‡„F¹õ‹âyºËèqzVwèE!UDé§æÎÈŠ†‰l(ÝÞWן@; ÍÏpÚXÇ/Ýsƒðe‡›•JÈ,pÂ9 ®þ«n>Ò*g^‘jÍ׆^ëtd¥–¿ú‡¥Lßtú ŸÙœÞ¨ÇfV¾Ž}“}!HqÝMÂiݤPÜ­-Ýp9­Á—3åÂÒ³ {p}³uü Oˆ5ˆ_±„cÞËÀ"vA¨Ó²Ñ>øpÙH9 º»°ä?$jHLoq¤óH¢ Œ0A¢¤‚E§_P=Û#Þ6Ê`Ú•é÷>™[2ù+I³¶í óÔЂ¹’uýÄ. SIØrKàMºi óŠÚ5{ a~åWG»cÚ÷ƒ¼RhíE¿rÿâáµO+ú£ÚµŒ¦y9û’Œƒòƒ´|? È䰦霵o‡Rû34¿ò<–6Kªi딑¸ÈhPhYÑ%× •&£=û,ˆÌ¨!’£±‚Ù×6…Pôck™÷@¬¤ïÏìô™TÛ³­qÝã{´ÛËFùO59Î9›V<:ĸ¿Órðdà@*-ˆŸtAŠæI›EeÉ`ˆ!næh››Yé|?–çc‰àë'kl‚MmÜZdø†ƒÓ”uÎd2“2ØóõœTx»,½f¡Œ/Fà<9QnÕ_c¿‘“ ½êŒÞ™Í§%+Q^"B¯ÃFV{ lÄéýúE¨oɽd¹ŽäQÛ•OõCÞòÊ>ŽG|$úsîÏÕÙs,FÙ|zëDރѴΒ‘~Û'¯d¡=YvQ¹'úxIÂÕBº‚íúm»Æ•…Øe~À¶ë›èt>ubŠÄºR ãG–â8mFý1/àeErîQ³ðÔsóNÀýΦuÑ8õ{9"çA˜Ã^R;kÂøž¯ØÑ%Ef*%œéEKDó¹ßü=3}£‡ }­âôhżpɨùÉ';1|ß²…°ê†=bñ'é—+Óű êïG®ÖÞmè äHóV;ðfuâ{ÑšËÕ~T—ÜóãÙc«p¿$þ*lw¶)í[·Î½$<7˜"}‡©:Ð2®~ÏÙ\2wã0 ±Î(ÙàÐÛêy«œ„Qx0¯.Ò*¶éw1tKCˆŒ…àšŠÏ“‡SYî˜ ˜¡G{a·~œÀªôÆ^ç%1ecÚ¹åV1û„ÕH…’Ö"rw8™ ›÷Æ»ý¤žÙ¨ÂuU ¸ "Ttjï¦L &`tƧIy{nêê½›{~$FbýÒ`_úçwWu;è0U¼)zö$rFe¬_l«9ÁGœ7}yî·Ë/(uýb¦‰}¹êy½¦¯ƒØ“öàfJR“Ç”_ª…Ÿà= 5ª?Éyµ­e(Ÿ¸8¨ñ/Û⫾Ăo_WB­®fæi*…lù`cÌM1§òY¶ ÅIªÙkÀ h,a }öxAiãàxºf©fé°,5Ô) ÍºÒ@o¹Ú½œú“†Ëù­øbRØ%úGLl„n¼½§ªÿ”0Õ°•ó 7Ý–£Çp5aï7¡çŸ“6ËÕÙ3`‚š^×¹c]ã_œ´"µõ>Ñ|nhSn§ðò:ͱ5úpWϺ©îWËoËLœ8~?zãØÿP ÏéI2­ÿÐxRÿëTQy„ú”ëåò×Q(ÀüáºÛ3Lì4NXuL>J¨¦`ÚR:Ç—©FíD›¨¼T\ù³u)˜ÌÛÉž°Y­ý‹ž6™yì¦Þ|;à¶µ{àI‚Áüiþ¨Ý˜œWõ‘WIí½*³ŽÖC'teà¨^;§ÛÚgˆØµ°MWèóùŽÒ*@¬¨}¸ýtw;Íw”`bÏ#Ç*ërn"Úö窦OµäêQ¦Y*mí¦‹Vj˜ß t(@ŽÌÑíA•DÞnkóGeïÔpEóÛ(çÈ&3ö/¯ÞwÝ V¨Ì­vѦãR£M’E¯CöóBÀKÐ ,¹tqÙSµÑ˜ø¤ ûqŠKúS}bÊG–êê:Ñäâþ¤L(åÃäVëñÆÚj†LÏf¾ŒÕßqP^*qñŸæP¹X¶ã2ïØï˜Ù(<Ç”úanû H]ÀQslõ-”ó'Úõ÷L{¨ïk#Q™å üÄwƒ¢±I wŽžy×M9I&P™Ë;¢7éBhIüš@…@+z›êGèÚì,Ç &Í(½ï ÊÐW÷:YêŽüÜh©­µDpÃnPoU €lûº¾²ÚÌj¾°'×ïŽn$bظ<åšÁüc®I<û~`cõ;ôÙÃÓŽç²âÜP/^ʉ,íg÷>^ÀŒOp—)Ì®X&Ê8ÎNÖeRIÃÑÝSt:¤Ú.жî›,L–oJsÓ+A›Q7„ï\· •tK߾ő6”]Ç|C£š8ÒÛ¨Lš<9kž–<ü5¶e0éh!êÙ»r¹×–†"'‰w 8•eËØï|¼nÒ~)VæÝ%tx“¥3 ”¥oÛÑ×n¦& ñ¥çÔÃY)pX2²Sœ0®â÷M¹º²§@¶JûàF°á×\‚‹bšEì” Üq£â ù¤3Qå—êz ›Se!’5-7ÞþØOP^“kt¬w_=‡£>6Ä")FíGç/3½ÒՌʺl­ì5ã’»t}¦õgMç”lÉuØ:RDšiF¶­¯1>5™X$Ю°}€G­rÏá&3óÕèL-Úæm¡Ù=q õÛ„ØäÐ^a¯ÏD¯wŒ¨á+aÙŸÀ±Õfû¥Œ w¿ÙPÒ4zJò;gõó‹ïLX$°Z%o’h+…º›‚ÙÕ8¼âRb›o¯’¿÷ÒÚœ-s1éÓ6¹³Óõ>Æ~˜|´µËŒyû®10–ôuW·U¶RtYεˊÜñ/=ý“PŽSíÐk< òvgƒÐQ¤þ‘d ÖÂdÛ–#ĺî5?a´vy” ï1Ø®¼C:ÀQÉçøçå‰ãŒ[S–©þcÚ@“§ÈÈIî3¹¾ÈðBÖü*lÕ®ßÌPkÅ£X•þÐŽ½Ìh¡z‰æDøˆñŠ`rS¼>¢°gU”|ÕDìÉ>dýUL§\ê—Iü Õø¥30œ—;ÛS{ÇÊBÓJ¸Oæ6O½cÂ`hœ¹9+ÉÚ):Wº Ø ÝdŸä9%DsÝu«”Ó·ôºÁ0†è²øÌ¹°Œ‡æÜ©v/ÃbµÚB0D|åµ½ÐuÕW{ ü†y÷ìdM'|0{›ú'Ó/(2óÂ5'Bq—m[-§|Zï ä6;oÂE%ÚÃŒ¬˜+•ÀŠànPÉê Øˆ&Ëx˜öý>Í ¦„~«÷d–B•Î݈'}DÕ5O#¡§_Ou-ªÝ-'•ËV¿e5¢§Å 'zW©Üsü¼l`³…³e´©ÒAýH'½n=fò¾Û=ú¼gB}_ϸب¥‹o-¯¸doîmSg0oµ"ÞÁïþ~6•öÔ…¢Kr—ÚnÏ–lieQÛŽ@öUfÒ…Ü£”êX©‹ëBÓoœ¼]ýfõ÷§WMξd‹$Ž7qç¸c„ô “2VzF(lA诠³™(§™–^,I¢ž÷27Á²yý¹G Ÿcˆ« ›•LžÌu§õ×u)ú”‰©Üôf“Ó\Ñ>ºÉ FÆöSK¨òá$µøà+% {½s"ªG&ÇbU:üól\J#·û‰Â|"«ªàVÞÑÃûEêr;¸îZ=Ã#OÞ›¾bL„Êïd¡Q¡bxìfmjî±aËhò n@êՔȅƒ1yÞdŽÜ9†6o]á¥L ë_öo˨ß_iùñâK³áʳêñ™±fuës?¾oÅõqF«aWO´Ðøäûû›2óúšÛɩᒂÏúòÃvUÂ7”4Þ[Ë%û€g¶›- Bpë6“EDv9“ge‘Ïp¹ôÁ) ¥{:•2™hâË`ÑìcÓ“$E\›ÕÂXugœúuøÎÍE ýäÝ[¦)Þüz4ögØEL­t¡ ïU½Á”[²?ó2–Gàyc÷}^Êh·úWÀU,}÷üšû£OØúõ©G´Ù²;mlÿø?vSw¤ endstream endobj 212 0 obj << /Length1 1554 /Length2 7853 /Length3 0 /Length 8874 /Filter /FlateDecode >> stream xÚVeX”]·¦$†F¤™:$¤»S˜††––.éFi¥QB¤S:¤KJ”8èû~o|çü8×\×Ìs¯u¯µ×Úû^{6f-]^Ò ®€tFóBøÀâ@9u]5== ðÁü66=Úþ·ÀfG¹!ÎâÿàÈ¡àPôMо¡ª#*îŽ@ˆ",ƒü`°ØˆH”8Pê€Õù€*Hg¸€MéâBØÚ¡oVúÏ#Úáù”q‚£ÖPg :mwºYÑêÔEZ#àhï¥àx`‡F»ˆƒ@žžž|P'7>$ÊVŠ“è‰@Ûuànp”üÕ6Pêÿ«9>PÏáö‡Kiƒö„¢àÀƒ#Âîìväî ƒ£€7ëu•Õ€š.pç?Èjx€nÂù+ÝŸÑ¿!œC­­‘N.Pgo„³-Ðáj*¨ñ¡½Ð<@¨3ìê膼‰‡z@ŽP«Âïâ¡@m ô¦Ç?;t³F!\Ðn|nÇ_]‚~¥¹ÙèGÎ09¤“ÜíøUŸ<·¾ÙyoÐ_GìàŒôtöýÛ œa6¿Z¹»€ô®îpeù?Y7&Àß6[8(ƒEoî „{YÛ~-¢çíÿí„ü2ßôáçë‚tÚÜ´÷CØÀo~¾nP8r‡ûùþÓño€@€0„5h·E8þÎ~c†ÛüoT€BxMÁ7"„Á¿>=™ßè †tvôþ›þû A*Šjrj*Ü5ý—[Véôååyù€Â °˜0Ðï߉´ ˆ? ùG¨²³ (öG½7õŸš=þÇŸs üw. ä€á@Ž¿õn[ß|Aþߪÿò‰ýW–ÿ‡Þÿ»&wGÇß ŽÿPþê„pôþ“s#awôÍ8¨#o†Âù¿©†ð?¦XC¸;ý·W ½ gÛióŠñ ÿaF¸) ¼à0-ÚÚî·Lþ0ëÿ;G„3\ 醸uÕy!`ðùnfÍÚáæ:q»Qçoüf”þ½ê#gk$ì×Ìñ ¡(Ô¾¿Ðr3œ0¸×o=A|ÎHôMð¦C?  øu´b"@ô—é7‚ܨ ÿä‚lþ…€ Ä? (äø(9ý o´rþ¼Iåò(¡þoÊpÿ¼Éìñ7¼Ñ0Èë7üWïÖî(ÔÍ}ð[¦7óüûòýàÖ€™)¤µÄSûÚ§-gÕ2ôž¼ëCÂú߮ݙ±Ž˜«|Xï5h^Ñ æŠ¦äÈkõÛIUšb«cc†=£+âé &ÛʇGNJŽ¥I·ÇW÷@CœèŸcäÜI—C“ö|[ÎûƒÒsÙ7c6)¹ArÝ0$eÀÝ3“Í-WM\zƲ‚ Í­)N1ªÁ_4•ýµÅq'úÚäÁöÁái„*í£çì*&„{ß)*ZÉ-'§ºd‰…&ÂèÚC+zãW"âmƒíü?ìZU¶a¾ã)ŠzÁ¾yÂSÔ÷}F ;Ñÿ«$JD›êmÐý}r±¼ÂÔþ ÿ›SåXMsO©á ®§âSDéö6žA»EvJ_â|rE^íö +q<'kGŒ XÞ[Çy®ý€*,O™5\nÚ0jØv[)T¦¹iöÛµcº‚pÂc‹zZã‹Éäô2  7POÅ l“lÎCx …­)ß1n© 5-`ØÂ=‘ٿ¥º2uÇÿ‘‚ž©h ¤ꕼÊ>S0)nÝ5æanrØQ¾QéV7¬> áNxeä³7ZÀè1,`,SA{õ–U2‘TÆ|ds“v"ŸñÇѸ '¼¢™„”±Ñð¹S²»@Ô=®„é×lÒq]*3ÀáÝ‚#UIhVà–Þ8Ãͱ߷ž6½cF[¸ŒÜ&5 IµÑ¿šO’}‹Í˜ñt]Úå»Gõ„=a³H¡ û o˜ªŸ˜¤æÞƱ÷ŽÞæêr/³´õL­!¼\EÌ ì sOê×IÅH;HHú´Ät#]‘žƒ@Üþá;_eUäîzú­ ÇJ弜G¦h­¤5…–ôfÈV7”ójgÇe=ýÄ¢Í>>÷GÝÑtªëij›¹eð5[‹ä¼RÙ|)™BjýNÿd>>ÑËGËF£Ë›ptëQcMokË$_ˆ03–õsFœ‡ñ’¯/ûØR¸ ´°Ø Ò¹H$ê'Ò£:­¿Õž¬§Uâ–øb ÑT6í]`€»SÄMLØõ~h›Ë©ó“¼ðÅÍN+ÂÑÌÊqAä=+uëÇçxC‚ëðZ†Ž‘SÄü¬£NÇøñø}û%¯Jòïæ©?'4ä¾Sz¬¶tʘʺ•têl’­>v'HÈ_¸æ Ó(ÓõvS„;ƒ@”ÍQa>™É¥—°ÌØHCšVÚ»´ap9‹=kM¸AÙ·¼‚¢¬zÄYØ–Š_Y'”%òJÖe´OÁˆësQ‡Ìß’“m{1S§ÝӖ̇ˆ/!ÌÐ :Øh´ß/yu}¢ÑÚÜÂ-ÝxUÚ!„_ãv/% ÊÃ4³iu°‹&A™ŽÃ>9_܈ 8©­«×Ç>ãáÚe¢WÑ‚ºJ¦ÍæãÓ`¹±ñàÚl'î~Ó~z<ú ³˜ÙÜÎw´é°¢C—‹çßÁŸ±ñß—4þºVU¯¡};ÄLV~w²S†ÜŽÛбõ4Á¶˜Ñ’Ñn6'”É2°iÝΨèIºw¦ [²Uf•Ö—ó– ¿Ýшsl’L"f­¨1üÊò8¿„ïäÞŽÙmiRê8#G›ËbÛÞñ¬Q7­ØÕÒÙ‡ú•tÍù·%^´Ù¬¼³‚œøý£Æßwù|d¸è&ï`åa<ûðcÚÃÚh+þ\‹Ü@?n˜ÑCÏôÝÆAiì²²VþÑGA¬–-“ôìåËÏ v* ‚{µõ8®~D»iÚ§d9²MâYŸ~z1Ž2^ýlX÷Ľü.¦.›ïú˜\êAîò`¿\êå ·ù7A¡/QSöýª÷e‹ß~âԀ݈NÞyâèÒÆ‘Hã­<—êß‘éC–Òê!OrÕom¯ÀÄê¯=ŸÏÀW¸05 f7 Úr}ÜøŒBÎfU|9h!ŸZ³#ÇâñP›ü4Ó»×¢øÛ|:ûGef0ÒR|ïè~ž™¶·\¹ÒºgÊ ˆ:¯TÏtÛ£…– gcÎøÜ‡¯,7_ù¡2ÎãÑÚ6‹·/Ñ t‚5Š­ünL-ŸCÔ®än—‹%íì òí—T|Ù².”é`}®“à•°ð¨µ†ß«EÒBõ¼ ©…Än\øÁÝþÐÏ`×A{‹PÚ©ó ¬î'T.2üQltfÎÚa 웆‚Ï„ÞjY³SÒ|ÅxÎøƒ.[-rpƒr›o®ÊßW£bƸä8‚ª7”Ð~4×E/ÜsÌ ¾;}Ty±¯!É1îT8~>€ñ>³ìstP8ê”5Úa*‹¨¹èòÕ¾~+NiQ$½ë™u®ÔÆ´ýH=[$æõI.[ýÁäYÇ ¾´ŽIî&Á6œÁû‡×­oøßM>40Ìݳê¿0„N9hF¼Þn"VëÓ ö3”ö$y§pàIz棋f=­þÇüS\#{ã¤ùr-.l”ÕV…ÃÐ+š¬ìu^—:çÄUzv¬úEܕ۟4Y.}”h´¤k’•Ï€ƒL¿è…ú]šÅï]¶Ý¼Ó(¼Y¹@Zª`³h_—«x¦5EzOXŽ‘®Ë(ÿ,19B7×ùW/ì!y{¶hçÖÌuÑ<°¶égó«rϲXz=Tlm?~]²[öË5\UÉݾ[(¡;,pÞÙhÆ×K ÷/7“]£|:q¿éKjé,º6Ìó:âƒͨ¸×Áùù •Ò¬”׫M}Âw‚| OL„XM-b—LÒŽ|”„K·Æ|©)r”&ÛStHÎ ú9c÷üGxsNNN!oÖvH¸•,ËZ±{jyì¦ièû½A©®£Mí[˜¹²[•¶§6+$] ¶Ö7,øŒLO‘™xõj­L+Ãê•ÿi°ÄnNYÇënA¦Ü™¼¨ÉS2HˆÆþ{™–ómî‚Ï?Ʀµ¬ÕÑ„i/°¥léùED† Xé`Ûõ›%{ÄgÇ‘°qÉGe²‚‘ÉãCÂA&Ý@ŠÞØ#e†ûD}dýÕ‹nEBùFZÃ37«O|B‹ŠLÁoÇ·…9õy—°¿´R›LÚÉ4¸ 4÷Tõ(N%o½»¢ˆ0¿ÏdÝweõ­}·9Ѝ«6ªºÈýL¼”Jagož!sMÌ>è¡V̳h«LNᆥâ°Ñäìƒ:‹\o,L£ª@Š é{øéµ»²îë¡–×`‹a Ž\øÖ–cÕæãΰj·%™ç«2Òòý&”zäß–)1†'íÒEßIYåy*ñÒÝZš÷!ûë¦äÁB Fä’Çábì)b=ã ]äÚ€µˆ- Ôq‰ ¯!ÅïI×äÃý1ïymÞ)XyŠ3lõ¿wáQÆwWøôY¬ mw’ôèqR~rû²îG¶‰÷3͵‹(vÍ/WTÚL­Ð»WÃÙ?··|—ÇÛß\Чãq2h[=âQ&Âá xâ’Í#¸*­Wþ#¬®¿Op÷š¾/fÛwAÿîi%Jõ=P¿×./Åßë2ipŸì@*É”ä·ê­d'bŒ ì¬6ošà`Ï8‘­hòæ úLZµ7>cõD‰Ä¯Ð sè ‹Œ¯VåuÂdѤÞÀâÀB]ê“Ï ‘÷µšé¡A/î+¯Î¯)/½ðÝcçž³>lç`‹&^)( …b#.ûܰ¢‘Ùy·Ìdƒ¥_…/»Î Ÿ…ÀùJIoŸïXÆ“Q+Þ–›Z• 9ß3ƒN_u}ðÒä3dú¡O# ¬­Ù¦??íè¯Aë²ßMïéX]ñÔºõ«åi¥ë“;á¼8ôq˜?ÉÅíWÓ —8Æö ûë…@YKÆîA Ó6S•© HRØ`ÀÇšžo¶aürAäºßµÐ¤SNù1Ì)MV‡~o\XFìÒÅ"Þ¢ŽÈNš Oî7!ßœ¹#f‡·ªšîˆd-µ–M GiÄ\O€3Üêj c,KdX¶3-¤$èä^x½˜<¤6u„el}Ã÷µŒ×Œ¶r4þ¹Ä3}™S€ëž0Â{AkªcqÕ(Bé5•{R»iú&áägîg8.drj¾F9ÀKbœ7qI#ŽÏp×"° å0þ‚uï*"^Êš˜™Äcì㽫ÔõŽWCr¯¶äBß¹Ú€÷<*ú÷ÎÊï ºŠ$§9âFêt - ×igÝ/oËE¹Ÿb°ì®2ÍÎp,—>ziCôiI¢Ên)ž]×羼úú!f³öÞÑ>Rä“ÓIËVì”’š#q©;hþ¾OÁ'zŒ ÒÕ¾f\FGb®'áZÜÝ”ž;÷\e>Ý5Ëžö¤tªºæšb1ÏÛí0ÉÞ↿‘¢‚úp©Ê׉²JáÓŠÜÁ¨§E]×ÕåÙ¸Njn’S>zfvË[XóŽ[[âÞòÌG_3×É¡D”¯IG®èÉQ7½ú7,ÕØ3'éG÷ŒÒ¥Ä2Æš†X”+‡ºvFï6pM2Wç3zìA8¯rœ†ñK@b†Ny %Îú½‹ãžÎæë*.†ÉO!é¼òÓ£K㚊’ú÷p¦‡p"öÉab¯ëâtZ>D›¬äG5µÇlÓÖn\‰¤žçcôf5 ´î‡Ž‚˜d£²qê¨ÉµÖ:ÐOG:ýµ\Ü„rG˜ïv¢­Ù¢Ï?>ínÐ)© ÊŸÙÛØ>©6K­óž*ñ¨\XáÄÓ _¢DÌîÞóå9 ×Åig›™Æ¿…[ž³-åé+GÙ4C{yëå–™ë Ìý×4H×-dp,S7ž¤§<££Õ+’ýH|Õzº÷}²a/¿ß9dö•>ƒ²dô£Pv‘‚tÙñ®NhH_öB.2õ¹d:UX54J[¿>¹¤ÛÔ™wù4[ -­›t:Óiв`á>µ@å©:e*fF¶)t™½Â~R?òÝ•¨ñr ÍðÝN\¶á¬)|#‹Å[m%¡ÄUJkR_¼)Ü”==D(:Ï÷ò³à¥ÿ•húäøÝŽ®÷Ü‹*M ÈðùPñkó‡^˜ÕsÞÖ!_;eɪþ| u¥C6S1^)Ç#•»ãJ Ï«‹¤e–@´8Z=†“¦`¼'¹PòËÆjQ~wlö¨£¦"±œð<ÿcm˜†”P$sQìÚ*’pÆ?íŸ|7|wj1:è¹[ñàýkgj‹Ï<•ÍmBûÍy*8cÓ̯Kw“–v蜫GÇ­OaRn×Ê´îÒ+܇ËǽNMZœwKğǯR‚¶k?]?u"é©G ä)„†]r™¨N®kèWN݇%*®é ²¨.‰•aq–g–¿ßžÝò‰V¯:`¸² Grœ}¥§_UѪb5%`|œâ‰DŠâàH?0¥³ð>Jâ¶—eVþF'T:ððÝÝÛC…ðz±ÙïÔ<</<Åá^Чöºµ_Ÿ´°°àï0¥xóëWœÎæ ûÈ|SÍl=EÊ2º|Ö‡‘ÊA 5C¹†ùgS½‹‘·õõRä˜='â‘T4JµëÕÛ>‹Ý¢¹ÔÈT¬4ÆpµŠ«N3æx”;ô¥¥Ñå7tܨ›(RiÿslÐDxpG0ˆ`èpÃ;Q­¸€¼÷ÀŒ—ôKBhÿÈ|å¤Ê-€TÍß½öÏ÷™i&árNÜäÒ|ÿ,/ÅÂÕŒ°VPÄW4Iè"ì!UNÓ÷e ÛƒÑ&¢Ù¾j‚C¼åméòáÁ¤aƒ'ËõCúšB´¿E»€O׃«ïÙÓw‚©°<ûŸéV“êe87î”è}¾+‘€màIXW…Ë,`Ôi–h jëˆLÙ˜­óUxá÷£{>~A„,ô¸/ÒãCÐg5KWýÜ›·Ë²íAÉÏCmÌÀ¥JÞÍv šH¼6´¥Hƒ¿—(çåý½{BÂ$áÔ0*Féf‹²»,ž”Ë2<Ø­–UÊ5_g ÖÀŒ£ØwñlÓÎCµÕe ‘m—6ëÒ÷ ŠSÎÎ$ÔÌ* ZæL?ާˆíØŽ^Ùgx`P5†;Ud êÉÛ~of*jq¿­"l#ž,‰ð"#ëdÏûdægK5¢6y;( ”*0—4šþµÍ»ÚÔE½¥ùš,Îmk ,¤î°Ú¶9å!‡ÚÚz:u5Hã8©SŽº{mj Þ嬭r9ÝkÂn6é=Ȇ¿ò™#FrÌN˜í‰v­XëÛë"çËÏÈøq€=¹:×ÁìT»"…Ñ®…’!C §»Ø¹£vöŠcËQòt>m²"mL/ˆd**póûÝ¿b}/b^Ÿ•pö\6_.x¦(¨aqð´¿ñóäÄO¬æÃÀâ4òqJ×i׉vô¿†HåÒ7¦Ù÷“ùØÌû _^$}¾úÁKes/Îq.u `þÌžoϬ€X·C:fó(XÈ| À;¶Á/¼#$Dè‘ñé+zGpq[jrøDw š‰uÀ-P§(8HkkUã‹_¦;uÄ#pû0òÀ€èç+¹ïå³Ç#ØØçsòâ½Pýžï ó ³•.;N•ÉYƒú?Ì¿Dö¾®j‰Éz&¸ë<+î4"ÁçïŽÙ²BTˆ©ÚmƒPI¼ÔyˆhQé»×ïÙ¾:b¨¬¦„¸²¶,½ïãîWñÖì*D¹ÛÂ[5ÅŠç<0£?¨|ÀaĈÁÓ+>•¥`‰ÿü³žõ°]r¦‚7kÈ˵ù¢—‡»Ùƒ¥»{ºnCVÔ0†›$8”C±‹þ,Y½ø%b1/êSô Ñ;€IÍOÃ~á{ò´zí0¦­·{­ñ!'"Þ4`›té›×Ü$¼ÏÍYñg“GpF—ót‚vÒ,aûxà­½!_¾l¹1) ç~^»¡Ç/Ëív»’Ô‚¯NjH"‡Àt7.ñm¤…ÐGî†÷»Ä Y ¹¸ŽŸ¦1v…$ã[ÒËe :OLÑKÍŸ¶³‚®ë­]mYÔ”•'p6S³nåEػ͚¾¾þ¹\`õ"¦Þtäëì1¤Ca¢!3…Ý”Ë&—0‘yZ¿'#sdó±æIª·èö[EmF3Pƒ½Ãš©ôè€-VÞ6ñuõ‡¸Ÿ…ÂE‡¡>z¯€E>¸1Ù8Liœÿö9±H¨ü(¾FØEûêDCç§4T^Q*gEèÑ'¼T^‰’/zò-}.%Ïê§Øœ}}bâÉ 2³*Àù(U·ZÕ¶ÆB6²ÍŠ•§R¼MJ‹YUdË…ÈE,ñBûÇ·«‚ûý_‹»¸¥ÌöÊsë KÛ¸Y^+Ù>p] èÎpÚÌ(ðo…uGxV'6„ÛˆøAÛßφDЭ¼Ue,Œ$ ½P““ùb†[ÏXixft**¨7ïw yþ‘ŒEÎŒßÂâÈ0Za ËØj<ÿM¬ŸcbÛ×ß7+…ß2ã<`ù>ÃÃ8į£bB²ÔD‘6¦±Sµ7A`Þå<‚_¨K=HZxÎßývû Û¢-³ÍÈòŽaøz1õÛÃäp9á„Ê—‡”Ù8þ MÍBÕx¶¨?ɵ1(œHÿ8Z˜šÞ¹ªÐa?ôïÙìž^«1°±—ªÓš/lâ `Bæ=ïY³~DZº-íØU–C‚-vÊv'³d³uÅtvŸØïç§*þLcÌÚþýú.ŠÚ…Z{1r§ä~±™Ÿûv7}žc¢lþŒ#óÇ*Í'ÔÜ%¡ÿfg(÷§y}IÊbæsN»ÑôؘDò¡¹l§òüéPB ±[Ž9:B¿7K¸LÉ€'guyÌV1Y …õ„§Â½ìÚó3îQŒû&[æ…Aã¦êéÑøŽtÃ?ó¼o5ajîxÓ~Éñb8ûÆ"Å`ãG+xËÌ)°=‡«óÞÁ>q†BÌÃ]晄ˆgdá&ŽZß _À?ð–i›8ÇÊÁ'èßA(/› eùFãˆÝßBŠ!Z»ÔmÓM¾ƒ$#T£”3VÖ«—Þòç#OMX¨¦µ¾¥nOãŒRu;y”-Ú?XÜÞ©½uõÒ×<§ÑbŠ`6|u¨“â6ų­Eaæ\M˜ý,ãÏÉ‘)IŽDj‹Œì¹4(RBªƒãM‘$§ó‘pwØûgJ«ã¤IŒÄ‚L•0@Ã× ¢CFÄåÉõøý}™réŒÚSÚÓÀÝ;ýueÀ¹ìÜ¥Y)xzA÷…{g±žôÉ¡^ˆÀ­ãÓ¤<œ")m‘#ÀzÙ,@2³‘sRÀÀ…cwþÁ–vûd„—ÍÊPèÓÉ93ðz¡vË•@"©Òª© ‰ª+Û–Û2âböggÀ…šÃaÆÛI'‰“ ©‹õ!늜 W¥WP;ƒWÁðù‹k ".ÈÁÙ»uÓ¨þ¥µH_î=sÉiÅSGÕ< ©^²F‘ÙÌˇ”_nDëO·Nû$:=ybõë¡BWÚLÄØþ$ì¶®½Ϭú©ÃÌÔ"Úš8 Å53‡M›¯B‡p"» ‘ŠË¾$«Ç”ޱBâYÒIìgnñ¡Ä²ô• c¤úÕ.¾°\_WP²ür4Lâx.h¾Eý-<¸z1áyp;iJISƒà€M•¾Ð­5aý‘÷Èf!>z×­y¨,½hÝòš ñjÐÛ©Ôð¢â]eIÕIHï¤ëæ¿.Þé*2ƒ~}lç4¬q%a:C­L—~¤å +nÁ  ¶µQô5¹¶z»Ç°]ýV'þ}j Èa“:õ1o÷˜Ô­Ñ:4Q¥Í<$Ì”Yé]«}Š-Þ»¸|ïöi…BÏd=šÙKô;.YÃÓ½|@móÃW™ 'c›-ã?­7gÌØ+Åõc…Øn9YW?|užz‡ÊïÚ“Nír¸‡‹ ®CkÄK8ÉEÈÑ Uu{¨hL[|ÛÖˆ_ÛÀL°«r‡Ö«0!ã³½Q»jívŒçK±z»Æ\Ö¼ê%ùÐqœ°Ï 2W àPW®Ÿð`_dI±Ÿªåõ"Û”aÊ~:ü­"å%\ZYÂõÍŠˆ½(bË {Ë+•¯iÚüÉýNîgñ!ã—|a%ò;SS½¡zoˆWýé%w¶œrzÍNòB!Ÿ”©Qåw Í<¾ŒxÑ›´b$E§S£6«È#¢±6(0Mí;J€ü # CNøˆÒÆépéoƒñ^«È);Ì‘ ùKÀi×þ5‡ endstream endobj 214 0 obj << /Length1 1847 /Length2 9692 /Length3 0 /Length 10835 /Filter /FlateDecode >> stream xÚ·T”k6ŒH‡ )0tÌÐ)Hww3ÀCÌÐ!‚ )Ý’ÒÒ H ÒÝÝÝ|xÎy¾ïÿ¯õ}kÖšy®½¯{×}íg­¡£RQg5‡›B¤à0gVv6@\Q]8Ù@  :: ¨³-ä?v :-ˆ£øƒ!î;?Ø$ÀÎDE8 çb `ç°ó°ó €@ˆÿ?D¸£@ì 5(²äà0ˆ8ÜÞÃjiåüç?F3&;??/Ë_Ç¢vG¨P;[Aì2šmêp3(ÄÙã¿B0 Y9;Û nnnl`;'6¸£¥0 À êlPƒ8A]!æ€_-”ÀvZcàhXAþv¨Ã-œÝÀŽÀƒÁj9=q™CÙê² e{ìo²ÂßÀ?ð³±ÿîŸÓ¿Aa›™ÁíìÁ0(Ì`µ…”¥ØœÝY`˜ù/"ØÖ þpì †Ú‚M•H‰ªÀþÓŸ“™#ÔÞÙ‰Í jû«Gà¯0c–„™‹Ãíì 0g'Œ_õI@!fs÷þs¹60¸Ìó?È 3·øÕ†¹‹=PupÈJüÃy0aü¶YBœÜ ˆÄ €8 îfVÀ_ 4<ì!9Ù™zðö´‡Û,Ú€xC- ?žN`WÀÙÑâíù§ã¿;;Àjæ 0…XBa¿£?˜!ã‡ûw„ºôAòc€~}þ}2|P˜9fëñ›þ×$e¤^üÓò¿N11¸;À“•‡ÀÊÁ ðóóx¹ùÞÿF ý§Œ?ŽÊÂ,àþ¿«}Ó*výGŒÿìà¿c)Á„ 0þÖ¹ˆdöðÅþÿ¬ö¿Žüÿ‰üW”ÿ«Îÿ·")[Û¿üŒþ?~°ÔÖãƃp]œ–@þ° °ÿ¥jCþÞ\Eˆ9ÔÅî½²Îà‡e…YÚþ;H¨“Ôb®u6³ú[/Û5mš-Q;A½[¬ì ÐÿøÖËÌæáýáô Ê¿\‡íùï”’03¸ù¯5ãàæ€Á -qps<ÙöÑâþ—Œ@6Üùáà¡=o€Üã×òð€â¿L!Þ¤øñ€J¿?¨ü/â€*¿¨öq€ê¿¨ññ€Zÿ"þ‡|àßè!ƒÙ¿è×4€æ@vò/|hø÷Uü&<añþBÐßü_îâøý¡JË?àC™V@nú|…íð¡R»ßða߀°?àC¥ð?àCjû?àC¢?Ê`Häô»Ì§ÓÃêÿv?ôù»ÇÝþŒý0@—?àC™®Œàþw¬ÿÒŒ™‹£ãëó¯½~Ôð_ïiÄb†197 ²®j¼(%sc]íG™_l ‹Öí åv¦Ïð´R@M–v31/!îMP™( ó"cÞ»p7hýè?/“îŒ Ù¹,vÀšÙsyÜj ¡0‡“Zò&„-?ÝQ%Ç1ÑGÒgˆÕ»yÃÛÆ¹^º–sÛ䴮ǿ °äáRÅ“9GЦ5m#†ëRÑ.:×5ÀÂsÔOtÑÕ¼E ‡F‹5F\z,ëG%}ŸíþØÕ™Ày”%ß^ÆSŒOBðZŽ*­÷ý7’g1åjèŸÏÄ c9÷GÚ2z¿£ ï`y›ª¶Ÿ¨¦&¸>{ŒZo¦ó˜t[«&nR¡.”O.ÅäöÒ”íÔÚ€TÐ5ù%ª"þiŸ WûC“zN)ž×Ûˆ‘ó.Ž9d)=Äl<ÅÌzL0ó*7uéÂkÏŸ(˜=’1 ™s ^‹}ô¯q=y­ñWšk¾¯®£‘¢ˆçÄ‹÷ÛµdSÐæ$œ–N~÷Ð^W¤ßà×þ&(Πج‰NyÄ}£úÈ ³Ft¬½£s[ >ï: ÎãäI$¯ø€õœHâùF3ßÞVa¦;ÿˆ¯dæ‰ócÏm /T{rö/sf5¯ßrŸ’Æ}¼’éñ‹à3u',¯îÙÎ~e¼ü*ñ5ºå¹€Iùcd= Ö飙FµÒêdÀÂWp£oçù•>õ‹æ¦Í‚ò º³E}(_¾zÈ4—2Cö§ü'‰¤³ÕC!eÕL{dwü´K)+–[™aµþY–Гt˜ëûC53ÖFKkŒÒ¬y÷V.3¼M-¿‘Pdoû=Ñ8&:“þÝAv7´ºuÛm‹¸¯ f3 T=ü »ÊOÉ ÐÌv!MöV äâ ߺ­•'ï;˜Öú­p -¹Ÿ-hCaàxè6ÛóñÇÜ>K}Gç—d«ä¯¼œz\ŸW€±ÎH?¬4¦Ÿ™V“h§)j©ÏºÃŒ®ˆ}q­žhˆï±†ÍïÊ(‹´–î7–=sVC±—¸›ƒ_O™ ÙÛoIZ°Ç¡.lµ¿z|Iqliq³-Ï­ Øºc§<å°ž»é+`WÊ ƒBA£cp1 Z6¸n}¯ ˆ§÷0R%ì÷]–ìÉÓš ƒz [ 6+áxGÖ…ÏÞ)w¥Ÿâì¿æ Ö‘jŸè3þ"—ãàÝ*°YŒ¢KE€<·3²p_lq~Ê¢^CWý¸¡åŽ¿ûä\¤uV^½667¬Ú>‹4xÆÇ§¬üA@$¯šyÛ@3ôI’V­8Ð5¤×­ûÔŸ-g}  üT)gœOÂFå÷ÉF€Cå½Å2·÷ª‰ŒÃò¥l8Ím×&ÏaÜZ\WäQõ”´ã­Žh3ò¬S‰ÿó˜ü)ÿ¸tÁ yŠØÄ~˽{îR4a‘ŽŸñÎF–§Ÿy9Ü“±E–aBÜŒµ›ÆÙè†nlr5'Nèñ¯( - —3¤5£P‹¯±BƼ3 cQh2&%ñ¶iÞtebRn ŒdÐpº…_Xå qbšysÙ0IQ•X¯œMò8ËmŽ>Í"¢('ÁÅl÷Šàâ4õÀÀ*¢ÈƒE÷‘úýù–2-õ>¿c>OÞçEÞµvXû2ÐÎ/\ý3É£w2iù¢öˆõ=¢¹ÔU^imwùfÉêÛ1«í-l&Í›P=ó­·ÑÝt°,ñÄ0)ëã%ðò‚Ïá4“IÐaBhy_~G¨W|Öçíý¬¼Di0–ç0ËÛÆ:ð©idºaØEs@PtF^㜇YÅÒÔÝK¤óá‡ê‡,Ù©T“Ö5D„9*镯ŸúΖ#Ôåˆo\øÝlì©@çÏ(§igÒ…Ô_į@¶@ÕDj¶"¡¼Øà²õ¶Å]󼋳ß4KÍ88+µÒ7úЩË;eHw¿­¡ÐÌSùSÊù#FY-(õ…U²ÀXêp«Ñ ^¥çÙÅçXáþ—T¡NÏtOˆ±º û½ä| žT‡ÖZ‰}DP­q‚é,‘¨!r;)Ie"dhõe¥e©J-'Çcd÷Q;òi/MTã7‹´]Ý…ÀWÆé7Vôíç´ó–ÚI¥Æ©+\‚ƒZ»S)Ä#åC<_î“*äê;{빉BžÐô'`X'ñ/³­ò?.‰ç8:ÿÙíÆ©úôÓváE^j”Ä¡úA%6i_~z{²©¥qN‡üp‹'î Ô Ès²B®þëIçõ-ÜÞ+ï9õè:Àû JÚ0ÆhŽ’á1Uyñ}—*q³¨ž¿UcŽ0‰¤ÀG¹.~o; Eç»k(à{SËýȇ98¬Í"Àýi^}ôvø*!¿ëwú‘ÍËî}Zé&ßëêÉ%©íÊÔžuýÞH€Ø–Ý—(ÛtâÈ­EññÒÚuä'cCÀ¥4#j|,= z©;ÚE`dzÑÒˆ—I½ð„¶JÞˆ;‡jÁ·v¯‹NLJ쯊a19Í´#Ô°GÕëZ_„ šbÆ%ð¢÷2Ã!žmì>ÏyW7µ±µ„)ΓbZÂGÞq¢-.FÖ9Ÿ)}§Fv°?ðÊ®$ øTù5EÿG€¨ˆl+Ü0Nnø[œ¢i¢—󺢊õmÓD[Ï!øqÐ3UªÉ’ºa…¸Ö‡oqÝ’khœZPSüÈ9 öKÊðž›xnÊCëÀn$¸)=“ç:ÒöÀã vÈJbBÇîT†¼A# HN²*sò'€ß!Š´äe`îuS=R›ÝÜŠ÷!‰ŒÉ0Û6ï|yL5 Çg“Ÿ'ûƒÖ¤› ‰¨fߘZº/bÂ7LÿÉ$•pÌ‘¸mª|¼˜A#· -ï¤Þı1H»2㉞P©7Ñ4..öÕn¦ ð3>Ü—ä¢$3Y¢˜X€0zõ¦É"o *ìÿNª’•tÁŸÔßKybÀdažfAÿ…¡)Êèª×á–ýµàHÓâmJ¸WÍGÙäY®ä¼õ`|Avý˜R' Ã<ªØ;Εæ¶%òéƒ!}Uz3’ ÓÀ0Ë®Gp4¼Tîȶô'žó÷¤ŸL®¸NÕ{Ò¸l¶š+°Ó’Û¥¤;·HhìCµ¸ŸDˆ‡}€¿jº0t—Ñæ` ¼Õ‰‚ sñ|ï`Iäùé¶I^“¾Ï€òž±Íµ þØÙãUÁå{‹ÖÁ×ìé!Ù –XPîÓ>³ 6Ó¼«´×»nöx Èà­ë-Ì9„#ñ}Ç¡xÃþ5¬ï …½ŒÇ&€z®³´Î‘ô¸C{æ'v>îl’øí熊שnª¢Ì+hr¦»!_P™âãU±?~œ»Hhà‰Í&ÁiòáŤãÂM¹¢^þœûTc+Eº¡H`Ï:6q×+ÞE¢0á¬M¬¬ g=ÍŸKì,f³§úœ±Ê‘³*ülôå‹ Pc¬òëˆ]κi¤ã±2£Hl†šx¤”‹9uí² .ñòþŸç@ÖÇsÂM¼ šÍt6Æ«òNôl=‰µË¡™Ú}X"‹uÏõtW{$…Å$F Ez¶ùS8æ,+Œ£ðð±mƒ{øH´"w…)Ã2#íDötR‰Eª7·Â=1Áv”È_Jx¶ÃªÅŸ‚hâ&ú´…«¢EKó_¢=Ì.B¿w<—¿˜enöx‰|óµ ªšÂIÜI×wÆÌ)€Ó °r\ÈôÒ¼)MŽCçe½Y£b*r\|mb}òOÕîR:ÒÝ“L°ðj#ân¶…'¬'w C UŽ'ÏË€™Hä·×’ºíiÚš`a‡n²vx¬öˆUNÜ]B¤ù±4ÍVŽ! ª ¤Zeò$'*Š/U¹)ýÍÑXˆÜ\›©.EVÞ`q“.hj[ î7¿<ºf™ÖŸckmÞN(þh™*Ëò!BªȬåÏ1¹£´ÖC˜]_¡s:“˜ p½CSŒ«Ž´tÚ”¼jS»°ðƒ¤Ê¹(7™cïèvl"-YÙÙK"2—²|¾Ï>i EC©†£¿ä÷Io*=e;̼“nÛˆyÒ{ÆE‡HA gîu.^s£0nøB¢’¬·vé¡!†dåSøxÊ’2‡FžñZ ©§Ç@Ÿr}JEO–B§Ci]ñS‡6Qã³=?ú[¤° a#Å {ôËø±åïë0ÿOšÕâÜñ,L˜ék˜úÁ%â!m_qÃÝÈ.YßnæšÄp^i5±‰Ní͸lÉuá Ý v5ňª»'Ú_‘Zðú¨Ò¹ÏO…ÍO5¼áô' ‘œ-áàñ"p=ÉÎVнòâ-„¿5û¸~ävá³)ãˆ)—€tÕ±ðLy\€c9Mÿ££7§ï°ƒô2a×OSR2qk%I‡^|+þIæä&»*ưs'ªê÷O¦Ë¦Š©$¤04¥öâÒ7Î3oÖÖ&®_`[•:”Q·S"Ùž×ñ¼#ƒó\! mzôè» o5"&PGÕKø¶ KǺ¿]EeKZ³Rž?Šõ$%ŒòëL-‹†ÑÝŸlT*Ñd5PW—ð†?b8F_cUe½ž^˜Ÿ(dLø",áXÀ³†g'¢HsŒúÁx5$ÑɺÁþƒÔL±³]©~¶>Šš{O1*à '(¡K˜Ì‘J=Îót´ l>Ð,ÖûÄ`åÇŠ&종oŠÁC¦6´ÖsY²«jOºCK€V ÆÂ†T”ZÇü&j\3¬ 6¼ˆÄ7ï;W%…ß*‰!š ÜKØ*ÃØ¾ÀÉÁ«6èŠ\ ª‹¿•Ð\{ŠtpâÇÒH|rƒØR›O)ÆYîD܇#‰xžÒþîì1—KdPWv.ª`6íFA‹åÐãËé¸ÊNZcä[WæCÑ™¶ãýOeäQDã#”Ö{Ní4=_èJRž¿û€ï2àOWKˆfÖ«#5Fá²út­c û(¦üÓÁÛ¢à%£î$IÒ’ä€6çiT¨X V¹¤T-;‚5­O-&f'+tRw ‡´ØZuÕ_Ù¦)å3qšMÖ%ncñ.‡Á˜çŒF\ÈPñÖ@C´7DǤê×F‘˜E©Ä1«P +ÀŸ‰nì‚^Öã*²6õ¼}“?ÏÏížß¾_µzU]öÙ]º¦¬Ý:¡¾(¿ÃÓÖâ&RÑl^W€yã¤çÊ)¨îÈxÒ2ñ’¾‰–6©MÕü£ÃuÎÇ&š'¤{+ð/å1L±rôªtÄÆa\ý=jÔ2 DºXúC5¡cê…<·SF‘Y‡&[âÞ;¬4•¶ì–‘}(i6œå“è|ôWôÏ/²³4wøög·™®%¹3BÕTÄvÒ‘×~ž<üÃ6LÖ#´´uÝ.Q1iº³HZ]¸%y’:ksø ˜×A×À;±cõÚ~̃ó *1¯Ã§+:ËŒ;o'?ÇŒ¡Œo¢nuå:Z°‹½¨6¥©R Y<0æ$±Ä¢„Çìã/1¦%$~n¹…ª½ ç*¼ ¦?›éC´uñ‹3Ê'xG4ÊàÇD1¤Ž/¢¼i0­VãAèAÔľ*¨Ã_°V’¶K1Á¡Cju…]îÔ¼gÚš#4u¯Rê±×û’¥—f^Ž>ѺÔ@µ\·^ÜJuuKmί³{r  Éy«H'ty!–ÂÚ¼´Üu…Ù¬Ô¢ah`ê(¾z±¸8äÎI·-|f»f%õ#~~ÿ–ì¶[ζÑ© ;Pн^I$@Ô.ïî…Œf¹ö’ÐR½/è3W’qâ+ ï»LO+ƒ”¢6ŸÌ·Ñ¬*«óOK¼[|ÚúН;Ÿo4¨ß–ñ>×k™Ø¸2ê•¥"=Í xöw3ÔÆ¦Žëøí"­) …s ®Â”›.κN‡³,œ$àå„ÃcË¡CÅ.…˜Añ¬NË&é`‚MÝ3¾Éb|Ô—g4hUx•/Š"©VÆ›) ¶§úéó$ûIy팭7o >p:°kø`E£y¼àãµ+¯èþÚâ,ä0 JóÅ_OsìÒ©â·R§oý³©bÁU_ï¶¡L4s\ù-zw}!Á‘ÒÆ~ÏÊ êW¾ïdºÐ#FO”_çÍyÏŠ›Æ½¸bbx[Ñ„ÙR\ƒ¡aÂÍêÃop¤lâ·Òxî¯Xø\¾… æ©l¹ºáe…‰+±SdŠáâ5~ð”ç…Ò³¼œõÌ ¹û–u㸪3(yÖ°µ]‡´_S]¹^ §bâ!ņ®°?ů{ð8¯(lG° • „lèÍb³‰¬gd˯"îò4ÖUãÙï}6¨ÅbÍåèQûH  @Ñ[|‰7“ª¹BåÖZ9KOô´LX?1}é9óÊô5CŠO‚g¨œïLª¢kœßrb™Ù’ÌÂë1´!tfýPÚìŸã*ßKáªÙ¼Ú·‘Y2QžøH¦ß[»Èì`M3›@üH‡¬ï¯dŒ÷€àÂÈh²*ïÕŸ-½¦ü׬úrËÔ²zucK'kcŸ™3 x‘w8èÃñ• ·0 ‚½’mkï_”QºóŸsÝ=ÅLð=D’4ûJÀU’…ãÏŒôýÞÌiÊu*¹B]K%TçYaQ/ó…Þfч’èƒ%µeºUHѾãÀ7 w“Õsåîˆñj‘–WwŠkp÷×ÑŒç1Nþz×ãAšÓ?J(‰#Æ,U9lbâgø7‡ä±øbYØÂêžôìîÿè‚4á”p FbaNãk=«@!RkùšÖ°u2L`Ä»œ‡DßÒ¾{)ðõü:E²Né ÑÃí˜sÆçNºéÁÒº†-à¬è×ib ŠiÑ\"º¿@›%[Ì\$7W]&NܔƇ1ß*Çç½m÷ßvIŽ$Ò¦³ì—×<—vØ«8´õé¸+N¿²1_% bqÂⵓ\™@’è ‹gùÃ/„žsVÔ†ú“ÚËU¨5;ê2·‰[ÎFɆçgyÀ¬~v@b¾µ=ÛÛb¥ïïœ5€k-Þ6h ¸·ÅÈYºzÙ\.‡$¼ùïcÃè)B}Œ,¨!I 3hz)$ßwêZ7W½”çYˆSŽ“`¤œlIûÄ*JžµýýsÅ»ÍÝbæÚ€óVu” ÑCE€Lü Ç[npŒk«Ñ@Ëþ’ƒï,Ñy±ˆƒCh•‰¶zUëï/Ì“MÓ•{:c/ªÂ Gâ?0J!•þðˆŸP´0ú)l‘‚ñrÔà…éˆázKNM.)Ã+ÊzÖe»FòÒg.‹§¤·oc3™=j¦ŸKâ¤Ä/£'H¦©ÊlÍ©®#e HTNz,€4†#–HƒÀ“×Îõ¬ý‘Úë¢Xâ{i „T–òV{’j‡ ©I{B§Å ).S ¯2ßßì¯;]j­t– °¬yN ²Äc}]"îgLA+”öêMÙCèÑJ<¯qŽÔýÍ‚¾Ø?¥q§;çüŽW`äæèÝÕ"rîÕäŽDœÐ5ëùSØÍ?1!¦†¥1GËXTMžÓe¡mØ/FKíIÕ“Ý<è§–¢¬ÙQ鬷Ô^E³)qÒÆC%·§8yä™ä}SdAmæ§|g©S™Ð04r9N·QÀÄþ‡ˆWߤԎp]‰*L7oÂîÝ _[t[ºwH Ò‰N[ +H™ƒÖŽº¦ _Z<“á)ÅSž‹íþŠ=ßb¬tD‘ Æuß=Ùú1½9ôJ%%=.öX{¥ÕߌVˆˆiïUŸ¼q÷žŽEî=M(èåSrtƒþµ ¯ÍŽ#;• Úð~Ï QCô–»vÍ/ƒyá|ÀK°ïqœcÊÛÉ ØhÖsfË88Ó}C4Ðô‘Ü/Ž:>¹íüÍÄ7þ‰˜ ÷RéÛlWHZ¯ä*7~BM9QÐLÒp™û±U½xˆ”'r#«H¹l%±f¸Ç­æ-š=:‰\¤‹—@ÖÏ´ Òá2åj)Ñc éu律MêS¡xFµŠ™„"qGÉ}†s­¬Øý¨~Ú9ÈVü|©¿¨C IWzDÝ`ëI¬4ŦöŽ­ï{ž¤òÑBHÆc\‹U¿ŽÅ$ÏÝwÝè7Äl‘¦˜HjŠô::¾%<@gÊ­ [)Kgßâì%·ï iq¸>ë­ØRg’b GKô굊9¡›dÔ™šŒJt°÷»êæÏö|ªu#߆M#W ™Ä¹zw3ÕËU$E‹tžAåTw~N¼×$Û¬òÆ vK±LC++G¶‹Þž¡ŽK4./½8î$÷&ÉvºDý$'Ò wù¾Õ–•V;D׆"0X ìEK+ò^¡Ã$`´Ë>a]–9@V’ëÖÀyù“RvP‰¿.Yåá{*eäGHÝÆÍïÄ-) U¬ã-ÍÛ,Q—D?~Ðݪ9®Í]¹«Ä‹y’z h¿ýé®mû‰½§Ñ/ûd8öâø. iyX¥jÚ’Æl>²:j8¬$DÑæ4w ènŸÑ˜ìâßÿ.Š|ê–væ…D¦¥‰’?Z(S„øä crj×ûÜ<"»Ô?É/Û]b—bt`TÓ®<Ó¬h¿Ø²/ÆûnŸÊEG\€ $Ö -ÊËþjòÓ¥˜îì¹þ!!h¶i ‘$îgi²·IY•“u¾/ðž”0€vð³ý_Lj7Ã\ëh›êyúŠš¾º•æ¬Ú‹DP¤“z1ªô'o‘*ʦ}×®<£¾Ã½Ù« Qo†‚—ã÷ìŽjŽú¾…h •agÔ!$± ÓJß©X¶àÑ…?e6ŒÌ´¤ï3=™_Ò>îŽÊ"œsÛ§{§8ú^)Ð~†&î (s­ÇÝhV)„zØoä¾ò†eöQ œ>KÚ3{YÏc*šÒ°yã˜=ˆð·˜¾OtD¤¢6øVƒ¹?>_’ÔL0XíÖóEÁ,Övzßgz]i#ì%Ê*O›yl³ÐÛÍå²&Þ/HX2”êý¡”_*M–›ö ¾œaIÃaŽéçåu*n¥Ü*e} š¯^é2å’ÈȨns• çRe!›ßÍSt•ZŠ…“/Š­t¼^ •y@äkƒëŸˆ/z9 <×ï_U^m˜}ã\¨.F\±õRÿ\;lÜã@âªÊ#,»{áÅž£Ô}â RüEšJÔÉ\•Ìú’bFSŒaEl~³oiã¾Iœá¢y‰è4€ùV»ëÒƒ¡œ÷èšáœ©–=³ÿ”ø[7)3—JÏíª†ž^”ª±±‘9~±)ën®=½Ý±ñ6ûšoûp :ƒŽÊ«1* ˆÍ}ĶáõÒ vè~™ÄÄE4럛Áœz,)_ÂÂÖV'o³R+,{7Ó8“ü>ÄRW¿¾gnŒm Ïú$åß®†1A=ƒ”X'~”ú‚óY‹|ÛF¿aê)ë&2℮ϱ;¸c-ßö–?1\9a–õ]‰÷2ëÇÕVôcCiüV¡&Âü³¤Ù§÷Lè•-îœÁøÍìÔ˜¼~ïoõFëÂë‡9«W 9ÌÐûÅ~ä¼ä³G‚ù=žO¡%>¤p€»Ð÷é Q¼Ë€ËŠà>Z½Ür¡É€%š žaÏ{kJ(üÍóöµï»Fž²ÿ jèÚKìvŸÕ¸|_B~v­Q|„u؈—¢…€ßÍbº¼‰´‹îb¢(7ÉÌå,Ïøª¹]Úm5Ôo­%Jtø&ÈtBO‘oöûCÆÆª—±ê [}Ï;áêjª †Fçd?ÊøÜ.Ù¯|¼÷—\Iy> òV.Tð Ù‚µ©8^|C@•ó(Ùê2{ÀËÖåEÂÌ’¯G [ìž;Ó×^!n{€š3¯êV|ª0·Œüêçáþ_q‹ä-<ÚËõ8°½ÉÊ’PƒLÂFúÖ!ÄZ7~³bóƒï™¥©ÇC2ñõE‰z$ºìb-÷ÔŒvŒ{ÏÈÕˆÿ’ÉA endstream endobj 216 0 obj << /Length1 1406 /Length2 6162 /Length3 0 /Length 7128 /Filter /FlateDecode >> stream xÚx4\íÚ¶è½F¢×Aôè½÷AÆ c3:ÑkDÑ{DoQDI$z'B|“ä}Ï9ïùÿµ¾oÍZ{ösß×ÝžçºöÌÚì,úFü v[ˆ*ŽâJ”tŒ,„€ PD&`g7†¢`¿íì¦w$—ú„’;„BÛ”A(4PhzÀB"!1)!q)  Jþ D¸K”AžP;€Ž@‡ Ø•®>îPGºÎß·.07@HRRœïw8@ÁâƒàÊâ‚®ÁF0‚òùG ®Ž(”«”  ———È)€pwåæxAQŽCâî ±ü  rü5š;ÀØŠüã0BØ£¼@îÚƒ‚!p$:Änq «Œ4´z®ø°öà¯Í ý+Ý_Ñ¿AῃA`0ÂÅ÷ÂöP §ª-€òFñ@p»_@ ‰@ǃ$ØêŠB ¡°_3 þJƒÞf¸ÂÅG! ~õ§ u‡€Ñûî#ø×á:Ã^p¿¿WöP¸ý¯1ì<\MàP7ˆ†ò_´‰àß6 ”@Üo°£à¯Æ>®ßÎßfô ~®W€=z HÔ‚þ"ðC‚þ#VnHþi½O·ìù¸þ7àŸ¹thæB\ÿ&ú# (Œ¾ýŸéþ;äÿÇò_YþW¢ÿwGª0Øo?×Àÿã¹@a>!ÐÌõ@¡U ƒ@kþßP3Èéê@ì .ÿíÕ@ÐjP€; Í/t_xÿŠT…zCìô¡(°ãÖü±›üÒ ‡è#Ð_Otø_>´ÈÀÎè§MÍß.ZCÿ¬«#ì~‰MXT rwù Ï½ø ¡UiñþMf€ B‡Ð3ìî¿VH h‹Þ#4ÁÑö?&€ ê†AÀ¿ŽñãEÁîîhþfº£¿×¿åxCÀ ³°t˜Óë°ö‹z/þÏ£¸+«Ñ }Q¢(޹~ŽÚxYjSnŠíªî§ëÏ—ELÎúÓóì]Œy?êÎ ^NSÏCa¨ô­+ðç~?îv€0Ù!èÆÅÓ£×Éö I[b[r&›Í^…‹÷ˆl¾úRx݉Ü|(¹ pŸ‘²¤Ñ£ž)ävnc>µ`a[E Y<"#w·Ìð0Ö0¿Æ| ;Wl¥ýî³n—9´´ô.§¿/]ä¨@«·Z¬*‚‚–ÒW“%w8i€–*1G³ ‰Á¡(z¦T–šÀJ[äÁ±ŒõX|ùÇtA[ Gƒƒ®Rð½'#uÑY™Üžå#›lãï‚Dw›“¢ùjÒÙÙ«í0Ά2ö«E`y½ØÔLܺÎ7:Óˆ’Òs mÌÅÆX¼'¡"Ö_&î^<~–•($l•*“øôRQLÆä:lo¶xõ @AÇN¡¯¥Ëâ´ê1|Oàôe´Âœ9~òµù]ûPOä‚m‘j*8Á¼#kûíVb“†èÙ{2S1T­Ö¢Ë†;>7~:Ð0/[¿­SMú¡¼äük¼©I¾1Ùœ±ö&F†îm ©p… iRb ç½2ÆW‹•b#/dBšeR%‚€O>LÜR6؉'­]¿cÐóÇ:ÁÖý@PßZ+¯ó¡ãã]NMÔýhãvÂÕWE‹©àñÙå<ÅŸ&6¥OåÙ?ûwºyÒ°Ÿg®PõÒ5¸nór„±ãaCÆ›‰ÞÎÔMoõ†Ë3ì Û!5©Ö°"XEc¼h«ÒR?U´‰e?H»ý¤ß½gľñä;¡å¹ôý`Wë¯ ºû®?ÊÝ•ä$œóá’"ëU:A’~Ø„Q¦ÊD§äD ‰†áY¸†£}#ÁLNk‘º`Û’íis YÝ¥šëÁY/ÃEk-ƒ æ€/ø«(DU⇧¾ÈÇO‚æzbï|]µ{O¶7­ÌÜè•CtZp£,G4“XÄÏŒ˜ë«h_ ¯Û·Ü©j)C¨§úÑxOÑRnqvµ{Ðú·!ˆ.Î.Ít™ ³TRŽŠw3[â§1O~p¤¬gÀ˜Uo¨j“a: ½bR͵=,®à„)]XŠ‹>ôpá‡1xÚÏ ByíÇïæèlï2לÃäÀ<ËQ¬{UÖ†•_¬Ê]"6HßCK´Êõ§âX4îľž~ýcóî©!ÙOÔ´™tf×ÈaÆ€‡<×½rÏH Åô“9~þë§§ ‘Ϫ¥0¬ÔÎc oìJz¼Â)T’º™BiOÕštË¢éòÄO"¥Ö!ÊPSD]úÏÖÜ$¹žºf锜Z™á²|aýë%X+¾7¦fÑLîâx*¥Îaç(;ÐOËÛðåPçt8“S?³µ‡m*h\è[c–×ez-dQÛi ªû:sÏEB½$0Å ï ™èkÔÙûi•"é ÷F-ªÛóww<»ãÇ-ó[~Ì35k³ëåËogª‡F$“?XÖçŒÓ|9ü!Ð3q†¯Ÿ­žÕѤDGî¤n[n5Ù•g6LÜ“xŽF惾2`]$Y¾P7IÔú@$5Úøs„}k€ÎÇ 82´E;¬ž¨(>ýeŠ8üv˜aáe’¡ïKŠãcûo~‘ÖdÊŽOløef®)¦oÍ\¾é_ÈE Ûs*û,¯ÕØ ¼š~%of’H®…Ó‰»q†Ò~¹¥uußYO†f÷g…ü¬ ©ô#ŒoI¡òt™æ‹3æûLbq|7,ËEÜó˦±ù¯Óm!ÖslM±Ÿ¬È$`©ñMÈް°nÁ„µ5kî,ãÏoƒ@Dǘ«•{ u«ÔÁF¬ùÒñ_S¯<¬1Œ¢ D2ÅeÈ>xÂ?d¯ãWeÆ×Ž·³†Ož—QX âŽòøEMöÊçM§ñ>eÈ‚ߺ.ƒÆ\áƒÖë§?Íø•é–…`ì;²#¿—;È`´Ì­êR‡l|®4]Üí•eY|•›á#ÄÜ=²EåÃ’3IÅoô¢<{lJp ¿ÔI&¬±ôwY \Ïow'П·¸‹·wKÕ=LûÚÕ¿á9Ï$éLèCGÝ žäã*M§<8·Hv¢ÝÊ™:0 ³ª\ʶõUS’ceñ‡,y±|­M{6\d¨ÿ•íKS‹ÔMÇ{îÁŽ8•{ó_‹ì8+{?wÑó·4¾Æ¤ï°ÆD.tÑÇΤ!t¯~xE÷¶@›XbüÍÉÂ3ððqÃ8‚r³2&[[½è}«ÖÇ“ãÆ\îŒS<·\Þ¹` ŸÔ¾Ñ¶¢¼ì[6:#±×ùåëð€ä¦¸×ôœ'9ãµge(£ÒÁB;¹¥Zs*l ®P‹Ðð·çκf ovUç|U ¨Kûæ\÷¡oÅp—kqfÜZxžˆ©pu½ãÖ†;Fò æïŠ˜~·SvŸÖàs+UUX¾Ïs ÿäøEOfò}Þ' …yLoSTÀqï_/`%éôoÏ V1Ro£æÃ±®Ô!Y úJõßG)- ¾E=iMìˈÀ)A0òì¦KÆö»Ïh<ÍG8U›ìjQx;å· ÜæÃ½àµª™}}HØ«‘ SÖÞ7xˆ%|Þ¨ÏGœ´up>˜°èXÁ…ðï ^Çæ‰Çò¨ˆÞK·‹<,DÄ¥ùY)•˲ýÄR½íëÀ2ÅóÑŠ1ãóž_÷GðîhÑhâH"¾OËËÀaé™k5qˆÀlLÔó±žíZBmÓè''ïn®.\ˆ(a 1"+vÊÖâÇ me6¯ š  t®oÎú☆ððI˜¢>æ¡ñX S£¯¸¿0çïbŸÙ iå8WTŒÄ8-VàÓþ4åj¯W™Ý¢›â·Aefߨ}æïj¾n™7/¤+èAiøßv¾Àž¾Ýg™|¯1TùžÊû$W×jUžŠÒÓÚå Ï}w½i»1¸8üN!Ù–½d(O5ý޹Ôiç¦ì@{–Ïè²6£=æè3ª^É$P’“4/£U0ò6÷Ä¢B’CoÏV°¹VæÓFNß…‡Ç# Œ‹Ü·á{gãwêfŒÛSÈz3>h­knï}³V†–^[H!<ÿØ,ÜÃrH¹ly韑v÷»¨iضý¤IÌ–›~pÀùÕ”¿ÌMlúÿL¨ž¿~/îWd–äa S\ÀÆçdF^W… ¾¾n§ aQ2¥ÁñìÓ¤ý´ê†ôyÒ@o‚ª¥ôôƒ-ÃÀ‚4”aÎjk ¦+ƒ„Ð‘Ž¶‹X?èdcÖÅõhO3Q/_S»–|cs°¥0(R²f@õ­K‘Éôä Û¤JA+u‚“ ÁS+9@Å×ç~^8Õ6$¢"çEª{Ó]u÷Ÿ+f~ÝÈÞQ(­ _íp{=~0L¼òfyò~^ SdaÂÄžÐ+}û»ïoWóÍõ剬·ã0¼p/,±L\êö|ü‰°½¡öÇ3š“®@ïs5¶›<ú°¢­q€ü–±;#)M¥4Ç;UG3SÀ5µY‰!2w«ºíYhn1ó w” à nzá¾6”hå’_XxšåKnîïÕåÐpIÏ]z)kÎòÎ%r8$?£&6»a2URÿzñ\â½3ÍL"Ο‹]"P ÞVQiGŸ@qÿ>&J·¾èmLø5i³³‚†U$7ÎI`£QÁ—‹´x]È3\ÜÌøŽRë8ÆDÎ+°<ÉÚÝ+ަAÿ+c}…éçL“t»5ä7[ å¼)`⪠ÆùO|8]v2M¾Kº²Øtb–´/žnpëf«Õï¯âdÈcö•޾q²ª'‡‹˜ËjæûÊ-(ïÉè^„ßê°…1>ós£±µà’e]àùú´spÔ¹ÔGä±sñt­¾ÞC¯ìµÖraUDØAŸ@µm÷ÂO%‰j¨¨÷©Wðíj&™•éê¦#*çÌ×™ÍÙ™Íêþv5öؾ9ÿ²š´M Û,Mþhøø‡Èó³tWf˜Aõ‹dƒ/™Ñض«¥T‚®Ç·Ž_0'»uªNJ`ÛüœQ Kê‚oS¼Ç»)pÑŠóãð•~0Ó•‹ìr´n §®ßÎyyÈÉC}ífd| ~„z@?ë|$ˆ/W&ìBË;‹èb4j?DÖyë{ø%R#Û[Çk.ôsŸòò?¯*Ë7yš^«zjr¡ÏÚ¦5Á[Ñ>eÑ §Vp¥žáCíè鳴륜ñ$»É¹,4øba_îI?ž¡Úü¢0¯.UÿêŪ…:£­PrÃZ›ú€_³W耡µÅd-1Á 6ÕÒ÷iêÊ G¦tr®Gx>“é-”úËìª2m!=ýŠ‘¸g gùjZóúŽuOtë-›±5†l¶¢‚”ðŒ©}—§ìooÞ~0–{|ëñ}ô¯²ŠÐ¬&gûõêÛãÃÛ¸$!x‹JƒÈÖt…í @ÇMq‘ç¤[õGž«[]'ZÌürt¦—EäæâŸ•éY}—2£•¦$ódN'ÍÀ1_“Æ SdNº]bN/ ¿ª!-—Çb\¸Ó„¤ÞÁ:3±Úxš$3ióóÎu’hý›˜ ÷ ”¬LuÏz°­Vçk¢T½‚{m>Œ³ñ¢¯8õêøÖ£“óù¼Aí`ÌíÐ|ýdqŠóÌCÍWZËáþâñä3&é&nÖouÒ—RÓz<;†®N•žÔÉui†¶ &©²Š™Ôe7q1Ox?jL‡iY‡¦+&e¶ƒ‘ß–wC½šV«så,#^WbzKOsƒPÛâd¦kÃeu¼•dEM•Uo®ÅcêL!Y¯fËú}6?½MÆ3΋U½RswX3Á}K*:™Ëá_ßЃÿ$uI­|c^"7}‹(¿WÇóó — ª$t}@t8^?ÜͶ³ê3À1»®7ŸHåB,û2®êà¶¡e'ÍDB÷Ó½/ø?9C6ß¶ UQÌ¿‘`&9¤ø<Ë%5‰¯•; X§x˜yŸI+Ê!»¬ïkaOÙ& …|lŽqe `†tÆÊÞ¯åÿØ@+àSÁ»õ#刜ähâ€cŽ ë·’׳%m›¶tžŠ`Þ@•.^9ÂAÑâ(˜ä‰y‹¾ìÜá䶆ꦔ\*e>×ÈDo ÜOì$¬äbYô©BO\6ØÙìÒ¹¨ ¬sؼš3ôõc1u UÏ“’×sº$´vNsÄ"¤‘²„™÷èéÓ&Qœæ©vT’¼*⵺¸ø™v±~}VG±.-Ï#iïô’æ¶ÍÅQÙÑyÒ>µÀŒÀµH;ûÉì…p¥8ù–É’©òVÿ¹¸ªâîø['}ɵ£*Öìn‡dŘç±c} ú{q'ÒŠÖñzeÉ"ß»xïˆÔ…zÀÛ°ØšV4ú‰·nòlôp!?¿'`Î`{³ò8$€_’Ê@ðmÑg:HP®Ü|÷ÀàÖTMÃ-&ÒÇ ,«˜bÛƒ®Û×ßÚ¶*l¶„L^Œ¦õób“î zÊk,Çsj£h5ó–éɲë$j„,#B7Ì{â†FÌ<¢k´]Ÿì=Ò1U¥ŠÞŒñ:k|6“”µO (kN\¼m<AE6VÜ´æ;•G÷ú³–Ô9ÙK˜%È´¤šÖŽqÌÃŒ³ §ªãžGˆŠ;S­üL¾Çˆ§žôƒ¯Ò{ÌÿYôÞ-RÏ} ªE¶¾93ºëXr§å¡ØÄÝp ¾åIG#~³‡äñÄXcšw9›j·dJ7>zé~~^‚•KE³]艮èo„yõÚLD«cX´–E¢'†Y­?O~wpû) ¬µWéç’ve•ù9džÈvVCîÎ( o¯ÇÜÖû~¸ý˜|¿Ä5)ïy¥TCŒF)MëZ KÐ«æ¹ %^ÅÇ!£÷l¯ ~0M*iŸ'6S{gxÝþÔY̮ڼœÃAô„5lC%Yv4¿Qú16I¡çö æÅjcË]ð,®Õ~3†U-Ý„ÎéÙJn˜OÌÊÓ{FÊÃÎ ‘Úã¡ åkc;Öäò—¶¼›ÝzVó°jïOœb^Gëb毕H»”µ˜ôðh»#í³¹佬ì‹M3‡{,·ŸlÇ ©~ÿÆdM¢ âYy{`M/Ûsªš¡Qø–'!ïågãæåËaàÂ¥í½³ì[–Ù¾>ãI3lØ¡ÊÎ3¢év† ;¹úÂåýdp|Ìd»¢6d/«7}ä¿ôÝ´˜¬^âÿ~¥Ð«.=öK;xà£h+^cáðŽo=À‘/‹|¿ŸŠÏo—ý¡ÃccëFÏ(æÖŒÀsN½!*Ù"?€õÏhzÛ_ZϼJ¹Ë=“ÉïפßR£7{)LjXÚSOâýîë6>s”Aþ‰—¢ÃDâZûµÑu[n6ë\9,ÛöàÌWº¥6CÃgæ‘ÊN÷ðV´«{©³a“<®|„ãÍ ‘Ô XïP4ÊèüË[vÆà]®†Ë oÊYï 7xd¨@’D/xß.Ô KqÒáSÖ¶”œf|Ú´2xMwrPc#Ïsê;$ÐÒùâyÒb.­=a Ðò}¤K™¶yµ~N­²…Ç·1ž"“Ñ¡APpSòk‚L?JMÑ™,O6Ë EͽKf%é20k}ªw}:™xŸGÏ÷G«¸ùØ œRaÁqµòq~~œ"~gKf[œ<ÅânfýÙÅ»ƒ->QøÆŠjLª`ŽÜÕHLæ*‘)P¯+xC–“ê/>ŸÓ½¬tØö_WÕ—`J[P{b Äo¿Íq똱³ÝË =ÎòNΤËaÍ4ö÷/ed=ɼ†ˆÅFéKæ{yל¾sÔ*ûã~ì÷£ñîØ¨]åÈ"?~yþPÛS¶'ßCüîô›×ÓO‰±´ˆ_‚æI{i©0b}ÈC°;D«IÇá 7nAk^nmï4x)Å{ÃVùóã3ÖÍ„á/¢9r—ENÖä(ñÁ3«Úž’E?|³™s‡…Acg3¾þõ+U­ÓˆGKB!MS´Ž`™9~_¯@‘‰gKKVXƒÕ$ðD‡®Ý8ÓXžÑ0ûHîG1%R¦¯G Ì º)Yç€û3Ì/)ÈbL#ºmÅ(¿ÇÇ]Klš±tïVå‡áx†WŸ»Ó‡‰…„J†ï9fZ¬ž"/!8 —äk¼™DöKþeÒC×.UñÖ ýÌ…i‹év˜ q†ÎЋæm ‡Â”Ùï¯æÒ¦žc\½¼¤^éYˆ¸í+4ĤÆéŸòÖ>ÔtRYx9i" '6‰õ)ŠK¹üvø¢³Ík3»­gVÓ¥&+õiI®Fi+^˜¥¥Ã›õÒe‘…È'Óz[ Ù€¹W7Ô't(ÍÎmHXXþóØ‘Á¢Ï?£´âJ‹^4Ušn8j:Ò/Ý¥UçJóç)Îû±L˜%g7ȧƒyòŸH¿b8œ»õÎØØ$Ü:J“)Èr¬òÊéûÏÚO=g. ?ÆyîÕŽ ŽÒgfæÄJ‹ÆÄ-ÿhùÓÌ endstream endobj 218 0 obj << /Length1 1466 /Length2 8040 /Length3 0 /Length 9025 /Filter /FlateDecode >> stream xÚtTÔÝö6ÝÒ % Ý )Ý-ݨÔ 1ÌÐ)R"ÝRÒ-Ý"]J)-¥tç}ßû¿ï½ß·Ö÷­Yë7çÙûÙûì}γ3½¶·¬5̬ƒ"¸ùxxÅòúª|¼^^^^~ff}Âü/;³!ØAÅþÁwƒ6⨃ž¹9ø|OÅø„Åxyü¼¼¢ÿ"Â\Å wˆ5@ƒð Ãq˜åaÎ^®[;ÄÃ>ÿZجØ|¢¢Â\²N`Wˆ Ð!ìÀN;Zz0+áõ)Ø$ìg1 ÐÃÃäç¹ÚJ±s< ;€.vu[~· Ð9ÿn‡ oÿåЃ٠<@®`ÀƒÁb†ÂBÜ Ö`WÀÃî=Uu€–3úYý/àïÃðñðýoº¿£'‚@ÿƒ¬¬`NÎ ¨j °8‚ZJê<OµþM9Âañ wÄdù@øS: $«=tøwp+Wˆ3·8þîø;ÍÃ1+B­åaNN`(Žó»>ˆ+Øêáܽ€_®æõù²@­m~·aíæ 4€B\ÜÀª sL8ÿ¶Ù‚!^^^~Øö´²þÞ@ßËüÇÉ÷ÛüЃŸ3Ì`óÐØb~øÃñƒÜÁ„«ØÏ矎ÿD8||kˆ` ¶…@qþýÁ ¶ù ?Ü¿+Äð’÷A~|Þß¿ÿ]™>(Ìuôú7ýÏ ôŸéª+pþÝòÿ:åä`žn!7¿/€_ ü°ðûÏ<Ú Èßuü#VjˆþUîÃ9ý«d÷¿5Àö÷€°þ3—&ìA¹`Û¿…nÂ+Äkõðáûÿ–ûŸÿ›Êgù ý¿+Rrstüãgû‹ðøANG¯¿ÊuC(š›O‡Wð/;®ñ[kCVv©æ/»Áïys„@ÁÚ08ä÷ óÅËû_¾‡!³rxxEàÒüã?ÌÐ‚Yÿ6~¡§«+È çá®À‡ïa*­ÁžÄ ò@aˆ‡ÀC~˜+Îï‹-›þ ß­ÿù@ð? ?hóoø g ìPtýáàlåæêú0½”õÐͿ🧠ö[áÌ}Y‰‡Ø×„´^TÉR{poŒò >ê?Š:Á2ZW¤tßÔ ’—¸<Èž•íœþ}¹L¼Ë_|ßè`LÎë`¶ä›-F>W׊nc¹Æå;N,yµ Wwãÿ¡ÖÑñÂBjmK¾ß¤ûÉãDfŠý1—ËáÆLƶ²KSÅy¹Ý>&kÃO<”јhL <”6ÙŒ¶ ¹jÙ©évU&ø‘Ìè¯Ä'JÛ—©}CüB«ýó¥\È•TêGÎj';RﶺŸR©YŒ¦˜×»)®ß°´†¼b³„ëI3Šgª®©­Ç¨êÚ6© ,£ö¥ Ê/¿a8XÆ–Íö´d]5çèP(þ5—¬_è- ÄZÚ]V¦L"©„Û;‹­4ñ3¤†'›HÍW½zp"ÁLžœ9•ZÈ5”NÒ ­wìó•o {(:Ø5Â%×öd-@7)+Óþ«£ù· 1DµAAk .3=AÔá5í.caïÓ±½aeQH.YÊð5°•Øü‰8¸‹T½G9Ðc}•ûÂwÜßk4m®Ñû§;2«„ç®Îà BÕ»zË]\D‘g»Ùî‡8jY‘ñ¡dI.>uši©Šì»'š€ØLÝ6¯Ñ …›Þ‡ÔJ DPxßTÿ„ܧ¿uÌ<0J¹}bP=l…[æ7–ëcfÅ*ó!Ù'¢vèi·ÿþ’tÔ3½ŽšÒÞZ÷S¦¤ÚH-ÓaÖkœ¼4ºlÃ9xé]¤o[XüHGež–º Zø׸ùç×´"­Ò–¯å¿=íØè©fÑ,Æ´á±$>šúT¶FÐòH™v ¯q·äçú«Üi5º|jâù«ìÒTH5ÕD³–£}ë@'gá*©x¯² !)1%ï 6¦Ñícw*£×ð˜]m´»9h¶ñ8U!OˆNØx`RÅÇS#Õ{S¥·C… ùÔþ}²tàãÞë'+if83êvåï¯Uä~„OÀ˜k¤,í›\²Ú º§?5½$¢+kã›[ò6„Q:ž V¯ç—ü5íÊ£˜y÷-æÃÊ7–9Ãc]öç¡xâñÀÃ3ãúœâ ¤Hx/¬« û݆ѩ?8™Ø„fð}y’tÏ÷b-f•_–‘yŽÍÒhˆÂY„)\˜±8$¿6œ0'Þf`y'ä?P’eÞ•yã;I·|‹•Ö $teäoÏõîHQ 2c c»þVê•P"]Z¹p/C ƒ+„P *i…h0Õh..¦o\¬ óŠ ß5îú}èÕ^Re½ÓU´[ü8€zMKÓˆ ¥wÞË÷ƒ´t¼vtQa-HŠBá¿:ÅÛU3/«5æ˜Â_¨,`L¼ÂÀ{ÙB=”賈åáa#}¼V@]oƒÖÕžŽ¤ˆùͶ‰5æLm~µ`Ï9Úås_)úÎzžpeùŽ(Âtú“ ª€üw"=²í´–’ YÊ”µ¡ÖKÐ QÁ3ïÚ&•$Þ8·Ìu²Àêq½ÆØkàs LV[v!ÒÏ¥Ûb&UAvÙÏ“\•Ûè“›½¢Õ3®=vÈV™[u z[ïÒŠ%åØ;&™SܼÙº› Š'Ú'u‡Fvu½H³#mÞ¦J„dª³¹Þ µ[?ÔG}ä«<üä~dôµnWðV°8»‡ ꈹ ¨½óh;á„ÊOû»wœ}AÀ²jƒÄR@µ\¼‚èL0)ŸSˆìµ©à5]cc•äþ­‡:I‚[ã»ßKB?Kc(°âůKJulO8E"Ïyçj ÝD`SàáOs 1ñ~!Ûe?Í¥cf×eþlùMdξ$'ø)fÓ>Yz½ Ö¢·<Ý£ø[µÆé{…WåGõ&‚$u’]YKÑ?_ÝmшЩÁMÎX×®T c}ëæ¼“Û\D!«¼4¢d V=ÜZ¤Q=uΔ=-"±ãh.ôp¡WõlQ™T8ñQfÙˆA8¼ç´3”`*1×·-Rßmp»E;±ò•Þ7«›òº©fÿË_½økçd˜{öÂ_¸üqŸ)áé«‘×ò"䯼/ÛÓ'd5L³lfŒH7xšÒFCš/R@ ¤®ö_å-2nºe›èÔ—Ž§ Ná!}âSGã©óh†€ÂB¿«”—ÝmŸ3ÊÇp[ØJR=Ƭ°ùÆŽ£ŸX£¨pþœ®ê¦H “V¢¶ÅJí‚‹–ÆÇÕáÓžŒ+?wí bú’û°Ÿ}¬¾ÞÙwAÚ&’h'¶kÿ‚¡°aE.â@Ãs±çø«²›À×Ñ—ˆ(¯¤Xv±˜&ÎšÊÆ¯m*½=Ÿªž¾Àq4é•¿™ \ËO^yÁêË=ò %û"„ ^R(J¢]+FŽÔ̧à¾Ï£I¾èåÍJ†Ò}, t/—Šã ·<Â@¾qnàäGö_Þëpd&Þœ6±üŒ¿~gÒË”‡ïk ‰œ÷š•wsɤx‡X£ !F÷ʶs©¿K‰Ó)hÇ5Ià yM )a¬Fí¦‹ªN—ƒþ…p7h¨¸°OnZy-vXÛ‰0³×.ì¸~×ñ²ÜRôsÓ÷KMÝ×,f^5ªåýžµÖØŸ–"½úy©ò>Q\Údn¿DqјpÚûÓùˆGzg?˜©©.x7gÏ­Û\®ÔÀ7É‘:XKR• Ê,üŸ- )$ŒãNÇUFÏ;Pݧ§‚Žp¥ŒSÃŽ(¨û¦YV¦îíGƒ.¹ÍÝoÀË/,iù/šTì#ùü\n[Ê̵ùÉ}¿D~úG ;Ôh¯œ Â.ß›ïn†þ¤Y•”Ü "‹Á>N-tOŸŽ?Ž!<.\Z¹0zÙl>…¿ƒÛ5Á¾}Ætú¼rõ9Hìþ¶‰o:†Ð²å‘Â{ÑÛÇ~CJá¨_:ÊyÏ­6סyº‹ÁªgÎu^=éao!pb­žµËÑ=øuÿH'ó™áÓØ•‚T)âFˆ…ÿðp7¼µñ…ÑÓ]‡†Ž˜öXëp§É^ç¨Çû³à±»Œ}“äèý²¹z²LXáy©GædFˆŸÒ¢µ±8Vsüç¨=èû£ÌAÅV=9»À¼=šCKKÚ5N²ôt~—ïe66D:A±!„]èh 8Ð-Ru‚¯0`T«GÌ&.Ö3#’¼$PMqaFD$¬áð:jå ~rã?%{ ˜äŠ,˜s¶.ô¼Ýö.?=÷ö>d§¾Æ¶îQ «M´K­GK$âk†ZÞ‹™kÄù) úJ—#Ò-ûêów\Þï.û¼£Ç;bÐ1¼¯dæ£O.@Èi¨ª 3bpv»$9€t]ùŠ—Ö\onªHdäÃÙpÍ2!VîuÍx߇E¨!ˆ÷}f:låj¯f–ŠÎ÷l.è——$}£Jt¾â ®‰Ý&²u`¿Œêñ/V&Š»ÓÚ¤~Nt(ÓÆµ¥YPÔJb|!8>{cnj€D›ÓЕì½C—ˆ§¿ÏÅdX2!Jd?²·ðb©þ$îžðÉ}‰ÐjûRc"dfHÇe¸â×\ꤲƒÕèÙÊžOA&¶o‘îÇK”[udBÜ­Çý¦¤îò²v[LýlB¹^¢R"»²""°¾¡‹üªÒO‘‘¹zŸµ>áɺKKG§$å,µÌ ¬5Ç:À%Ý-¿å#£ˆ úÖ|ê1i3gö9˜,®•bañ¦QÅ$Ë8­Â7º2lÓ»‚ÈÆìæs~CšJ`ú¤à—€×zª|z³• –´Q÷%èpþb_†Fgš)Zœ5–6n/ªº'¯Sï ïÚ©µÖrÂ[r¼søá‡}èÅw ;‚œ]Ûíí‘bR²Ðç+}à—¹&ãûØéÁÂo¹ ú±\2úÁ¡âe¸wç%Ó”Ù{U¥ÞŸZ§Š–ÉÇv¼Á3çX¨ß¬$½NAë—*3Lßž ö]àŒE/«Ì)›eYXF÷F·Ÿo6GÝh„8,ûP1)Do4WQcêX¦+ýæ39°q¾_…In†}¯êå ù3§‡ŒÈ;é=dS~R;|dÕ×Ñ› ‰©hsб¡,k–’.Û:.lè#ñªëW6;Ô:LI-=‰aJ™žŒú:û«Z]Oó‘P·’äwöÈ~zƯ"È`ßÁÙ‘ÄiÛêd sÍŠ/:(M$§‹bT¹Å™Eè‰ &²7±èÖ2æ?×}«8ÀY1 ×Èù>*ä¸CÑpÚ[é¿k{ñu¶Út×âÔµÕ£>T”{¶bõ^£q"ÇA*AEµ€Z§1¯¬6¿Þy~€, ]T9`Vò‰L4 0'Æc]Aþ"ô†STq|’˜_¿s¸éÓùºƒX­æ—aµ3$SŽ&‘l/%Ã%d–kùÕûÍ:PÛgŠ (f1"ˤ¡eïVÏÞKx5zîZoÜè7†ç²yÞÂ]šöMÛÖ+±¬ß¬0¾ú†Ïg}mMÙku} zÛ.)­´¶LŸ>+Œ£{Wˆdæ¿|u‡¹×z ÖÑQÞÝ'™k9’8/ 嚎Ä'|i¿Péùy ˼ý³IñZЊ¨KÚX1h¥Êö3µÇ‘c*g´?fW¶I+rSy£J¹ä¯ëž?\ª Š|ê¯JÐߤÏÃíry6ˆV9¿Î=§ŽmÍÏýEY껹޿JvjÔ£JnL8%’šºµá­¯«øR-ýóa$\Jß¡Ç^¦6*æ·fâšø^* èÀoŒ ì´3÷ˆ&Œ}ž’¡À’Nú±tˆG¤gV埀ÿ$áüjÚ/©*äñÜTÅd±¦MÜ€aàÝIðòkMJŠ®EtâæÁ£ô°±oß0zO%}^dþ4xãTgù&y[uÈbi©u &ró+sWusé¬V)UJë¶+;2Ð;.!ËTYÒ^x^7»–Ážã6ÕßÄéœÈ„,r?­/lÏ5äT%¯íOFÐÙPzôï5:Éj·ª¯œ¬5£Þ¾˜y>¡¾ uø¾àÜëÙDvšNmdT~$& ãV;Vyl-Ú*´qJüŒ=ºûZrYèKŒ‰0±Îø8aÀ~C²- ôÔ…v7=¢ ÇNîé~­™}óö<çë))Ké Õ Z¡‚0¼ï'«ZÏŠÎ Îjï6c\S¦§P#ÅÂDhšïø¥Ã)ôSÑö¸®tÞ?ßÄVm¾Þ©•SÜFÖÎâÚú›üs•–^¿ø´¿‹’¨Õ'Æ‹÷eVV)”¿¤¶[«Xòö¿ê ŠNûn×÷âëAn0é³¢€Ç´r)®RÜ嚸<+ØQÕÊØ @Ä•1þ4ïK*Ëjž¢SÊ1”-†GWyí~D6 \S‚4ÐW°ÍŸjôÄGM<¥³dPñH ÕóMÝ5ý%Y^ìÞ#\ÙÓÔiñÊóÙ(?|Ëû5Gíy@þ…¸8;»Iñ"Úä¬äí÷è >2ݾÙSÛEßÛþŠš¸ø¦-:[Aº‰AG`WŸ±.*縯ªeˆO®Ý(žbnD©PðK(Wº¯ˆ)m¥|×ãV¹dÃAÍ ÂÓƒ)¶I•ß9,ê¤oÞ`fj‡EÉãʇ´d³«Ï(*Ìv/NîSéé"Á¨Z–‘Ø¥&i˜ú’À¹ë“ë@ø§‰¾Ó¾Nºè³D™´üûZm¥ÇEgiCØ‹< _oÙäég—,»N±h†Ó1K<©æì™5M<ÿÕ×½¯ft›Àw”óýíf.ð¹B¦=‡G4@èèÒC¢G€„Ëm¥‡à{—äLJTéf`7lUÜÛSNÉÈÌŽ©Òu,þAlg_ÞI%•²¡^@¡åCu·Sâ=þÛ5ú´‚Oï|5å+ ³ ¤õ¬")|•©¥v«ÞyM2ùƒï_P tÛðĉƒµ†dŠš”±ÊÄ"²O“’Ô^hØQ¿uR[­'³×Ä;µ°\u~rÖo|(`ô£S÷1ÚµÔÉb¾e¨ þ  »EK½¾ rß·€³WlŽhY˜¡Yc‘ˆ`9²=éÚ¹ŽI‰ÜḂ–««7Œ¤©E´ p€4%7J]ň´Éè¦\Á˜¦îƒk†ÔKñOEfƒSÁªÜnJ2ê¾dÔ•­©£ï¤ ,º3¯‹ñERÂröë·U_í&˜Þñ壾#Úét6j&й‘ÝoùóŽrš2e<÷¹|4æú‹j­Û2CãGà¤x*w€›‚×ÈÓJvwrÙ´_9ŠìÛ4¨uiºÈËD3 g}(ôÙ‚£‚oi_e¶FõÄÐÙ:Iò;¢tôü¯¸cqÊœ&>õ¸ÈÈ®V÷E!Ï Ç>ldÍ'Mµ0Ó¥?f[ábx®& •Èí Ñ¯‰Šïªz1&©”Ì©W Êl•¾¯†FõÕ•…¼ÎcøNëYÿÕçÓ0¢É[rFv¸Š×|—cŽM™jþ÷ïèÙšñ™Üý'\ê=zËŠþ[`l•Å„W"ÆÖ$øïÃȪéÀÅ-^õ¸žZsŒY»¬"AT!‘òöKxAlön”1ÂØ ²Ma—+P[WqŒNºìœðK{CenÀš\Úm,Sôî¹´aÊ> % #5{”UãæËª[ÏÑ+àH“*‰êЄcäâ™êæŒHŽ©¸;¢¥ø†«¬y}§Jª‰~A]ÐßÚƒϪ„™lBÏÒÔ^ÒnTË04©\cÆs蕎{j²D˜. ™›¾1;r='cÔ´îéŠÇFÑ‹HŽnŽØš½`ËäŽF;]ü|®Í‘µRäìZÓ@FH,g\EÚÕ½t]Yh&/û\f›äWï*ü´A‰M™ý òô{IêWW [ú{½%xèc/†7ÓŸ“· 5%%mrS¯ïPBèZÚÙ š õEjJÑi¸š¤XŽ N§µ¡õxoóÏZ»wÛ„Q·3?Pè¾Jé‡õi¶€9ÞwÈÄ?IOS g×ÝxÆ:áå8›+Fàq c'iÚÄ©Cº»›†P“RÚ<™Jj®óÎ}$b¤9¢Èä ßõ#xxÜŸûRѽ‚N+Là˜gµÖî™õªâ7!_FŒ±/¬6p…/YA»QéEl½†>Ä«QÖ¿³gº˜È§ÙKÛµ“0C¼D©ÕŸ‘/1>?[aŠºð)µŸ¸éþúëŒ×b²ÌÞ¦Í-yK1ºœí¾Uw”83›ï…å¹f,šnW>îƒâà ˜Ï@.æš/Í6D¸Á|+‡÷„jÚÍ•ñdᇘÑc•“JU“û†Ì¤UÓÅ…Õ=ãÕûå—§¤C—tÊ¿ð3Ñ“yXO•Ó^Ï•ž(&ûOB­ór±9ô­uÔòêðÐl˜_ˆ™LʼD³Eñï¢=}§‰À“H •u‰"¹Ýv$Aj^=Ùo@´Q&×¢½R§ð'¯ë4ÛžµÆ±{k5\;…Ï©qç~ Þk$» [Ì[ÜÍ®x¢þ‰&IA¼PÈ»áý,°+Y2Å–4‹¬œïˆß fœ>GaÑ­TR2cPl¶ÝÛZ¥Ãèƒ^Åzy…;îñâ(ÒâØ¡r¼F±Ñ!SI[aûq{ Deýı‘ï_mSíðæ ŒVˆÖX€¢ìø‚y$_÷…|€|üfêË0geeîÄëß4e‚v“$ý6dbøÛØn"ã_—Û_•¨7N+¶LôÜú4÷ÑÀߘÇ/ q>Åÿl‘þ­íô •Ò<5wC?M¸¡ ‰1Aô–Ÿž>Gq ]¥½…Í™JœÍ9öÔUлø'w›J‹wn:ÙÖ\½ZÛ« ¡¾BåÑ“˜ èR‚Íû3Æ|z(•ÏàtÜs6[ ‘ÃË=L](CýeÓrØHu*}ݪ_Σs¸U¸²™ìuàH”‘Ë~͵r4Y©Kç¢Í´rŽûÓáÑñÖh|3úûÿ š… endstream endobj 220 0 obj << /Length1 2550 /Length2 17986 /Length3 0 /Length 19468 /Filter /FlateDecode >> stream xÚŒöPÚÒ ã · ww îNp‡wwîîî4¸»»Cp 8¼9çJÎýþ¿ê½¢j˜Õººw÷ÞCN¢¨B/dbk·µq¢gf`âˆÈ©ª23˜˜X˜˜XÈÉUANVÀÿÈ‘ÈÕ€Ž [žXˆ8 À2QC'°¡œ­ @ÚÙ ÀÌ `æàaæäab°01qÿÇÐÖ jè2È1¤mm€ŽHä"¶vî 3s'pžÿ|PS˜¹¹9éþvY@Ɔ69C's 58£±¡@ÅÖtrÿŸT|æNNv<ŒŒ®®® †ÖŽ ¶fÔtW“9@ètpšþ* oh üwi HäUsã¿*¶¦N®†@X`2Ú8‚]œmL€pv€Š”,@Áhó/cÙÐþÝ3óÃýÛû¯@ ›¿ m­í mÜA6fS  .ËàäæD0´1ùËÐÐÊÑìoèb²24üMÝ .¤0Wøïú@vNŽ Ž «¿jdü+ ¸Íb6&"¶ÖÖ@'G¤¿ø‰‚€Æà¾»3þûp-ml]m<ÿƒLA6&¦•aâlÇøÅdï ”ý· X„ôGft°311q±²€ö ›±9ã_ TÝí€+™ÿƒkðö´³µ˜‚ËzƒLàHžŽ†.@€“ƒ3ÐÛóŸŠÿEHÌ̱Àh²Aú,šþ ƒÏßäÐf3€é¯¿ÿ~ÓO˜‰­•ûó¿˜Q]YAZFöß%ÿW),lëð¤gг°²ØY9Üïÿ¢hú7‹xJÙ˜Ú¸ÿEÜ¥ÿvù÷Pý{=¨ÿKÞ<·@ÕŸ1×abg20ÿö¿]þÿÍø_Qþ_Çüÿ2w¶²ú[Oõ/ƒÿ½¡5ÈÊýßà¹uv-xlþ¯©:ð_‹+49[ÿ_­”“!x„l̬þÛH£8È h¢r26ÿ{6þ%þòמYl€Š¶Ž ¿n=3ÓÿÑ—ËØ|{8‚Gòo¼;ÿ›QÌÆØÖä¯%caç:8º#1'‰…àÉ ÞF ÛßC `d°±u»ÀÕyLmþ:Rv£Ð_¢!N£ÈÄ`ýƒ¸ŒbÿEœLFñ?ˆÀ(ñ±%ÿ V£ÔÎ'óqeÿ pv¹?œ]þgWø/âgWüƒÀù”ÿ p>•?ˆ À¨ú³ùƒÀÙÕþ pvõ?œ]ãg×ü/â[þ1³€Ã:ƒÀ§heüÓ/pfC§?Nà€F˜²‘¡±¥£•¡£ù)¸F`1ü™þ×õ¿òíÓ`^ÆÿEìàƶVàQú/7ðD1šü‚üaFàÿÄãøKoï ^ÃÿHÀ7#x|¬ ­ÿLÞôO°…)Èø=Xbö'&ØÚì¯G¼RLÀÍùS7øXÌÝíÌÿd–þÁ\-þÁG`ù®ügpÑV-Í=¸Oÿ(|;2þIÅŽe^¶èÁm°ýÃìlû?jpEvÔ`fvà›Ìö}ÿ.`´ÿÓCp±öζN@£?$ÿ6ùKèúû¶øã ¶þG§˜Á}øS ;˜‹#Ðô¿ÇÌþ— Ðåícq? ÿ% ®ñg™ÌûÏɃ¯fF'sà?¦Ü$'WÛ8€c8ÿ=pο+8Û:ü“>ø(\þÁ„]ÿ±+à nÿ€à¬îÿ€àÆzüá Žätøƒÿ¹ôŒÀ/ÿßïøFüþûgè4FZY´5æ ²¨ú~_+DàJ¿?É?G¾¯žJMï¹âÐáüˆŸD]“°åð[(i¤÷ýúžÕíçÕ/ž§­ð¡m JíO^ÏúqÊ3ûíHËÓØƒS…§B Dˆ„ôªŸ¼^ì½Ôü-¡[!»¤Ésí¹Ðó?Ü»öK¸5 ”¯‡,î+ÔpÈ ?—ÏÒG}‰Ôñ/™'Ï3ÊZÀ%…s¢'B Á¸t{7û{#gêí£t-’÷Yk‘§Ö6KôÂÇF¥*‹c7ž.ô-Æø …§ðQ²4Î’giqäÿR65ÄÖøÀG¯±.’smY) &+‡n‰q2ïöF>ÄÌ};šz»S´%\ZSWWq‰|…–â~½ƒáPÄ»0Z9—xywσ˜[ÍÓ[™Óóú)mQmÓ]D¤]¬õfá Ñ—P{oL98›®n¯B‹Œ2²:Ï>‹©3»9·7•ŽÁ ±ŸÎhHð…IiïÞ(Loâ$‰»­ûÀ¦ƒXÃÝn¨ÓC­=‚·*þeÁþêà•í8 ‡™×Ê 5ômiNQ' —¿Å —d×d\ÝãÓª,<*Ì H€Ä&›(Ò›¤È’Bîe;Z¸ûù.ù®¹¥is˜¼vU&9¶ðóÈè¯ñ^A3å4™²ݯ±|*sŠ-Ýoïb*‹øoËwµÇ ûVtk?ù¤ŽkÍõh-»º ×DÖ‡Ö ù«SˆjÇÍCdP`|Ûo[à%å&lVô~ðîŒÛêê›1¼]´`ЙŒÊ]“üømÃæ Jïä~Ð5fdN®yŽÆÍºeû@³:s\àl•ÁaÿCe¬©'“h·ÇçŠÃœã,^ÝÆšNs¯©i†ûe!˜Í‘Z™yhëL«ßzëêë~8CžÄÍù—/ÖâýøDY)]« i#¬±â2>RØ!EœŸ±U9…ÖåžÑÂx£7b#%GiA!uÙ¼Þõñ÷Ù˜š·bKο°µÛ­Å K}/ÞÉ W`?—årÚ)uD±1CJ¦Í/°]:kŸ¡ºjvô%§gïg±|×všžM^-ˆlÌ4¿I o1ÊÜy¥Y!‚"óC2,2'(£g|åñO{UF]æõeæb°ì4Òî¡âƒè·B§û÷ó&)½%¹ü•™ì×ß}i š ZpöŸ‚>¿¥`ï~F§Æƒœ Se„˜¶Ãÿ²>-~\wÛÊœè$60Û¼‘ÿu&߇¯¯ ^\OY0™>+)ëWo±=v¼^&ÉS$ ³™ëÝ!KwcqnN k×çŠ]ZN5C“fÂcê¯Í Ûi—×þbnš”mÃåw'ìaâÆ¾ü6,» p‹Æ˜G±®Ì(QÏ÷ãG¬~F9Rº¡™á=î-õ<Ñã?PMóÊÖO"öO®ŠŸJMÍÎÈ»ìòžø@Wˆ©(=ËbêÇÐ\+^UT€”\¢oWc3» ,S“ÝÞÄwâU~ ¥¶sQmqçô`{R~jçÀ!Ÿ®¼Q&ÅV… A*xΈ§~í3ÜÉPöºŸâeßÈ,T´š¦ÍU[õØ-ˆÏ0ÆþŠkÀª§Š†”£è‚D_[»×sR§{§¬œQ.R$£WÃþÂýéFè|‡VpHø”ìp}ˆúäs|=O •:åt(Ä«ð€D9 ½Cü¸j^HÒ¶&Èæ]0eté!Å{ßÉ 1Ò ç«öÍíÇ2ƒ ô=bˆFª¤ª9J8ë´G"dÊw2»s¨”9è™bÛŠòtÇhn»É1*Á^™¦Ü—*»5®œ‡…ÝL%ŒÄž\ÕyŸ‚ÓléºqŠ„e--e¾yÂs›"˜™=ÓAZ{UP|'ð›ÅE“6¤)˜'ûý•¨ËåÓz“Àç—3ãc߉¾&ø Êf(ÌP›ùwÓi“Ì‘é‡Åꛃ¯ð¥+ojë(e©òÎp´Üo«ïØ8Ñ#Ü%ÞQÍô¾nm¡–ú£öv‡“VyŒî¢Ù*ôê'zUk½z~nÖòú¸Ñù°ýÙ°è–¼O`${(@:‰•ù6¯Ù|ñ3sçë±j±™p£̇•(î//â'Ò5‚¤Úvº½È«°£v“æ‘Ë=¹“Ýñ¥W!_ ¸ü¦<ò7;eCü¡pžyˆe"x«oóÔßÈÇ5ƒnaÈ–CypŒF¸íöÅõLÒ…'‰¥•© 9´éUiÎÙH2£fÜ5! (å¾½PA#W!ÔœÊ}¨Pú4hç§JjJI #¼KyÕ(¡ˆWîì:EÖ-e‘õ; é‡à€A¹4§æ¢Çb6|oø;9§)ìÛ¥Óûf9¾h &Hæ-22¬fï'u¾-f‹}Ð.'Çá Y'[²¶±pX&»Oç2™§ê¬tdÛʳñ‹ÿÊ›è›XãX)ÕžÊèØCBWM4ó&5²ÉvDà§ëQ)¸ Þv?E]ŒŽ‘oW­ØÊ]¯IÏGImRÐt‰¤Ã‚Y þ¿÷Œ„s¦&‡Ÿ—¸¼Ö×$¦²77.txÛ$QlwàŒY¶jÜ>jLÂaæ2“òlcí ·&ï¿ÇvúDÜ·-HÞ:s—d®ÒÔöHÏN@{F·Ì©SEÏP -胂úÏ‚8\n=œ c?"F ‚Ü7 Ö0(º QѤÎNà0bðbV[õÐüQ™UNTL`o p÷5É~PöVÝÎôã.ñÀ†cÿìJB×E¾WÆÐ—ªVµt»Ì°03Ê–L0A` âAêÙ½¨È$dˆœ†J!/´³ï*¿Àö­Ð;öp£[õÔ‹Ÿ0ÖuÈØå°­nùÖz›7¼Yé$™ º.ò2µHRà¶ßõ×åz Ãtoi³•u@õóä7ínª$£ˆßxÓÜ’?ÐD a<–?:™8æcgˆ@Ê{7µ§—<°KøLø.÷¶d',Dó&„á{ºFŽ”]Ã<ûS†êBåil¸´H/PÅìÎ[üÒĪ¿«$ð ¹J5wš±mZ>LOy>×Ñû¿û~ÿˆíô6ë­ø|–èÔ•_"íÖĵ4<§L¸¶Ã€£ã9jà¼ñ¦Fðñ[É ùq+kOXÌs0g¯Î‚ƒM@ˆ¼ôÇo'¯S¿Ò^rÅ«,+ë‘`u*Xt¥tàWo­Ð6«ñ¦ËäÔR"¨ËïS“¯{¶áË¥¯4Õ®Æ2¸Ϻ™{^àL>IË2c ~kü@:aT2®ÔƒFxÑÙjjÜ<=—ãÐØQƒÌgfåu‘Ç®Y#3Åﯲ¥{j‚ô9¬ÐOž}AÒq;àévkð„ñ×n[ĸ¥á†óÙßÄ—¼ˆÅŸï½)Ù¬’¦÷??Ôté+HmµrâeL1zÆêÁx¸Ó›8LມšäuŒ|Äà”ÞšY¼ºZšë¾kTÉ*Û£ÌÁ'ððÄk=5úV4gl©h„à3豌ĔW×Ûw_<áA°'5WE„ªØ¡\N6GWDPzƘ{$ Qx¶ëO!– ÇÕÓ6ô,‡èúå.óŒ-eyµŸ.sTªi°ÕJ\ÖÕ¤²¿‘‹+¤iÎòi#èöXoãÛt÷ÿr 2ý9$E³ „ GT·mlËÚ9+d’ãÉ[áOŒAÕè›úB«O:º>k¸Z~ãO¼\¸F6åcÒ"ìÂúéo'—;hh¨e¶!Ò)Ñê=]X­^êZTA'Ó’²ˆ#ŸB'9Mú FƒìÕ#B ã~áÕ¬Wádó8âûÓÊñçº/íZpËKéÀ¦²G™/l¼£×Iø!Kl4ÕCWc¦`CÉ…5ò<\^UM‚ƒ/6BÉKôÌŒ Ý Éõ¥Ä»6ÔX–ÎUþæ| Í›4òSýœLªDèj7i‘•°`®Á|×ÀKy[: Û¨WlÿŽoŠêâÚ÷±‡]¢9Èõ^?ÖpR™à£>¢I ­U…*©'1ˆ£VßÅAMa ;?2Ö.ù0' Üˆ&ÊÃí úc8|g[JXøŒ÷`ÒYžÒ“xèRÃŽÙuÒ–ÉÄê5U¦m6æWA½9V¬iÄq½¦ÏO[[Gø¥¯ñŠUÕÈžôëfJzU©$ôÖÖ…6>ÝwÁw•\Þ5–ìÖv·¾+·:D»­'xHÛ ß•þ Rá@Ã~?¸þìé"a…ôCÖT5{Ÿ · Wç­š§j˜:–S1eŠ•1o–SÜ>ÿz©Q¬Oë”ÈœÇB-´ˆæ¹Uz±g¸T›WQê¡H£4V–¢²¤¼oBóñÐJþg9ÆèƒÅHh&”k‡³þ@ 4.!Ó.k‘~—u?4ãÑ–¯ÒÕMƒ³éÍn>Ò¥¢N‡zŒk‰ržÐ_Ò¯M|›Tfz½ý >5nŠÇpz~2»›óx8=ÛššÁ¢c ¤÷-‰d˜‚¦ÍœÄ)«é[Þè­ñc?lÂYŸ3)wiUƒ^œ·>9n÷Üâñ‹p£ €$Lg¤ñ‹ÔDЂ9·¼:Q|0w@»3ÈøÀq⇴Ÿ+’±–WS&,™È°ö 1(| xˆ"*·[ºX‘yUîΘìí.;”Ü fl÷$•ÂÒ\<®3/a+Wl1¥CãÀ2£»Ô6Á 5ÊC·K,b”^š lÄ¡<ÈvŸ¹}‘›ü¯Õ‰·L³¤éŽ“*"ÕPü½³î£(OÚóOóz|$ôÅÌdµì²‰›rèèRô¯Ø ‰R?!˜CM>ebHsÿ¤H“ŠþT˜0‹Þj2¦iF‡¤-­ÂZW·1 ‘óžRÖtN3R„n¨rI?4Ô7“³dײí·ÝÀüAXšÓ8kš탳u.Ñ+0ÿ¼üít"Œ.ç}neêž™åˆ.”ׇfAèÔœeÃ0yF;¸’w‡“»Ç,, èÒG§1D*FíþÏ{^¼"Å[º†{ ·¨Aê-tPßE"Â! °U:ûªiPzh ­/\³Ml^2ouü …„w„á×ÔAM—¬Ü]åÐÅa†QWb±œ ^Š¡§‘­L†ÔÍÌ— Û×3¢_¬ñ= Q^qÊöD‚è—”eï Um¥Õtúá×tA‹ªfÃQÚú[ZßôÏ,B« ^Ù kJ)å¹\ßÉ…‘ÃÓŠñ¸D"…’A·Ì•_”ùî$»aóNi¢D4X£ÜÕM£~]\”‘9nƒìèúñµlF‰úJ3Xz#ÓãTEufƒË¶OÅXßüdgÊÍo9ß^×+akr(¡w¥yŒ-ÊY‹LYäã¿ñ°ŠˆÄò*¼u!åóÅnäæïš5ŒŸÃöÄ||”koúMá-{`ãœUì‹[Ķ–£¦=¾M˯ltRJæô»"–ù„¡É{dqh®Çxæ¹ÆóG_†ËÙÝzËö¸ÇâM(ß#òÄUòðtÁ÷¸Ü&î7ÒL£§¦´ÑT2÷ãéòÅ<µ3€®z2nïâì¼@ÁÆt6ú­ïGÅBáøfu"-‘‘ÁŒp…ì?ÄS¦†c¿Ãœ¶€ÉÅî6¸}• :öɤ;zoίóƒØ+ô=48-R"Õ1žÌí!Bá©[Z ?à«ñâ¨$ñmR18ö>b~Éçí±o¡‹¾ÈßÕ$¦t•íEE…ܧè· M:†Pwip—›42uÉh-| ¤ [‘„¯ |?Óô]B;À4ø¼‹"¡L±Û­¥‘B 7=íí´0ÄOõn,%÷ȃ'@ÛNvò(°3£Û˜w(eåRí®x³òl9§M à„Þæ1ãúƒwƸˆ;¹æXE…ë Ã3+m!K³RšÍ˱õ’’Ì6Ã)ý%ô€“:ˆzËš"BV}\iuO–3ºªÁì·_³ÈÒuÜD\)CX÷÷7S@Ø{±Œš]¤wµ8r£¿x8 kn-ð­3R¡QÊI¾QÃta²¶ºaöði;~þ¨€ùù5ïÔ&vC/ͱm„'G/Eγ[,a s†jœkfCxωoUýÓiƒºã"k¼wï{ÿÝ)y¡—7’b”sÓÄKò×Ù´þ¡ûZ×ÞBT¿³°Ó¾±ºå.¥Å½ÈFõ¾ÊˆrȱØØ QLâj4§(4–‹>¨†ñ3;   ·3uvLnr³R+6ËŠÏšõ¯ªcRëÖ¦V3w|ü©y–Ô;,ÆÒÄl¼_¢R˱"¬ý¶‚”Ê䈽ùQDͺ¼¯Ä…µ:e¹¹vRP£ &ƺ,Cå[Äý}M¿Š²U†d&d áÏrÓ‡ÅWZ=½W NÒÕ:C擇coï0|*:<|Õ/a$ÄLè³Pâq+Ø,Hsãr†Dû"\ðõ¤ðz@NçËF$‹ú#34c±îo´(téjñ;%¯©å$ßÊʱi §Ã3±O£Ê^=¡ìõßÅ l;N µÈ¨áFR6úÏ9‘W(“I6SBM\¢ZÏ\þ†+TÐ{ñý´„È*ز1?â±…z•Bì[E‘¨ ~œøp…+þ±ÏMÞiÀ¬zŦ³b–žæØ~©‹ïmÔ$#LVB®ö•´ÌF€R-X+IëbµõVµ°ÕM[Ö³×·¿0ê[suâ6­ûN|ÏÓ/oiº®Õ-² '»Eïñ”ˆÀœùÂØµYÄ:çkâ?4I[·ûÞKåÙ»MªÎÌé´ȸ¨£ìH–·úãW‘ò6PDž”üd³3¢5áLÑªÒÆø~§ACõCg÷Ýws÷­\íK™NYWúÄ/*û{c¥#»èJp§¢ l;µò ¡ÝqG®Oé~ðN ²aÕ è–˜-Ë5NL¤2ÏRÉÓ¡j9¾­#7LZs718ÍAQªœ=_æãÛ#dgÒ—Lu^~¿XÜÜÕûŸ¢”6†¯ Ó @@×ÁljºœðEdWÚ/=hímä‡yÙ¸§ÐÌ ÊGx²jÉ Òf—1Tï2x2èiå“îhÄìT¤?b§ä º_ùõ¹E…&0m_iC5n.p§ª`i @!«Q×:}ˆ~Ôl‘a¿ëαŊmwÂ?äŸÝX‡ªë++ã{0¬ÿ ¦¬ÁOéL&cVe^þéy›•ðuBŽ÷ŒA¤üþІýêñ6§™•Ð?²•)¼²JÎùÒûöAFB ¡þà zQ>’ôfg“0侟0[®Ob§~ËçyFoHGL)á\!QÙœö§ÏB– £QÊ•žg¶°çŽ)i¨ µ"Þ‡H8ÜÏ-ÄÏ#·©ÈÉ‘¤TK5©â¾ŠÒ?˜Xˆž–Dã“Ü÷0µÂo]v~ïºãLÆuC(°É‡]| ³Sã(uŸÚÓ~Ÿá¼¯Œî$¼ µ5Û˜QÉ֜ÔJqüy²nñÑ­@õÝs_Û]j3ƒæ ‚¾­ë/ˆ{ÿge.cN9êP§ÉP­æ„ÝUiÈ+1zî3ruκˆE™1ñíTÐÔò>â^¦†I¦ûîð7䛸Ûcvw«èé¶D;Yç •¹½ø´Þ‰°y|*—•Ffî.æÓÁÁLAç:pÅ.YköÛñÔ’d÷RLÔó¾>ØD~6þº.ÊÈ%]Jˆ§l·Ôc0£âgtô;”¨kn¾ã+Îô¡ëäºo«Í&Lí8§„ë ¼£ç¸„=1ÉG-Û#Q Ðì·•aâF[‘RÌÔ.MÁ¥†V¶9p)ç~8—™ü¶øª“Áyßî‹L»Ï=”¯A[뽚ÆP0¨¾k 3³^õŽ«29§0@…¬Ël‚ÏÂêëš·MŸËÌ^¬mÝ–W\ÿˆ$ÚºÉü47Í¡!cZC"æ¾y£÷BÉÆoÁáßXŠÝÈPn]ö^ŸÀTïD‹è3̸Èç€áÕÚÐ ™8ªÕ1&rvÞ§fžM ïJ¿¯€þ$(û jëHÈ= v†Ü‘žêHؘãý&¶8WŒÞd´Dɬ¬Ã”BÆŽußbâÅý!üÒ.‘áTÅ‘åWÄS~~¼“ŠS Vv¡^?ùɰHÜé©OS¢n5–Ôœèµ.2¤–ÏHF”õ­\±\{æìŒ4fM@‡^‰ß¨FPv×¾df5½ý@­Ô*gëfÅį ß Õí…0BÓr õÑ»¢zê›Õ«é¥±}ùÍI˜|~†^ÏúØ€Òµ«ò4ìüâò÷¯±•™‡Ö¨!Î@ˆMSi9Åi|.Y½Þþ¢Ð#~°Š§m`råm‚¨£ Ïïf ,´RÖ d[ýAR:ùtÛ"í¹ÈÏ™O6(|]¦±s iß@Sžˆ0±xx>ˤÃÈLç¾DŸ§Ü(ް£ÄZf=5Õth1¦}X¹ÕhàiÖ))×rY²“Rø.¾dãpL¦5úôµTÉÆër“!¯ñ͈ñ!–ŠÌ°0?û¤FYêÃ0]uèÜ\[Ñ´Ì'Ü)ÉÛÜ¢Ü$߬CΗܱØmÒôU%³@ü’äÎL½EýZ3YAj›òEf]¹}ì=¯·ŒŸ“õ©i¼ð:!úÀ mIQI‰7²œžè»Î „(·LÝÀpã´xj³„ ü˜"`˜ŸCAùÏp(ήò‚ ›ŠÃãk-QñŽ7JCÑgV‘¦È.]–Õ›ïÏptI+Êì‹ Y‡ø,çB9d`ì݃re0lÛÌõcybaÝO|!ø¦Øõ‹ì«$É>„è®Ì¡F j&©'kúCÑ 8žƒ‘?^wê—ŽìRAÞà)ûÛ÷Ï¿ñ7àŠcת%Égïx‘žj¾f£Í®œDI×ÓžWí:ÅWÝX~ 3|´™ošO\X•ËK_’\˜@çEôÇÉ2I¯~CÊØ‘E”Ð÷Ÿèe¤½$HOrB4*_,v¿ÏIƒã}&2¸,—áŸR.ITâÅpx›wÜhjëï Ãe@Ö {ÛjúÃP©Pñif±É þWú{¤¿wÃc·ò÷ý ’M‹T+¥…Ò5§ˆ(tðËkå×[Jªa%Ê™Çe×CÍ«qÈniFáGo’”$V-Õ%u²œóŽØ’6Bà35H|mí1š\–¥¨2;ƒbxZg•õH‰ˆy°¸!Þ™ o…q‚¥*ÇÆÇøúÊ¢la¿¢þ!X\v²€Œ;­HQ³Oµ%Ò÷En)¨÷æb½¢?Ñ9ºô¯.µ½Ws‚W­æŽ›gÉw޽"&.^îk$FCMá­t®3­1º ‚äËpÒm¯Å¼¯z|}óŽm™1mT3sU§$Ø´ÅøuiÿHýa#œ@i—“)ÕÙôTŠª#>Z:¬‚ëBŠO¶{¡R&}Ô¨ ûí©x‰âÜ’9~ e3Z–-Sû·‚±ûÒ,HSY¾>XüÙÀ.1kÝÉÆ£æÁʆ²ãŽÁ”ök]`Iš›çâú|§Ë\;¥èijʈ]Yö—3ázgR–µ§V£Ï›úÇ/Bôu¢©pSkr–Ôk6ˆžŸ!¬tÎy˘¢w€bnY~WÖÑíÜ¿Þe|,é:ãâÚ}àÒ\Ê¢ÛC…÷÷núìñ+ó¨öNNj¶!¿'¿´¥ÏNá2ªÒ:ñ< yR/HkaÛë;èÉýtêÇê.ì¡J® ä¿ê Ó¥y=¾ŠDF>lÓ’Ñ^Щªtu¿òJ(µô@§ªªJ¾óàÎcÆÃñ:.]°‚™—?´ŒaÏ”ì úÙqkË?ôô ùì Ù4ù^¿§¢·#• ºVµ©S§'¢¢ö©*Tý|‡"ºêXÝXÁpÓ¸wHi[>ôüš´?ý}·B+Ø5Bz &ô¨½}jê{Ó ®-Fs‚ºâyIñðõ]ò}DÂå¥ÈÐríg$æëµUç/1d"÷ÝGäÄ X 5ÙWnr9³T &!~ƒØ²Vi:$×wò¥‡¢Ù½±sâÀ%±ÆyWc¥Ü­Ü˜ï|#’ßµÆIÒ(Nq­5[7™_â½,ì®…»(œÁË”û ʳoV³Wò‰Î°/åÔÙ~20ý9¤Öû+‚¥ƒPÑZʘi÷º”Ò°\Û!ä–Ϫã >ËTô:]`Íù\ì$£‘“^¬ó6æ\\Ä\LJÈj;Êï1QN$ˆŽY²œx–jék®e²Û(ûãáj¾øw(œÓ¬ÐäãäRû²jI¿¢}4P{‚¼ÕhVÏYÇYEÚ’Cª’cŽ §¡¨éåäØmÈŠx±n–Zš–ŽþmŽa@rk)Õ‰õLÑvã-ñ R[‰:~;Ù±7æ ÿ¼olÉ!k•|óm>ÇÓ;yÖÅR)Wxk¤”¥‘X±á;JÇסùQî$L‚ýXz ÍO$Ÿí7MÌyÍÎZêµqeÙ¦?‰ÆFK$bæÌªÆ¦_ægç ‘./}ÆG>ÀTN&§»·¡^š8:çv®†!ÓvíЧ·÷Úu%ÞR7ÍöÕ/¾sãÃ%hŽí#‹ÿŒi6Z7ÃR®§ðüæ–¦˜ytÖ•5°rÕTvI_#¼¯Ô,ˆ®îXpHQojLûÚw˜s±ª9¼1FÛ¼\eö}?›òMQÂüd[÷5`±¯jÑoÝQÛ¯FßV³ÂË f2Ãó^»1E„n1–~«rÍ®<_€ ïµè²‘[¾³Vù4åó´–ߘî2ŽÒQ·~žƒÝiíh!4×`ä]×€×gjÑ2à|Óz‚bˆ½c­ M5HW2r9ö÷PÎa^[ÏŠ§âÇOã¿ä»ö”Úá"Oá?Y(÷Î…,eH·K-y.‡Þ¹Æð-ÒzõêŒÉ¶LÞtÈZÂvDšoº6GõD?MiUxгýµwê¤È„Bâ´*ýg­Ç›]wþÐl( ”‚pçȯPoÚ¸8 ŸÚOÂÆ9ý©Œ@é–¡$7¿•££!QÓ}!ÔÙ¯[ýq¹é£ŽIŸJ.Ú#Û`<ˆ%–¡“ÓNßÒœGHsìèÁ½ܶåROÂÊá½ÉœY.z[âjç™Ê§Q= Ü04w®ŸN•ìV¢EL´î”üDÃ?¦LÕP5‹¤Uû¬W:øAâ¾ ÐySkãl*{FÚ9¾D+’k›Éò çî’°ãt&ÛýÇ«¦©Ie>_U`žw_‹âÀ­¢¶áR°e3‹”¢côºd€ª;7ùŒ'\Bø¾0˜̹Ã"¤ÈÙ¯¿Œt¯ê;Úéeµ:,=ËZ4à’Òm–éh¾èð·¨E$Ø ânæ§Üg™ø· L©/ÀŠá%­Êy”ñeVÒµg(®Ò5[dTYp»·øü$NÕy<nXU¾^0ÇÀ¹W,¯ö ­j ¡õ° S8qüþ…çÇ“˜£ Íê”´œÎ¶ƒ,¿¯Ä¯{úêŽ/ý pš²¬ÜXËw°úôŸ8ÂtÊûõŠšK6úªR5¼>ªáÀë±k½™Ò<5oû‡ëZH~˜ŒùV˜êf øá÷¯Ùó±ôu‹Ø8ÃNYêCHÄ™¡DMÆ7謸b×ÿý)ý²E¢jºAE8zƒ‘ÇPËs£d®Îˆ”ò¸WÕ/ÖbVbœŸb3È^J´Gh$ɯH"ãðdÁî×Vs[&Š+Ã¥~Qôþj¡¢ÖíÓЙJfzá19&…%|Zá³v® ñ@»ÿ8²r’Žjn¢ûâ´¶µÒ7ÐÈðb•¶º£hAr¾ßi|äg °t“ Ñ~²tËji®BâV°0ÈímozsP—Aõp½ÐÉéþsäÙµ¡úœtmsœòÙ¶«y‚l œ¤Í(f¹úœ<áù¥ëzœùU¤ÛÞמüða¬ž m¤“^{.J0@ö!“å$]I !l¥‰ä NÑêC—aØz#ŠáH9©ëa[œükï™Àü.àÕ?•|î7ƒj\Ÿƒšã@¬–XY„Û÷äÙ» —ÖHØo„ç|÷®\p”™@ ¤¼Ñ°©¡Õf {‰ÿÛ*uû#ˆàQ¡%À„‡À>{ž¡Tå(?X+)˜B ¯C¤\áqj«Õ…ö4†%$ÒÌŽ= D™–úø£3nÔV޳¬õÃ…á÷ÄQ˜'¼ü‡OŠÉ•§©‹?•9ÈQìßÛ.W¸s¿#žè´Pð’Âîi~S‰©Dƒ<ù¾Œárv?™`i¬4:CÛc½Dpb‰6ÕHø–3S~SÕéºtaÇ!Ûë±÷uõÿ¥­Ã­õW›tÒª5]¾Ñ"Ê•»ÈÑ#/Y9sÂdÐÒ™݈¯wß{ÈuÂØ§,½Zô^µd_åƒÈÐ]†*y˜M‚%å»RYòî•á_[pé‰ô¾ü§Øa#+ôhý#¦µµ³è ÂúÀð—e 6„­‰:S¥Täë¶G!6¨# ý…aJH#ƒÔÂ5ðãC›¼z¡O|Îc}¶¿dU9ï]¦ÆÚ,C¶9dÒ Dü©7¦´§‹šþ¹ø¡É–+gà Tžšž$Ýð¡ÀELáIë„›0 Å 6XÈ96áQþȪL¨*¦K©]øjâp<Œ[p¥àþ–î–‰²–‚üU&v2¢Ìµr#ˆ5$b*Ågk¹Ûß-×}Û·d5½Äà-8ÅJ½Ö±“ßò¬t;òã¨üw­Ä–F–ô})ª.rJÕÃMN#X®j(´Ú•Û—Úñ¢v›XóÓÏ}èŒS÷ëŽHc};˜)Ù0ØŒ…´aq1xfåæ®äEðÊ]{\íÓlªa9j(à ýáÉï†MR­¯«§Öf¨™~þdA¨¿mùh$Éd_i,ðó¦ _€hc¸¿ŒÆ~­Žü–Q†#ó~Äß&ÌÅNC!Ï”ä@…‹®ÿû]'%Ë™g%£†ï•3k· ,1½T’ÀVû"ÒÆ5Ày…Ýã;µã.´’‰åÓÁI˜{†ØìƒòâÇ "³\VÓ1çùÛVŒCK—ñWî§´â‚‹üûù›Û  ¥À!ÿŽœëåŒ^ÔªëjúsÐ:ÝY08¯75«Ôêš-º:µ&Âg˜â{+¨FU¥«ä›†á™¨ïár“Î*·ád_•îÑš—`cŠ'Ú~øpjã#QÖù3Áð‰G{^Júø ªu,eMÚ1U|z6À—¶ýâv½×½/DÝÐá =Šâò¿”'æÍ‡-Ý…-à“ÁH†QšüÔ¦+E‘Ö„ûaósˆ± IÀ÷Ç,ÆQ'¾„V[ ¾Kà«×ÊÆêi¬¹vù{†]«Wý·ëÏ.|\‹ÒÝno¥g(tü.»ó ”gLKÃÔ•f§÷ÃÊmÂü­¢«gHmi0 É¢N˜¦p¡Åu7¹Bf©ˆ ”¤ŠnsÙfÐ=ågë›Ù+žK:@!œŠhÝŒ‚†xPÃ÷³¹Ðr«oýЦtñº`Ø%²BAhMÞÄÂÚU?ÔW@iœi4ñòJ'ËÄÈW»•„nÅ­ážuªÇjŒJ¾„J.O (hä ÷¹'ÁØw@ cÒz èB•ŸG8UÜ„ 3 `æT[ »l; 1[øø¶¼?ûžÔMfb÷JͶK™¡Qº0æìÚAl‡ô+ôì<êk]”p?o"ó,»H‡š<(QÆ/ö«K°5‰RÔ’GRxM¥TÞ³Ú±¾ì~hăo p?âVÚDWWîÙ”7EHܧü´À"4†äFܨѿ:À(šÏ ܱWjoY¾ìÂ4Ù NOÀ‹lÜg©pÙühf#è¥ÕÈ/²Kb’Ë"uC8Óhf8ttƒ·¢§4@àñ©_@÷ëût"Ì„œ}•+µ '˜²/xU^kVï÷߈ÞsÅ\j8‰Uszb¡‘õ´ú8˜ù2c5[þÌÒ< KÁêó­ðáž-€f‘ÁÅîK)9{…ɉ-‰w †üPäYæ¼1¦£ª‰ÌÎXÛ½Hû5‹‰q:Aö0ÜâåFÃ2£Wü%=™˜¥¶ap/ÕV)ȆQƒÔ»ó›[ÄoZ“ÑßZ¨xKå@€2àF/ߟëÕŒÕlG¡½ÙÿhÆŒXÉ6Ÿö›I°`¼$OlÀë»VÞ¹N׿ù›7蕉ޤ·@²ûïÌô0«Aï}´Ï*§]¥—š4/Óxµ¼{—­Éœl¡v(Éò»ÈsCYöê„oõúëÓŽ[sÀ9ïҳ姓¬öS†¨Ž·H£–Ämø]þm`Dû’%¹xUv‚9jïE·[ é4ÃU¹9‡5ÝžOÏöN"|°ž0_hê#ƒq–þG¸0*«W/?¶ÒEÿhü.Y¢Y“‡³E©_Ð]*YrT6¨D×3¹Þ;’®â\‰¨ÅÛ5Móu@9^ßA ¦Ž ˜†U)ß ‚Ÿ<ËGÜ4„="d¶W ØkH› n!f6QlÈÛ¡ÉÆŽ ]·Jh)ós§–`1Ò‡NL'ÏTÏmìEÈZV–ï’8ùÊÖuýËåŠ7¼¹Ê¢'Éê‘è„«…÷>eGI±zJÑl¤Ó¬;¹Ï¥_}îxe|˜ZϺuåâvMñι=뇰Küò1‡Ê§s¶è N"X‚íËèœiÉ—jÔ ­p¨¯ò¼óAHõ\£Ûî—:ëT¼EÎËßÈã×Bƒ ö>Ô„5[Fɺ÷ÆÚùÉ/ZXõ•ß+ uâp˜Àl1ÿh°v[Ûƒž®>ÃsÕ©Ó—‚5.h¼‘wõ¹VSŠ×"¥ÛE”Þ»“qt„¡¼*ÃD3ÁäŽëe–«[ B(ÂÍDcºWÉZªÚËó‹¦OïL±Û…;‰ gü\CýÈ…jpŸÔ²¸è»ˆâñ—J²NÉ(ÆZhï+“(^»¾ W—œ;þÞå #Z¥¸{Ýê‘Ö§ª|è¿— ˜e$ÿ=ÃæÃÅÔR…_2òFmÿÅìTèg,Ë&ÊžŒt"ºÕy¨ÜìSQsµ$œROZÔÎø‹Ç§صZ¸B£äºþÛDÄ_Õô§a?¬ ãiã½Âëš'oÊï 3ô´o-Vc¾¶QÒø‰ùM¦%'Kïæ|ì N3ô ŠÎ¤»Vß.íé5 Œ)ìˆú¥,ÇÀsbÎáÌ7ZòSŠwJK[›ìC̺X¡€™šp¯½ Ï›Õ]Xr›ß3TÔ¸9Öð¥è ®Í%>Ÿi¡};ãÓ‹=]Žô[/V;[/UIôî{T‰‚ýä|YY±ù2ØH¸½¨Ã»†Ö{K¶ ä­|Ïü³×öP·V¬ªBÜ?¯¡"Ãëq㡹?«²IE™Ä6« nÜ ó¶Kß`étõ{BÙBGcÄ/'7|ZWÞ;¸ÿsÜÆè0 iÖBö³l.ûã~Gî/óì@mv–ŒŸáfÃ)jްSOµVlã±J¥)kßõ½hŸˆh®¹Ë‹jõ>šÁøB×Óp`£ÂÝÁGo4PŽ”>U¥»8‘¨ñ\ ã¨+Û»Æ.¾MÏ-Y*êî÷+&+¨DáùãÒKE@l¤\²‘7ÉaiÛ;ñNEtó*ÒþÊ&î ô©‚NkÛ·ÆOž Rš-ÃyJ­“Ò w>Œ'—ßwË~W.n+’6À‡M‹ÇžR(³¹”‡Ýh¼*qÞJjAášfâ*1SL²$Ê&ùç¸Àþª­.-Ë㛞q‚G/%l#ów¬n|”)Žþùϵú7dÑð\ä³õÓ{i/VŸT”‚¤X™¡wñ}} ,•Ìæ$í““ßâ¹úƒ³ãFF ”dÐÇ`CE&ÑŠEeµ” Y~áY¦ò *MZ¶y”W…ÁŸm­D«S9åŸ)é§dYÝ=;¡¥p,1p`É õ•Á|ë¸;Ük=Œ,¤ù®Ò gd^^´æa,ļÀúÕÅ[Žˆ)G‡3ß [[!¢ñÕ·LA'VdøÍÖæÓ•ï¯ÓU¾6ƒ²%Ò™’3ãªaÚª9 R­ùaL©ð.cÙ'ï5Å™FŸº”ÃFQ¹ˆ1}W}Ùºpq=lÅÆ“ùëç„Zè&y™¬X4‰‘æ/$ +%âùŸå™pd³Óç$5 CÝAc´ŒÔb?Òï‡pÜ©T¾KøI|Êßm ¶k¬†vk‹´ºÐ¹ÚJdŽÅCT¶]‚¡dÄ™•þÞtùãÜ÷²±⃤I0´©äRÈkÞD——ë5ztÁªB…+6¡Õæ òYLÞY4*jÆ“Yôäွt,c‚7~òMoII±¡ Û‚œfsµQÑu¡p¡'™Ê‹KÆõ lWSÍè|x8 äUQ_ ޤÑìžµLü'M ŒÊ{}ÝB•Ôw“AÿOB ½õΛ"¹®‚ÖÛU’êy•ãx÷CmðÕqÁ{Ý.ò+™3:hùl°¦Œ†QqÍî? l0Ô0ä,Áþ¯—éí`!‡Ú‹áÏ-–vìGXŸ?仓²/S ¥ÌªÌ×'Ô~• %C ÝGÅœ:̙хX ßÌÈ.ÿú?·zôO- ®4Å©o~Æb‹À´ 2aMžƒÞ=ѽ6Õ‡qÄ™yF­µV¤x„Y]ßì÷i¤-–nÑ«˜ÞØV³ÂŠ£ÅdþhìDŠZRLÚÉòó©‘“äK웸Ué½hÄÀ¼Vû¹¶¬öÏ ÷ÂouÆ’²Ø]!é$(å}ûwû•…›üYQ2|(f.2ažÍÇž®]nUK¹Z*²{´ÜV÷¤½‹áBï9&;híb«U­Ñº:å"PLtm€kàÀ‰S'ère>ÍÒNÞNbˆýUÚ9ïBtàMûÄüNÏnÕ]3óp„îFжZ¼3o<âjIÂßñ3eJW}Ôï˜36ihá̧wÛ™ h `ЀÀæ|T¾ÉKa ‚š÷M ¬n­9Ôo)ÙîÈ9‡±Mƒ3h”-Ü^WÂ'Èc×æÆ®ß«\À3A5£Í+¾n_ªSFñE/fTæp§QC‚lYƒÁSA &†`û¢D`’Ó}É@ì9?£é!]Û¥¿«¦‚'HÄkº0v–ݶLlÃì/üj]‘Ûè~&šU¥$œQ‡>†ÁOy†°â¾gPßÅš6<¥m…‚éTH€ÎÙöo4Ççz)Æv:&¯»—D¼ ú“®É·ÀÀe®¼ƒçž5©é ¶Ã ÎMúÓ¸È>¶¶ö(EQÝøD~(P¸Q÷„§Î_ÏO¶§wç3à3ÆWfQÛƒ:¥&ÎóO6ÙIùÐóý×Ñ:RÃ&9“9«—™KQãV%ÿûŸˆŒ•r$š”Ÿ”Î›~}£çï#î/ <6ŠÝ‡"µ¬fÍÅaGÎ=GªÔ0Dv­¨~G|H3€žs&ùCP`«c¡xÿ¾¾óewþOb]sj²úݳ@­pCýÑKkäñ¤Ü’’.V3\—zsÄ ÓQ¸¶…öpú­q^÷¬dêuàꈰòév­ÿ$ãŠXæ¿>µüA#[Ö†–ý¾sÚÊðB¹üdÁ?6,?oyJù¤7À€h(þÕ.¨õ\W‰ˆù{êX˜èîYÅDL!ôX+kxX…¦ o~{`Zu{ž‰WÅ"éF“;´…Zñ7ÿØGP?H}ŒÛù]»˜Ù”÷=açˆà¹ñÁaã\ì“ z•×8t×%òF´´,ìWËÃUq ¯¿zmc¨Aÿqƒ¾ô« `L à™Pm2—Ê)­/¾—U+ƒ3XV{/¨}v@ú+Ù^.»Š’ÁÕ¹“E´Š´g›²ŽWk£üúú1‘ñP•Pý€‚ÿ^Gû j•{6ªú Ø›¬ÄêMøÜOíwoVE¬`i–b®u®‰.‚bÍ! õȘè ëUd€D¬PÈšßï:àmÛlö+M|zÖ]Vœ„©œU"\D÷-c2òºcr(ÁùOb}ÊA}íQhøÀªk¥Ê-ÎK\÷+¹*'žH: {¨±®[L›G`¬L. Îq¡:¿zÅ—•©J{a"°¹uXѧ¬µ4dYO2ʇ®Õ.¬“Å‚ÖiEV¿¿bœÁò7ÑË&µêëE––¦Ñ§i!^ÃM Úkr#Öªäе&-ÕÆÝµ)ÎäBšÛ8Þ”l´ÂqÅp}»ÖÛÑ?5v¸5‡¼ðflG6ADe7¾£¥ GíÓzôíMƒ½wv=®IŠ.†ö¡û«Àxfÿ}ãÐ:ñ§±1U–9@²åjà;|†¦0x:o/à°T W| àø-•NìJ»^VÅÁËÈ4÷S6¡%JÞÖi¨>2'Ú¬ ǯe2€U°KæI¨ä}˜1¾¿³#•/-U,xµlIiHâH&n/nâ‹…±1.7¨Ñ4²:†äÎT–" “JDý("ŸtD:ž••|PUÒóJ¤\I’Ò‡0IØr »G›W×&Ÿô_F4ïƒ_®ÐCc7EÀ‹$Ú±ç€>)Ö—pä þQÌÈ'<r÷éµ…ªYAÞùtfOç#ah\S¶q)GpÚ{Ñ]åã±*uŒåƒ„1ô1IÃé牳Z]’Í´jô>ÊÃ'Él˜þjœ6‡} w~›|¡ füó«ô¢“çØV¸rš·‰Üßµ¿oȡʠgöÔþà—‘\r)ˆC(~Œ„ËìGÁ}–9A²ŒÕ‹ˆð¬ë9ì eœ†àj$ð§ Øó"jϤïÀ¬ÏQšR­ºëh2bq©þ®Ev¬G wQ+t9œ3±‹nÅBíùeœÏ^Ì2§çEZ ¹8°™¦°y`ȂзêAzkÊZ¸J¢×·?¤ëHrª0=žŸLURµc§Rð‚¨…£0žTaû“hŠzh³HQ´¬HvÆb¤ò{2”­øm?þX•lB÷k‘™žµ@1`“˜À·fZ…â$yxÕ~ Šùçekvå;Èÿ†Eð¾%@å8àfA&¦‡ Ö4&®×|hÜ>] ¦ftaŽømÈôJ¼z8·bÓ¿`'Cia‰ö•†Æ!cßüž‡áp_GŠ~í"Øx¬žœêÚV×Y*¾âz)%¡·ÙRƒ;˜W‚ìµkøv¾šXO,MÏ,囟øÙçéï„l Ø3/(+•Ôøç­ %×$òÑá~Å®?+MÛ!?ö¦¢¢ÕXÄBÉýg.Þ³Š«®•hjM¦^2 ÛžF- ƒH} ª²³´‹à«ÞÓ]mÐSñÒÅÖùEä(ÛøþU†Q¦VeqŒÌ§+o Z×þbÛ·2 Â)žÔ)UËzl·±QYŽ"¥¬&Ò)€WÚ¨€ÏàcŽ}F‚DÚ/#.hSý¶»†ö'*]H+¬7Ààô9¤†Kiº>6d¢ù–xÿ{áÚósŸR<ÖÉõHZñGíÓçý`N–Vd@íõÓ¶÷úI\Äp@ùNuk7¸Ê½„©é®ð®© ‡ÛX?D™:à¥)`»b«½è(D‡aï§{ælÈcˆÚÄO(ãXví’ìHÔp€CïãÌr눗”‰ ›Çõˆ==pxŒPl¤#$%â‰@l£;¢Ü°~Ó¤”Z}Ò›ð?æ2†]4:Ï™;DHäHLÚ!tûØØêû¥_ó endstream endobj 222 0 obj << /Length1 1591 /Length2 3553 /Length3 0 /Length 4549 /Filter /FlateDecode >> stream xÚt 8ÔmÔ¾%/MT¶Ò¯²/³Ù×ì[d IËÌø “13f1Td -BvÙ‰KeOY"k…$û–, ¥o¨Þôþÿ×õ}×\×ÌÜçÜçœçœç>ØAK9g"4$¨r(\ Ð3·µE 8\ ‡#!bb¶8*üm‡ˆÙd ŽHPÛÂÐ#ƒ(*æ¢2ˆæD`JÃy¡¤†PVƒÃ$®ú›H$«ú(Oœ3`L‰Ó#’¼É8W*£Îï¿€$F @¨ª*Ën†:î ‡AsÕtgTÄ ð€ ƒ©Þ¥Ôp¥RIj0N‡¢Ü)P"ÙEKJ ã¨®€5HÉž 3°Ñ2p åþj l]q”Ÿ"–JG‘A€aÀã0 ¡œA2À¨ؘ˜$ð“lö“ ü€€"þM÷+z#ްŒÂ`ˆî$ÁGp°8<XšA©^TYEpÞ ¢ð"#å‰ÂáQhaóè(ÀPÇ @1:üÕCÆ‘¨(‡ßè¶‘†1f‚³ÑÝ$P)óéãÈ †1woدËu#é„ ¿GpÆn´áL#ÁŽp4ÐDÿ‡a‚ü±¹€T@‡«ÈË za\al½I঱afôàsD$XF  2~ ((O ’i Ï…­Ž¿œq*€]pÈŸì 3ˆý‰÷OÆy'á ù!øÆçß§ s&ðÞè›W Ó³?æ`m'ó«åººD/à‚CÊ+ŠH@IUðù;‹% ÷ëð?‘&,PýyXÆ”~Øó—$­‡ðw®cD†nA@òÌàŠp ã ñûfÈÿOãYþW™ÿ÷D†4<~Ó/ù“ðÿøQî8¼÷/C·4*c̉ŒM ü—jþ\\sÐGsÿ¯×„Šbì‚Áÿï qCœèl‰£b\7µñÓ||cÏð8hI¤à6^@‡ÿÇÇX.Œãõ 0$¹é»ówE†è¼±dHE%E&£¼!p†’ŠŠÀcA¯M0(He„Œî|,‘ Ù¸Reef¾aÚDª „úƒTæ_„`ÈnH†Ýå˜Ë¨Àp[ #±Û¨Àð[ £ûˆ€0ÂȨKÜy d¢lJŒº2êÒ6á_SÃÐÈdÆÓ±)lÆHãÍw ½@ äm£t®(¨âk¡Ž]n¬©ÀU¿pe‘Ã~Ô`Ÿç„U€žÆÊgùÌ«=:5¯Ç¯® ò|Dæþ(usØw;=p1áªÚž·ÅlXôˆìÅvÍÕ3rühuµãYy‚³Ëž¹ÇÖôEíWR{e=æÇÞÜú`¤!þ89ÏuŽ]¢dÊÉÒzý*»€ŠŠ<'KP¥Î­Ê|Ý:¯^W™ˆR´[gnî7ü°’P׌T®ï½+ËŒJššâ"]¼5¥?Y«$xôl;ðJl´Ö@`-B2`±"È_Myi‘­ ˆµ](ý˜M³8äO~r¤óÈ¢­õ´r´ËÉÈ1è®^3]Žü²a2²„#ÂR²BㄜAh»¯®K~Ë—ì#‡OP´ÓL.8TÏKˆ´vuo—”’÷Aøó*ºÍX¿ÁÅeFÍ/Îf²…^ZXí¹¸šNÒN65zX2Ò´ë3cu–×4 ¥­õKvz ³¡OÄñsn8,gdô¥Ã¥ §o;;½Z Öà¾â%`Ø*<-î“Üà¡O>$oA×¼vFãJ5âùãOôÚAݘx+ÑÇŸßK¯?¿â2ºËV“˜LWˆ|7ÿÆçÞ"¹ùÌûÇ—Oß%ö8ëÉù¾˜EÖ‡Ôš¦«“Û á_¬|e5kêì.VC9{<1ZÜ]:ÇzÐŒ»d5y¸0É¡@(¤MàÝvX×óŽç²ySêÑòY,:2FÂ?¸òÕ; rá°Æ•Eu,—´Sá!´v¼Äøl\×z‡VáaÑ£Kfêmòçà lbÇ¿nLh†M¿êä.5Ç/IOr^íìÀ ðmŸ¨2_ô}1ÇŽ¼Ô7Fãè4KU=éOóº/¹]<œ\êgvñØSýûPÖc”Œ?îokaÊ蘕‚¥¼3þ&ÞmPl¸o=䃡3š7U6>ã]º—G}ÜÒªi&÷1¡»M—GËÈ*ÑàÏ_ µˆƒ­Ô“ê†Óü4ŒéÔÅ\š‹Œj®J.ÇŠ¨™)f=¨Ÿ©4tõêÆ]‰×Ì+³ ûiw¦Å:,žK”anK~ÖÆ-‹UsBÂçcò}‰æ@Ó“¯}¶!VÞU1³¡(~È?YÊóÑÙ;?B<ñ®‰c22ÏÚ:ü%|”÷‚#Kë”ÒŽ‘mà ƒ§oÐ/ôëDÞ;ÖêÍö E9\}i ÿÅRë~èdñb߸•UÌðpbXú÷ª‚‚z~ºE\b••Gò÷Õ]e}‘Ó ^¥ôw:8ñª]LG£:xóBš'VOœºÞ™¸oç2‹àƒ·;õr¿C+ý?îócÞál”d›)Û«´üÒtLÞ¥ß\Y1s‡´|g«ÖÔˆŠû„5Ÿ§_”AŠnãÕ™ž:æÔ'uü¥Ô9ž£Þ]ʱ˜uýö<‹Ñ3‚:|Gôüºÿb3sͤW¤&ÀÀä“‹«åÃó|Öî²pß»,¢d´t6Ýð„·jûc?£.¥Œnþ‹èVIV)÷KÊYj8Aªh[ó]ÜoØ‘ŽnqîËH+=ÕV’[é I™¾½/)QÖ±š‚^׸ØÞÿÒ¾:J_D]ºÔ9è!ÍÿvoØò±Î'{í_ŒòwF5˜vqÓ?~™v(‡ŽÔQ|׆º¬|é6È‘ÿö¡ÃÎ_B¬=$ÃŒçtÀlèU¦Ë¤SÛ †E-vW¾6Ë”}FFcäl5CÕVÒO´TÒ½5·yûp)>‚Í*D𘕋ڎxŸÊ;Ze}Ýâ…Œ 8Ýáw»)a¶è«p¯a¹†]ÍðÃz<0ïöi÷Afû–âH‹ 1N I}"""Žû’ûpÆF•…žàl'õ2§ºxÇïWF¿K×3Ü4×xÙãKY¯SÓóÍO¬tt3r4s²ŒöVjàz ióhÈ( e¤z xÂÁ¬$1ÂG½˜¢âEö}WÚBŠŠw¡]aj/ί#ÌúÞχMï^ÿæP‚øe`}7ˆ²ùÚµ´ºs°üòóõ!²Ãv=c¾mB5{4Ì•“ÈчWw={Âm­TgpG¶ƒÖaxûÑç>éGoßR;“Òs å7]Ñ©Óïµêk»/éØËÝÞþbåBê—K‚’t‘óR¾nº}–†a¢`L úö=³kI×Ckk¬£ã59k€‹ÙÂüáÞÉ–¨YC‹7% »{‘+#ùWøª¬Ô£qy†é~QõØÕë™õ·½H>Ðâ&ÈÌ?´ˆë\PQpøauý”pR*»m‹C8ú¥"ÊZ­• Ê„Ï6ì:à ”“e-¶èö¶ƒVæ˜ðÁÀE¸å£º€ã¢KÚqÑ ¯TZ‚‹{L}êADtgæ›á»'xJ‰=fᲊLzÅ_a‡þ'0¦|IãìkÖ̸öà§h ÖhèlælMÒ?>E!{ÃÅ Ú•t×v³t]š(˜aƒßåú4Iÿl{u„xì\$5kˆ¥ÐËDÙÞG"ãDmʇꉪ‰ö—3åraU3ìeiM¢o¬Ägk>}“×Á£>U\^[²™.'3€œ·ÐÐ×a:ÎÜ­º_˜¥Í;Cô®TÒÖÑ6otþe­2ýü®ù"tÎÌtã’^S ¦¥ß‘Á ˜†AÚs3&5Ї3Ðý -НB£‚&‚_°Ý 4ç¾0dŸ'8gÒsÃ,±ÛL4óß¥êœÆöàåÕöÆàGœh6Jº’çá×ï¬GýJf I­w<åŸ9ŽÖõ£æ¹Ûì­S¿v>øz>ùÉ÷7yP“^œ+6HÉÓ­|㈭+—M|Â)¥sòÆ$Ö‚ûâÎéï6i7§dTó=[WÛ• Vü”))+sK-Lèãâ¥À–ÆŽË•ÚO‡F×Qªx¤H,ÑV.DdHÌå:‹¿BO%”GíóTí.´)î¡æý³]8šçÔ÷.7êžpn½ß3ä/¤¥×Ž=¯¸ø6!<†ã‹¥žÚ×rl´:ÿW§ïÒ[ 9tr–ª[â¾éKߪç%+ŸIáãÑæøN¤72A›äñ‹ÇåÃ!vªM¤9ÎÍàÑ©ˆùô‘¾W!¥§¯õSG. = ܹö]M«íõʦ7E¶ZR¬@3‡ŒßƒœœÍr-$Ë!ÓéŽDiçYØ0VçÊ·œëH1¶3pÍr‚WÛ¯DškÜ*jMåµ\ËÀHíÚ]¿ƒ iõ–«#¶»Ž¯àüݳý~n#Ê|'Š@õDeæH*ùmÏ=v3Ýg_{ùÝ鸳úNšUyþk¦š†ÿÀK endstream endobj 166 0 obj << /Type /ObjStm /N 100 /First 896 /Length 3611 /Filter /FlateDecode >> stream xÚí[ësÛ¸ÿ®¿‚“é˜ Þ@'s3Ž}y::ΫiæF–›=IÔ‰tœÜ_ßß”DÒ’l%¹ö¦íŒE-ÀÅbß»inD’%Üò„g"áÆ&B6.‘޾}¢¥Â}™XÎ%ÎÙÄóÄ ™xxƒ/µ™p B™’ÀÆ W>ƒ.ÑRÚbÆ€¨¢£Ù #‹YŠš'È !¬ÌÀŒÈÔ€cg!Øà€#À'B bÌ0n)Ðà˵1‰‰° ÅÁ©°„èYbI‚žãzÀ%9Ð΀–‰Ì<øÄBÉø„`’l"qî $¡€{)A‹CT©$Táe¢2ÚÓ«DqI"êDI’Á`Ž{K€à@ÃPC¢1—e‰V ,2èÅ€†€ › D¦c,ÍØÄ8â;ó‰Íj²K‡µÇrèË‘E·‰“‚4ìÒP#Oœ5¤XXÊÀ¬ ÊÁ®Þ æó–.‰w䤥,ã@“81Œ$3̲¼Â¼ƒgüqrËÝ“™ƒ—qüYœ Hî&D€8 K™¨À@'X\Òv*#‡Ë\òZ’èi÷´Â!=’Š“‹Á,Ý!wJxàÀ“dŽ0è.15‘ûc´" >ð'r\› ¡+0A®'ìåYk“? ´„lá†É³É+…ƒ{Bö¸|u‘„Í÷î ØƒrZ'÷î%ì&}gÉ1¤ÒF¬Ø$ZP{ƒãƒ]hðÓOör^Ž^åuò!a/$ì$ÿR'¸E»œ|å¸1<Ïì;æÓº‚-(üì8¯ÊËù(§©,N=ËÏŠáýòKò& 4c½øˆm†s¬ f xûÓi RBö ^({Äï( eúî±Ö Ø«ËÓ:ŒŠé¯v¿œŸåó¸gö‘A"X(Eì&ð†@$ÊT" m–€¶ø*aË“2a‡Éý³I1-ªz>¬‹Ïù?2•½œŸ‹q~žß%u­ãeýæÂŠ”\E¦ðÍ]JÎÉiô±Ç~²âãõñãx¹sQ׳ꯌõÅåi:*'ìt2¬ÏÇ㜗W¬¨ªË¼b\›“ƦÞà|ê‘9),|oÍØ+))*=/?³²œL>±ªüT_ÁÌ{³a=º¨òºbú¥œþò¶˜ž•W•M/êÉxG†‘P­I-êrYJ)Ê…á„ßC¸2[¥wïÿžsHÓËñøãm2¸ž¹Oe:Õ(F7áIéS8UïÆ”°)´’Å·¦—]O î[S‚lQSiÆ¢Û-©aC8:›RÁÖK*cäöÚx§xœTgÓtRŒæ%¹OˆË|ºwY±qq:ο²ÓS‹â+|:¬f_v÷t\…"Ê”* vK¹ù±(µL‘ÆÐiÈ”ÊTУð.ñxuuÆÎòÙ¼ü'è&÷çu1SN³Þ8öløk1=ß{wÚÛŸÍÆÅ9¹œî½Þ?ØÛ§¸ýåÊ,µ¨¢èýRb«Uÿi¿]UC¶Ö–Ú›z4TR«”"}PêŒ][Ö§ŸŠóË9ø¢š6j†ùµÌæo‘Ùº8h+Sô‘7¡inS®oÂSÒ¡‡º Lè´¼SÜ£¥Ø-Q¶z'´tîû2£¹–úÖÌèäΙýnjÑŒ’óS¯,*2‹â©T~§ÌBÎ?ûZ_”Ó´œŸ³¾÷8}³÷|Žö µSÝŒÇ Úw#žP.5úG¸0âéå{üÃ_¯œn·ÊÙõÜá*H;Þˆ‡ü‚#ÎxJ´0fGõ¶yënäƒBCCÍyÊ$3´†­¹8^Íâø•¢D2B@”ÿoEFÂÍа|ÐÒÐÝpuèÞ}s¥d‹«!ºšÞ½ w”BÇé<ÞVÐnÖ†á íèíj6Ò”ÜcMÀ8®´ «]J¿J®t7\ £¡ïl±Üé¶Ѧ¸ˆTUà1^£\kà:J§½¥«¡µñ®ÍV<7<鄲M BİAà ­+Mü{™ AƒT®º>h¶ÃG° Xj¤µäж L±°N–íôfÛVV^œ±~µr…¯2H&Ù@šè[Ñû6a>Àä]Çû?†ohúUEø‹a£¬¥‹ô¡–ó4ªjÁ-U…ÙÆmâ¬XÑhœXw±#†ôAUA™+·î6.àp…8føFüÀ³•÷þñÚüÿçßó!Kº–ÓÄŒÜȵ2[Ë{rðÆaiÔË»>)ýºÒx;m®|þZâm'Æ?8ñÆëõÄgBüÆ„Å2$E“5 f¢´«³eòYÉi `’Q çbqŠÔc± oèÿ¥–OPâ 7ã*ƒÿ©+ä6Ú@©ä Á#$•Õx•\Ðg{Ú#½ñê”'˜L‚ 5GaÖ.î#À}qЊó Ú‚8Áy5î±#¼ÂRa¬Z- Kh;‡·¹6[œ $'§ WGY-ÎÝn!'VSÓâ¨Iʨéqˆ;ÂöäâÜ b fuJ?Œ%5ODPI°“žº˜Ã¢WØ@<thDÆkl„`Ÿ¶6Úie(;ˆh§ðÍC[Ò²/Ív¬îég¢Uº%n¼¯4ñ¡è7 ÆJ«{QCn®m«ój4/fu9gƒçà îü|rðöøÍ_žÝÇnŒ‡çU¢"ÆýpÚÑOГzƆ\D?wT#: ¡±Ä±j8{”ç:ƒãIïíqºù¸Ž‹Ñþô|œ'νu>yÃø{×,BŠ‹áœwØ>»ÏØ!û™=`Ùcö„=eGì{Î^°—옽b'ì5{ÃÞ²!;e#vÆrö‰}¢¿‚…¿Ï9;g¬`ÿd¿²1›°)+Y9ÍÙŒývYÖùÙéxœª—ƒ9±Áæ¬bUþ9Ÿ²ªøÂjvÉ>³+ö…}e¿ßÚxP@‘‰öùï&í¼~òèù!´ûì1ÏÖkW Ònx"ënЮܦÝ=®úµ¢¥^ÉÛêåó¢<ëJ¤v‘èáËýç'ï¢DüEò…DÂü ‰ŒÞI"³‹DLJ/ž<„DÇ›L¤²…@™ÿ–`üFqnïÿïCœÎ‡£_ó:xtG‡±Q9.§¸N&Ã&a?–OΆÕ˧áëZè|*/ç!~.¾Î. í0šˆ¢E,Íè‘°m€â¦Ñì·m‘F«ùvøMŠÈó*«1qY³úbžç¬¾*ÛÉ~Ïçe×ònËÞûþÕSXþÕÑ&Ó›EtÒÛ ßãË~œ›mÿV- ç íȳ¹­\O= rœl’LSKô$yoZ‚qÞŒ†KÁ„›ÛâÔ䋯f°6YñKWÄëÑá³GŽHÄWMפ!ï)hýfËÑðAkÝÆ¢uÐ Ð7xÔŠ¹O!¼‘U,«Ò,ú}(8 ßîie§ä¼ÿ·“¯I+ï7šÝÃdôP’Þ·°V¯Ôïþ¶ä¬²†?½D@.*æ£q>*g_çuW¼2õë“'ÇGTMO6WS½ŒWõ£jÛ,^Ó~”dÇ®`;%¢·Ç/ž<}K‚m W£UËïŠÖÛU Uýy„ ´©þ¼ hXŠ¢.Æg9ÖTP‚bÒ¾±2µjÒo—Ã1Ë¿ŒÆÃI–ÐÃÏó!êÃõZ4ΫjMAêמTI¾S¹œžåójTÎómµF씓Þ>úl˜xCßDùJâ´ Ï5^¿‰7÷LÏB~"Ï=‡RW]ò<”žË®˜òrë!M‚þýa•‡‡×­„wä³–żª‰«„D:.$ÒÛ⬾¨Â‹u÷¤|=-è)pÂwç§ß†÷ùÑ}~´kñCƒ†z;pçÝû-sw{ûÝÍî»÷ÚÛþæþS¨Öîþ˜¢ßsõøá¼ÏÓ~x‹õø¹Þ+õ9ºæ¬Þv8ÊZÉ>GrwŽú­MŸŸkÎJNµñ4Ôo*úü\s_.Ûüè;v÷Ýû5¿¿û5ÿõíàáí¯¥’oHmýRÝãGðíÚ¦ÅûÞÒ¯+}~®y¯íx/·­T›Ý‚z”^ѳôKªLËçâô†pXü´8«’ÍËda.QÍ+dZ6ß‹·OÃøãújýÅ»y‹WOï4Æ·Ñ$«5D¯¶©5k^\ÖctU£:z%8ìOª ï9‡Q$i—K ´;¸Û8å>ÀfÙâõÅ—óüsxqº­àfµ^­ëW?§çñôöšÕ|¹ZºÎjzu»µ·p-ÏX²²ÏµåÛ½M¤]m¢º,.ÈÆM¤X┫ÕÙúÕQ@iÖ¬+å ³U@ÕQVÖ·a¬·Ùh“¸be!¶nÙ±Xg±²ßjŸ¬£ ±ÎSøÊ ¼g†¬c¾Î |ež­_÷æëÌ­Ìm3ƒéª¤kÞ±ßn…le…¬k…E™k—­cw©vï6¯mú«†ÙlÎýRå^­¥Ó,]Ã_êÛwÕmÚ9Áu4ä;Y§ah¡ Ù¥ï–q]ƒ¸ý5B¹¥fX»2åÖ¸³[ªÕºÍ2Ù¶ZŠŠºvÚq[³Ž]ªÞª-{µíàÖ˜Á.Í`·˜Á´#À® ³Ô¶1[È´s]…f©z#Ö’ +ÍÕ›¥êõ¶<¢».ÝIú¦­ü…]å›înz©|­Öïí(œN¾¨³wöøÝ$Ö—ä±þßãK}w$ÀXÉ層ôßkÔwéŸÍBmfGŤ¨Äp'”ë«g£L endstream endobj 236 0 obj << /Producer (pdfTeX-1.40.22) /Creator (TeX) /CreationDate (D:20240218205814-05'00') /ModDate (D:20240218205814-05'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) kpathsea version 6.3.4/dev) >> endobj 228 0 obj << /Type /ObjStm /N 8 /First 66 /Length 702 /Filter /FlateDecode >> stream xÚ•UMOã0½÷Wø= ÔNÓ©ªÄò!!(T¸ì"a§ÝÄFvR¶üú;¤é‚àÐz2?¿y3¶‹É€0–vÈ(B;¤$‰Ñ2BYl'BB‡QŒÆÐhd§"4io<îW¼†üÜõIÄï†ìÇh†µy”þ®LYYþ ™Òv8,ÚûîÁT<·Ö¼¬RPÖ:—¦äyÎKPÒôÉaÜ€ Á”'ÖÂÎ4¬!KÑ'È´ªJU`ÀÂÎß=§¼A‡ãGy rig¹L[»yg%¡Ä¨Æ?ô‚K(ÐQ'øÕÕ½ÉdKœc%3XVÚG-ü'Òy^Ç•FE§È0O—ü{ºoËÑL^=\¹]ÕPZÇžO"}ãlÿ¦\B&ŒSd j€ZXµÔ¼À=¾’§r Zɦ”÷\Ê…iÕµ[J$‘Ô‹Ï@ºnQŸšÉ”ÿÁ,sawˆ»R,×gH;ªŸ/¼‚¾TgeÇ#cÔ¼N”zŽçVržÃ«›°q/P®Zò\(íÜó•ÈsìʰY÷Õh´5é©Î6åÊíúâL/æÖ_` -žó*Ë௵nªÜu/ÝŽ÷=JYØUîK)oÃìÈv½z â›Ó§8Ó"ã ”?ЇZÇMuæêšx]ë¤[œZ夡¼©¤Üîæöx?a²ßTéÓÛ!‰ºJ½gù]°Á=iU´³PEáÓ¾Äε‘×ôñÑ·½½Vë`UÚ¥úüqßX_@Š Œæïû ¸Ÿz¤~d]:ô+Ûœ`3÷xàòÆy»y$8æ¸P-{ÁŒ/Q@Ɔ.&¸®J<)ÎÕžZaûð¸O?U)BÜÑD;ï%¹!ã1 ®ªYœ=#û·}ÌIpB&f}hk´Co[ÿþˆåø±È endstream endobj 237 0 obj << /Type /XRef /Index [0 238] /Size 238 /W [1 3 1] /Root 235 0 R /Info 236 0 R /ID [ ] /Length 579 /Filter /FlateDecode >> stream xÚ%”ÉRQE3K°Å§6à@+¢ˆ8âÐ@ h3¨ ´B;€¨þ‚a¸ô;ܨq \»5Âнa„»úí“lNäͬzõ^æ}eföÏÍŠæ–mµÐ^·Ì,9hÉÂW¤®‚y0 æÜÊߢp‹çv€Ì­ãUäfí`'(€] ì ì{Á>P  tƒýà8P‡ÁÐ Ž‚c Í-õÅ9úØÐup ÙÀ9ö'¾&VÑ ÇÁäK¢~…‡ä^ €“`…Üs¢Ap <&Çòé48ž{Ftœ¼¦u¢ó`°¼Öˆ.€‹€mè)Ñ%pl’cÑTÃHú,>žFÀ(’¶+Î[cH¦ &rL i¶V‘U0‰¤÷â€i \A2 ш„#=“ Kô9…A”¢Ù7ÀM$3Ò2²p‰™î#gÁ2F¶„Äp ‡‰©ªŽ¼ î ™‚î!À"’¡è.2@ULFTS,_‹mÄy—ܺ‹aÛØiô¹éÖÛ96žbF Oa©5·ÁŸQ­yVûQ¸jx\îVýUî‚Ø¸°¼p»0º°²’ÛL#žã.ˆk œ-œ¨’[ý}Tép˜úÝšC‘ÃaÂaÂWÂWÂMÂMÂCÂCÂ9Â9*»­oÅ»ÃnßD4âö}ûžºýþQŽò+¢1÷ÕˆÆÝßÎF4áþy»kU÷Mºç¥ˆ¦<+ˆ(LÓbF¶¹yÖxG5ç'“ÓºœÖå´.§W9÷2/x¶üºõðÊû§„‹¸ endstream endobj startxref 152999 %%EOF units-2.23/currency.units0000664000175000017500000003441214564547240015017 0ustar adrianadrian# ISO Currency Codes ATS austriaschilling BEF belgiumfranc CYP cypruspound EEK estoniakroon FIM finlandmarkka FRF francefranc DEM germanymark GRD greecedrachma IEP irelandpunt ITL italylira LVL latvialats LTL lithuanialitas LUF luxembourgfranc MTL maltalira SKK slovakiakoruna SIT sloveniatolar ESP spainpeseta NLG netherlandsguilder PTE portugalescudo CVE capeverdeescudo BGN bulgarialev BAM bosniaconvertiblemark KMF comorosfranc XOF westafricafranc XPF cfpfranc XAF centralafricacfafranc AED uaedirham AFN afghanistanafghani ALL albanialek AMD armeniadram ANG antillesguilder AOA angolakwanza ARS argentinapeso AUD australiadollar AWG arubaflorin AZN azerbaijanmanat BBD barbadosdollar BDT bangladeshtaka BHD bahraindinar BIF burundifranc BMD bermudadollar BND bruneidollar BOB boliviaboliviano BRL brazilreal BSD bahamasdollar BTN bhutanngultrum BWP botswanapula BYN belarusruble BYR oldbelarusruble BZD belizedollar CAD canadadollar CDF drcfranccongolais CHF swissfranc CLP chilepeso CNY chinayuan COP colombiapeso CRC costaricacolon CUP cubapeso CZK czechiakoruna DJF djiboutifranc DKK denmarkkrone DOP dominicanrepublicpeso DZD algeriadinar EGP egyptpound ERN eritreanakfa ETB ethiopiabirr EUR euro FJD fijidollar FKP falklandislandspound GBP ukpound GEL georgialari GHS ghanacedi GIP gibraltarpound GMD gambiadalasi GNF guineafranc GTQ guatemalaquetzal GYD guyanadollar HKD hongkongdollar HNL honduraslempira HRK croatiakuna HTG haitigourde HUF hungaryforint IDR indonesiarupiah ILS israelnewshekel INR indiarupee IQD iraqdinar IRR iranrial ISK icelandkrona JMD jamaicadollar JOD jordandinar JPY japanyen KES kenyaschilling KGS kyrgyzstansom KHR cambodiariel KRW southkoreawon KWD kuwaitdinar KYD caymanislandsdollar KZT kazakhstantenge LAK laokip LBP lebanonpound LKR srilankarupee LRD liberiadollar LSL lesotholoti LYD libyadinar MAD moroccodirham MDL moldovaleu MGA madagascarariary MKD macedoniadenar MMK myanmarkyat MNT mongoliatugrik MOP macaupataca MRO mauritaniaoldouguiya MRU mauritaniaouguiya MUR mauritiusrupee MVR maldiverufiyaa MWK malawikwacha MXN mexicopeso MYR malaysiaringgit MZN mozambiquemetical NAD namibiadollar NGN nigerianaira NIO nicaraguacordobaoro NOK norwaykrone NPR nepalrupee NZD newzealanddollar OMR omanrial PAB panamabalboa PEN perunuevosol PGK papuanewguineakina PHP philippinepeso PKR pakistanrupee PLN polandzloty PYG paraguayguarani QAR qatarrial RON romanianewlei RSD serbiadinar RUB russiaruble RWF rwandafranc SAR saudiarabiariyal SBD solomonislandsdollar SCR seychellesrupee SDG sudanpound SEK swedenkrona SGD singaporedollar SHP sainthelenapound SOS somaliaschilling SRD surinamedollar SSP southsudanpound STN saotome&principedobra SYP syriapound SZL swazilandlilangeni THB thailandbaht TJS tajikistansomoni TMT turkmenistanmanat TND tunisiadinar TOP tongapa'anga TRY turkeylira TTD trinidadandtobagodollar TWD taiwandollar TZS tanzaniashilling UAH ukrainehryvnia UGX ugandaschilling USD US$ UYU uruguaypeso UZS uzbekistansum VES venezuelabolivarsoberano VND vietnamdong VUV vanuatuvatu WST samoatala XCD eastcaribbeandollar XDR specialdrawingrights YER yemenrial ZAR southafricarand ZMW zambiakwacha ZWL zimbabwedollar FOK faroeislandskróna GGP guernseypound IMP isleofmanpound JEP jerseypound KID kiribatidollar TVD tuvaludollar # Currency exchange rates source !message Currency exchange rates from exchangerate-api.com (USD base) on 2024-02-18 austriaschilling 1|13.7603 euro belgiumfranc 1|40.3399 euro cypruspound 1|0.585274 euro estoniakroon 1|15.6466 euro # Equal to 1|8 germanymark finlandmarkka 1|5.94573 euro francefranc 1|6.55957 euro germanymark 1|1.95583 euro greecedrachma 1|340.75 euro irelandpunt 1|0.787564 euro italylira 1|1936.27 euro latvialats 1|0.702804 euro lithuanialitas 1|3.4528 euro luxembourgfranc 1|40.3399 euro maltalira 1|0.4293 euro slovakiakoruna 1|30.1260 euro sloveniatolar 1|239.640 euro spainpeseta 1|166.386 euro netherlandsguilder 1|2.20371 euro portugalescudo 1|200.482 euro capeverdeescudo 1|102.32146 USD bulgarialev 1|1.81495 USD bosniaconvertiblemark 1|1.814931 USD comorosfranc 1|456.526173 USD westafricafranc 1|655.957 euro cfpfranc 1|119.33 euro centralafricacfafranc 1|608.701564 USD uaedirham 1|3.6725 USD afghanistanafghani 1|73.656876 USD albanialek 1|96.383995 USD armeniadram 1|405.371152 USD antillesguilder 1|1.79 USD angolakwanza 1|834.493035 USD argentinapeso 1|835.05 USD australiadollar 1|1.530787 USD arubaflorin 1|1.79 USD azerbaijanmanat 1|1.700074 USD barbadosdollar 1|2 USD bangladeshtaka 1|109.733401 USD bahraindinar 1|0.376 USD burundifranc 1|2848.719924 USD bermudadollar 1|1 USD bruneidollar 1|1.346678 USD boliviaboliviano 1|6.914341 USD brazilreal 1|4.969881 USD bahamasdollar 1|1 USD bhutanngultrum 1|83.047418 USD botswanapula 1|13.70455 USD belarusruble 1|3.263231 USD oldbelarusruble 1|10000 BYN belizedollar 1|2 USD canadadollar 1|1.348296 USD drcfranccongolais 1|2734.755348 USD swissfranc 1|0.88091 USD chilepeso 1|970.009669 USD chinayuan 1|7.20772 USD colombiapeso 1|3902.397252 USD costaricacolon 1|515.061411 USD cubapeso 1|24 USD czechiakoruna 1|23.6119 USD djiboutifranc 1|177.721 USD denmarkkrone 1|6.920726 USD dominicanrepublicpeso 1|58.466527 USD algeriadinar 1|134.550108 USD egyptpound 1|30.900171 USD eritreanakfa 1|15 USD ethiopiabirr 1|56.698745 USD euro 1|0.927918 USD fijidollar 1|2.245823 USD falklandislandspound 1|0.793301 USD ukpound 1|0.79329 USD georgialari 1|2.640683 USD ghanacedi 1|12.494914 USD gibraltarpound 1|0.793301 USD gambiadalasi 1|67.296088 USD guineafranc 1|8559.047472 USD guatemalaquetzal 1|7.798364 USD guyanadollar 1|209.358835 USD hongkongdollar 1|7.821361 USD honduraslempira 1|24.642038 USD croatiakuna 1|6.991711 USD haitigourde 1|132.095521 USD hungaryforint 1|361.305161 USD indonesiarupiah 1|15646.731916 USD israelnewshekel 1|3.608087 USD indiarupee 1|83.047432 USD iraqdinar 1|1309.627139 USD iranrial 1|42008.843651 USD icelandkrona 1|138.489372 USD jamaicadollar 1|156.661345 USD jordandinar 1|0.709 USD japanyen 1|150.199114 USD kenyaschilling 1|146.902355 USD kyrgyzstansom 1|89.452226 USD cambodiariel 1|4101.202091 USD southkoreawon 1|1332.971611 USD kuwaitdinar 1|0.307917 USD caymanislandsdollar 1|0.833333 USD kazakhstantenge 1|450.042707 USD laokip 1|20644.611968 USD lebanonpound 1|15000 USD srilankarupee 1|312.293776 USD liberiadollar 1|191.965946 USD lesotholoti 1|18.880532 USD libyadinar 1|4.84801 USD moroccodirham 1|10.064941 USD moldovaleu 1|17.820146 USD madagascarariary 1|4537.101842 USD macedoniadenar 1|57.321607 USD myanmarkyat 1|2094.525805 USD mongoliatugrik 1|3417.236499 USD macaupataca 1|8.056002 USD mauritaniaoldouguiya 1|10 MRU mauritaniaouguiya 1|39.552376 USD mauritiusrupee 1|46.81275 USD maldiverufiyaa 1|15.425573 USD malawikwacha 1|1684.468367 USD mexicopeso 1|17.056723 USD malaysiaringgit 1|4.780422 USD mozambiquemetical 1|63.844874 USD namibiadollar 1|18.880532 USD nigerianaira 1|1505.315289 USD nicaraguacordobaoro 1|36.75264 USD norwaykrone 1|10.518312 USD nepalrupee 1|132.875868 USD newzealanddollar 1|1.631571 USD omanrial 1|0.384497 USD panamabalboa 1|1 USD perunuevosol 1|3.843057 USD papuanewguineakina 1|3.787609 USD philippinepeso 1|55.944862 USD pakistanrupee 1|279.287134 USD polandzloty 1|4.024592 USD paraguayguarani 1|7298.359344 USD qatarrial 1|3.64 USD romanianewlei 1|4.62094 USD serbiadinar 1|108.77002 USD russiaruble 1|92.124682 USD rwandafranc 1|1272.20422 USD saudiarabiariyal 1|3.75 USD solomonislandsdollar 1|8.524333 USD seychellesrupee 1|13.695244 USD sudanpound 1|458.444066 USD swedenkrona 1|10.436076 USD singaporedollar 1|1.346679 USD sainthelenapound 1|0.793301 USD somaliaschilling 1|571.016202 USD surinamedollar 1|36.374469 USD southsudanpound 1|1196.079061 USD saotome&principedobra 1|22.735009 USD syriapound 1|12911.027088 USD swazilandlilangeni 1|18.880532 USD thailandbaht 1|36.003485 USD tajikistansomoni 1|10.943604 USD turkmenistanmanat 1|3.498274 USD tunisiadinar 1|3.136987 USD tongapa'anga 1|2.336437 USD turkeylira 1|30.867129 USD trinidadandtobagodollar 1|6.766115 USD taiwandollar 1|31.327633 USD tanzaniashilling 1|2541.150426 USD ukrainehryvnia 1|37.960827 USD ugandaschilling 1|3891.664634 USD US$ ! # Base unit, the primitive unit of currency uruguaypeso 1|39.090863 USD uzbekistansum 1|12517.91071 USD venezuelabolivarsoberano 1|36.3358 USD vietnamdong 1|24526.378093 USD vanuatuvatu 1|120.592113 USD samoatala 1|2.727298 USD eastcaribbeandollar 1|2.7 USD specialdrawingrights 1|0.754888 USD yemenrial 1|250.227651 USD southafricarand 1|18.880541 USD zambiakwacha 1|25.057128 USD zimbabwedollar 1|12390.655539 USD faroeislandskróna DKK guernseypound GBP isleofmanpound GBP jerseypound GBP kiribatidollar AUD tuvaludollar AUD bitcoin 51884.75 US$ # From services.packetizer.com/btc # Precious metals prices from Packetizer (services.packetizer.com/spotprices) silverprice 23.42 US$/troyounce goldprice 2013.78 US$/troyounce platinumprice 915.15 US$/troyounce units-2.23/cpi.units0000664000175000017500000012665214564470112013741 0ustar adrianadrian!message Consumer price index data from US BLS, 2024-02-18 UScpi[1] noerror \ 1913.0833333333333 9.8 \ 1913.1666666666667 9.8 \ 1913.25 9.8 \ 1913.3333333333333 9.8 \ 1913.4166666666667 9.7 \ 1913.5 9.8 \ 1913.5833333333333 9.9 \ 1913.6666666666667 9.9 \ 1913.75 10.0 \ 1913.8333333333333 10.0 \ 1913.9166666666667 10.1 \ 1914.0 10.0 \ 1914.0833333333333 10.0 \ 1914.1666666666667 9.9 \ 1914.25 9.9 \ 1914.3333333333333 9.8 \ 1914.4166666666667 9.9 \ 1914.5 9.9 \ 1914.5833333333333 10.0 \ 1914.6666666666667 10.2 \ 1914.75 10.2 \ 1914.8333333333333 10.1 \ 1914.9166666666667 10.2 \ 1915.0 10.1 \ 1915.0833333333333 10.1 \ 1915.1666666666667 10.0 \ 1915.25 9.9 \ 1915.3333333333333 10.0 \ 1915.4166666666667 10.1 \ 1915.5 10.1 \ 1915.5833333333333 10.1 \ 1915.6666666666667 10.1 \ 1915.75 10.1 \ 1915.8333333333333 10.2 \ 1915.9166666666667 10.3 \ 1916.0 10.3 \ 1916.0833333333333 10.4 \ 1916.1666666666667 10.4 \ 1916.25 10.5 \ 1916.3333333333333 10.6 \ 1916.4166666666667 10.7 \ 1916.5 10.8 \ 1916.5833333333333 10.8 \ 1916.6666666666667 10.9 \ 1916.75 11.1 \ 1916.8333333333333 11.3 \ 1916.9166666666667 11.5 \ 1917.0 11.6 \ 1917.0833333333333 11.7 \ 1917.1666666666667 12.0 \ 1917.25 12.0 \ 1917.3333333333333 12.6 \ 1917.4166666666667 12.8 \ 1917.5 13.0 \ 1917.5833333333333 12.8 \ 1917.6666666666667 13.0 \ 1917.75 13.3 \ 1917.8333333333333 13.5 \ 1917.9166666666667 13.5 \ 1918.0 13.7 \ 1918.0833333333333 14.0 \ 1918.1666666666667 14.1 \ 1918.25 14.0 \ 1918.3333333333333 14.2 \ 1918.4166666666667 14.5 \ 1918.5 14.7 \ 1918.5833333333333 15.1 \ 1918.6666666666667 15.4 \ 1918.75 15.7 \ 1918.8333333333333 16.0 \ 1918.9166666666667 16.3 \ 1919.0 16.5 \ 1919.0833333333333 16.5 \ 1919.1666666666667 16.2 \ 1919.25 16.4 \ 1919.3333333333333 16.7 \ 1919.4166666666667 16.9 \ 1919.5 16.9 \ 1919.5833333333333 17.4 \ 1919.6666666666667 17.7 \ 1919.75 17.8 \ 1919.8333333333333 18.1 \ 1919.9166666666667 18.5 \ 1920.0 18.9 \ 1920.0833333333333 19.3 \ 1920.1666666666667 19.5 \ 1920.25 19.7 \ 1920.3333333333333 20.3 \ 1920.4166666666667 20.6 \ 1920.5 20.9 \ 1920.5833333333333 20.8 \ 1920.6666666666667 20.3 \ 1920.75 20.0 \ 1920.8333333333333 19.9 \ 1920.9166666666667 19.8 \ 1921.0 19.4 \ 1921.0833333333333 19.0 \ 1921.1666666666667 18.4 \ 1921.25 18.3 \ 1921.3333333333333 18.1 \ 1921.4166666666667 17.7 \ 1921.5 17.6 \ 1921.5833333333333 17.7 \ 1921.6666666666667 17.7 \ 1921.75 17.5 \ 1921.8333333333333 17.5 \ 1921.9166666666667 17.4 \ 1922.0 17.3 \ 1922.0833333333333 16.9 \ 1922.1666666666667 16.9 \ 1922.25 16.7 \ 1922.3333333333333 16.7 \ 1922.4166666666667 16.7 \ 1922.5 16.7 \ 1922.5833333333333 16.8 \ 1922.6666666666667 16.6 \ 1922.75 16.6 \ 1922.8333333333333 16.7 \ 1922.9166666666667 16.8 \ 1923.0 16.9 \ 1923.0833333333333 16.8 \ 1923.1666666666667 16.8 \ 1923.25 16.8 \ 1923.3333333333333 16.9 \ 1923.4166666666667 16.9 \ 1923.5 17.0 \ 1923.5833333333333 17.2 \ 1923.6666666666667 17.1 \ 1923.75 17.2 \ 1923.8333333333333 17.3 \ 1923.9166666666667 17.3 \ 1924.0 17.3 \ 1924.0833333333333 17.3 \ 1924.1666666666667 17.2 \ 1924.25 17.1 \ 1924.3333333333333 17.0 \ 1924.4166666666667 17.0 \ 1924.5 17.0 \ 1924.5833333333333 17.1 \ 1924.6666666666667 17.0 \ 1924.75 17.1 \ 1924.8333333333333 17.2 \ 1924.9166666666667 17.2 \ 1925.0 17.3 \ 1925.0833333333333 17.3 \ 1925.1666666666667 17.2 \ 1925.25 17.3 \ 1925.3333333333333 17.2 \ 1925.4166666666667 17.3 \ 1925.5 17.5 \ 1925.5833333333333 17.7 \ 1925.6666666666667 17.7 \ 1925.75 17.7 \ 1925.8333333333333 17.7 \ 1925.9166666666667 18.0 \ 1926.0 17.9 \ 1926.0833333333333 17.9 \ 1926.1666666666667 17.9 \ 1926.25 17.8 \ 1926.3333333333333 17.9 \ 1926.4166666666667 17.8 \ 1926.5 17.7 \ 1926.5833333333333 17.5 \ 1926.6666666666667 17.4 \ 1926.75 17.5 \ 1926.8333333333333 17.6 \ 1926.9166666666667 17.7 \ 1927.0 17.7 \ 1927.0833333333333 17.5 \ 1927.1666666666667 17.4 \ 1927.25 17.3 \ 1927.3333333333333 17.3 \ 1927.4166666666667 17.4 \ 1927.5 17.6 \ 1927.5833333333333 17.3 \ 1927.6666666666667 17.2 \ 1927.75 17.3 \ 1927.8333333333333 17.4 \ 1927.9166666666667 17.3 \ 1928.0 17.3 \ 1928.0833333333333 17.3 \ 1928.1666666666667 17.1 \ 1928.25 17.1 \ 1928.3333333333333 17.1 \ 1928.4166666666667 17.2 \ 1928.5 17.1 \ 1928.5833333333333 17.1 \ 1928.6666666666667 17.1 \ 1928.75 17.3 \ 1928.8333333333333 17.2 \ 1928.9166666666667 17.2 \ 1929.0 17.1 \ 1929.0833333333333 17.1 \ 1929.1666666666667 17.1 \ 1929.25 17.0 \ 1929.3333333333333 16.9 \ 1929.4166666666667 17.0 \ 1929.5 17.1 \ 1929.5833333333333 17.3 \ 1929.6666666666667 17.3 \ 1929.75 17.3 \ 1929.8333333333333 17.3 \ 1929.9166666666667 17.3 \ 1930.0 17.2 \ 1930.0833333333333 17.1 \ 1930.1666666666667 17.0 \ 1930.25 16.9 \ 1930.3333333333333 17.0 \ 1930.4166666666667 16.9 \ 1930.5 16.8 \ 1930.5833333333333 16.6 \ 1930.6666666666667 16.5 \ 1930.75 16.6 \ 1930.8333333333333 16.5 \ 1930.9166666666667 16.4 \ 1931.0 16.1 \ 1931.0833333333333 15.9 \ 1931.1666666666667 15.7 \ 1931.25 15.6 \ 1931.3333333333333 15.5 \ 1931.4166666666667 15.3 \ 1931.5 15.1 \ 1931.5833333333333 15.1 \ 1931.6666666666667 15.1 \ 1931.75 15.0 \ 1931.8333333333333 14.9 \ 1931.9166666666667 14.7 \ 1932.0 14.6 \ 1932.0833333333333 14.3 \ 1932.1666666666667 14.1 \ 1932.25 14.0 \ 1932.3333333333333 13.9 \ 1932.4166666666667 13.7 \ 1932.5 13.6 \ 1932.5833333333333 13.6 \ 1932.6666666666667 13.5 \ 1932.75 13.4 \ 1932.8333333333333 13.3 \ 1932.9166666666667 13.2 \ 1933.0 13.1 \ 1933.0833333333333 12.9 \ 1933.1666666666667 12.7 \ 1933.25 12.6 \ 1933.3333333333333 12.6 \ 1933.4166666666667 12.6 \ 1933.5 12.7 \ 1933.5833333333333 13.1 \ 1933.6666666666667 13.2 \ 1933.75 13.2 \ 1933.8333333333333 13.2 \ 1933.9166666666667 13.2 \ 1934.0 13.2 \ 1934.0833333333333 13.2 \ 1934.1666666666667 13.3 \ 1934.25 13.3 \ 1934.3333333333333 13.3 \ 1934.4166666666667 13.3 \ 1934.5 13.4 \ 1934.5833333333333 13.4 \ 1934.6666666666667 13.4 \ 1934.75 13.6 \ 1934.8333333333333 13.5 \ 1934.9166666666667 13.5 \ 1935.0 13.4 \ 1935.0833333333333 13.6 \ 1935.1666666666667 13.7 \ 1935.25 13.7 \ 1935.3333333333333 13.8 \ 1935.4166666666667 13.8 \ 1935.5 13.7 \ 1935.5833333333333 13.7 \ 1935.6666666666667 13.7 \ 1935.75 13.7 \ 1935.8333333333333 13.7 \ 1935.9166666666667 13.8 \ 1936.0 13.8 \ 1936.0833333333333 13.8 \ 1936.1666666666667 13.8 \ 1936.25 13.7 \ 1936.3333333333333 13.7 \ 1936.4166666666667 13.7 \ 1936.5 13.8 \ 1936.5833333333333 13.9 \ 1936.6666666666667 14.0 \ 1936.75 14.0 \ 1936.8333333333333 14.0 \ 1936.9166666666667 14.0 \ 1937.0 14.0 \ 1937.0833333333333 14.1 \ 1937.1666666666667 14.1 \ 1937.25 14.2 \ 1937.3333333333333 14.3 \ 1937.4166666666667 14.4 \ 1937.5 14.4 \ 1937.5833333333333 14.5 \ 1937.6666666666667 14.5 \ 1937.75 14.6 \ 1937.8333333333333 14.6 \ 1937.9166666666667 14.5 \ 1938.0 14.4 \ 1938.0833333333333 14.2 \ 1938.1666666666667 14.1 \ 1938.25 14.1 \ 1938.3333333333333 14.2 \ 1938.4166666666667 14.1 \ 1938.5 14.1 \ 1938.5833333333333 14.1 \ 1938.6666666666667 14.1 \ 1938.75 14.1 \ 1938.8333333333333 14.0 \ 1938.9166666666667 14.0 \ 1939.0 14.0 \ 1939.0833333333333 14.0 \ 1939.1666666666667 13.9 \ 1939.25 13.9 \ 1939.3333333333333 13.8 \ 1939.4166666666667 13.8 \ 1939.5 13.8 \ 1939.5833333333333 13.8 \ 1939.6666666666667 13.8 \ 1939.75 14.1 \ 1939.8333333333333 14.0 \ 1939.9166666666667 14.0 \ 1940.0 14.0 \ 1940.0833333333333 13.9 \ 1940.1666666666667 14.0 \ 1940.25 14.0 \ 1940.3333333333333 14.0 \ 1940.4166666666667 14.0 \ 1940.5 14.1 \ 1940.5833333333333 14.0 \ 1940.6666666666667 14.0 \ 1940.75 14.0 \ 1940.8333333333333 14.0 \ 1940.9166666666667 14.0 \ 1941.0 14.1 \ 1941.0833333333333 14.1 \ 1941.1666666666667 14.1 \ 1941.25 14.2 \ 1941.3333333333333 14.3 \ 1941.4166666666667 14.4 \ 1941.5 14.7 \ 1941.5833333333333 14.7 \ 1941.6666666666667 14.9 \ 1941.75 15.1 \ 1941.8333333333333 15.3 \ 1941.9166666666667 15.4 \ 1942.0 15.5 \ 1942.0833333333333 15.7 \ 1942.1666666666667 15.8 \ 1942.25 16.0 \ 1942.3333333333333 16.1 \ 1942.4166666666667 16.3 \ 1942.5 16.3 \ 1942.5833333333333 16.4 \ 1942.6666666666667 16.5 \ 1942.75 16.5 \ 1942.8333333333333 16.7 \ 1942.9166666666667 16.8 \ 1943.0 16.9 \ 1943.0833333333333 16.9 \ 1943.1666666666667 16.9 \ 1943.25 17.2 \ 1943.3333333333333 17.4 \ 1943.4166666666667 17.5 \ 1943.5 17.5 \ 1943.5833333333333 17.4 \ 1943.6666666666667 17.3 \ 1943.75 17.4 \ 1943.8333333333333 17.4 \ 1943.9166666666667 17.4 \ 1944.0 17.4 \ 1944.0833333333333 17.4 \ 1944.1666666666667 17.4 \ 1944.25 17.4 \ 1944.3333333333333 17.5 \ 1944.4166666666667 17.5 \ 1944.5 17.6 \ 1944.5833333333333 17.7 \ 1944.6666666666667 17.7 \ 1944.75 17.7 \ 1944.8333333333333 17.7 \ 1944.9166666666667 17.7 \ 1945.0 17.8 \ 1945.0833333333333 17.8 \ 1945.1666666666667 17.8 \ 1945.25 17.8 \ 1945.3333333333333 17.8 \ 1945.4166666666667 17.9 \ 1945.5 18.1 \ 1945.5833333333333 18.1 \ 1945.6666666666667 18.1 \ 1945.75 18.1 \ 1945.8333333333333 18.1 \ 1945.9166666666667 18.1 \ 1946.0 18.2 \ 1946.0833333333333 18.2 \ 1946.1666666666667 18.1 \ 1946.25 18.3 \ 1946.3333333333333 18.4 \ 1946.4166666666667 18.5 \ 1946.5 18.7 \ 1946.5833333333333 19.8 \ 1946.6666666666667 20.2 \ 1946.75 20.4 \ 1946.8333333333333 20.8 \ 1946.9166666666667 21.3 \ 1947.0 21.5 \ 1947.0833333333333 21.5 \ 1947.1666666666667 21.5 \ 1947.25 21.9 \ 1947.3333333333333 21.9 \ 1947.4166666666667 21.9 \ 1947.5 22.0 \ 1947.5833333333333 22.2 \ 1947.6666666666667 22.5 \ 1947.75 23.0 \ 1947.8333333333333 23.0 \ 1947.9166666666667 23.1 \ 1948.0 23.4 \ 1948.0833333333333 23.7 \ 1948.1666666666667 23.5 \ 1948.25 23.4 \ 1948.3333333333333 23.8 \ 1948.4166666666667 23.9 \ 1948.5 24.1 \ 1948.5833333333333 24.4 \ 1948.6666666666667 24.5 \ 1948.75 24.5 \ 1948.8333333333333 24.4 \ 1948.9166666666667 24.2 \ 1949.0 24.1 \ 1949.0833333333333 24.0 \ 1949.1666666666667 23.8 \ 1949.25 23.8 \ 1949.3333333333333 23.9 \ 1949.4166666666667 23.8 \ 1949.5 23.9 \ 1949.5833333333333 23.7 \ 1949.6666666666667 23.8 \ 1949.75 23.9 \ 1949.8333333333333 23.7 \ 1949.9166666666667 23.8 \ 1950.0 23.6 \ 1950.0833333333333 23.5 \ 1950.1666666666667 23.5 \ 1950.25 23.6 \ 1950.3333333333333 23.6 \ 1950.4166666666667 23.7 \ 1950.5 23.8 \ 1950.5833333333333 24.1 \ 1950.6666666666667 24.3 \ 1950.75 24.4 \ 1950.8333333333333 24.6 \ 1950.9166666666667 24.7 \ 1951.0 25.0 \ 1951.0833333333333 25.4 \ 1951.1666666666667 25.7 \ 1951.25 25.8 \ 1951.3333333333333 25.8 \ 1951.4166666666667 25.9 \ 1951.5 25.9 \ 1951.5833333333333 25.9 \ 1951.6666666666667 25.9 \ 1951.75 26.1 \ 1951.8333333333333 26.2 \ 1951.9166666666667 26.4 \ 1952.0 26.5 \ 1952.0833333333333 26.5 \ 1952.1666666666667 26.3 \ 1952.25 26.3 \ 1952.3333333333333 26.4 \ 1952.4166666666667 26.4 \ 1952.5 26.5 \ 1952.5833333333333 26.7 \ 1952.6666666666667 26.7 \ 1952.75 26.7 \ 1952.8333333333333 26.7 \ 1952.9166666666667 26.7 \ 1953.0 26.7 \ 1953.0833333333333 26.6 \ 1953.1666666666667 26.5 \ 1953.25 26.6 \ 1953.3333333333333 26.6 \ 1953.4166666666667 26.7 \ 1953.5 26.8 \ 1953.5833333333333 26.8 \ 1953.6666666666667 26.9 \ 1953.75 26.9 \ 1953.8333333333333 27.0 \ 1953.9166666666667 26.9 \ 1954.0 26.9 \ 1954.0833333333333 26.9 \ 1954.1666666666667 26.9 \ 1954.25 26.9 \ 1954.3333333333333 26.8 \ 1954.4166666666667 26.9 \ 1954.5 26.9 \ 1954.5833333333333 26.9 \ 1954.6666666666667 26.9 \ 1954.75 26.8 \ 1954.8333333333333 26.8 \ 1954.9166666666667 26.8 \ 1955.0 26.7 \ 1955.0833333333333 26.7 \ 1955.1666666666667 26.7 \ 1955.25 26.7 \ 1955.3333333333333 26.7 \ 1955.4166666666667 26.7 \ 1955.5 26.7 \ 1955.5833333333333 26.8 \ 1955.6666666666667 26.8 \ 1955.75 26.9 \ 1955.8333333333333 26.9 \ 1955.9166666666667 26.9 \ 1956.0 26.8 \ 1956.0833333333333 26.8 \ 1956.1666666666667 26.8 \ 1956.25 26.8 \ 1956.3333333333333 26.9 \ 1956.4166666666667 27.0 \ 1956.5 27.2 \ 1956.5833333333333 27.4 \ 1956.6666666666667 27.3 \ 1956.75 27.4 \ 1956.8333333333333 27.5 \ 1956.9166666666667 27.5 \ 1957.0 27.6 \ 1957.0833333333333 27.6 \ 1957.1666666666667 27.7 \ 1957.25 27.8 \ 1957.3333333333333 27.9 \ 1957.4166666666667 28.0 \ 1957.5 28.1 \ 1957.5833333333333 28.3 \ 1957.6666666666667 28.3 \ 1957.75 28.3 \ 1957.8333333333333 28.3 \ 1957.9166666666667 28.4 \ 1958.0 28.4 \ 1958.0833333333333 28.6 \ 1958.1666666666667 28.6 \ 1958.25 28.8 \ 1958.3333333333333 28.9 \ 1958.4166666666667 28.9 \ 1958.5 28.9 \ 1958.5833333333333 29.0 \ 1958.6666666666667 28.9 \ 1958.75 28.9 \ 1958.8333333333333 28.9 \ 1958.9166666666667 29.0 \ 1959.0 28.9 \ 1959.0833333333333 29.0 \ 1959.1666666666667 28.9 \ 1959.25 28.9 \ 1959.3333333333333 29.0 \ 1959.4166666666667 29.0 \ 1959.5 29.1 \ 1959.5833333333333 29.2 \ 1959.6666666666667 29.2 \ 1959.75 29.3 \ 1959.8333333333333 29.4 \ 1959.9166666666667 29.4 \ 1960.0 29.4 \ 1960.0833333333333 29.3 \ 1960.1666666666667 29.4 \ 1960.25 29.4 \ 1960.3333333333333 29.5 \ 1960.4166666666667 29.5 \ 1960.5 29.6 \ 1960.5833333333333 29.6 \ 1960.6666666666667 29.6 \ 1960.75 29.6 \ 1960.8333333333333 29.8 \ 1960.9166666666667 29.8 \ 1961.0 29.8 \ 1961.0833333333333 29.8 \ 1961.1666666666667 29.8 \ 1961.25 29.8 \ 1961.3333333333333 29.8 \ 1961.4166666666667 29.8 \ 1961.5 29.8 \ 1961.5833333333333 30.0 \ 1961.6666666666667 29.9 \ 1961.75 30.0 \ 1961.8333333333333 30.0 \ 1961.9166666666667 30.0 \ 1962.0 30.0 \ 1962.0833333333333 30.0 \ 1962.1666666666667 30.1 \ 1962.25 30.1 \ 1962.3333333333333 30.2 \ 1962.4166666666667 30.2 \ 1962.5 30.2 \ 1962.5833333333333 30.3 \ 1962.6666666666667 30.3 \ 1962.75 30.4 \ 1962.8333333333333 30.4 \ 1962.9166666666667 30.4 \ 1963.0 30.4 \ 1963.0833333333333 30.4 \ 1963.1666666666667 30.4 \ 1963.25 30.5 \ 1963.3333333333333 30.5 \ 1963.4166666666667 30.5 \ 1963.5 30.6 \ 1963.5833333333333 30.7 \ 1963.6666666666667 30.7 \ 1963.75 30.7 \ 1963.8333333333333 30.8 \ 1963.9166666666667 30.8 \ 1964.0 30.9 \ 1964.0833333333333 30.9 \ 1964.1666666666667 30.9 \ 1964.25 30.9 \ 1964.3333333333333 30.9 \ 1964.4166666666667 30.9 \ 1964.5 31.0 \ 1964.5833333333333 31.1 \ 1964.6666666666667 31.0 \ 1964.75 31.1 \ 1964.8333333333333 31.1 \ 1964.9166666666667 31.2 \ 1965.0 31.2 \ 1965.0833333333333 31.2 \ 1965.1666666666667 31.2 \ 1965.25 31.3 \ 1965.3333333333333 31.4 \ 1965.4166666666667 31.4 \ 1965.5 31.6 \ 1965.5833333333333 31.6 \ 1965.6666666666667 31.6 \ 1965.75 31.6 \ 1965.8333333333333 31.7 \ 1965.9166666666667 31.7 \ 1966.0 31.8 \ 1966.0833333333333 31.8 \ 1966.1666666666667 32.0 \ 1966.25 32.1 \ 1966.3333333333333 32.3 \ 1966.4166666666667 32.3 \ 1966.5 32.4 \ 1966.5833333333333 32.5 \ 1966.6666666666667 32.7 \ 1966.75 32.7 \ 1966.8333333333333 32.9 \ 1966.9166666666667 32.9 \ 1967.0 32.9 \ 1967.0833333333333 32.9 \ 1967.1666666666667 32.9 \ 1967.25 33.0 \ 1967.3333333333333 33.1 \ 1967.4166666666667 33.2 \ 1967.5 33.3 \ 1967.5833333333333 33.4 \ 1967.6666666666667 33.5 \ 1967.75 33.6 \ 1967.8333333333333 33.7 \ 1967.9166666666667 33.8 \ 1968.0 33.9 \ 1968.0833333333333 34.1 \ 1968.1666666666667 34.2 \ 1968.25 34.3 \ 1968.3333333333333 34.4 \ 1968.4166666666667 34.5 \ 1968.5 34.7 \ 1968.5833333333333 34.9 \ 1968.6666666666667 35.0 \ 1968.75 35.1 \ 1968.8333333333333 35.3 \ 1968.9166666666667 35.4 \ 1969.0 35.5 \ 1969.0833333333333 35.6 \ 1969.1666666666667 35.8 \ 1969.25 36.1 \ 1969.3333333333333 36.3 \ 1969.4166666666667 36.4 \ 1969.5 36.6 \ 1969.5833333333333 36.8 \ 1969.6666666666667 37.0 \ 1969.75 37.1 \ 1969.8333333333333 37.3 \ 1969.9166666666667 37.5 \ 1970.0 37.7 \ 1970.0833333333333 37.8 \ 1970.1666666666667 38.0 \ 1970.25 38.2 \ 1970.3333333333333 38.5 \ 1970.4166666666667 38.6 \ 1970.5 38.8 \ 1970.5833333333333 39.0 \ 1970.6666666666667 39.0 \ 1970.75 39.2 \ 1970.8333333333333 39.4 \ 1970.9166666666667 39.6 \ 1971.0 39.8 \ 1971.0833333333333 39.8 \ 1971.1666666666667 39.9 \ 1971.25 40.0 \ 1971.3333333333333 40.1 \ 1971.4166666666667 40.3 \ 1971.5 40.6 \ 1971.5833333333333 40.7 \ 1971.6666666666667 40.8 \ 1971.75 40.8 \ 1971.8333333333333 40.9 \ 1971.9166666666667 40.9 \ 1972.0 41.1 \ 1972.0833333333333 41.1 \ 1972.1666666666667 41.3 \ 1972.25 41.4 \ 1972.3333333333333 41.5 \ 1972.4166666666667 41.6 \ 1972.5 41.7 \ 1972.5833333333333 41.9 \ 1972.6666666666667 42.0 \ 1972.75 42.1 \ 1972.8333333333333 42.3 \ 1972.9166666666667 42.4 \ 1973.0 42.5 \ 1973.0833333333333 42.6 \ 1973.1666666666667 42.9 \ 1973.25 43.3 \ 1973.3333333333333 43.6 \ 1973.4166666666667 43.9 \ 1973.5 44.2 \ 1973.5833333333333 44.3 \ 1973.6666666666667 45.1 \ 1973.75 45.2 \ 1973.8333333333333 45.6 \ 1973.9166666666667 45.9 \ 1974.0 46.2 \ 1974.0833333333333 46.6 \ 1974.1666666666667 47.2 \ 1974.25 47.8 \ 1974.3333333333333 48.0 \ 1974.4166666666667 48.6 \ 1974.5 49.0 \ 1974.5833333333333 49.4 \ 1974.6666666666667 50.0 \ 1974.75 50.6 \ 1974.8333333333333 51.1 \ 1974.9166666666667 51.5 \ 1975.0 51.9 \ 1975.0833333333333 52.1 \ 1975.1666666666667 52.5 \ 1975.25 52.7 \ 1975.3333333333333 52.9 \ 1975.4166666666667 53.2 \ 1975.5 53.6 \ 1975.5833333333333 54.2 \ 1975.6666666666667 54.3 \ 1975.75 54.6 \ 1975.8333333333333 54.9 \ 1975.9166666666667 55.3 \ 1976.0 55.5 \ 1976.0833333333333 55.6 \ 1976.1666666666667 55.8 \ 1976.25 55.9 \ 1976.3333333333333 56.1 \ 1976.4166666666667 56.5 \ 1976.5 56.8 \ 1976.5833333333333 57.1 \ 1976.6666666666667 57.4 \ 1976.75 57.6 \ 1976.8333333333333 57.9 \ 1976.9166666666667 58.0 \ 1977.0 58.2 \ 1977.0833333333333 58.5 \ 1977.1666666666667 59.1 \ 1977.25 59.5 \ 1977.3333333333333 60.0 \ 1977.4166666666667 60.3 \ 1977.5 60.7 \ 1977.5833333333333 61.0 \ 1977.6666666666667 61.2 \ 1977.75 61.4 \ 1977.8333333333333 61.6 \ 1977.9166666666667 61.9 \ 1978.0 62.1 \ 1978.0833333333333 62.5 \ 1978.1666666666667 62.9 \ 1978.25 63.4 \ 1978.3333333333333 63.9 \ 1978.4166666666667 64.5 \ 1978.5 65.2 \ 1978.5833333333333 65.7 \ 1978.6666666666667 66.0 \ 1978.75 66.5 \ 1978.8333333333333 67.1 \ 1978.9166666666667 67.4 \ 1979.0 67.7 \ 1979.0833333333333 68.3 \ 1979.1666666666667 69.1 \ 1979.25 69.8 \ 1979.3333333333333 70.6 \ 1979.4166666666667 71.5 \ 1979.5 72.3 \ 1979.5833333333333 73.1 \ 1979.6666666666667 73.8 \ 1979.75 74.6 \ 1979.8333333333333 75.2 \ 1979.9166666666667 75.9 \ 1980.0 76.7 \ 1980.0833333333333 77.8 \ 1980.1666666666667 78.9 \ 1980.25 80.1 \ 1980.3333333333333 81.0 \ 1980.4166666666667 81.8 \ 1980.5 82.7 \ 1980.5833333333333 82.7 \ 1980.6666666666667 83.3 \ 1980.75 84.0 \ 1980.8333333333333 84.8 \ 1980.9166666666667 85.5 \ 1981.0 86.3 \ 1981.0833333333333 87.0 \ 1981.1666666666667 87.9 \ 1981.25 88.5 \ 1981.3333333333333 89.1 \ 1981.4166666666667 89.8 \ 1981.5 90.6 \ 1981.5833333333333 91.6 \ 1981.6666666666667 92.3 \ 1981.75 93.2 \ 1981.8333333333333 93.4 \ 1981.9166666666667 93.7 \ 1982.0 94.0 \ 1982.0833333333333 94.3 \ 1982.1666666666667 94.6 \ 1982.25 94.5 \ 1982.3333333333333 94.9 \ 1982.4166666666667 95.8 \ 1982.5 97.0 \ 1982.5833333333333 97.5 \ 1982.6666666666667 97.7 \ 1982.75 97.9 \ 1982.8333333333333 98.2 \ 1982.9166666666667 98.0 \ 1983.0 97.6 \ 1983.0833333333333 97.8 \ 1983.1666666666667 97.9 \ 1983.25 97.9 \ 1983.3333333333333 98.6 \ 1983.4166666666667 99.2 \ 1983.5 99.5 \ 1983.5833333333333 99.9 \ 1983.6666666666667 100.2 \ 1983.75 100.7 \ 1983.8333333333333 101.0 \ 1983.9166666666667 101.2 \ 1984.0 101.3 \ 1984.0833333333333 101.9 \ 1984.1666666666667 102.4 \ 1984.25 102.6 \ 1984.3333333333333 103.1 \ 1984.4166666666667 103.4 \ 1984.5 103.7 \ 1984.5833333333333 104.1 \ 1984.6666666666667 104.5 \ 1984.75 105.0 \ 1984.8333333333333 105.3 \ 1984.9166666666667 105.3 \ 1985.0 105.3 \ 1985.0833333333333 105.5 \ 1985.1666666666667 106.0 \ 1985.25 106.4 \ 1985.3333333333333 106.9 \ 1985.4166666666667 107.3 \ 1985.5 107.6 \ 1985.5833333333333 107.8 \ 1985.6666666666667 108.0 \ 1985.75 108.3 \ 1985.8333333333333 108.7 \ 1985.9166666666667 109.0 \ 1986.0 109.3 \ 1986.0833333333333 109.6 \ 1986.1666666666667 109.3 \ 1986.25 108.8 \ 1986.3333333333333 108.6 \ 1986.4166666666667 108.9 \ 1986.5 109.5 \ 1986.5833333333333 109.5 \ 1986.6666666666667 109.7 \ 1986.75 110.2 \ 1986.8333333333333 110.3 \ 1986.9166666666667 110.4 \ 1987.0 110.5 \ 1987.0833333333333 111.2 \ 1987.1666666666667 111.6 \ 1987.25 112.1 \ 1987.3333333333333 112.7 \ 1987.4166666666667 113.1 \ 1987.5 113.5 \ 1987.5833333333333 113.8 \ 1987.6666666666667 114.4 \ 1987.75 115.0 \ 1987.8333333333333 115.3 \ 1987.9166666666667 115.4 \ 1988.0 115.4 \ 1988.0833333333333 115.7 \ 1988.1666666666667 116.0 \ 1988.25 116.5 \ 1988.3333333333333 117.1 \ 1988.4166666666667 117.5 \ 1988.5 118.0 \ 1988.5833333333333 118.5 \ 1988.6666666666667 119.0 \ 1988.75 119.8 \ 1988.8333333333333 120.2 \ 1988.9166666666667 120.3 \ 1989.0 120.5 \ 1989.0833333333333 121.1 \ 1989.1666666666667 121.6 \ 1989.25 122.3 \ 1989.3333333333333 123.1 \ 1989.4166666666667 123.8 \ 1989.5 124.1 \ 1989.5833333333333 124.4 \ 1989.6666666666667 124.6 \ 1989.75 125.0 \ 1989.8333333333333 125.6 \ 1989.9166666666667 125.9 \ 1990.0 126.1 \ 1990.0833333333333 127.4 \ 1990.1666666666667 128.0 \ 1990.25 128.7 \ 1990.3333333333333 128.9 \ 1990.4166666666667 129.2 \ 1990.5 129.9 \ 1990.5833333333333 130.4 \ 1990.6666666666667 131.6 \ 1990.75 132.7 \ 1990.8333333333333 133.5 \ 1990.9166666666667 133.8 \ 1991.0 133.8 \ 1991.0833333333333 134.6 \ 1991.1666666666667 134.8 \ 1991.25 135.0 \ 1991.3333333333333 135.2 \ 1991.4166666666667 135.6 \ 1991.5 136.0 \ 1991.5833333333333 136.2 \ 1991.6666666666667 136.6 \ 1991.75 137.2 \ 1991.8333333333333 137.4 \ 1991.9166666666667 137.8 \ 1992.0 137.9 \ 1992.0833333333333 138.1 \ 1992.1666666666667 138.6 \ 1992.25 139.3 \ 1992.3333333333333 139.5 \ 1992.4166666666667 139.7 \ 1992.5 140.2 \ 1992.5833333333333 140.5 \ 1992.6666666666667 140.9 \ 1992.75 141.3 \ 1992.8333333333333 141.8 \ 1992.9166666666667 142.0 \ 1993.0 141.9 \ 1993.0833333333333 142.6 \ 1993.1666666666667 143.1 \ 1993.25 143.6 \ 1993.3333333333333 144.0 \ 1993.4166666666667 144.2 \ 1993.5 144.4 \ 1993.5833333333333 144.4 \ 1993.6666666666667 144.8 \ 1993.75 145.1 \ 1993.8333333333333 145.7 \ 1993.9166666666667 145.8 \ 1994.0 145.8 \ 1994.0833333333333 146.2 \ 1994.1666666666667 146.7 \ 1994.25 147.2 \ 1994.3333333333333 147.4 \ 1994.4166666666667 147.5 \ 1994.5 148.0 \ 1994.5833333333333 148.4 \ 1994.6666666666667 149.0 \ 1994.75 149.4 \ 1994.8333333333333 149.5 \ 1994.9166666666667 149.7 \ 1995.0 149.7 \ 1995.0833333333333 150.3 \ 1995.1666666666667 150.9 \ 1995.25 151.4 \ 1995.3333333333333 151.9 \ 1995.4166666666667 152.2 \ 1995.5 152.5 \ 1995.5833333333333 152.5 \ 1995.6666666666667 152.9 \ 1995.75 153.2 \ 1995.8333333333333 153.7 \ 1995.9166666666667 153.6 \ 1996.0 153.5 \ 1996.0833333333333 154.4 \ 1996.1666666666667 154.9 \ 1996.25 155.7 \ 1996.3333333333333 156.3 \ 1996.4166666666667 156.6 \ 1996.5 156.7 \ 1996.5833333333333 157.0 \ 1996.6666666666667 157.3 \ 1996.75 157.8 \ 1996.8333333333333 158.3 \ 1996.9166666666667 158.6 \ 1997.0 158.6 \ 1997.0833333333333 159.1 \ 1997.1666666666667 159.6 \ 1997.25 160.0 \ 1997.3333333333333 160.2 \ 1997.4166666666667 160.1 \ 1997.5 160.3 \ 1997.5833333333333 160.5 \ 1997.6666666666667 160.8 \ 1997.75 161.2 \ 1997.8333333333333 161.6 \ 1997.9166666666667 161.5 \ 1998.0 161.3 \ 1998.0833333333333 161.6 \ 1998.1666666666667 161.9 \ 1998.25 162.2 \ 1998.3333333333333 162.5 \ 1998.4166666666667 162.8 \ 1998.5 163.0 \ 1998.5833333333333 163.2 \ 1998.6666666666667 163.4 \ 1998.75 163.6 \ 1998.8333333333333 164.0 \ 1998.9166666666667 164.0 \ 1999.0 163.9 \ 1999.0833333333333 164.3 \ 1999.1666666666667 164.5 \ 1999.25 165.0 \ 1999.3333333333333 166.2 \ 1999.4166666666667 166.2 \ 1999.5 166.2 \ 1999.5833333333333 166.7 \ 1999.6666666666667 167.1 \ 1999.75 167.9 \ 1999.8333333333333 168.2 \ 1999.9166666666667 168.3 \ 2000.0 168.3 \ 2000.0833333333333 168.8 \ 2000.1666666666667 169.8 \ 2000.25 171.2 \ 2000.3333333333333 171.3 \ 2000.4166666666667 171.5 \ 2000.5 172.4 \ 2000.5833333333333 172.8 \ 2000.6666666666667 172.8 \ 2000.75 173.7 \ 2000.8333333333333 174.0 \ 2000.9166666666667 174.1 \ 2001.0 174.0 \ 2001.0833333333333 175.1 \ 2001.1666666666667 175.8 \ 2001.25 176.2 \ 2001.3333333333333 176.9 \ 2001.4166666666667 177.7 \ 2001.5 178.0 \ 2001.5833333333333 177.5 \ 2001.6666666666667 177.5 \ 2001.75 178.3 \ 2001.8333333333333 177.7 \ 2001.9166666666667 177.4 \ 2002.0 176.7 \ 2002.0833333333333 177.1 \ 2002.1666666666667 177.8 \ 2002.25 178.8 \ 2002.3333333333333 179.8 \ 2002.4166666666667 179.8 \ 2002.5 179.9 \ 2002.5833333333333 180.1 \ 2002.6666666666667 180.7 \ 2002.75 181.0 \ 2002.8333333333333 181.3 \ 2002.9166666666667 181.3 \ 2003.0 180.9 \ 2003.0833333333333 181.7 \ 2003.1666666666667 183.1 \ 2003.25 184.2 \ 2003.3333333333333 183.8 \ 2003.4166666666667 183.5 \ 2003.5 183.7 \ 2003.5833333333333 183.9 \ 2003.6666666666667 184.6 \ 2003.75 185.2 \ 2003.8333333333333 185.0 \ 2003.9166666666667 184.5 \ 2004.0 184.3 \ 2004.0833333333333 185.2 \ 2004.1666666666667 186.2 \ 2004.25 187.4 \ 2004.3333333333333 188.0 \ 2004.4166666666667 189.1 \ 2004.5 189.7 \ 2004.5833333333333 189.4 \ 2004.6666666666667 189.5 \ 2004.75 189.9 \ 2004.8333333333333 190.9 \ 2004.9166666666667 191.0 \ 2005.0 190.3 \ 2005.0833333333333 190.7 \ 2005.1666666666667 191.8 \ 2005.25 193.3 \ 2005.3333333333333 194.6 \ 2005.4166666666667 194.4 \ 2005.5 194.5 \ 2005.5833333333333 195.4 \ 2005.6666666666667 196.4 \ 2005.75 198.8 \ 2005.8333333333333 199.2 \ 2005.9166666666667 197.6 \ 2006.0 196.8 \ 2006.0833333333333 198.3 \ 2006.1666666666667 198.7 \ 2006.25 199.8 \ 2006.3333333333333 201.5 \ 2006.4166666666667 202.5 \ 2006.5 202.9 \ 2006.5833333333333 203.5 \ 2006.6666666666667 203.9 \ 2006.75 202.9 \ 2006.8333333333333 201.8 \ 2006.9166666666667 201.5 \ 2007.0 201.8 \ 2007.0833333333333 202.416 \ 2007.1666666666667 203.499 \ 2007.25 205.352 \ 2007.3333333333333 206.686 \ 2007.4166666666667 207.949 \ 2007.5 208.352 \ 2007.5833333333333 208.299 \ 2007.6666666666667 207.917 \ 2007.75 208.490 \ 2007.8333333333333 208.936 \ 2007.9166666666667 210.177 \ 2008.0 210.036 \ 2008.0833333333333 211.080 \ 2008.1666666666667 211.693 \ 2008.25 213.528 \ 2008.3333333333333 214.823 \ 2008.4166666666667 216.632 \ 2008.5 218.815 \ 2008.5833333333333 219.964 \ 2008.6666666666667 219.086 \ 2008.75 218.783 \ 2008.8333333333333 216.573 \ 2008.9166666666667 212.425 \ 2009.0 210.228 \ 2009.0833333333333 211.143 \ 2009.1666666666667 212.193 \ 2009.25 212.709 \ 2009.3333333333333 213.240 \ 2009.4166666666667 213.856 \ 2009.5 215.693 \ 2009.5833333333333 215.351 \ 2009.6666666666667 215.834 \ 2009.75 215.969 \ 2009.8333333333333 216.177 \ 2009.9166666666667 216.330 \ 2010.0 215.949 \ 2010.0833333333333 216.687 \ 2010.1666666666667 216.741 \ 2010.25 217.631 \ 2010.3333333333333 218.009 \ 2010.4166666666667 218.178 \ 2010.5 217.965 \ 2010.5833333333333 218.011 \ 2010.6666666666667 218.312 \ 2010.75 218.439 \ 2010.8333333333333 218.711 \ 2010.9166666666667 218.803 \ 2011.0 219.179 \ 2011.0833333333333 220.223 \ 2011.1666666666667 221.309 \ 2011.25 223.467 \ 2011.3333333333333 224.906 \ 2011.4166666666667 225.964 \ 2011.5 225.722 \ 2011.5833333333333 225.922 \ 2011.6666666666667 226.545 \ 2011.75 226.889 \ 2011.8333333333333 226.421 \ 2011.9166666666667 226.230 \ 2012.0 225.672 \ 2012.0833333333333 226.665 \ 2012.1666666666667 227.663 \ 2012.25 229.392 \ 2012.3333333333333 230.085 \ 2012.4166666666667 229.815 \ 2012.5 229.478 \ 2012.5833333333333 229.104 \ 2012.6666666666667 230.379 \ 2012.75 231.407 \ 2012.8333333333333 231.317 \ 2012.9166666666667 230.221 \ 2013.0 229.601 \ 2013.0833333333333 230.280 \ 2013.1666666666667 232.166 \ 2013.25 232.773 \ 2013.3333333333333 232.531 \ 2013.4166666666667 232.945 \ 2013.5 233.504 \ 2013.5833333333333 233.596 \ 2013.6666666666667 233.877 \ 2013.75 234.149 \ 2013.8333333333333 233.546 \ 2013.9166666666667 233.069 \ 2014.0 233.049 \ 2014.0833333333333 233.916 \ 2014.1666666666667 234.781 \ 2014.25 236.293 \ 2014.3333333333333 237.072 \ 2014.4166666666667 237.900 \ 2014.5 238.343 \ 2014.5833333333333 238.250 \ 2014.6666666666667 237.852 \ 2014.75 238.031 \ 2014.8333333333333 237.433 \ 2014.9166666666667 236.151 \ 2015.0 234.812 \ 2015.0833333333333 233.707 \ 2015.1666666666667 234.722 \ 2015.25 236.119 \ 2015.3333333333333 236.599 \ 2015.4166666666667 237.805 \ 2015.5 238.638 \ 2015.5833333333333 238.654 \ 2015.6666666666667 238.316 \ 2015.75 237.945 \ 2015.8333333333333 237.838 \ 2015.9166666666667 237.336 \ 2016.0 236.525 \ 2016.0833333333333 236.916 \ 2016.1666666666667 237.111 \ 2016.25 238.132 \ 2016.3333333333333 239.261 \ 2016.4166666666667 240.229 \ 2016.5 241.018 \ 2016.5833333333333 240.628 \ 2016.6666666666667 240.849 \ 2016.75 241.428 \ 2016.8333333333333 241.729 \ 2016.9166666666667 241.353 \ 2017.0 241.432 \ 2017.0833333333333 242.839 \ 2017.1666666666667 243.603 \ 2017.25 243.801 \ 2017.3333333333333 244.524 \ 2017.4166666666667 244.733 \ 2017.5 244.955 \ 2017.5833333333333 244.786 \ 2017.6666666666667 245.519 \ 2017.75 246.819 \ 2017.8333333333333 246.663 \ 2017.9166666666667 246.669 \ 2018.0 246.524 \ 2018.0833333333333 247.867 \ 2018.1666666666667 248.991 \ 2018.25 249.554 \ 2018.3333333333333 250.546 \ 2018.4166666666667 251.588 \ 2018.5 251.989 \ 2018.5833333333333 252.006 \ 2018.6666666666667 252.146 \ 2018.75 252.439 \ 2018.8333333333333 252.885 \ 2018.9166666666667 252.038 \ 2019.0 251.233 \ 2019.0833333333333 251.712 \ 2019.1666666666667 252.776 \ 2019.25 254.202 \ 2019.3333333333333 255.548 \ 2019.4166666666667 256.092 \ 2019.5 256.143 \ 2019.5833333333333 256.571 \ 2019.6666666666667 256.558 \ 2019.75 256.759 \ 2019.8333333333333 257.346 \ 2019.9166666666667 257.208 \ 2020.0 256.974 \ 2020.0833333333333 257.971 \ 2020.1666666666667 258.678 \ 2020.25 258.115 \ 2020.3333333333333 256.389 \ 2020.4166666666667 256.394 \ 2020.5 257.797 \ 2020.5833333333333 259.101 \ 2020.6666666666667 259.918 \ 2020.75 260.280 \ 2020.8333333333333 260.388 \ 2020.9166666666667 260.229 \ 2021.0 260.474 \ 2021.0833333333333 261.582 \ 2021.1666666666667 263.014 \ 2021.25 264.877 \ 2021.3333333333333 267.054 \ 2021.4166666666667 269.195 \ 2021.5 271.696 \ 2021.5833333333333 273.003 \ 2021.6666666666667 273.567 \ 2021.75 274.310 \ 2021.8333333333333 276.589 \ 2021.9166666666667 277.948 \ 2022.0 278.802 \ 2022.0833333333333 281.148 \ 2022.1666666666667 283.716 \ 2022.25 287.504 \ 2022.3333333333333 289.109 \ 2022.4166666666667 292.296 \ 2022.5 296.311 \ 2022.5833333333333 296.276 \ 2022.6666666666667 296.171 \ 2022.75 296.808 \ 2022.8333333333333 298.012 \ 2022.9166666666667 297.711 \ 2023.0 296.797 \ 2023.0833333333333 299.170 \ 2023.1666666666667 300.840 \ 2023.25 301.836 \ 2023.3333333333333 303.363 \ 2023.4166666666667 304.127 \ 2023.5 305.109 \ 2023.5833333333333 305.691 \ 2023.6666666666667 307.026 \ 2023.75 307.789 \ 2023.8333333333333 307.671 \ 2023.9166666666667 307.051 \ 2024.0 306.746 \ 2024.0833333333333 308.417 \ UScpi_now 308.417 UScpi_lastdate 2024.0833333333333 USdollars_in(date) units=[1;$] domain=[1913.0833333333333,2024.0833333333333] \ range=[1,31.471122448979585] \ US$ UScpi_now / UScpi(date) ;\ ~UScpi(US$ UScpi_now / USdollars_in) USinflation_since(date) units=[1;1] domain=[1913.0833333333333,2024.0833333333333] \ range=[1,31.471122448979585] \ UScpi_now / UScpi(date) ;\ ~UScpi(UScpi_now / USinflation_since) units-2.23/units.man0000664000175000017500000051316014564532530013736 0ustar adrianadrian.\" Do not edit this file. It was created from units.texinfo .\" using texi2man version 1.2.9. .\" This manual is for GNU Units (version 2.23), .\" which performs units conversions and units calculations. .\" Copyright 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2007, .\" 2011-2024 Free Software Foundation, Inc. .\" Permission is granted to copy, distribute and/or modify this document .\" under the terms of the GNU Free Documentation License, Version 1.3 or .\" any later version published by the Free Software Foundation; with no .\" Invariant Sections, with no Front-Cover Texts, and with no Back-Cover .\" Texts. .TH UNITS 1 "16 February 2024" .\" .\"------------------------------------------------------------------------ .\" ensure that ASCII circumflex U+005E (^) and tilde U+007E (~) .\" are not remapped, so that example text can be copied and pasted .tr ^\(ha .tr ~\(ti .\" override translation in troffrc .ie .if '\*[.T]'utf8' .tr `\(oq'\(cq .\" override mapping of ` to 60h with Tascii; assume .\" we don't need a backquote for an example .el .if n .tr `' .if n .tr \(bu* .\" override translation to MIDDLE DOT .if '\*(.T'utf8' .tr \(bu\(bu .if '\*(.T'cp1252' .tr \(bu\(bu .if '\*(.T'ansi' .tr \(bu\(bu .\"------------------------------------------------------------------------ .\" .\" ==================================================================== .SH NAME .\" ==================================================================== .PP units \(em unit conversion and calculation program .\" hack to prevent very thick fraction bars with gropdf .\" '-1' makes thickness proportional to type size .if \n(.g .if t \Z@\D't -1'@ .\" ==================================================================== .SH SYNOPSIS .\" ==================================================================== .SY units .RI \:[ from-unit .RI \:[ to-unit ]] .YS .SY units .OP \-hcemnSpqsv1trUVI .OP \-d digits .OP \-f "units\ file" .OP \-L logfile .OP \-l locale .OP \-o format .OP \-u "unit\ system" .br .RI \:[ from-unit .RI \:[ to-unit ]] .YS .SY units .OP \-\^\-help .OP \-\^\-check .OP \-\^\-check-verbose .OP \-\^\-verbose-check .OP \-\^\-digits digits .OP \-\^\-exponential .OP \-\^\-file "units\ file" .OP \-\^\-log logfile .OP \-\^\-locale locale .OP \-\^\-minus .OP \-\^\-oldstar .OP \-\^\-newstar .OP \-\^\-nolists .OP \-\^\-show-factor .OP \-\^\-conformable .OP \-\^\-output-format format .OP \-\^\-product .OP \-\^\-quiet .OP \-\^\-silent .OP \-\^\-strict .OP \-\^\-verbose .OP \-\^\-compact .OP \-\^\-one-line .OP \-\-terse .OP \-\^\-round .OP \-\^\-unitsfile .OP \-\^\-units "units\ system" .OP \-\^\-version .OP \-\^\-info .br .RI \:[ from-unit .RI \:[ to-unit ]] .YS .\" ==================================================================== .SH DESCRIPTION .\" ==================================================================== The \fIunits\fP program converts quantities expressed in various systems of measurement to their equivalents in other systems of measurement. Like many similar programs, it can handle multiplicative scale changes. It can also handle nonlinear conversions such as Fahrenheit to Celsius; see \fITemperature Conversions\fP. The program can also perform conversions from and to sums of units, such as converting between meters and feet plus inches. .PP .if n .ig ++ .EQ delim $$ .EN .++ But Fahrenheit to Celsius is linear, you insist. Not so. A transformation \fIT\fP is linear if .if t $T(x + y) = T(x) + T(y)$ .if n \fIT\fP(\fIx\fP\ +\ \fIy\fP)\ =\ \fPT\fP(\fPx\fP)\ +\ \fIT\fP(\fPy\fP) and this fails for .if t $T(x) = ax + b$. .if n \fIT\fP(\fIx\fP)\ =\ \fIax\fP\ +\ \fIb\fP. This transformation is affine, but not linear\(emsee \f(CWhttps://en.wikipedia.org/wiki/Linear_map\fP. .if n .ig ++ .EQ delim off .EN .++ .PP Basic operation is simple: you enter the units that you want to convert \fIfrom\fP and the units that you want to convert \fIto\fP. You can use the program interactively with prompts, or you can use it from the command line. .PP Beyond simple unit conversions, \fIunits\fP can be used as a general-purpose scientific calculator that keeps track of units in its calculations. You can form arbitrary complex mathematical expressions of dimensions including sums, products, quotients, powers, and even roots of dimensions. Thus you can ensure accuracy and dimensional consistency when working with long expressions that involve many different units that may combine in complex ways; for an illustration, see \fIComplicated Unit Expressions\fP. .PP The units are defined in several external data files. You can use the extensive data files that come with the program, or you can provide your own data file to suit your needs. You can also use your own data file to supplement the standard data files. .PP You can change the default behavior of \fIunits\fP with various options given on the command line. See \fIInvoking Units\fP for a description of the available options. .\" ==================================================================== .SH INTERACTING WITH \f(BIUNITS\fP .\" ==================================================================== To invoke \fIunits\fP for interactive use, type \%\f(CIunits\fR at your shell prompt. The program will print something like this: .EX .PP Currency exchange rates from FloatRates (USD base) on 2023-07-08 3612 units, 109 prefixes, 122 nonlinear units You have: .EE .PP At the \%\(oq\f(CWYou\ have:\fR\(cq prompt, type the quantity and units that you are converting \fIfrom\fP. For example, if you want to convert ten meters to feet, type \f(CI10 meters\fR. Next, \fIunits\fP will print \%\(oq\f(CWYou\ want:\fR\(cq. You should type the units you want to convert \fIto\fP. To convert to feet, you would type \%\f(CIfeet\fR. If the \fIreadline\fP library was compiled in, then \fItab\fP will complete unit names. See \fIReadline Support\fP for more information about \fIreadline\fP. To quit the program type \%\f(CIquit\fR or \%\f(CIexit\fR at either prompt. .PP The result will be displayed in two ways. The first line of output, which is marked with a \(oq\f(CW*\fR\(cq to indicate multiplication, gives the result of the conversion you have asked for. The second line of output, which is marked with a \(oq\f(CW/\fR\(cq to indicate division, gives the inverse of the conversion factor. If you convert 10 meters to feet, \fIunits\fP will print .EX .PP * 32.808399 / 0.03048 .EE .PP which tells you that 10 meters equals about 32.8 feet. The second number gives the conversion in the opposite direction. In this case, it tells you that 1 foot is equal to about 0.03 dekameters since the dekameter is 10 meters. It also tells you that 1/32.8 is about 0.03. .PP The \fIunits\fP program prints the inverse because sometimes it is a more convenient number. In the example above, for example, the inverse value is an exact conversion: a foot is exactly 0.03048 dekameters. But the number given the other direction is inexact. .PP If you convert grains to pounds, you will see the following: .EX .PP You have: grains You want: pounds * 0.00014285714 / 7000 .EE .PP From the second line of the output, you can immediately see that a grain is equal to a seven thousandth of a pound. This is not so obvious from the first line of the output. If you find the output format confusing, try using the \(oq\f(CW-\&-verbose\fR\(cq option: .EX .PP You have: grain You want: aeginamina grain = 0.00010416667 aeginamina grain = (1 / 9600) aeginamina .EE .PP If you request a conversion between units that measure reciprocal dimensions, then \fIunits\fP will display the conversion results with an extra note indicating that reciprocal conversion has been done: .EX .PP You have: 6 ohms You want: siemens reciprocal conversion * 0.16666667 / 6 .EE .PP Reciprocal conversion can be suppressed by using the \(oq\f(CW-\&-strict\fR\(cq option. As usual, use the \(oq\f(CW-\&-verbose\fR\(cq option to get more comprehensible output: .EX .PP You have: tex You want: typp reciprocal conversion 1 / tex = 496.05465 typp 1 / tex = (1 / 0.0020159069) typp You have: 20 mph You want: sec/mile reciprocal conversion 1 / 20 mph = 180 sec/mile 1 / 20 mph = (1 / 0.0055555556) sec/mile .EE .PP If you enter incompatible unit types, the \fIunits\fP program will print a message indicating that the units are not conformable and it will display the reduced form for each unit: .EX .PP You have: ergs/hour You want: fathoms kg^2 / day conformability error 2.7777778e-11 kg m^2 / sec^3 2.1166667e-05 kg^2 m / sec .EE .PP If you only want to find the reduced form or definition of a unit, simply press \fIEnter\fP at the \%\(oq\f(CWYou\ want:\fR\(cq prompt. Here is an example: .EX .PP You have: jansky You want: Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2 .EE .PP The output from \fIunits\fP indicates that the jansky is defined to be equal to a fluxunit which in turn is defined to be a certain combination of watts, meters, and hertz. The fully reduced (and in this case somewhat more cryptic) form appears on the far right. If the ultimate definition and the fully reduced form are identical, the latter is not shown: .EX .PP You have: B You want: Definition: byte = 8 bit .EE .PP The fully reduced form \fIis\fP shown if it and the ultimate definition are equivalent but not identical: .EX .PP You have: N You want: Definition: newton = kg m / s^2 = 1 kg m / s^2 .EE .PP Some named units are treated as dimensionless in some situations. These units include the radian and steradian. These units will be treated as equal to 1 in units conversions. Power is equal to torque times angular velocity. This conversion can only be performed if the radian is dimensionless. .EX .PP You have: (14 ft lbf) (12 radians/sec) You want: watts * 227.77742 / 0.0043902509 .EE .PP It is also possible to compute roots and other non-integer powers of dimensionless units; this allows computations such as the altitude of geosynchronous orbit: .EX .PP You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius You want: miles * 22243.267 / 4.4957425e-05 .EE .PP Named dimensionless units are not treated as dimensionless in other contexts. They cannot be used as exponents so for example, \%\(oq\f(CWmeter^radian\fR\(cq is forbidden. .PP If you want a list of options you can type \f(CI?\fR at the \%\(oq\f(CWYou\ want:\fR\(cq prompt. The program will display a list of named units that are conformable with the unit that you entered at the \%\(oq\f(CWYou\ have:\fR\(cq prompt above. Conformable unit \fIcombinations\fP will not appear on this list. .PP Typing \%\f(CIhelp\fR at either prompt displays a short help message. You can also type \%\f(CIhelp\fR followed by a unit name. This will invoke a pager on the units data base at the point where that unit is defined. You can read the definition and comments that may give more details or historical information about the unit. If your pager allows, you may want to scroll backwards, e.g. with \%\(oq\f(CWb\fR\(cq, because sometimes a longer comment about a unit or group of units will appear before the definition. You can generally quit out of the pager by pressing \%\(oq\f(CWq\fR\(cq. .PP Typing \%\f(CIsearch\fR \fItext\fP will display a list of all of the units whose names contain \fItext\fP as a substring along with their definitions. This may help in the case where you aren't sure of the right unit name. .\" ==================================================================== .SH USING \f(BIUNITS\fP NON-INTERACTIVELY .\" ==================================================================== The \fIunits\fP program can perform units conversions non-interactively from the command line. To do this, type the command, type the original unit expression, and type the new units you want. If a units expression contains non-alphanumeric characters, you may need to protect it from interpretation by the shell using single or double quote characters. .PP If you type .EX .PP units "2 liters" quarts .EE .PP then \fIunits\fP will print .EX .PP * 2.1133764 / 0.47317647 .EE .PP and then exit. The output tells you that 2 liters is about 2.1 quarts, or alternatively that a quart is about 0.47 times 2 liters. .PP \fIunits\fP does not require a space between a numerical value and the unit, so the previous example can be given as .EX .PP units 2liters quarts .EE .PP to avoid having to quote the first argument. .PP If the conversion is successful, \fIunits\fP will return success (zero) to the calling environment. If you enter non-conformable units, then \fIunits\fP will print a message giving the reduced form of each unit and it will return failure (nonzero) to the calling environment. .PP If the \(oq\f(CW-\&-conformable\fR\(cq option is given, only one unit expression is allowed, and \fIunits\fP will print all units conformable with that expression; it is equivalent to giving \f(CI?\fR at the \%\(oq\f(CWYou\ want:\fR\(cq prompt. For example, .EX .PP units -\&-conformable gauss B_FIELD tesla Gs gauss T tesla gauss abvolt sec / cm^2 stT stattesla statT stattesla stattesla statWb/cm^2 tesla Wb/m^2 .EE .PP If you give more than one unit expression with the \(oq\f(CW-\&-conformable\fR\(cq option, the program will exit with an error message and return failure. This option has no effect in interactive mode. .PP If the \(oq\f(CW-\&-terse\fR\(cq (\(oq\f(CW-t\fR\(cq) option is given with the \(oq\f(CW-\&-conformable\fR\(cq option, conformable units are shown without definitions; with the previous example, this would give .EX .PP units -\&-terse -\&-conformable gauss B_FIELD Gs T gauss stT statT stattesla tesla .EE .PP When the \(oq\f(CW-\&-conformable\fR\(cq option is not given and you invoke \fIunits\fP with only one argument, \fIunits\fP will print the definition of the specified unit. It will return failure if the unit is not defined and success if the unit is defined. .\" ==================================================================== .SH UNIT DEFINITIONS .\" ==================================================================== The conversion information is read from several units data files: \%\(oq\f(CWdefinitions.units\fR\(cq, \%\(oq\f(CWelements.units\fR\(cq, \%\(oq\f(CWcurrency.units\fR\(cq, and \%\(oq\f(CWcpi.units\fR\(cq, which are usually located in the \(oq\f(CW/usr/share/units\fR\(cq directory. If you invoke \fIunits\fP with the \(oq\f(CW-V\fR\(cq option, it will print the location of these files. The default main file includes definitions for all familiar units, abbreviations and metric prefixes. It also includes many obscure or archaic units. Many common spelled-out numbers (e.g., \%\(oq\f(CWseventeen\fR\(cq) are recognized. .\" -------------------------------------------------------------------- .SS Physical Constants .\" -------------------------------------------------------------------- Many constants of nature are defined, including these: .EX .PP pi \fRratio of circumference of a circle to its diameter\fP c \fRspeed of light\fP e \fRcharge on an electron\fP force \fRacceleration of gravity\fP mole \fRAvogadro's number\fP water \fRpressure per unit height of water\fP Hg \fRpressure per unit height of mercury\fP au \fRastronomical unit\fP k \fRBoltzman's constant\fP mu0 \fRpermeability of vacuum\fP epsilon0 \fRpermittivity of vacuum\fP G \fRGravitational constant\fP mach \fRspeed of sound\fP .EE .PP The standard data file includes numerous other constants. Also included are the densities of various ingredients used in baking so that \(oq\f(CW2\ cups flour_sifted\fR\(cq can be converted to \%\(oq\f(CWgrams\fR\(cq. This is not an exhaustive list. Consult the units data file to see the complete list, or to see the definitions that are used. .\" -------------------------------------------------------------------- .SS Atomic Masses of the Elements .\" -------------------------------------------------------------------- The data file \%\(oq\f(CWelements.units\fR\(cq includes atomic masses for most elements and most known isotopes. If the mole fractions of constituent isotopes are known, an elemental mass is calculated from the sum of the products of the mole fractions and the masses of the constituent isotopes. If the mole fractions are not known, the mass of the most stable isotope\(emif known\(emis given as the elemental mass. For radioactive elements with atomic numbers 95 or greater, the mass number of the most stable isotope is not specified, because the list of studied isotopes is still incomplete. If no stable isotope is known, no elemental mass is given, and you will need to choose the most appropriate isotope. .PP The data are obtained from the US National Institute for Standards and Technology (NIST): \fRhttps://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl?ele=&all=all&ascii=ascii2&isotype=all\fP. The \%\(oq\f(CWelements.units\fR\(cq file can be generated from these data using the \fIelemcvt\fP command included with the distribution. .\" -------------------------------------------------------------------- .SS Currency Exchange Rates and Consumer Price Index .\" -------------------------------------------------------------------- The data file \%\(oq\f(CWcurrency.units\fR\(cq includes currency conversion rates; the file \%\(oq\f(CWcpi.units\fR\(cq includes the US Consumer Price Index (CPI), published by the US Bureau of Labor Statistics. The data are updated monthly by the BLS; see \fIUpdating Currency Exchange Rates and CPI\fP for information on updating \%\(oq\f(CWcurrency.units\fR\(cq and \%\(oq\f(CWcpi.units\fR\(cq. .\" -------------------------------------------------------------------- .SS English Customary Units .\" -------------------------------------------------------------------- English customary units differ in various ways among different regions. In Britain a complex system of volume measurements featured different gallons for different materials such as a wine gallon and ale gallon that different by twenty percent. This complexity was swept away in 1824 by a reform that created an entirely new gallon, the British Imperial gallon defined as the volume occupied by ten pounds of water. Meanwhile in the USA the gallon is derived from the 1707 Winchester wine gallon, which is 231 cubic inches. These gallons differ by about twenty percent. By default if \fIunits\fP runs in the \%\(oq\f(CWen_GB\fR\(cq locale you will get the British volume measures. If it runs in the \%\(oq\f(CWen_US\fR\(cq locale you will get the US volume measures. In other locales the default values are the US definitions. If you wish to force different definitions, then set the environment variable \%\f(CWUNITS_ENGLISH\fR to either \%\(oq\f(CWUS\fR\(cq or \%\(oq\f(CWGB\fR\(cq to set the desired definitions independent of the locale. .PP Before 1959, the value of a yard (and other units of measure defined in terms of it) differed slightly among English-speaking countries. In 1959, Australia, Canada, New Zealand, the United Kingdom, the United States, and South Africa adopted the Canadian value of 1\ yard = 0.9144\ m (exactly), which was approximately halfway between the values used by the UK and the US; it had the additional advantage of making 1\ inch = 2.54\ cm (exactly). This new standard was termed the \fIInternational Yard\fP. Australia, Canada, and the UK then defined all customary lengths in terms of the International Yard (Australia did not define the furlong or rod); because many US land surveys were in terms of the pre-1959 units, the US continued to define customary surveyors' units (furlong, chain, rod, pole, perch, and link) in terms of the previous value for the foot, which was termed the \fIUS survey foot\fP. The US defined a \fIUS survey mile\fP as 5280 US survey feet, and defined a \fIstatute mile\fP as a US survey mile. The US values for these units differed from the international values by about 2\ ppm. .PP The 1959 redefinition of the foot was legally binding in the US but allowed continued use of the previous definition of the foot for geodetic surveying. It was assumed that this use would be temporary, but use persisted, leading to confusion and errors, and it was at odds with the intent of uniform standards. Since January 1, 2023, the US survey foot has been officially deprecated (85 FR 62698), with its use limited to historical and legacy applications. .PP The \fIunits\fP program has always used the international values for these units; the legacy US values can be obtained by using either the \%\(oq\f(CWUS\fR\(cq or the \%\(oq\f(CWsurvey\fR\(cq prefix. In either case, the simple familiar relationships among the units are maintained, e.g., 1 \%\(oq\f(CWfurlong\fR\(cq = 660 \%\(oq\f(CWft\fR\(cq, and 1 \%\(oq\f(CWUSfurlong\fR\(cq = 660 \%\(oq\f(CWUSft\fR\(cq, though the metric equivalents differ slightly between the two cases. The \%\(oq\f(CWUS\fR\(cq prefix or the \%\(oq\f(CWsurvey\fR\(cq prefix can also be used to obtain the US survey mile and the value of the US yard prior to 1959, e.g., \%\(oq\f(CWUSmile\fR\(cq or \%\(oq\f(CWsurveymile\fR\(cq (but \fInot\fP \%\(oq\f(CWUSsurveymile\fR\(cq). To get the US value of the statute mile, use either \%\(oq\f(CWUSstatutemile\fR\(cq or \%\(oq\f(CWUSmile\fR\(cq. The pre-1959 UK values for these units can be obtained with the prefix \%\(oq\f(CWUK\fR\(cq. .PP Except for distances that extend over hundreds of miles (such as in the US State Plane Coordinate System), the differences in the miles are usually insignificant: .EX .PP You have: 100 surveymile - 100 mile You want: inch * 12.672025 / 0.078913984 .EE .PP The US acre was officially defined in terms of the US survey foot, but \fIunits\fP has used a definition based on the international foot; the \fIunits\fP definition is now the same as the official US value. If you want the previous US acre, use \%\(oq\f(CWUSacre\fR\(cq and similarly use \%\(oq\f(CWUSacrefoot\fR\(cq for the previous US version of that unit. The difference between these units is about 4 parts per million. .\" -------------------------------------------------------------------- .SS Miscellaneous Notes on Unit Definitions .\" -------------------------------------------------------------------- The \%\(oq\f(CWpound\fR\(cq is a unit of mass. To get force, multiply by the force conversion unit \%\(oq\f(CWforce\fR\(cq or use the shorthand \%\(oq\f(CWlbf\fR\(cq. (Note that \%\(oq\f(CWg\fR\(cq is already taken as the standard abbreviation for the gram.) The unit \%\(oq\f(CWounce\fR\(cq is also a unit of mass. The fluid ounce is \%\(oq\f(CWfluidounce\fR\(cq or \%\(oq\f(CWfloz\fR\(cq. When British capacity units differ from their US counterparts, such as the British Imperial gallon, the unit is defined both ways with \%\(oq\f(CWbr\fR\(cq and \%\(oq\f(CWus\fR\(cq prefixes. Your locale settings will determine the value of the unprefixed unit. Currency is prefixed with its country name: \%\(oq\f(CWbelgiumfranc\fR\(cq, \%\(oq\f(CWbritainpound\fR\(cq. .PP When searching for a unit, if the specified string does not appear exactly as a unit name, then the \fIunits\fP program will try to remove a trailing \%\(oq\f(CWs\fR\(cq, \%\(oq\f(CWes\fR\(cq. Next units will replace a trailing \%\(oq\f(CWies\fR\(cq with \%\(oq\f(CWy\fR\(cq. If that fails, \fIunits\fP will check for a prefix. The database includes all of the standard metric prefixes. Only one prefix is permitted per unit, so \%\(oq\f(CWmicromicrofarad\fR\(cq will fail. However, prefixes can appear alone with no unit following them, so \%\(oq\f(CWmicro*microfarad\fR\(cq will work, as will \%\(oq\f(CWmicro microfarad\fR\(cq. .PP To find out which units and prefixes are available, read the default units data files; the main data file is extensively annotated. .\" ==================================================================== .SH UNIT EXPRESSIONS .\" ==================================================================== .\" -------------------------------------------------------------------- .SS Operators .\" -------------------------------------------------------------------- You can enter more complicated units by combining units with operations such as multiplication, division, powers, addition, subtraction, and parentheses for grouping. You can use the customary symbols for these operators when \fIunits\fP is invoked with its default options. Additionally, \fIunits\fP supports some extensions, including high priority multiplication using a space, and a high priority numerical division operator (\(oq\f(CW|\fR\(cq) that can simplify some expressions. .PP You multiply units using a space or an asterisk (\(oq\f(CW*\fR\(cq). The next example shows both forms: .EX .PP You have: arabicfoot * arabictradepound * force You want: ft lbf * 0.7296 / 1.370614 .EE .PP You can divide units using the slash (\(oq\f(CW/\fR\(cq) or with \%\(oq\f(CWper\fR\(cq: .EX .PP You have: furlongs per fortnight You want: m/s * 0.00016630986 / 6012.8727 .EE .PP You can use parentheses for grouping: .EX .PP You have: (1/2) kg / (kg/meter) You want: league * 0.00010356166 / 9656.0833 .EE .PP White space surrounding operators is optional, so the previous example could have used \(oq\f(CW(1/2)kg/(kg/meter)\fR\(cq. As a consequence, however, hyphenated spelled-out numbers (e.g., \%\(oq\f(CWforty-two\fR\(cq) cannot be used; \%\(oq\f(CWforty-two\fR\(cq is interpreted as \(oq\f(CW40 - 2\fR\(cq. .PP Multiplication using a space has a higher precedence than division using a slash and is evaluated left to right; in effect, the first \(oq\f(CW/\fR\(cq character marks the beginning of the denominator of a unit expression. This makes it simple to enter a quotient with several terms in the denominator: \%\(oq\f(CWJ\ /\ mol\ K\fR\(cq. The \(oq\f(CW*\fR\(cq and \(oq\f(CW/\fR\(cq operators have the same precedence, and are evaluated left to right; if you multiply with \(oq\f(CW*\fR\(cq, you must group the terms in the denominator with parentheses: \%\(oq\f(CWJ\ /\ (mol\ *\ K)\fR\(cq. .PP The higher precedence of the space operator may not always be advantageous. For example, \%\(oq\f(CWm/s\ s/day\fR\(cq is equivalent to \%\(oq\f(CWm\ /\ s\ s\ day\fR\(cq and has dimensions of length per time cubed. Similarly, \(oq\f(CW1/2\ meter\fR\(cq refers to a unit of reciprocal length equivalent to 0.5/meter, perhaps not what you would intend if you entered that expression. The get a half meter you would need to use parentheses: \(oq\f(CW(1/2)\ meter\fR\(cq. The \(oq\f(CW*\fR\(cq operator is convenient for multiplying a sequence of quotients. For example, \%\(oq\f(CWm/s\ *\ s/day\fR\(cq is equivalent to \%\(oq\f(CWm/day\fR\(cq. Similarly, you could write \(oq\f(CW1/2\ *\ meter\fR\(cq to get half a meter. .PP The \fIunits\fP program supports another option for numerical fractions: you can indicate division of \fInumbers\fP with the vertical bar (\(oq\f(CW|\fR\(cq), so if you wanted half a meter you could write \(oq\f(CW1|2\ meter\fR\(cq. You cannot use the vertical bar to indicate division of non-numerical units (e.g., \%\(oq\f(CWm|s\fR\(cq results in an error message). .PP Powers of units can be specified using the \(oq\f(CW^\fR\(cq character, as shown in the following example, or by simple concatenation of a unit and its exponent: \%\(oq\f(CWcm3\fR\(cq is equivalent to \%\(oq\f(CWcm^3\fR\(cq; if the exponent is more than one digit, the \(oq\f(CW^\fR\(cq is required. You can also use \(oq\f(CW**\fR\(cq as an exponent operator. .EX .PP You have: cm^3 You want: gallons * 0.00026417205 / 3785.4118 .EE .PP Concatenation only works with a single unit name: if you write \(oq\f(CW(m/s)2\fR\(cq, \fIunits\fP will treat it as multiplication by 2. When a unit includes a prefix, exponent operators apply to the combination, so \%\(oq\f(CWcentimeter3\fR\(cq gives cubic centimeters. If you separate the prefix from the unit with any multiplication operator (e.g., \%\(oq\f(CWcenti meter^3\fR\(cq), the prefix is treated as a separate unit, so the exponent applies only to the unit without the prefix. The second example is equivalent to \%\(oq\f(CWcenti * (meter^3)\fR\(cq, and gives a hundredth of a cubic meter, not a cubic centimeter. The \fIunits\fP program is limited internally to products of 99 units; accordingly, expressions like \%\(oq\f(CWmeter^100\fR\(cq or \%\(oq\f(CWjoule^34\fR\(cq (represented internally as \%\(oq\f(CWkg^34\ m^68\ /\ s^68\fR\(cq) will fail. .PP The \(oq\f(CW|\fR\(cq operator has the highest precedence, so you can write the square root of two thirds as \(oq\f(CW2|3^1|2\fR\(cq. The \(oq\f(CW^\fR\(cq operator has the second highest precedence, and is evaluated right to left, as usual: .EX .PP You have: 5 * 2^3^2 You want: Definition: 2560 .EE .PP With a dimensionless base unit, any dimensionless exponent is meaningful (e.g., \%\(oq\f(CWpi^exp(2.371)\fR\(cq). Even though angle is sometimes treated as dimensionless, exponents cannot have dimensions of angle: .EX .PP You have: 2^radian ^ Exponent not dimensionless .EE .PP If the base unit is not dimensionless, the exponent must be a rational number \fIp\fP/\fIq\fP, and the dimension of the unit must be a power of \fIq\fP, so \%\(oq\f(CWgallon^2|3\fR\(cq works but \%\(oq\f(CWacre^2|3\fR\(cq fails. An exponent using the slash (\(oq\f(CW/\fR\(cq) operator (e.g., \%\(oq\f(CWgallon^(2/3)\fR\(cq) is also acceptable; the parentheses are needed because the precedence of \(oq\f(CW^\fR\(cq is higher than that of \(oq\f(CW/\fR\(cq. Since \fIunits\fP cannot represent dimensions with exponents greater than 99, a fully reduced exponent must have \fIq\fP\ <\ 100. When raising a non-dimensionless unit to a power, \fIunits\fP attempts to convert a decimal exponent to a rational number with \fIq\fP\ <\ 100. If this is not possible \fIunits\fP displays an error message: .EX .PP You have: ft^1.234 Base unit not dimensionless; rational exponent required .EE .PP A decimal exponent must match its rational representation to machine precision, so \%\(oq\f(CWacre^1.5\fR\(cq works but \%\(oq\f(CWgallon^0.666\fR\(cq does not. .\" -------------------------------------------------------------------- .SS Sums and Differences of Units .\" -------------------------------------------------------------------- You may sometimes want to add values of different units that are outside the SI. You may also wish to use \fIunits\fP as a calculator that keeps track of units. Sums of conformable units are written with the \(oq\f(CW+\fR\(cq character, and differences with the \(oq\f(CW-\fR\(cq character. .EX .PP You have: 2 hours + 23 minutes + 32 seconds You want: seconds * 8612 / 0.00011611705 .EE .EX .PP You have: 12 ft + 3 in You want: cm * 373.38 / 0.0026782366 .EE .EX .PP You have: 2 btu + 450 ft lbf You want: btu * 2.5782804 / 0.38785542 .EE .PP The expressions that are added or subtracted must reduce to identical expressions in primitive units, or an error message will be displayed: .EX .PP You have: 12 printerspoint - 4 heredium ^ Invalid sum of non-conformable units .EE .PP If you add two values of vastly different scale you may exceed the available precision of floating point (about 15 digits). The effect is that the addition of the smaller value makes no change to the larger value; in other words, the smaller value is treated as if it were zero. .EX .PP You have: lightyear + cm .EE .PP No warning is given, however. As usual, the precedence for \(oq\f(CW+\fR\(cq and \(oq\f(CW-\fR\(cq is lower than that of the other operators. A fractional quantity such as 2\ 1/2 cups can be given as \(oq\f(CW(2+1|2) cups\fR\(cq; the parentheses are necessary because multiplication has higher precedence than addition. If you omit the parentheses, \fIunits\fP attempts to add \(oq\f(CW2\fR\(cq and \(oq\f(CW1|2 cups\fR\(cq, and you get an error message: .EX .PP You have: 2+1|2 cups ^ Invalid sum or difference of non-conformable units .EE .PP The expression could also be correctly written as \(oq\f(CW(2+1/2) cups\fR\(cq. If you write \(oq\f(CW2\ 1|2 cups\fR\(cq the space is interpreted as \fImultiplication\fP so the result is the same as \(oq\f(CW1 cup\fR\(cq. .PP The \(oq\f(CW+\fR\(cq and \(oq\f(CW-\fR\(cq characters sometimes appears in exponents like \(oq\f(CW3.43e+8\fR\(cq. This leads to an ambiguity in an expression like \(oq\f(CW3e+2 yC\fR\(cq. The unit \%\(oq\f(CWe\fR\(cq is a small unit of charge, so this can be regarded as equivalent to \(oq\f(CW(3e+2) yC\fR\(cq or \(oq\f(CW(3 e)+(2 yC)\fR\(cq. This ambiguity is resolved by always interpreting \(oq\f(CW+\fR\(cq and \(oq\f(CW-\fR\(cq as part of an exponent if possible. .\" -------------------------------------------------------------------- .SS Numbers as Units .\" -------------------------------------------------------------------- For \fIunits\fP, numbers are just another kind of unit. They can appear as many times as you like and in any order in a unit expression. For example, to find the volume of a box that is 2 ft by 3 ft by 12 ft in steres, you could do the following: .EX .PP You have: 2 ft 3 ft 12 ft You want: stere * 2.038813 / 0.49048148 You have: $ 5 / yard You want: cents / inch * 13.888889 / 0.072 .EE .PP And the second example shows how the dollar sign in the units conversion can precede the five. Be careful: \fIunits\fP will interpret \(oq\f(CW$5\fR\(cq with no space as equivalent to \%\(oq\f(CWdollar^5\fR\(cq. .\" -------------------------------------------------------------------- .SS Built-in Functions .\" -------------------------------------------------------------------- Several built-in functions are provided: \%\(oq\f(CWsin\fR\(cq, \%\(oq\f(CWcos\fR\(cq, \%\(oq\f(CWtan\fR\(cq, \%\(oq\f(CWasin\fR\(cq, \%\(oq\f(CWacos\fR\(cq, \%\(oq\f(CWatan\fR\(cq, \%\(oq\f(CWsinh\fR\(cq, \%\(oq\f(CWcosh\fR\(cq, \%\(oq\f(CWtanh\fR\(cq, \%\(oq\f(CWasinh\fR\(cq, \%\(oq\f(CWacosh\fR\(cq, \%\(oq\f(CWatanh\fR\(cq, \%\(oq\f(CWexp\fR\(cq, \%\(oq\f(CWln\fR\(cq, \%\(oq\f(CWlog\fR\(cq, \%\(oq\f(CWabs\fR\(cq, \%\(oq\f(CWround\fR\(cq, \%\(oq\f(CWfloor\fR\(cq, \%\(oq\f(CWceil\fR\(cq, \%\(oq\f(CWfactorial\fR\(cq, \%\(oq\f(CWGamma\fR\(cq, \%\(oq\f(CWlnGamma\fR\(cq, \%\(oq\f(CWerf\fR\(cq, and \%\(oq\f(CWerfc\fR\(cq; the function \%\(oq\f(CWlnGamma\fR\(cq is the natural logarithm of the \%\(oq\f(CWGamma\fR\(cq function. .PP The \%\(oq\f(CWsin\fR\(cq, \%\(oq\f(CWcos\fR\(cq, and \%\(oq\f(CWtan\fR\(cq functions require either a dimensionless argument or an argument with dimensions of angle. .EX .PP You have: sin(30 degrees) You want: Definition: 0.5 You have: sin(pi/2) You want: Definition: 1 You have: sin(3 kg) ^ Unit not dimensionless .EE .PP The other functions on the list require dimensionless arguments. The inverse trigonometric functions return arguments with dimensions of angle. .PP The \%\(oq\f(CWln\fR\(cq and \%\(oq\f(CWlog\fR\(cq functions give natural log and log base 10 respectively. To obtain logs for any integer base, enter the desired base immediately after \%\(oq\f(CWlog\fR\(cq. For example, to get log base 2 you would write \%\(oq\f(CWlog2\fR\(cq and to get log base 47 you could write \%\(oq\f(CWlog47\fR\(cq. .EX .PP You have: log2(32) You want: Definition: 5 You have: log3(32) You want: Definition: 3.1546488 You have: log4(32) You want: Definition: 2.5 You have: log32(32) You want: Definition: 1 You have: log(32) You want: Definition: 1.50515 You have: log10(32) You want: Definition: 1.50515 .EE .PP If you wish to take roots of units, you may use the \%\(oq\f(CWsqrt\fR\(cq or \%\(oq\f(CWcuberoot\fR\(cq functions. These functions require that the argument have the appropriate root. You can obtain higher roots by using fractional exponents: .EX .PP You have: sqrt(acre) You want: feet * 208.71074 / 0.0047913202 You have: (400 W/m^2 / stefanboltzmann)^(1/4) You have: Definition: 289.80882 K You have: cuberoot(hectare) ^ Unit not a root .EE .\" -------------------------------------------------------------------- .SS Previous Result .\" -------------------------------------------------------------------- You can insert the result of the previous conversion using the underscore (\%\(oq\f(CW_\fR\(cq). It is useful when you want to convert the same input to several different units, for example .EX .PP You have: 2.3 tonrefrigeration You want: btu/hr * 27600 / 3.6231884e-005 You have: _ You want: kW * 8.0887615 / 0.12362832 .EE .PP Suppose you want to do some deep frying that requires an oil depth of 2\ inches. You have 1/2 gallon of oil, and want to know the largest-diameter pan that will maintain the required depth. The nonlinear unit \%\(oq\f(CWcirclearea\fR\(cq gives the \fIradius\fP of the circle (see \fIOther Nonlinear Units\fP, for a more detailed description) in SI units; you want the \fIdiameter\fP in \fIinches\fP: .EX .PP You have: 1|2 gallon / 2 in You want: circlearea 0.10890173 m You have: 2 _ You want: in * 8.5749393 / 0.1166189 .EE .PP In most cases, surrounding white space is optional, so the previous example could have used \(oq\f(CW2_\fR\(cq. If \%\(oq\f(CW_\fR\(cq follows a non-numerical unit symbol, however, the space is required: .EX .PP You have: m_ ^ Parse error .EE .PP You can use the \%\(oq\f(CW_\fR\(cq symbol any number of times; for example, .EX .PP You have: m You want: Definition: 1 m You have: _ _ You want: Definition: 1 m^2 .EE .PP Using \%\(oq\f(CW_\fR\(cq before a conversion has been performed (e.g., immediately after invocation) generates an error: .tr '\(aq .EX .PP You have: _ ^ No previous result; '_' not set .EE .tr '\(cq .PP Accordingly, \%\(oq\f(CW_\fR\(cq serves no purpose when \fIunits\fP is invoked non-interactively. .PP If \fIunits\fP is invoked with the \(oq\f(CW-\&-verbose\fR\(cq option (see \fIInvoking Units\fP), the value of \%\(oq\f(CW_\fR\(cq is not expanded: .EX .PP You have: mile You want: ft mile = 5280 ft mile = (1 / 0.00018939394) ft You have: _ You want: m _ = 1609.344 m _ = (1 / 0.00062137119) m .EE .PP You can give \%\(oq\f(CW_\fR\(cq at the \%\(oq\f(CWYou\ want:\fR\(cq prompt, but it usually is not very useful. .\" -------------------------------------------------------------------- .SS Complicated Unit Expressions .\" -------------------------------------------------------------------- The \fIunits\fP program is especially helpful in ensuring accuracy and dimensional consistency when converting lengthy unit expressions. .if t .ig ++ For example, one form of the Darcy-Weisbach fluid-flow equation is .RS 5n .PP Delta \fIP\fP = (8 / pi)^2 (\fIrho\fP \fIfLQ\fP^2) / \fId\fP^5, .RE .PP where Delta \fIP\fP is the pressure drop, \fIrho\fP is the mass density, \fIf\fP is the (dimensionless) friction factor, \fIL\fP is the length of the pipe, \fIQ\fP is the volumetric flow rate, and \fId\fP is the pipe diameter. You might want to have the equation in the form .RS 5n .PP Delta \fIP\fP = A1 \fIrho\fP \fIfLQ\fP^2 / \fId\fP^5 .RE .PP .++ .if n .ig ++ .EQ delim $$ .EN For example, one form of the Darcy\-Weisbach fluid-flow equation is .RS 5n .PP .EQ DELTA P = 8 over pi sup 2 rho fL Q sup 2 over d sup 5 , .EN .RE .PP where $DELTA P$ is the pressure drop, $rho$ is the mass density, $f$ is the (dimensionless) friction factor, $L$ is the length of the pipe, $Q$ is the volumetric flow rate, and $d$ is the pipe diameter. You might want to have the equation in the form .RS 5n .PP .EQ DELTA P = A sub 1 rho fL Q sup 2 over d sup 5 .EN .RE .PP .EQ delim off .EN .++ .PP that accepted the user's normal units; for typical units used in the US, the required conversion could be something like .EX .PP You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5) You want: psi * 43.533969 / 0.022970568 .EE .PP The parentheses allow individual terms in the expression to be entered naturally, as they might be read from the formula. Alternatively, the multiplication could be done with the \(oq\f(CW*\fR\(cq rather than a space; then parentheses are needed only around \%\(oq\f(CWft^3/s\fR\(cq because of its exponent: .EX .PP You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5 You want: psi * 43.533969 / 0.022970568 .EE .PP Without parentheses, and using spaces for multiplication, the previous conversion would need to be entered as .EX .PP You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5 You want: psi * 43.533969 / 0.022970568 .EE .\" -------------------------------------------------------------------- .SS Variables Assigned at Run Time .\" -------------------------------------------------------------------- Unit definitions are fixed once \fIunits\fP has finished reading the units data file(s), but at run time you can assign unit expressions to variables whose names begin with an underscore, using the syntax .EX .PP _\fIname\fP = \fI\fP .EE .PP This can help manage a long calculation by saving intermediate quantities as variables that you can use later. For example, to determine the shot-noise-limited signal-to-noise ratio (SNR) of an imaging system using a helium\(enneon laser, you could do .EX .PP You have: _lambda = 632.8 nm # laser wavelength You have: _nu = c / _lambda # optical frequency You have: _photon_energy = h * _nu You have: _power = 550 uW You have: _photon_count = _power * 500 ns / _photon_energy You have: _snr = sqrt(_photon_count) You have: _snr You want: Definition: sqrt(_photon_count) = 29597.922 .EE .PP Except for beginning with an underscore, runtime variables follow the same naming rules as units. Because names beginning with \%\(oq\f(CW_\fR\(cq are reserved for these variables and unit names cannot begin with \%\(oq\f(CW_\fR\(cq, runtime variables can never hide unit definitions. Runtime variables are undefined until you make an assignment to them, so if you give a name beginning with an underscore and no assignment has been made, you get an error message. .PP When you assign a unit expression to a runtime variable, \fIunits\fP checks the expression to determine whether it is valid, but the resulting definition is stored as a text string, and is not reduced to primitive units. The text will be processed anew each time you use the variable in a conversion or calculation. This means that if your definition depends on other runtime variables (or the special variable \%\(oq\f(CW_\fR\(cq), the result of calculating with your variable will change if any of those variables change. A dependence need not be direct. .PP Continuing the example of the laser above, suppose you have done the calculation as shown. You now wonder what happens if you switch to an argon laser: .EX .PP You have: _lambda = 454.6 nm You have: _snr You want: Definition: sqrt(_photon_count) = 25086.651 .EE .PP If you then change the power: .EX .PP You have: _power = 1 mW You have: _snr You want: Definition: sqrt(_photon_count) = 33826.834 .EE .PP Instead of having to reenter or edit a lengthy expression when you perform another calculation, you need only enter values that change; in this respect, runtime variables are similar to a spreadsheet. .PP The more times a variable appears in an expression that depends on it, the greater the benefit of having a calculation using that expression reflect changes to that variable. For example, the length of a sidereal day at a given latitude and declination of the Sun is given by .if t .ig ++ .RS 5n .PP \fIL\fP = acos((sin \fIh\fP - sin \fI\(*f\fP sin \fI\(*d\fP) / (cos \fI\(*f\fP cos \fI\(*d\fP)) .RE .PP where \fIL\fP is the day length, \fIh\fP is the altitude, \fI\(*f\fP is the latitude, and \fI\(*d\fP is the Sun's declination. .++ .if n .ig ++ .EQ delim $$ .EN .RS 5n .PP .EQ L = 2 cos sup {-1} left ( {sin h - sin phi sin delta} over {cos phi cos delta} right ) .EN .RE .PP where $L$ is the day length, $phi$ is the latitude, and $delta$ is the Sun's declination. .EQ delim off .EN .++ .PP The length of a solar day is obtained from a sidereal day by multiplying by .EX .PP siderealday / day .EE .PP By convention, the Sun's altitude at rise or set is \&\-50\(fm to allow for atmospheric refraction and the semidiameter of its disk. At the summer solstice, the Sun's declination is approximately 23.44\(de; to find the length of the longest day of the year for a latitude of 55\(de, you could do .EX .PP You have: _alt = -50 arcmin You have: _lat = 55 deg You have: _decl = 23.44 deg You have: _num = sin(_alt) - sin(_lat) sin(_decl) You have: _denom = cos(_lat) cos(_decl) You have: _sday = 2 (acos(_num / _denom) / circle) 24 hr You have: _day = _sday siderealday / day You have: _day You want: hms 17 hr + 19 min + 34.895151 sec .EE .PP At the winter solstice, the Sun's declination is approximately \-23.44\(de, so you could calculate the length of the shortest day of the year using: .EX .PP You have: _decl = -23.44 deg You have: _day You want: hms 7 hr + 8 min + 40.981084 sec .EE .PP Latitude and declination each appear twice in the expression for \%\f(CW_day\fR; the result in the examples above is updated by changing only the value of the declination. .PP It's important to remember that evaluation of runtime variables is delayed, so you cannot make an assignment that is self-referential. For example, the following does not work: .EX .PP You have: _decl = 23.44 deg You have: _decl = -_decl You have: _decl Circular unit definition .EE .PP A runtime variable must be assigned before it can be used in an assignment; in the first of the three examples above, giving the general equation before the values for \%\f(CW_alt\fR, \%\f(CW_lat\fR, and \%\f(CW_decl\fR had been assigned would result in an error message. .\" -------------------------------------------------------------------- .SS Backwards Compatibility: \(oq\f(CW*\fR\(cq and \(oq\f(CW-\fR\(cq .\" -------------------------------------------------------------------- The original \fIunits\fP assigned multiplication a higher precedence than division using the slash. This differs from the usual precedence rules, which give multiplication and division equal precedence, and can be confusing for people who think of units as a calculator. .PP The star operator (\(oq\f(CW*\fR\(cq) included in this \fIunits\fP program has, by default, the same precedence as division, and hence follows the usual precedence rules. For backwards compatibility you can invoke \fIunits\fP with the \(oq\f(CW-\&-oldstar\fR\(cq option. Then \(oq\f(CW*\fR\(cq has a higher precedence than division, and the same precedence as multiplication using the space. .PP Historically, the hyphen (\(oq\f(CW-\fR\(cq) has been used in technical publications to indicate products of units, and the original \fIunits\fP program treated it as a multiplication operator. Because \fIunits\fP provides several other ways to obtain unit products, and because \(oq\f(CW-\fR\(cq is a subtraction operator in general algebraic expressions, \fIunits\fP treats the binary \(oq\f(CW-\fR\(cq as a subtraction operator by default. For backwards compatibility use the \(oq\f(CW-\&-product\fR\(cq option, which causes \fIunits\fP to treat the binary \(oq\f(CW-\fR\(cq operator as a product operator. When \(oq\f(CW-\fR\(cq is a multiplication operator it has the same precedence as multiplication with a space, giving it a higher precedence than division. .PP When \(oq\f(CW-\fR\(cq is used as a unary operator it negates its operand. Regardless of the \fIunits\fP options, if \(oq\f(CW-\fR\(cq appears after \(oq\f(CW(\fR\(cq or after \(oq\f(CW+\fR\(cq, then it will act as a negation operator. So you can always compute 20 degrees minus 12 minutes by entering \(oq\f(CW20\ degrees + -12\ arcmin\fR\(cq. You must use this construction when you define new units because you cannot know what options will be in force when your definition is processed. .\" ==================================================================== .SH NONLINEAR UNIT CONVERSIONS .\" ==================================================================== Nonlinear units are represented using functional notation. They make possible nonlinear unit conversions such as temperature. .\" -------------------------------------------------------------------- .SS Temperature Conversions .\" -------------------------------------------------------------------- Conversions between temperatures are different from linear conversions between temperature \fIincrements\fP\(emsee the example below. The absolute temperature conversions are handled by units starting with \%\(oq\f(CWtemp\fR\(cq, and you must use functional notation. The temperature-increment conversions are done using units starting with \%\(oq\f(CWdeg\fR\(cq and they do not require functional notation. .EX .PP You have: tempF(45) You want: tempC 7.2222222 You have: 45 degF You want: degC * 25 / 0.04 .EE .PP Think of \%\(oq\f(CWtempF(\fIx\fP)\fR\(cq not as a function but as a notation that indicates that \fIx\fP should have units of \%\(oq\f(CWtempF\fR\(cq attached to it. See \fIDefining Nonlinear Units\fP. The first conversion shows that if it's 45 degrees Fahrenheit outside, it's 7.2 degrees Celsius. The second conversion indicates that a change of 45 degrees Fahrenheit corresponds to a change of 25 degrees Celsius. The conversion from \%\(oq\f(CWtempF(\fIx\fP)\fR\(cq is to absolute temperature, so that .EX .PP You have: tempF(45) You want: degR * 504.67 / 0.0019814929 .EE .PP gives the same result as .EX .PP You have: tempF(45) You want: tempR * 504.67 / 0.0019814929 .EE .PP But if you convert \%\(oq\f(CWtempF(\fIx\fP)\fR\(cq to \%\(oq\f(CWdegC\fR\(cq, the output is probably not what you expect: .EX .PP You have: tempF(45) You want: degC * 280.37222 / 0.0035666871 .EE .PP The result is the temperature in K, because \%\(oq\f(CWdegC\fR\(cq is defined as \%\(oq\f(CWK\fR\(cq, the kelvin. For consistent results, use the \%\(oq\f(CWtemp\fIX\fP\fR\(cq units when converting to a temperature rather than converting a temperature increment. .PP The \%\(oq\f(CWtempC()\fR\(cq and \%\(oq\f(CWtempF()\fR\(cq definitions are limited to positive absolute temperatures, and giving a value that would result in a negative absolute temperature generates an error message: .EX .PP You have: tempC(-275) ^ Argument of function outside domain .EE .\" -------------------------------------------------------------------- .SS US Consumer Price Index .\" -------------------------------------------------------------------- \fIunits\fP includes the US Consumer Price Index published by the US Bureau of Labor Statistics. Several functions that use this value are provided: \%\(oq\f(CWcpi\fR\(cq, \%\(oq\f(CWcpi_now\fR\(cq, \%\(oq\f(CWinflation_since\fR\(cq, and \%\(oq\f(CWdollars_in\fR\(cq. .PP The \%\(oq\f(CWcpi\fR\(cq function gives the CPI for a specified decimal year. A \fIdecimal year\fP is given as the year plus the fractional part of the year; because of leap years and the different lengths of months, calculating an exact value for the fractional part can be tedious, but for the purposes of CPI, an approximate value is usually adequate. For example, 1\ January 2000 is 2000.0, 1\ April 2000 is 2000.25, 1\ July 2000 is 2000.4986, and 1\ October 2000 is 2000.75. Note also that the CPI data update monthly; values in between months are linearly interpolated. .PP In the middle of 1975, the CPI was .EX .PP You have: cpi(1975.5) You want: Definition: 53.6 .EE .PP The value of the CPI for the previous month is usually published toward the the month; the latest value of the CPI is available with \%\(oq\f(CWcpi_now\fR\(cq. On 7\ January 2024, the value was .EX .PP You have: cpi_now You want: Definition: UScpi_now = 307.051 .EE .PP This means that the CPI was 307.015 on 1\ December 2023. The \%\(oq\f(CWcpi_now\fR\(cq variable can only present the most recent data available, so it can lag the current CPI by several weeks. The decimal year of the last update is available with \%\(oq\f(CWcpi_lastdate\fR\(cq. .PP The \%\(oq\f(CWinflation_since\fR\(cq function provides a convenient way to determine the inflation factor from a specified decimal year to the latest value in the CPI table. For example, on 7\ January 2024: .EX .PP You have: inflation_since(1970) You want: Definition: 8.1445889 .EE .PP In other words, goods that cost 1 US$ in 1970 would cost 8.14 US$ on 1\ December 2023. .PP The \%\(oq\f(CWinflation_since\fR\(cq function can be used to determine an annual rate of inflation. The earliest US CPI data are from about 1913.1; the approximate time between then and 7\ January 2024 is 110.9 years. The approximate annual inflation rate for that period is then .EX .PP You have: inflation_since(1913.1)^1|110.9 - 1 You want: % * 3.1548115 / 0.31697614 .EE .PP The inflation rate for any time period can be found from the ratio of the CPI at the end of the period to that of the beginning: .EX .PP You have: (cpi(1982)/cpi(1972))^1|10 - 1 You want: % * 8.6247033 / 0.11594602 .EE .PP The period 1972\(en1982 was indeed one of high inflation. .PP The \%\(oq\f(CWdollars_in\fR\(cq function is similar to \%\(oq\f(CWinflation_since\fR\(cq but its output is in US$ rather than dimensionless: .EX .PP You have: dollars_in(1970) You want: Definition: 8.1445889 US$ .EE .PP A typical use might be .EX .PP You have: 250 dollars_in(1970) You want: $ * 2036.1472 / 0.00049112362 .EE .PP Because \%\(oq\f(CWdollars_in\fR\(cq includes the units, you should not include them at the \%\(oq\f(CWYou\ have:\fR\(cq prompt. You can also use \%\(oq\f(CWdollars_in\fR\(cq to convert between two specified years: .EX .PP You have: 250 dollars_in(1970) You want: dollars_in(1950) * 156.49867 / 0.0063898305 .EE .PP which shows that 250 US$ in 1970 would have equivalent purchasing power to 156 US$ in 1950. .\" -------------------------------------------------------------------- .SS Other Nonlinear Units .\" -------------------------------------------------------------------- Some other examples of nonlinear units are numerous different ring sizes and wire gauges, the grit sizes used for abrasives, the decibel scale, shoe size, scales for the density of sugar (e.g., baume). The standard data file also supplies units for computing the area of a circle and the volume of a sphere. See the standard units data file for more details. Wire gauges with multiple zeroes are signified using negative numbers where two zeroes is \(oq\f(CW-1\fR\(cq. Alternatively, you can use the synonyms \%\(oq\f(CWg00\fR\(cq, \%\(oq\f(CWg000\fR\(cq, and so on that are defined in the standard units data file. .EX .PP You have: wiregauge(11) You want: inches * 0.090742002 / 11.020255 You have: brwiregauge(g00) You want: inches * 0.348 / 2.8735632 You have: 1 mm You want: wiregauge 18.201919 You have: grit_P(600) You want: grit_ansicoated 342.76923 .EE .PP The last example shows the conversion from P graded sand paper, which is the European standard and may be marked \(lqP600\(rq on the back, to the USA standard. .PP You can compute the area of a circle using the nonlinear unit, \%\(oq\f(CWcirclearea\fR\(cq. You can also do this using the circularinch or circleinch. The next example shows two ways to compute the area of a circle with a five inch radius and one way to compute the volume of a sphere with a radius of one meter. .EX .PP You have: circlearea(5 in) You want: in2 * 78.539816 / 0.012732395 You have: 10^2 circleinch You want: in2 * 78.539816 / 0.012732395 You have: spherevol(meter) You want: ft3 * 147.92573 / 0.0067601492 .EE .PP The inverse of a nonlinear conversion is indicated by prefixing a tilde (\(oq\f(CW~\fR\(cq) to the nonlinear unit name: .EX .PP You have: ~wiregauge(0.090742002 inches) You want: Definition: 11 .EE .PP You can give a nonlinear unit definition without an argument or parentheses, and press \fIEnter\fP at the \%\(oq\f(CWYou\ want:\fR\(cq prompt to get the definition of a nonlinear unit; if the definition is not valid for all real numbers, the range of validity is also given. If the definition requires specific units this information is also displayed: .EX .PP You have: tempC Definition: tempC(x) = x K + stdtemp defined for x >= -273.15 You have: ~tempC Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K defined for tempC >= 0 K You have: circlearea Definition: circlearea(r) = pi r^2 r has units m .EE .PP To see the definition of the inverse use the \(oq\f(CW~\fR\(cq notation. In this case the parameter in the functional definition will usually be the name of the unit. Note that the inverse for \%\(oq\f(CWtempC\fR\(cq shows that it requires units of \%\(oq\f(CWK\fR\(cq in the specification of the allowed range of values. Nonlinear unit conversions are described in more detail in \fIDefining Nonlinear Units\fP. .\" ==================================================================== .SH UNIT LISTS: CONVERSION TO SUMS OF UNITS .\" ==================================================================== Outside of the SI, it is sometimes desirable to convert a single unit to a sum of units\(emfor example, feet to feet plus inches. The conversion \fIfrom\fP sums of units was described in \fISums and Differences of Units\fP, and is a simple matter of adding the units with the \(oq\f(CW+\fR\(cq sign: .EX .PP You have: 12 ft + 3 in + 3|8 in You want: ft * 12.28125 / 0.081424936 .EE .PP Although you can similarly write a sum of units to convert \fIto\fP, the result will not be the conversion to the units in the sum, but rather the conversion to the particular sum that you have entered: .EX .PP You have: 12.28125 ft You want: ft + in + 1|8 in * 11.228571 / 0.089058524 .EE .PP The unit expression given at the \%\(oq\f(CWYou\ want:\fR\(cq prompt is equivalent to asking for conversion to multiples of \(oq\f(CW1\ ft + 1\ in + 1|8\ in\fR\(cq, which is 1.09375 ft, so the conversion in the previous example is equivalent to .EX .PP You have: 12.28125 ft You want: 1.09375 ft * 11.228571 / 0.089058524 .EE .PP In converting to a sum of units like miles, feet and inches, you typically want the largest integral value for the first unit, followed by the largest integral value for the next, and the remainder converted to the last unit. You can do this conversion easily with \fIunits\fP using a special syntax for lists of units. You must list the desired units in order from largest to smallest, separated by the semicolon (\(oq\f(CW;\fR\(cq) character: .EX .PP You have: 12.28125 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in .EE .PP The conversion always gives integer coefficients on the units in the list, except possibly the last unit when the conversion is not exact: .EX .PP You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3.00096 * 1|8 in .EE .PP The order in which you list the units is important: .EX .PP You have: 3 kg You want: oz;lb 105 oz + 0.051367866 lb You have: 3 kg You want: lb;oz 6 lb + 9.8218858 oz .EE .PP Listing ounces before pounds produces a technically correct result, but not a very useful one. You must list the units in descending order of size in order to get the most useful result. .PP Ending a unit list with the separator \(oq\f(CW;\fR\(cq has the same effect as repeating the last unit on the list, so \%\(oq\f(CWft;in;1|8 in;\fR\(cq is equivalent to \%\(oq\f(CWft;in;1|8 in;1|8 in\fR\(cq. With the example above, this gives .EX .PP You have: 12.28126 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in .EE .PP in effect separating the integer and fractional parts of the coefficient for the last unit. If you instead prefer to round the last coefficient to an integer you can do this with the \(oq\f(CW-\&-round\fR\(cq (\(oq\f(CW-r\fR\(cq) option. With the previous example, the result is .EX .PP You have: 12.28126 ft You want: ft;in;1|8 in 12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in) .EE .PP When you use the \(oq\f(CW-r\fR\(cq option, repeating the last unit on the list has no effect (e.g., \%\(oq\f(CWft;in;1|8 in;1|8 in\fR\(cq is equivalent to \%\(oq\f(CWft;in;1|8 in\fR\(cq), and hence neither does ending a list with a \(oq\f(CW;\fR\(cq. With a single unit and the \(oq\f(CW-r\fR\(cq option, a terminal \(oq\f(CW;\fR\(cq \fIdoes\fP have an effect: it causes \fIunits\fP to treat the single unit as a list and produce a rounded value for the single unit. Without the extra \(oq\f(CW;\fR\(cq, the \(oq\f(CW-r\fR\(cq option has no effect on single unit conversions. This example shows the output using the \(oq\f(CW-r\fR\(cq option: .EX .PP You have: 12.28126 ft You want: in * 147.37512 / 0.0067854058 You have: 12.28126 ft You want: in; 147 in (rounded down to nearest in) .EE .PP Each unit that appears in the list must be conformable with the first unit on the list, and of course the listed units must also be conformable with the unit that you enter at the \%\(oq\f(CWYou\ have:\fR\(cq prompt. .EX .PP You have: meter You want: ft;kg ^ conformability error ft = 0.3048 m kg = 1 kg You have: meter You want: lb;oz conformability error 1 m 0.45359237 kg .EE .PP In the first case, \fIunits\fP reports the disagreement between units appearing on the list. In the second case, \fIunits\fP reports disagreement between the unit you entered and the desired conversion. This conformability error is based on the first unit on the unit list. .PP Other common candidates for conversion to sums of units are angles and time: .EX .PP You have: 23.437754 deg You want: deg;arcmin;arcsec 23 deg + 26 arcmin + 15.9144 arcsec You have: 7.2319 hr You want: hr;min;sec 7 hr + 13 min + 54.84 sec .EE .PP Some applications for unit lists may be less obvious. Suppose that you have a postal scale and wish to ensure that it's accurate at 1\ oz, but have only metric calibration weights. You might try .EX .PP You have: 1 oz You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g; 20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g .EE .PP You might then place one each of the 20\ g, 5\ g, 2\ g, and 1\ g weights on the scale and hope that it indicates close to .EX .PP You have: 20 g + 5 g + 2 g + 1 g You want: oz; 0.98767093 oz .EE .PP Appending \(oq\f(CW;\fR\(cq to \%\(oq\f(CWoz\fR\(cq forces a one-line display that includes the unit; here the integer part of the result is zero, so it is not displayed. .PP If a non-empty list item differs vastly in scale from the quantity from which the list is to be converted, you may exceed the available precision of floating point (about 15 digits), in which case you will get a warning, e.g., .EX .PP You have: lightyear You want: mile;100 inch;10 inch;mm;micron 5.8786254e+12 mile + 390 * 100 inch (at 15-digit precision limit) .EE .\" -------------------------------------------------------------------- .SS Cooking Measure .\" -------------------------------------------------------------------- In North America, recipes for cooking typically measure ingredients by volume, and use units that are not always convenient multiples of each other. Suppose that you have a recipe for 6 and you wish to make a portion for 1. If the recipe calls for 2\ 1/2 cups of an ingredient, you might wish to know the measurements in terms of measuring devices you have available, you could use \fIunits\fP and enter .EX .PP You have: (2+1|2) cup / 6 You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp 1|3 cup + 1 tbsp + 1 tsp .EE .PP By default, if a unit in a list begins with fraction of the form 1|\fIx\fP and its multiplier is an integer, the fraction is given as the product of the multiplier and the numerator; for example, .EX .PP You have: 12.28125 ft You want: ft;in;1|8 in; 12 ft + 3 in + 3|8 in .EE .PP In many cases, such as the example above, this is what is wanted, but sometimes it is not. For example, a cooking recipe for 6 might call for 5\ 1/4 cup of an ingredient, but you want a portion for 2, and your 1-cup measure is not available; you might try .EX .PP You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3|2 cup + 1|4 cup .EE .PP This result might be fine for a baker who has a 1\ 1/2-cup measure (and recognizes the equivalence), but it may not be as useful to someone with more limited set of measures, who does want to do additional calculations, and only wants to know \(lqHow many 1/2-cup measures to I need to add?\(rq After all, that's what was actually asked. With the \(oq\f(CW-\&-show-factor\fR\(cq option, the factor will not be combined with a unity numerator, so that you get .EX .PP You have: (5+1|4) cup / 3 You want: 1|2 cup;1|3 cup;1|4 cup 3 * 1|2 cup + 1|4 cup .EE .PP A user-specified fractional unit with a numerator other than 1 is never overridden, however\(emif a unit list specifies \(oq\f(CW3|4 cup;1|2 cup\fR\(cq, a result equivalent to 1\ 1/2 cups will always be shown as \(oq\f(CW2 * 3|4\ cup\fR\(cq whether or not the \(oq\f(CW-\&-show-factor\fR\(cq option is given. .\" -------------------------------------------------------------------- .SS Unit List Aliases .\" -------------------------------------------------------------------- A unit list such as .EX .PP cup;1|2\ cup;1|3\ cup;1|4\ cup;tbsp;tsp;1|2\ tsp;1|4\ tsp .EE .PP can be tedious to enter. The \fIunits\fP program provides shorthand names for some common combinations: .EX .PP hms \fRtime: hours, minutes, seconds\fP dms \fRangle: degrees, minutes, seconds\fP time \fRtime: years, days, hours, minutes and seconds\fP usvol \fRUS cooking volume: cups and smaller\fP uswt \fRUS weight: pounds and ounces\fP ftin \fRlength: feet, inches and 1/8 inches\fP inchfine \fRlength: inches subdivided to 1/64 inch\fP .EE .PP Using these shorthands, or \fIunit list aliases\fP, you can do the following conversions: .EX .PP You have: anomalisticyear You want: time 1 year + 25 min + 3.4653216 sec You have: 1|6 cup You want: usvol 2 tbsp + 2 tsp .EE .PP You can define your own unit list aliases; see \fIDefining Unit List Aliases\fP. .PP You cannot combine a unit list alias with other units: it must appear alone at the \%\(oq\f(CWYou\ want:\fR\(cq prompt. .PP You can display the definition of a unit list alias by entering it at the \%\(oq\f(CWYou\ have:\fR\(cq prompt: .EX .PP You have: dms Definition: unit list, deg;arcmin;arcsec .EE .PP When you specify compact output with \(oq\f(CW-\&-compact\fR\(cq, \(oq\f(CW-\&-terse\fR\(cq or \(oq\f(CW-t\fR\(cq and perform conversion to a unit list, \fIunits\fP lists the conversion factors for each unit in the list, separated by semicolons. .EX .PP You have: year You want: day;min;sec 365;348;45.974678 .EE .PP Unlike the case of regular output, zeros \fIare\fP included in this output list: .EX .PP You have: liter You want: cup;1|2 cup;1|4 cup;tbsp 4;0;0;3.6280454 .EE .\" ==================================================================== .SH ALTERNATIVE UNIT SYSTEMS .\" ==================================================================== .\" -------------------------------------------------------------------- .SS CGS Units .\" -------------------------------------------------------------------- The SI\(eman extension of the MKS (meter\(enkilogram\(ensecond) system\(emhas largely supplanted the older CGS (centimeter\(engram\(ensecond) system, but CGS units are still used in a few specialized fields, especially in physics where they lead to a more elegant formulation of Maxwell's equations. Conversions between SI and CGS involving mechanical units are straightforward, involving powers of 10 (e.g., 1\ m\ =\ 100\ cm). Conversions involving electromagnetic units are more complicated, and \fIunits\fP supports four different systems of CGS units: electrostatic units (ESU), electromagnetic units (EMU), the Gaussian system and the Heaviside\(enLorentz system. The differences between these systems arise from different choices made for proportionality constants in electromagnetic equations. Coulomb's law gives electrostatic force between two charges separated by a distance .EQ delim $$ .EN .if n \fIr\fP: .if t $r$: .RS 5n .PP .if n \fIF\fP = \fIk\fP_C \fIq\fP_1\ \fIq\fP_2\ /\ \fIr\fP^2. .if t \{\ .EQ F = k sub roman C { q sub 1 q sub 2} over r sup 2. .EN .\} .RE .PP Ampere's law gives the electromagnetic force per unit length between two current-carrying conductors separated by a distance .if n \fIr\fP: .if t $r$: .RS 5n .PP .if n \fIF\fP/\fIl\fP = 2 \fIk\fP_A \fII\fP_1\ \fII\fP_2\ /\ \fIr\fP. .if t \{\ .EQ F over l = 2 k sub roman A { I sub 1 I sub 2 } over r . .EN .\} .RE .PP The two constants, .if n \fIk\fP_C and \fIk\fP_A, .if t $k sub roman C$ and $k sub roman A$, are related by the square of the speed of light: .if n \fIk\fP_A\ =\ \fIk\fP_C\ /\ \fIc\fP^2. .if t $k sub roman A = k sub roman C / c sup 2$. .PP In the SI, the constants have dimensions, and an additional base unit, the ampere, measures electric current. The CGS systems do not define new base units, but express charge and current as derived units in terms of mass, length, and time. In the ESU system, the constant for Coulomb's law is chosen to be unity and dimensionless, which defines the unit of charge. In the EMU system, the constant for Ampere's law is chosen to be unity and dimensionless, which defines a unit of current. The Gaussian system usually uses the ESU units for charge and current; it chooses another constant so that the units for the electric and magnetic fields are the same. The Heaviside\(enLorentz system is \(lqrationalized\(rq so that factors of .if n 4{pi} .if t 4\(*p do not appear in Maxwell's equations. The SI system is similarly rationalized, but the other CGS systems are not. In the Heaviside\(enLorentz (HLU) system the factor of .if n 4{pi} .if t 4\(*p appears in Coulomb's law instead; this system differs from the Gaussian system by factors of .if n the square root of 4{pi} .if t \(sr\o'\[sqrtex]4'\o'\[sqrtex]\(*p'\^. .PP The dimensions of electrical quantities in the various CGS systems are different from the SI dimensions for the same units; strictly, conversions between these systems and SI are not possible. But units in different systems relate to the same physical quantities, so there is a \fIcorrespondence\fP between these units. The \fIunits\fP program defines the units so that you can convert between corresponding units in the various systems. .PP The CGS definitions involve .if n cm^(1/2) and g^(1/2), .if t cm$"" sup {1/2}$ and g$"" sup {1/2}$, which is problematic because \fIunits\fP does not normally support fractional roots of base units. The \(oq\f(CW-\&-units\fR\(cq (\(oq\f(CW-u\fR\(cq) option allows selection of a CGS unit system and works around this restriction by introducing base units for the square roots of length and mass: \%\(oq\f(CWsqrt_cm\fR\(cq and \%\(oq\f(CWsqrt_g\fR\(cq. The centimeter then becomes \%\(oq\f(CWsqrt_cm^2\fR\(cq and the gram, \%\(oq\f(CWsqrt_g^2\fR\(cq. This allows working from equations using the units in the CGS system, and enforcing dimensional conformity within that system. Recognized CGS arguments to the \(oq\f(CW-\&-units\fR\(cq option are \%\(oq\f(CWgauss[ian]\fR\(cq, \%\(oq\f(CWesu\fR\(cq, \%\(oq\f(CWemu\fR\(cq, \%\(oq\f(CWlhu\fR\(cq; the argument is case insensitive. You can also give \%\(oq\f(CWsi\fR\(cq which just enforces the default SI mode and displays \(oq\f(CW(SI)\fR\(cq at the \%\(oq\f(CWYou\ have:\fR\(cq prompt to emphasize the units mode. Some other types of units are also supported as described below. Giving an unrecognized system generates a warning, and \fIunits\fP uses SI units. .PP The changes resulting from the \(oq\f(CW-\&-units\fR\(cq option are actually controlled by the \%\f(CWUNITS_SYSTEM\fR environment variable. If you frequently work with one of the supported CGS units systems, you may set this environment variable rather than giving the \(oq\f(CW-\&-units\fR\(cq option at each invocation. As usual, an option given on the command line overrides the setting of the environment variable. For example, if you would normally work with Gaussian units but might occasionally work with SI, you could set \%\f(CWUNITS_SYSTEM\fR to \%\(oq\f(CWgaussian\fR\(cq and specify SI with the \(oq\f(CW-\&-units\fR\(cq option. Unlike the argument to the \(oq\f(CW-\&-units\fR\(cq option, the value of \%\f(CWUNITS_SYSTEM\fR \fIis\fP case sensitive, so setting a value of \%\(oq\f(CWEMU\fR\(cq will have no effect other than to give an error message and set SI units. .PP The CGS definitions appear as conditional settings in the standard units data file, which you can consult for more information on how these units are defined, or on how to define an alternate units system. .PP The ESU system derives the electromagnetic units from its unit of charge, the statcoulomb, which is defined from Coulomb's law. The statcoulomb equals .if n dyne^(1/2)\ cm, or cm^(3/2)\ g^(1/2)\ s^(\(mi1). .if t $roman dyne sup {1/2} ^ roman cm$, .if t or $roman cm sup {3/2} ^ roman g sup {1/2} ^ roman s sup {-1}$. The unit of current, the statampere, is statcoulomb\ sec, analogous to the relationship in SI. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by \%\(oq\f(CWstat-\fR\(cq, e.g., \%\(oq\f(CWstatvolt\fR\(cq or \%\(oq\f(CWstatV\fR\(cq. The prefix \%\(oq\f(CWst-\fR\(cq is also recognized (e.g., \%\(oq\f(CWstV\fR\(cq). .PP The EMU system derives the electromagnetic units from its unit of current, the abampere, which is defined in terms of Ampere's law. The abampere is equal to .if n dyne^(1/2), or cm^(1/2)\ g^(1/2)\ s^(\(mi1). .if t $roman dyne sup {1/2}$, .if t or $roman cm sup {1/2} ^ roman g sup {1/2} ^ roman s sup{-1}$. .EQ delim off .EN The unit of charge, the abcoulomb, is abampere\ sec, again analogous to the SI relationship. Other electrical units are then derived in a manner similar to that for SI units; the units use the SI names prefixed by \%\(oq\f(CWab-\fR\(cq, e.g., \%\(oq\f(CWabvolt\fR\(cq or \%\(oq\f(CWabV\fR\(cq. The magnetic field units include the gauss, the oersted and the maxwell. .PP The Gaussian units system, which was also known as the Symmetric System, uses the same charge and current units as the ESU system (e.g., \%\(oq\f(CWstatC\fR\(cq, \%\(oq\f(CWstatA\fR\(cq); it differs by defining the magnetic field so that it has the same units as the electric field. The resulting magnetic field units are the same ones used in the EMU system: the gauss, the oersted and the maxwell. .PP The Heaviside\(enLorentz system appears to lack named units. We define five basic units, \%\(oq\f(CWhlu_charge\fR\(cq, \%\(oq\f(CWhlu_current\fR\(cq, \%\(oq\f(CWhlu_volt\fR\(cq, \%\(oq\f(CWhlu_efield\fR\(cq and \%\(oq\f(CWhlu_bfield\fR\(cq for conversions with this system. It is important to remember that with all of the CGS systems, the units may look the same but mean something different. The HLU system and Gaussian systems both measure magnetic field using the same CGS dimensions, but the amount of magnetic field with the same units is different in the two systems. .PP The CGS systems define units that measure the same thing but may have conflicting dimensions. Furthermore, the dimensions of the electromagnetic CGS units are never compatible with SI. But if you measure charge in two different systems you have measured the same physical thing, so there is a \fIcorrespondence\fP between the units in the different systems, and \fIunits\fP supports conversions between corresponding units. When running with SI, \fIunits\fP defines all of the CGS units in terms of SI. When you select a CGS system, \fIunits\fP defines the SI units and the other CGS system units in terms of the system you have selected. .EX .PP (Gaussian) You have: statA You want: abA * 3.335641e-11 / 2.9979246e+10 (Gaussian) You have: abA You want: sqrt(dyne) conformability error 2.9979246e+10 sqrt_cm^3 sqrt_g / s^2 1 sqrt_cm sqrt_g / s .EE .PP In the above example, \fIunits\fP converts between the current units statA and abA even though the abA, from the EMU system, has incompatible dimensions. This works because in Gaussian mode, the abA is defined in terms of the statA, so it does not have the correct definition for EMU; consequently, you cannot convert the abA to its EMU definition. .PP One challenge of conversion is that because the CGS system has fewer base units, quantities that have different dimensions in SI may have the same dimension in a CGS system. And yet, they may not have the same conversion factor. For example, the unit for the E field and B fields are the same in the Gaussian system, but the conversion factors to SI are quite different. This means that correct conversion is only possible if you keep track of what quantity is being measured. You cannot convert statV/cm to SI without indicating which type of field the unit measures. To aid in dimensional analysis, \fIunits\fP defines various dimension units such as \%\(oq\f(CWLENGTH\fR\(cq, \%\(oq\f(CWTIME\fR\(cq, and \%\(oq\f(CWCHARGE\fR\(cq to be the appropriate dimension in SI. The electromagnetic dimensions such as \%\(oq\f(CWB_FIELD\fR\(cq or \%\(oq\f(CWE_FIELD\fR\(cq may be useful aids both for conversion and dimensional analysis in CGS. You can convert them to or from CGS in order to perform SI conversions that in some cases will not work directly due to dimensional incompatibilities. This example shows how the Gaussian system uses the same units for all of the fields, but they all have different conversion factors with SI. .EX .PP (Gaussian) You have: statV/cm You want: E_FIELD * 29979.246 / 3.335641e-05 (Gaussian) You have: statV/cm You want: B_FIELD * 0.0001 / 10000 (Gaussian) You have: statV/cm You want: H_FIELD * 79.577472 / 0.012566371 (Gaussian) You have: statV/cm You want: D_FIELD * 2.6544187e-07 / 3767303.1 .EE .PP The next example shows that the oersted cannot be converted directly to the SI unit of magnetic field, A/m, because the dimensions conflict. We cannot redefine the ampere to make this work because then it would not convert with the statampere. But you can still do this conversion as shown below. .EX .PP (Gaussian) You have: oersted You want: A/m conformability error 1 sqrt_g / s sqrt_cm 29979246 sqrt_cm sqrt_g / s^2 (Gaussian) You have: oersted You want: H_FIELD * 79.577472 / 0.012566371 .EE .\" -------------------------------------------------------------------- .SS Natural Units .\" -------------------------------------------------------------------- Like the CGS units, \(lqnatural\(rq units are an alternative to the SI system used primarily physicists in different fields, with different systems tailored to different fields of study. These systems are \(lqnatural\(rq because the base measurements are defined using physical constants instead of arbitrary values such as the meter or second. In different branches of physics, different physical constants are more fundamental, which has given rise to a variety of incompatible natural unit systems. .PP The supported systems are the \(lqnatural\(rq units (which seem to have no better name) used in high energy physics and cosmology, the Planck units, often used by scientists working with gravity, and the Hartree atomic units are favored by those working in physical chemistry and condensed matter physics. .PP You can select the various natural units using the \(oq\f(CW-\&-units\fR\(cq option in the same way that you select the CGS units. The \(lqnatural\(rq units come in two types, a rationalized system derived from the Heaviside\(enLorentz units and an unrationalized system derived from the Gaussian system. You can select these using \%\(oq\f(CWnatural\fR\(cq and \%\(oq\f(CWnatural-gauss\fR\(cq respectively. For conversions in SI mode, several unit names starting with \%\(oq\f(CWnatural\fR\(cq are available. This \(lqnatural\(rq system is defined by setting .if n {hbar}, .if t \[hbar], c and the Boltzman constant to 1. Only a single base unit remains: the electron volt. .PP The Planck units exist in a variety of forms, and \fIunits\fP supports two. Both supported forms are rationalized, in that factors of .if n 4{pi} .if t 4\(*p do not appear in Maxwell's equations. However, Planck units can also differ based on how the gravitational constant is treated. This system is similar to the natural units in that c, .if n {hbar}, .if t \[hbar], and Boltzman's constant are set to 1, but in this system, Newton's gravitational constant, \fIG\fP is also fixed. In the \(lqreduced\(rq Planck system, .EQ delim $$ .EN .if n 8{pi}\fIG\fP\ =\ 1 .if t $8 pi G = 1$ whereas in the unreduced system .if n \fIG\fP\ =\ 1. .if t $G = 1$. The reduced system eliminates factors of .if n 8{pi} .if t 8\(*p .EQ delim off .EN from the Einstein field equations for gravitation, so this is similar to the process of forming rationalized units to simplify Maxwell's equations. To obtain the unreduced system use the name \%\(oq\f(CWplanck\fR\(cq and for the reduced Planck units, \%\(oq\f(CWplanck-red\fR\(cq. Units such as \%\(oq\f(CWplanckenergy\fR\(cq and \%\(oq\f(CWplanckenergy_red\fR\(cq enable you to convert the unreduced and reduced Planck energy unit in SI mode between the various systems. In Planck units, all measurements are dimensionless. .PP The final natural unit system is the Hartree atomic units. Like the Planck units, all measurements in the Hartree units are dimensionless, but this system is defined by defined from completely different physical constants: the electron mass, Planck's constant, the electron charge, and the Coulomb constant are the defining physical quantities, which are all set to unity. To invoke this system with the \(oq\f(CW-\&-units\fR\(cq option use the name \%\(oq\f(CWhartree\fR\(cq. .\" -------------------------------------------------------------------- .SS Prompt Prefix .\" -------------------------------------------------------------------- If a unit system is specified with the \(oq\f(CW-\&-units\fR\(cq option, the selected system's name is prepended to the \%\(oq\f(CWYou\ have:\fR\(cq prompt as a reminder, e.g., .EX .PP (Gaussian) You have: stC You want: Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s .EE .PP You can suppressed the prefix by including a line .EX .PP !prompt .EE .PP with no argument in a site or personal units data file. The prompt can be conditionally suppressed by including such a line within \(oq\f(CW!var\fR\(cq \&...\& \(oq\f(CW!endvar\fR\(cq constructs, e.g., .EX .PP !var UNITS_SYSTEM gaussian gauss !prompt !endvar .EE .PP This might be appropriate if you normally use Gaussian units and find the prefix distracting but want to be reminded when you have selected a different CGS system. .\" ==================================================================== .SH LOGGING CALCULATIONS .\" ==================================================================== The \(oq\f(CW-\&-log\fR\(cq option allows you to save the results of calculations in a file; this can be useful if you need a permanent record of your work. For example, the fluid-flow conversion in \fIComplicated Unit Expressions\fP, is lengthy, and if you were to use it in designing a piping system, you might want a record of it for the project file. If the interactive session .EX .PP # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units You want: psi * 43.533969 / 0.022970568 .EE .PP were logged, the log file would contain .EX .PP ### Log started Fri Oct 02 15:55:35 2015 # Conversion factor A1 for pressure drop # dP = A1 rho f L Q^2/d^5 From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units To: psi * 43.533969 / 0.022970568 .EE .PP The time is written to the log file when the file is opened. .PP The use of comments can help clarify the meaning of calculations for the log. The log includes conformability errors between the units at the \%\(oq\f(CWYou\ have:\fR\(cq and \%\(oq\f(CWYou\ want:\fR\(cq prompts, but not other errors, including lack of conformability of items in sums or differences or among items in a unit list. For example, a conversion between zenith angle and elevation angle could involve .EX .PP You have: 90 deg - (5 deg + 22 min + 9 sec) ^ Invalid sum or difference of non-conformable units You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec) You want: dms 84 deg + 37 arcmin + 51 arcsec You have: _ You want: deg * 84.630833 / 0.011816024 You have: .EE .PP The log file would contain .EX .PP From: 90 deg - (5 deg + 22 arcmin + 9 arcsec) To: deg;arcmin;arcsec 84 deg + 37 arcmin + 51 arcsec From: _ To: deg * 84.630833 / 0.011816024 .EE .PP The initial entry error (forgetting that minutes have dimension of time, and that arcminutes must be used for dimensions of angle) does not appear in the output. When converting to a unit list alias, \fIunits\fP expands the alias in the log file. .PP The \%\(oq\f(CWFrom:\fR\(cq and \%\(oq\f(CWTo:\fR\(cq tags are written to the log file even if the \(oq\f(CW-\&-quiet\fR\(cq option is given. If the log file exists when \fIunits\fP is invoked, the new results are appended to the log file. The time is written to the log file each time the file is opened. The \(oq\f(CW-\&-log\fR\(cq option is ignored when \fIunits\fP is used non-interactively. .\" ==================================================================== .SH INVOKING \f(BIUNITS\fP .\" ==================================================================== You invoke \fIunits\fP like this: .EX .PP units [\fIoptions\fP] [\fIfrom-unit\fP [\fIto-unit\fP]] .EE .PP If the \fIfrom-unit\fP and \fIto-unit\fP are omitted, the program will use interactive prompts to determine which conversions to perform. See \fIInteractive Use\fP. If both \fIfrom-unit\fP and \fIto-unit\fP are given, \fIunits\fP will print the result of that single conversion and then exit. If only \fIfrom-unit\fP appears on the command line, \fIunits\fP will display the definition of that unit and exit. Units specified on the command line may need to be quoted to protect them from shell interpretation and to group them into two arguments. Note also that the \(oq\f(CW-\&-quiet\fR\(cq option is enabled by default if you specify \fIfrom-unit\fP on the command line. See \fICommand Line Use\fP. .PP The default behavior of \fIunits\fP can be changed by various options given on the command line. In most cases, the options may be given in either short form (a single \(oq\f(CW-\fR\(cq followed by a single character) or long form (\(oq\f(CW-\&-\fR\(cq followed by a word or hyphen-separated words). Short-form options are cryptic but require less typing; long-form options require more typing but are more explanatory and may be more mnemonic. With long-form options you need only enter sufficient characters to uniquely identify the option to the program. For example, \(oq\f(CW-\&-out\ %f\fR\(cq works, but \(oq\f(CW-\&-o\ %f\fR\(cq fails because \fIunits\fP has other long options beginning with \%\(oq\f(CWo\fR\(cq. However, \(oq\f(CW-\&-q\fR\(cq works because \(oq\f(CW-\&-quiet\fR\(cq is the only long option beginning with \%\(oq\f(CWq\fR\(cq. .PP Some options require arguments to specify a value (e.g., \(oq\f(CW-d\ 12\fR\(cq or \(oq\f(CW-\&-digits\ 12\fR\(cq). Short-form options that do not take arguments may be concatenated (e.g., \(oq\f(CW-erS\fR\(cq is equivalent to \(oq\f(CW-e\ -r\ -S\fR\(cq); the last option in such a list may be one that takes an argument (e.g., \(oq\f(CW-ed\ 12\fR\(cq). With short-form options, the space between an option and its argument is optional (e.g., \(oq\f(CW-d12\fR\(cq is equivalent to \(oq\f(CW-d\ 12\fR\(cq). Long-form options may not be concatenated, and the space between a long-form option and its argument is required. Short-form and long-form options may be intermixed on the command line. Options may be given in any order, but when incompatible options (e.g., \(oq\f(CW-\&-output-format\fR\(cq and \(oq\f(CW-\&-exponential\fR\(cq) are given in combination, behavior is controlled by the last option given. For example, \(oq\f(CW-o%.12f\ -e\fR\(cq gives exponential format with the default eight significant digits). .PP The following options are available: .TP .BR "\-\^c" ", " "\-\^\-\^check" Check that all units and prefixes defined in units data files reduce to primitive units. Display a list of all units that cannot be reduced and a list of units with circular definitions. Also display some other diagnostics about suspicious definitions in the units data file. Only definitions active in the current locale are checked. You should always run \fIunits\fP with this option after modifying a units data file. .IP Some errors may hide other errors, so you should run \fIunits\fP with this option again after correcting any errors, and keep doing so until there are no errors. .TP .BR "\-\^\\-\^check-verbose" ", " "\-\^\-\^verbose-check" Like the \(oq\f(CW-\&-check\fR\(cq option, this option displays a list of units that cannot be reduced. But it also lists the units as they are checked. Because the \(oq\f(CW-\&-check\fR\(cq option now catches circular unit definitions that previously caused \fIunits\fP to hang, this option is no longer necessary. It is retained only for compatibility with previous versions. .TP .BR "\-\^d \fIndigits\fP" ", " "\-\^\-\^digits \fIndigits\fP" Set the number of significant digits in the output to the value specified (which must be greater than zero). For example, \(oq\f(CW-d\ 12\fR\(cq sets the number of significant digits to 12. With exponential output \fIunits\fP displays one digit to the left of the decimal point and eleven digits to the right of the decimal point. On most systems, the maximum number of internally meaningful digits is 15; if you specify a greater number than your system's maximum, \fIunits\fP will print a warning and set the number to the largest meaningful value. To directly set the maximum value, give an argument of \%\f(CWmax\fR (e.g., \(oq\f(CW-d\ max\fR\(cq). Be aware, of course, that \(lqsignificant\(rq here refers only to the \fIdisplay\fP of numbers; if results depend on physical constants not known to this precision, the physically meaningful precision may be less than that shown. The \(oq\f(CW-\&-digits\fR\(cq option conflicts with the \(oq\f(CW-\&-output-format\fR\(cq option. .TP .BR "\-\^e" ", " "\-\^\-\^exponential" Set the numeric output format to exponential (i.e., scientific notation), like that used in the Unix \fIunits\fP program. The default precision is eight significant digits (seven digits to the right of the decimal point); this can be changed with the \(oq\f(CW-\&-digits\fR\(cq option. The \(oq\f(CW-\&-exponential\fR\(cq option conflicts with the \(oq\f(CW-\&-output-format\fR\(cq option. .TP .BR "\-\^o \fIformat\fP" ", " "\-\^\-\^output-format \fIformat\fP" This option affords complete control over the numeric output format using the specified \fIformat\fP. The format is a single floating point numeric format for the \%\f(CWprintf\fR function in the C programming language. All compilers support the format types \%\(oq\f(CWg\fR\(cq and \%\(oq\f(CWG\fR\(cq to specify significant digits, \%\(oq\f(CWe\fR\(cq and \%\(oq\f(CWE\fR\(cq for scientific notation, and \%\(oq\f(CWf\fR\(cq for fixed-point decimal. The ISO C99 standard introduced the \%\(oq\f(CWF\fR\(cq type for fixed-point decimal and the \%\(oq\f(CWa\fR\(cq and \%\(oq\f(CWA\fR\(cq types for hexadecimal floating point; these types are allowed with compilers that support them. The default format is \(oq\f(CW%.8g\fR\(cq; for greater precision, you could specify \(oq\f(CW-o\ %.15g\fR\(cq. See \fINumeric Output Format\fP and the documentation for \%\f(CWprintf\fR for more detailed descriptions of the format specification. The \(oq\f(CW-\&-output-format\fR\(cq option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the \%\f(CWprintf\fR format syntax. If you don't want to bother with the \%\f(CWprintf\fR syntax, you can specify greater precision more simply with the \(oq\f(CW-\&-digits\fR\(cq option or select exponential format with \(oq\f(CW-\&-exponential\fR\(cq. The \(oq\f(CW-\&-output-format\fR\(cq option is incompatible with the \(oq\f(CW-\&-exponential\fR\(cq and \(oq\f(CW-\&-digits\fR\(cq options. .TP .BR "\-\^f \fIfilename\fP" ", " "\-\^\-\^file \fIfilename\fP" Instruct \fIunits\fP to load the units file \fIfilename\fP. You can specify up to 25 units files on the command line. When you use this option, \fIunits\fP will load \fIonly\fP the files you list on the command line; it will not load the standard file or your personal units file unless you explicitly list them. If \fIfilename\fP is the empty string (\(oq\f(CW-f\ ""\fR\(cq), the default main units file (or that specified by \%\f(CWUNITSFILE\fR) will be loaded in addition to any others specified with \(oq\f(CW-f\fR\(cq. .TP .BR "\-\^L \fIlogfile\fP" ", " "\-\^\-\^log \fIlogfile\fP" Save the results of calculations in the file \fIlogfile\fP; this can be useful if it is important to have a record of unit conversions or other calculations that are to be used extensively or in a critical activity such as a program or design project. If \fIlogfile\fP exits, the new results are appended to the file. This option is ignored when \fIunits\fP is used non-interactively. See \fILogging Calculations\fP for a more detailed description and some examples. .TP .BR "\-\^H \fIfilename\fP" ", " "\-\^\-\^history \fIfilename\fP" Instruct \fIunits\fP to save history to \fIfilename\fP, so that a record of your commands is available for retrieval across different \fIunits\fP invocations. To prevent the history from being saved set \fIfilename\fP to the empty string (\(oq\f(CW-H\ ""\fR\(cq). This option has no effect if readline is not available. .TP .BR "\-\^h" ", " "\-\^\-\^help" Print out a summary of the options for \fIunits\fP. .TP .BR "\-\^m" ", " "\-\^\-\^minus" Causes \(oq\f(CW-\fR\(cq to be interpreted as a subtraction operator. This is the default behavior. .TP .BR "\-\^p" ", " "\-\^\-\^product" Causes \(oq\f(CW-\fR\(cq to be interpreted as a multiplication operator when it has two operands. It will act as a negation operator when it has only one operand: \(oq\f(CW(-3)\fR\(cq. By default \(oq\f(CW-\fR\(cq is treated as a subtraction operator. .TP .BR "\-\^\\-\^oldstar" Causes \(oq\f(CW*\fR\(cq to have the old-style precedence, higher than the precedence of division so that \(oq\f(CW1/2*3\fR\(cq will equal \(oq\f(CW1/6\fR\(cq. .TP .BR "\-\^\\-\^newstar" Forces \(oq\f(CW*\fR\(cq to have the new (default) precedence that follows the usual rules of algebra: the precedence of \(oq\f(CW*\fR\(cq is the same as the precedence of \(oq\f(CW/\fR\(cq, so that \(oq\f(CW1/2*3\fR\(cq will equal \(oq\f(CW3/2\fR\(cq. .TP .BR "\-\^r" ", " "\-\^\-\^round" When converting to a combination of units given by a unit list, round the value of the last unit in the list to the nearest integer. .TP .BR "\-\^S" ", " "\-\^\-\^show-factor" When converting to a combination of units specified in a list, always show a non-unity factor before a unit that begins with a fraction with a unity denominator. By default, if the unit in a list begins with fraction of the form 1|\fIx\fP and its multiplier is an integer other than 1, the fraction is given as the product of the multiplier and the numerator (e.g., \(oq\f(CW3|8\ in\fR\(cq rather than \(oq\f(CW3 * 1|8\ in\fR\(cq). In some cases, this is not what is wanted; for example, the results for a cooking recipe might show \(oq\f(CW3 * 1|2\ cup\fR\(cq as \(oq\f(CW3|2\ cup\fR\(cq. With the \(oq\f(CW-\&-show-factor\fR\(cq option, a result equivalent to 1.5 cups will display as \(oq\f(CW3 * 1|2\ cup\fR\(cq rather than \(oq\f(CW3|2\ cup\fR\(cq. A user-specified fractional unit with a numerator other than 1 is never overridden, however\(emif a unit list specifies \(oq\f(CW3|4 cup;1|2 cup\fR\(cq, a result equivalent to 1\ 1/2 cups will always be shown as \(oq\f(CW2 * 3|4\ cup\fR\(cq whether or not the \(oq\f(CW-\&-show-factor\fR\(cq option is given. .TP .BR "\-\^\\-\^conformable" In non-interactive mode, show all units conformable with the original unit expression. Only one unit expression is allowed; if you give more than one, \fIunits\fP will exit with an error message and return failure. .TP .BR "\-\^v" ", " "\-\^\-\^verbose" Give slightly more verbose output when converting units. When combined with the \(oq\f(CW-c\fR\(cq option this gives the same effect as \(oq\f(CW-\&-check-verbose\fR\(cq. When combined with \(oq\f(CW-\&-version\fR\(cq produces a more detailed output, equivalent to the \(oq\f(CW-\&-info\fR\(cq option. .TP .BR "\-\^V" ", " "\-\^\-\^version" Print the program version number, tell whether the \fIreadline\fP library has been included, tell whether UTF-8 support has been included; give the locale, the location of the default main units data file, and the location of the personal units data file; indicate if the personal units data file does not exist. .IP When given in combination with the \(oq\f(CW-\&-terse\fR\(cq option, the program prints only the version number and exits. .IP When given in combination with the \(oq\f(CW-\&-verbose\fR\(cq option, the program, the \(oq\f(CW-\&-version\fR\(cq option has the same effect as the \(oq\f(CW-\&-info\fR\(cq option below. .TP .BR "\-\^I" ", " "\-\^\-\^info" Print the information given with the \(oq\f(CW-\&-version\fR\(cq option, show the pathname of the units program, show the status of the \%\f(CWUNITSFILE\fR and \%\f(CWMYUNITSFILE\fR environment variables, and additional information about how \fIunits\fP locates the related files. On systems running Microsoft Windows, the status of the \%\f(CWUNITSLOCALE\fR environment variable and information about the related locale map are also given. This option is usually of interest only to developers and administrators, but it can sometimes be useful for troubleshooting. .IP Combining the \(oq\f(CW-\&-version\fR\(cq and \(oq\f(CW-\&-verbose\fR\(cq options has the same effect as giving \(oq\f(CW-\&-info\fR\(cq. .TP .BR "\-\^U" ", " "\-\^\-\^unitsfile" Print the location of the default main units data file and exit; if the file cannot be found, print \(lqUnits data file not found\(rq. .TP .BR "\-\^u \fIunits-system\fP" ", " "\-\^\-\^units \fIunits-system\fP" Specify a CGS units system or natural units system. The supported units systems are: gauss[ian], esu, emu, hlu, natural, natural-gauss, hartree, planck, planck-red, and si. See \fIAlternative Unit Systems\fP for further information about these unit systems. .TP .BR "\-\^l \fIlocale\fP" ", " "\-\^\-\^locale \fIlocale\fP" Force a specified locale such as \%\(oq\f(CWen_GB\fR\(cq to get British definitions by default. This overrides the locale determined from system settings or environment variables. See \fILocale\fP for a description of locale format. .TP .BR "\-\^n" ", " "\-\^\-\^nolists" Disable conversion to unit lists. .TP .BR "\-\^s" ", " "\-\^\-\^strict" Suppress conversion of units to their reciprocal units. For example, \fIunits\fP will normally convert hertz to seconds because these units are reciprocals of each other. The strict option requires that units be strictly conformable to perform a conversion, and will give an error if you attempt to convert hertz to seconds. .TP .BR "\-\^1" ", " "\-\^\-\^one-line" Give only one line of output (the forward conversion); do not print the reverse conversion. If a reciprocal conversion is performed, then \fIunits\fP will still print the \(lqreciprocal conversion\(rq line. .TP .BR "\-\^t" ", " "\-\^\-\^terse" Print only a single conversion factor without any clutter, or if you request a definition, prints just the definition (including its units). This option can be used when calling \fIunits\fP from another program so that the output is easy to parse. The command \%\f(CWunits -\&-terse mile m\fR produces the output \(oq\f(CW1690.344\fR\(cq. This option has the combined effect of these options: \(oq\f(CW-\&-strict\fR\(cq \(oq\f(CW-\&-quiet\fR\(cq \(oq\f(CW-\&-one-line\fR\(cq \(oq\f(CW-\&-compact\fR\(cq. When combined with \(oq\f(CW-\&-version\fR\(cq it produces a display showing only the program name and version number. .TP .BR "\-\^\\-\^compact" Give compact output featuring only the conversion factor; the multiplication and division signs are not shown, and there is no leading whitespace. If you convert to a unit list, then the output is a semicolon separated list of factors. This turns off the \(oq\f(CW-\&-verbose\fR\(cq option. .TP .BR "\-\^q" ", " "\-\^\-\^quiet" ", " "\-\^\-\^silent" Suppress the display of statistics about the number of units loaded, any messages printed by the units database, and the prompting of the user for units. This option does not affect how \fIunits\fP displays the results. This option is turned on by default if you invoke \fIunits\fP with a unit expression on the command line. .\" ==================================================================== .SH SCRIPTING WITH \f(BIUNITS\fP .\" ==================================================================== Despite its numerous options, \fIunits\fP cannot cover every conceivable unit-conversion task. For example, suppose we have found some mysterious scale, but cannot figure out the units in which it is reporting. We reach into our pocket, place a 3.75-gram coin on the scale, and observe the scale reading \(oq\f(CW0.120\fR\(cq. How do we quickly determine the units? Or we might wonder if a unit has any \(lqsynonyms,\(rq i.e., other units with the same value. .PP The capabilities of \fIunits\fP are easily extended with simple scripting. Both questions above involve conformable units; on a system with Unix-like utilities, conversions to conformable units could be shown accomplished with the following script: .tr '\(aq .if n .tr `\` .EX .PP #!/bin/sh progname=`basename $0 .sh` umsg="Usage: $progname [] unit" if [ $# -lt 1 ] then echo "$progname: missing quantity to convert" echo "$umsg" exit 1 fi for unit in `units -\&-conformable "$*" | cut -f 1 -d ' '` do echo "$*" # have -- quantity to convert echo $unit # want -- conformable unit done | units -\&-terse -\&-verbose .EE .ie .if '*[.T]'utf8' .tr `\(oq .el .if n .tr `' .tr '\(cq .tr '\(cq .PP When \fIunits\fP is invoked with no non-option arguments, it reads \fIhave\fP/\fIwant\fP pairs, on alternating lines, from its standard input, so the task can be accomplished with only two invocations of \fIunits\fP. This avoids the computational overhead of needlessly reprocessing the units database for each conformable unit, as well as the inherent system overhead of process invocation. .PP By itself, the script is not very useful. But it could be used in combination with other commands to address specific tasks. For example, running the script through a simple output filter could help solve the scale problem above. If the script is named \fIconformable\fP, running .EX .PP $ conformable 3.75g | grep 0.120 .EE .PP gives .EX .PP 3.75g = 0.1205653 apounce 3.75g = 0.1205653 fineounce 3.75g = 0.1205653 ozt 3.75g = 0.1205653 tradewukiyeh 3.75g = 0.1205653 troyounce .EE .PP So we might conclude that the scale is calibrated in troy ounces. .PP We might run .EX .PP $ units -\&-verbose are Definition: 100 m^2 = 100 m^2 .EE .PP and wonder if \%\(oq\f(CWare\fR\(cq has any synonyms, value. To find out, we could run .EX .PP $ conformable are | grep "= 1 " are = 1 a are = 1 are .EE .\" ==================================================================== .SH OUTPUT STYLES .\" ==================================================================== The output can be tweaked in various ways using command line options. With no options, the output looks like this .EX .PP $ units Currency exchange rates from FloatRates (USD base) on 2023-07-08 3612 units, 109 prefixes, 122 nonlinear units You have: 23ft You want: m * 7.0104 / 0.14264521 You have: m You want: ft;in 3 ft + 3.3700787 in .EE .PP This is arguably a bit cryptic; the \(oq\f(CW-\&-verbose\fR\(cq option makes clear what the output means: .EX .PP $ units -\&-verbose Currency exchange rates from FloatRates (USD base) on 2023-07-08 3612 units, 109 prefixes, 122 nonlinear units You have: 23 ft You want: m 23 ft = 7.0104 m 23 ft = (1 / 0.14264521) m You have: meter You want: ft;in meter = 3 ft + 3.3700787 in .EE .PP The \(oq\f(CW-\&-quiet\fR\(cq option suppresses the clutter displayed when \fIunits\fP starts, as well as the prompts to the user. This option is enabled by default when you give units on the command line. .EX .PP $ units -\&-quiet 23 ft m * 7.0104 / 0.14264521 $ units 23ft m * 7.0104 / 0.14264521 .EE .PP The remaining style options allow you to display only numerical values without the tab or the multiplication and division signs, or to display just a single line showing the forward conversion: .tr '\(aq .EX .PP $ units -\&-compact 23ft m 7.0104 0.14264521 $ units -\&-compact m 'ft;in' 3;3.3700787 $ units -\&-one-line 23ft m * 7.0104 $ units -\&-one-line 23ft 1/m reciprocal conversion * 0.14264521 $ units -\&-one-line 23ft kg conformability error 7.0104 m 1 kg .EE .PP Note that when converting to a unit list, the \(oq\f(CW-\&-compact\fR\(cq option displays a semicolon separated list of results. Also be aware that the \%\(oq\f(CWone-line\fR\(cq option doesn't live up to its name if you execute a reciprocal conversion or if you get a conformability error. The former case can be prevented using the \(oq\f(CW-\&-strict\fR\(cq option, which suppresses reciprocal conversions. Similarly you can suppress unit list conversion using \(oq\f(CW-\&-nolists\fR\(cq. It is impossible to prevent the three line error output. .EX .PP $ units -\&-compact -\&-nolists m 'ft;in' Error in 'ft;in': Parse error $ units -\&-one-line -\&-strict 23ft 1/m .EE .PP The various style options can be combined appropriately. The ultimate combination is the \(oq\f(CW-\&-terse\fR\(cq option, which combines \(oq\f(CW-\&-strict\fR\(cq, \(oq\f(CW-\&-quiet\fR\(cq, \(oq\f(CW-\&-one-line\fR\(cq, and \(oq\f(CW-\&-compact\fR\(cq to produce the minimal output, just a single number for regular conversions and a semicolon separated list for conversion to unit lists. This will likely be the best choice for programs that want to call \fIunits\fP and then process its result. .EX .PP $ units -\&-terse 23ft m 7.0104 $ units -\&-terse m 'ft;in' 3;3.3700787 $ units -\&-terse 23ft 1/m conformability error 7.0104 m 1 / m $ units -\&-terse '1 mile' 1609.344 m $ units -\&-terse mile 5280 ft = 1609.344 m .EE .tr '\(cq .\" ==================================================================== .SH ADDING YOUR OWN DEFINITIONS .\" ==================================================================== .\" -------------------------------------------------------------------- .SS Units Data Files .\" -------------------------------------------------------------------- The units and prefixes that \fIunits\fP can convert are defined in the units data file, typically \(oq\f(CW/usr/share/units/definitions.units\fR\(cq. If you can't find this file, run \%\f(CWunits\ -\&-version\fR to get information on the file locations for your installation. Although you can extend or modify this data file if you have appropriate user privileges, it's usually better to put extensions in separate files so that the definitions will be preserved if you update \fIunits\fP. .PP You can include additional data files in the units database using the \(oq\f(CW!include\fR\(cq command in the standard units data file. For example .EX .PP !include /usr/local/share/units/local.units .EE .PP might be appropriate for a site-wide supplemental data file. The location of the \(oq\f(CW!include\fR\(cq statement in the standard units data file is important; later definitions replace earlier ones, so any definitions in an included file will override definitions before the \(oq\f(CW!include\fR\(cq statement in the standard units data file. With normal invocation, no warning is given about redefinitions; to ensure that you don't have an unintended redefinition, run \%\f(CWunits\ -c\fR after making changes to any units data file. .PP If you want to add your own units in addition to or in place of standard or site-wide supplemental units data files, you can include them in the \(oq\f(CW.units\fR\(cq file in your home directory. If this file exists it is read after the standard units data file, so that any definitions in this file will replace definitions of the same units in the standard data file or in files included from the standard data file. This file will not be read if any units files are specified on the command line. (Under Windows the personal units file is named \%\(oq\f(CWunitdef.units\fR\(cq.) Running \%\f(CWunits\ -V\fR will display the location and name of your personal units file. .PP The \fIunits\fP program first tries to determine your home directory from the \%\f(CWHOME\fR environment variable. On systems running Microsoft Windows, if \%\f(CWHOME\fR does not exist, \fIunits\fP attempts to find your home directory from \%\f(CWHOMEDRIVE\fR, \%\f(CWHOMEPATH\fR and \%\f(CWUSERPROFILE\fR. You can specify an arbitrary file as your personal units data file with the \%\f(CWMYUNITSFILE\fR environment variable; if this variable exists, its value is used without searching your home directory. The default units data files are described in more detail in \fIData Files\fP. .\" -------------------------------------------------------------------- .SS Defining New Units and Prefixes .\" -------------------------------------------------------------------- A unit is specified on a single line by giving its name and an equivalence. Comments start with a \(oq\f(CW#\fR\(cq character, which can appear anywhere in a line. The backslash character (\(oq\f(CW\e\fR\(cq) acts as a continuation character if it appears as the last character on a line, making it possible to spread definitions out over several lines if desired. A file can be included by giving the command \(oq\f(CW!include\fR\(cq followed by the file's name. The \(oq\f(CW!\fR\(cq must be the first character on the line. The file will be sought in the same directory as the parent file unless you give a full path. The name of the file to be included cannot contain spaces or the comment character \(oq\f(CW#\fR\(cq. .PP Unit names cannot begin or end with an underscore (\%\(oq\f(CW_\fR\(cq), a comma (\(oq\f(CW,\fR\(cq) or a decimal point (\(oq\f(CW.\fR\(cq). Names must not contain any of the operator characters \(oq\f(CW+\fR\(cq, \(oq\f(CW-\fR\(cq, \(oq\f(CW*\fR\(cq, \(oq\f(CW/\fR\(cq, \(oq\f(CW|\fR\(cq, \(oq\f(CW^\fR\(cq, \(oq\f(CW;\fR\(cq, \(oq\f(CW~\fR\(cq, the comment character \(oq\f(CW#\fR\(cq, or parentheses. To facilitate copying and pasting from documents, several typographical characters are converted to operators: the figure dash (U+2012), minus (\(oq\f(CW\-\fR\(cq; U+2212), and en dash (\(oq\(en\(cq; U+2013) are converted to the operator \(oq\f(CW-\fR\(cq; the multiplication sign (\(oq\f(CW\(mu\fR\(cq; U+00D7), N-ary times operator (U+2A09), dot operator (\(oq\f(CW\(md\fR\(cq; U+22C5), and middle dot (\(oq\f(CW\(pc\fR\(cq; U+00B7) are converted to the operator \(oq\f(CW*\fR\(cq; the division sign (\(oq\f(CW\[u00F7]\fR\(cq; U+00F7) is converted to the operator \(oq\f(CW/\fR\(cq; and the fraction slash (U+2044) is converted to the operator \(oq\f(CW|\fR\(cq; accordingly, none of these characters can appear in unit names. .PP Names cannot begin with a digit, and if a name ends in a digit other than zero or one, the digit must be preceded by a string beginning with an underscore, and afterwards consisting only of digits, decimal points, or commas. For example, \%\(oq\f(CWfoo_2\fR\(cq, \%\(oq\f(CWfoo_2,1\fR\(cq, or \%\(oq\f(CWfoo_3.14\fR\(cq are valid names but \%\(oq\f(CWfoo2\fR\(cq or \%\(oq\f(CWfoo_a2\fR\(cq are invalid. The underscore is necessary because without it, \fIunits\fP cannot determine whether \%\(oq\f(CWfoo2\fR\(cq is a unit name or represents \%\(oq\f(CWfoo^2\fR\(cq. Zero and one are exceptions because \fIunits\fP never interprets them as exponents. .PP You could define nitrous oxide as .EX .PP N2O nitrogen 2 + oxygen .EE .PP but would need to define nitrogen dioxide as .EX .PP NO_2 nitrogen + oxygen 2 .EE .PP Be careful to define new units in terms of old ones so that a reduction leads to the primitive units, which are marked with \(oq\f(CW!\fR\(cq characters. Dimensionless units are indicated by using the string \(oq\f(CW!dimensionless\fR\(cq for the unit definition. .PP When adding new units, be sure to use the \(oq\f(CW-c\fR\(cq option to check that the new units reduce properly and that there are no circular definitions that lead to endless loops. Because some errors may hide other errors, you should run \fIunits\fP with the \(oq\f(CW-c\fR\(cq option again after correcting any errors, and keep doing so until no errors are displayed. .PP If you define any units that contain \(oq\f(CW+\fR\(cq characters in their definitions, carefully check them because the \(oq\f(CW-c\fR\(cq option will not catch non-conformable sums. Be careful with the \(oq\f(CW-\fR\(cq operator as well. When used as a binary operator, the \(oq\f(CW-\fR\(cq character can perform addition or multiplication depending on the options used to invoke \fIunits\fP. To ensure consistent behavior use \(oq\f(CW-\fR\(cq only as a unary negation operator when writing units definitions. To multiply two units leave a space or use the \(oq\f(CW*\fR\(cq operator with care, recalling that it has two possible precedence values and may require parentheses to ensure consistent behavior. To compute the difference of \%\(oq\f(CWfoo\fR\(cq and \%\(oq\f(CWbar\fR\(cq write \%\(oq\f(CWfoo+(-bar)\fR\(cq or even \%\(oq\f(CWfoo+-bar\fR\(cq. .PP You may wish to intentionally redefine a unit. When you do this, and use the \(oq\f(CW-c\fR\(cq option, \fIunits\fP displays a warning message about the redefinition. You can suppress these warnings by redefining a unit using a \(oq\f(CW+\fR\(cq at the beginning of the unit name. Do not include any white space between the \(oq\f(CW+\fR\(cq and the redefined unit name. .PP Here is an example of a short data file that defines some basic units: .EX .PP m ! # The meter is a primitive unit sec ! # The second is a primitive unit rad !dimensionless # A dimensionless primitive unit micro- 1e-6 # Define a prefix minute 60 sec # A minute is 60 seconds hour 60 min # An hour is 60 minutes inch 72 m # Inch defined incorrectly terms of meters ft 12 inches # The foot defined in terms of inches mile 5280 ft # And the mile +inch 0.0254 m # Correct redefinition, warning suppressed .EE .PP A unit that ends with a \(oq\f(CW-\fR\(cq character is a prefix. If a prefix definition contains any \(oq\f(CW/\fR\(cq characters, be sure they are protected by parentheses. If you define \%\(oq\f(CWhalf- 1/2\fR\(cq, then \%\(oq\f(CWhalfmeter\fR\(cq would be equivalent to \(oq\f(CW1 / (2\ meter)\fR\(cq. .\" -------------------------------------------------------------------- .SS Defining Nonlinear Units .\" -------------------------------------------------------------------- Some unit conversions of interest are nonlinear; for example, temperature conversions between the Fahrenheit and Celsius scales cannot be done by simply multiplying by conversion factors. .PP When you give a linear unit definition such as \%\(oq\f(CWinch 2.54\ cm\fR\(cq you are providing information that \fIunits\fP uses to convert values in inches into primitive units of meters. For nonlinear units, you give a functional definition that provides the same information. .PP Nonlinear units are represented using a functional notation. It is best to regard this notation not as a function call but as a way of adding units to a number, much the same way that writing a linear unit name after a number adds units to that number. Internally, nonlinear units are defined by a pair of functions that convert to and from linear units in the database, so that an eventual conversion to primitive units is possible. .PP Here is an example nonlinear unit definition: .EX .PP tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \e (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32 .EE .PP A nonlinear unit definition comprises a unit name, a formal parameter name, two functions, and optional specifications for units, the domain, and the range (the domain of the inverse function). The functions tell \fIunits\fP how to convert to and from the new unit. To produce valid results, the arguments of these functions need to have the correct dimensions and be within the domains for which the functions are defined. .PP The definition begins with the unit name followed immediately (with no spaces) by a \(oq\f(CW(\fR\(cq character. In the parentheses is the name of the formal parameter. Next is an optional specification of the units required by the functions in the definition. In the example above, the \%\(oq\f(CWunits=[1;K]\fR\(cq specification indicates that the \%\(oq\f(CWtempF\fR\(cq function requires an input argument conformable with \(oq\f(CW1\fR\(cq (i.e., the argument is dimensionless), and that the inverse function requires an input argument conformable with \%\(oq\f(CWK\fR\(cq. For normal nonlinear units definition, the forward function will always take a dimensionless argument; in general, the inverse function will need units that match the quantity measured by your nonlinear unit. Specifying the units enables \fIunits\fP to perform error checking on function arguments, and also to assign units to domain and range specifications, which are described later. .PP Next the function definitions appear. In the example above, the \%\(oq\f(CWtempF\fR\(cq function is defined by .EX .PP tempF(x) = (x+(-32)) degF + stdtemp .EE .PP This gives a rule for converting \%\(oq\f(CWx\fR\(cq in the units \%\(oq\f(CWtempF\fR\(cq to linear units of absolute temperature, which makes it possible to convert from tempF to other units. .PP To enable conversions to Fahrenheit, you must give a rule for the inverse conversions. The inverse will be \%\(oq\f(CWx(tempF)\fR\(cq and its definition appears after a \(oq\f(CW;\fR\(cq character. In our example, the inverse is .EX .PP x(tempF) = (tempF+(-stdtemp))/degF + 32 .EE .PP This inverse definition takes an absolute temperature as its argument and converts it to the Fahrenheit temperature. The inverse can be omitted by leaving out the \(oq\f(CW;\fR\(cq character and the inverse definition, but then conversions \fIto\fP the unit will not be possible. If the inverse definition is omitted, the \(oq\f(CW-\&-check\fR\(cq option will display a warning. It is up to you to calculate and enter the correct inverse function to obtain proper conversions; the \(oq\f(CW-\&-check\fR\(cq option tests the inverse at one point and prints an error if it is not valid there, but this is not a guarantee that your inverse is correct. .PP With some definitions, the units may vary. For example, the definition .EX .PP square(x) x^2 .EE .PP can have any arbitrary units, and can also take dimensionless arguments. In such a case, you should \fInot\fP specify units. If a definition takes a root of its arguments, the definition is valid only for units that yield such a root. For example, .EX .PP squirt(x) sqrt(x) .EE .PP is valid for a dimensionless argument, and for arguments with even powers of units. .PP Some definitions may not be valid for all real numbers. In such cases, \fIunits\fP can handle errors better if you specify an appropriate domain and range. You specify the domain and range as shown below: .EX .PP baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \e (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume .EE .PP In this example the domain is specified after \%\(oq\f(CWdomain=\fR\(cq with the endpoints given in brackets. In accord with mathematical convention, square brackets indicate a closed interval (one that includes its endpoints), and parentheses indicate an open interval (one that does not include its endpoints). An interval can be open or closed on one or both ends; an interval that is unbounded on either end is indicated by omitting the limit on that end. For example, a quantity to which decibel (dB) is applied may have any value greater than zero, so the range is indicated by \(oq\f(CW(0,)\fR\(cq: .EX .PP decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel) .EE .PP If the domain or range is given, the second endpoint must be greater than the first. .PP The domain and range specifications can appear independently and in any order along with the units specification. The values for the domain and range endpoints are attached to the units given in the units specification, and if necessary, the parameter value is adjusted for comparison with the endpoints. For example, if a definition includes \%\(oq\f(CWunits=[1;ft]\fR\(cq and \%\(oq\f(CWrange=[3,)\fR\(cq, the range will be taken as 3\ ft to infinity. If the function is passed a parameter of \(oq\f(CW900\ mm\fR\(cq, that value will be adjusted to 2.9527559\ ft, which is outside the specified range. If you omit the units specification from the previous example, \fIunits\fP can not tell whether you intend the lower endpoint to be 3\ ft or 3\ microfurlongs, and can not adjust the parameter value of 900\ mm for comparison. Without units, numerical values other than zero or plus or minus infinity for domain or range endpoints are meaningless, and accordingly they are not allowed. If you give other values without units, then the definition will be ignored and you will get an error message. .PP Although the units, domain, and range specifications are optional, it's best to give them when they are applicable; doing so allows \fIunits\fP to perform better error checking and give more helpful error messages. Giving the domain and range also enables the \(oq\f(CW-\&-check\fR\(cq option to find a point in the domain to use for its point check of your inverse definition. .PP You can make synonyms for nonlinear units by providing both the forward and inverse functions; inverse functions can be obtained using the \(oq\f(CW~\fR\(cq operator. So to create a synonym for \%\(oq\f(CWtempF\fR\(cq you could write .EX .PP fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit) .EE .PP This is useful for creating a nonlinear unit definition that differs slightly from an existing definition without having to repeat the original functions. For example, .EX .PP dBW(x) units=[1;W] range=[0,) dB(x) W ; ~dB(dBW/W) .EE .PP If you wish a synonym to refer to an existing nonlinear unit without modification, you can do so more simply by adding the synonym with appended parentheses as a new unit, with the existing nonlinear unit\(emwithout parentheses\(emas the definition. So to create a synonym for \%\(oq\f(CWtempF\fR\(cq you could write .EX .PP fahrenheit() tempF .EE .PP The definition must be a nonlinear unit; for example, the synonym .EX .PP fahrenheit() meter .EE .PP will result in an error message when \fIunits\fP starts. .PP You may occasionally wish to define a function that operates on units. This can be done using a nonlinear unit definition. For example, the definition below provides conversion between radius and the area of a circle. This definition requires a length as input and produces an area as output, as indicated by the \%\(oq\f(CWunits=\fR\(cq specification. Specifying the range as the nonnegative numbers can prevent cryptic error messages. .EX .PP circlearea(r) units=[m;m^2] range=[0,) pi r^2 ; sqrt(circlearea/pi) .EE .\" -------------------------------------------------------------------- .SS Defining Piecewise Linear Units .\" -------------------------------------------------------------------- Sometimes you may be interested in a piecewise linear unit such as many wire gauges. Piecewise linear units can be defined by specifying conversions to linear units on a list of points. Conversion at other points will be done by linear interpolation. A partial definition of zinc gauge is .EX .PP zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1 .EE .PP In this example, \%\(oq\f(CWzincgauge\fR\(cq is the name of the piecewise linear unit. The definition of such a unit is indicated by the embedded \(oq\f(CW[\fR\(cq character. After the bracket, you should indicate the units to be attached to the numbers in the table. No spaces can appear before the \(oq\f(CW]\fR\(cq character, so a definition like \%\(oq\f(CWfoo[kg meters]\fR\(cq is invalid; instead write \%\(oq\f(CWfoo[kg*meters]\fR\(cq. The definition of the unit consists of a list of pairs optionally separated by commas. This list defines a function for converting from the piecewise linear unit to linear units. The first item in each pair is the function argument; the second item is the value of the function at that argument (in the units specified in brackets). In this example, we define \%\(oq\f(CWzincgauge\fR\(cq at five points. For example, we set \%\(oq\f(CWzincgauge(1)\fR\(cq equal to \(oq\f(CW0.002\ in\fR\(cq. Definitions like this may be more readable if written using continuation characters as .EX .PP zincgauge[in] \e 1 0.002 \e 10 0.02 \e 15 0.04 \e 19 0.06 \e 23 0.1 .EE .PP With the preceding definition, the following conversion can be performed: .EX .PP You have: zincgauge(10) You want: in * 0.02 / 50 You have: .01 inch You want: zincgauge 5 .EE .PP If you define a piecewise linear unit that is not strictly monotonic, then the inverse will not be well defined. If the inverse is requested for such a unit, \fIunits\fP will return the smallest inverse. .PP After adding nonlinear units definitions, you should normally run \%\(oq\f(CWunits\ -\&-check\fR\(cq to check for errors. If the \%\(oq\f(CWunits\fR\(cq keyword is not given, the \(oq\f(CW-\&-check\fR\(cq option checks a nonlinear unit definition using a dimensionless argument, and then checks using an arbitrary combination of units, as well as the square and cube of that combination; a warning is given if any of these tests fail. For example, .tr '\(aq .EX .PP Warning: function 'squirt(x)' defined as 'sqrt(x)' failed for some test inputs: squirt(7(kg K)^1): Unit not a root squirt(7(kg K)^3): Unit not a root .EE .tr '\(cq .PP Running \%\(oq\f(CWunits\ -\&-check\fR\(cq will print a warning if a non-monotonic piecewise linear unit is encountered. For example, the relationship between ANSI coated abrasive designation and mean particle size is non-monotonic in the vicinity of 800 grit: .EX .PP ansicoated[micron] \e . . . 600 10.55 \e 800 11.5 \e 1000 9.5 \e .EE .PP Running \%\(oq\f(CWunits\ -\&-check\fR\(cq would give the error message .tr '\(aq .EX .PP Table 'ansicoated' lacks unique inverse around entry 800 .EE .tr '\(cq .PP Although the inverse is not well defined in this region, it's not really an error. Viewing such error messages can be tedious, and if there are enough of them, they can distract from true errors. Error checking for nonlinear unit definitions can be suppressed by giving the \%\(oq\f(CWnoerror\fR\(cq keyword; for the examples above, this could be done as .EX .PP squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2 ansicoated[micron] noerror \e . . . .EE .PP Use the \%\(oq\f(CWnoerror\fR\(cq keyword with caution. The safest approach after adding a nonlinear unit definition is to run \%\(oq\f(CWunits\ -\&-check\fR\(cq and confirm that there are no actual errors before adding the \%\(oq\f(CWnoerror\fR\(cq keyword. .\" -------------------------------------------------------------------- .SS Defining Unit List Aliases .\" -------------------------------------------------------------------- Unit list aliases are treated differently from unit definitions, because they are a data entry shorthand rather than a true definition for a new unit. A unit list alias definition begins with \(oq\f(CW!unitlist\fR\(cq and includes the alias and the definition; for example, the aliases included in the standard units data file are .EX .PP !unitlist hms hr;min;sec !unitlist time year;day;hr;min;sec !unitlist dms deg;arcmin;arcsec !unitlist ftin ft;in;1|8 in !unitlist usvol cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\e tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp .EE .PP Unit list aliases are only for unit lists, so the definition must include a \(oq\f(CW;\fR\(cq. Unit list aliases can never be combined with units or other unit list aliases, so the definition of \%\(oq\f(CWtime\fR\(cq shown above could \fInot\fP have been shortened to \%\(oq\f(CWyear;day;hms\fR\(cq. .PP As usual, be sure to run \%\(oq\f(CWunits\ -\&-check\fR\(cq to ensure that the units listed in unit list aliases are conformable. .\" ==================================================================== .SH NUMERIC OUTPUT FORMAT .\" ==================================================================== By default, \%\f(CWunits\fR shows results to eight significant digits. You can change this with the \(oq\f(CW-\&-exponential\fR\(cq, \(oq\f(CW-\&-digits\fR\(cq, and \(oq\f(CW-\&-output-format\fR\(cq options. The first sets an exponential format (i.e., scientific notation) like that used in the original Unix \fIunits\fP program, the second allows you to specify a different number of significant digits, and the last allows you to control the output appearance using the format for the \%\f(CWprintf\fR function in the C programming language. If you only want to change the number of significant digits or specify exponential format type, use the \(oq\f(CW-\&-digits\fR\(cq and \(oq\f(CW-\&-exponential\fR\(cq options. The \(oq\f(CW-\&-output-format\fR\(cq option affords the greatest control of the output appearance, but requires at least rudimentary knowledge of the \%\f(CWprintf\fR format syntax. See \fIInvoking Units\fP for descriptions of these options. .\" -------------------------------------------------------------------- .SS Format Specification .\" -------------------------------------------------------------------- The format specification recognized with the \(oq\f(CW-\&-output-format\fR\(cq option is a subset of that for \%\f(CWprintf\fR. The format specification has the form .\".CW "%\fR[\fP\fIflags\fP\fR][\fP\fIwidth\fP\fR][\fP.\fIprecision\fP\fR]\fP\fItype\fP" ; \f(CW%\fR[\fIflags\fP][\fIwidth\fP][\c \f(CW.\fR\fIprecision\fP]\fItype\fP; it must begin with \(oq\f(CW%\fR\(cq, and must end with a floating-point type specifier: \%\(oq\f(CWg\fR\(cq or \%\(oq\f(CWG\fR\(cq to specify the number of significant digits, \%\(oq\f(CWe\fR\(cq or \%\(oq\f(CWE\fR\(cq for scientific notation, and \%\(oq\f(CWf\fR\(cq for fixed-point decimal. The ISO C99 standard added the \%\(oq\f(CWF\fR\(cq type for fixed-point decimal and the \%\(oq\f(CWa\fR\(cq and \%\(oq\f(CWA\fR\(cq types for hexadecimal floating point; these types are allowed with compilers that support them. Type length modifiers (e.g., \%\(oq\f(CWL\fR\(cq to indicate a long double) are inapplicable and are not allowed. .PP The default format for \fIunits\fP is \(oq\f(CW%.8g\fR\(cq; for greater precision, you could specify \(oq\f(CW-o\ %.15g\fR\(cq. The \%\(oq\f(CWg\fR\(cq and \%\(oq\f(CWG\fR\(cq format types use exponential format whenever the exponent would be less than \-4, so the value 0.000013 displays as \(oq\f(CW1.3e-005\fR\(cq. These types also use exponential notation when the exponent is greater than or equal to the precision, so with the default format, the value .if t .ig ++ 5 \(mu 10^7 .++ .if n .ig ++ .EQ 5 times 10 sup 7 .EN .++ displays as \(oq\f(CW50000000\fR\(cq and the value .if t .ig ++ 5 \(mu 10^8 .++ .if n .ig ++ .EQ 5 times 10 sup 8 .EN .++ displays as \(oq\f(CW5e+008\fR\(cq. If you prefer fixed-point display, you might specify \(oq\f(CW-o\ %.8f\fR\(cq; however, small numbers will display very few significant digits, and values less than .if t .ig ++ 5 \(mu 10^\-8 .++ .if n .ig ++ .EQ 5 times 10 sup -8 .EN .++ will show nothing but zeros. .PP The format specification may include one or more optional flags: \(oq\f(CW+\fR\(cq, \(oq\f(CW\ \fR\(cq (space), \(oq\f(CW#\fR\(cq, \(oq\f(CW-\fR\(cq, or \(oq\f(CW0\fR\(cq (the digit zero). The digit-grouping flag .ie \n(.g \(oq\(aq' .el \&' is allowed with compilers that support it. Flags are followed by an optional value for the minimum field width, and an optional precision specification that begins with a period (e.g., \(oq\f(CW.6\fR\(cq). The field width includes the digits, decimal point, the exponent, thousands separators (with the digit-grouping flag), and the sign if any of these are shown. .\" -------------------------------------------------------------------- .SS Flags .\" -------------------------------------------------------------------- The \(oq\f(CW+\fR\(cq flag causes the output to have a sign (\(oq\f(CW+\fR\(cq or \(oq\f(CW-\fR\(cq). The space flag \(oq\f(CW\ \fR\(cq is similar to the \(oq\f(CW+\fR\(cq flag, except that when the value is positive, it is prefixed with a space rather than a plus sign; this flag is ignored if the \(oq\f(CW+\fR\(cq flag is also given. The \(oq\f(CW+\fR\(cq or \(oq\f(CW\ \fR\(cq flag could be useful if conversions might include positive and negative results, and you wanted to align the decimal points in exponential notation. The \(oq\f(CW#\fR\(cq flag causes the output value to contain a decimal point in all cases; by default, the output contains a decimal point only if there are digits (which can be trailing zeros) to the right of the point. With the \%\(oq\f(CWg\fR\(cq or \%\(oq\f(CWG\fR\(cq types, the \(oq\f(CW#\fR\(cq flag also prevents the suppression of trailing zeros. The digit-grouping flag .ie \n(.g \(oq\(aq' .el \&`'' shows a thousands separator in digits to the left of the decimal point. This can be useful when displaying large numbers in fixed-point decimal; for example, with the format \(oq\f(CW%f\fR\(cq, .EX .PP You have: mile You want: microfurlong * 8000000.000000 / 0.000000 .EE .PP the magnitude of the first result may not be immediately obvious without counting the digits to the left of the decimal point. If the thousands separator is the comma (\(oq\f(CW,\fR\(cq), the output with the format .ie \n(.g \(oq%\(aqf' .el `%'f' might be .EX .PP You have: mile You want: microfurlong * 8,000,000.000000 / 0.000000 .EE .PP making the magnitude readily apparent. Unfortunately, few compilers support the digit-grouping flag. .PP With the \(oq\f(CW-\fR\(cq flag, the output value is left aligned within the specified field width. If a field width greater than needed to show the output value is specified, the \(oq\f(CW0\fR\(cq (zero) flag causes the output value to be left padded with zeros until the specified field width is reached; for example, with the format \(oq\f(CW%011.6f\fR\(cq, .EX .PP You have: troypound You want: grain * 5760.000000 / 0000.000174 .EE .PP The \(oq\f(CW0\fR\(cq flag has no effect if the \(oq\f(CW-\fR\(cq (left align) flag is given. .\" -------------------------------------------------------------------- .SS Field Width .\" -------------------------------------------------------------------- By default, the output value is left aligned and shown with the minimum width necessary for the specified (or default) precision. If a field width greater than this is specified, the value shown is right aligned, and padded on the left with enough spaces to provide the specified field width. A width specification is typically used with fixed-point decimal to have columns of numbers align at the decimal point; this arguably is less useful with \fIunits\fP than with long columnar output, but it may nonetheless assist in quickly assessing the relative magnitudes of results. For example, with the format \(oq\f(CW%12.6f\fR\(cq, .EX .PP You have: km You want: in * 39370.078740 / 0.000025 You have: km You want: rod * 198.838782 / 0.005029 You have: km You want: furlong * 4.970970 / 0.201168 .EE .\" -------------------------------------------------------------------- .SS Precision .\" -------------------------------------------------------------------- The meaning of \(lqprecision\(rq depends on the format type. With \%\(oq\f(CWg\fR\(cq or \%\(oq\f(CWG\fR\(cq, it specifies the number of significant digits (like the \(oq\f(CW-\&-digits\fR\(cq option); with \%\(oq\f(CWe\fR\(cq, \%\(oq\f(CWE\fR\(cq, \%\(oq\f(CWf\fR\(cq, or \%\(oq\f(CWF\fR\(cq, it specifies the maximum number of digits to be shown after the decimal point. .PP With the \%\(oq\f(CWg\fR\(cq and \%\(oq\f(CWG\fR\(cq format types, trailing zeros are suppressed, so the results may sometimes have fewer digits than the specified precision (as indicated above, the \(oq\f(CW#\fR\(cq flag causes trailing zeros to be displayed). .PP The default precision is 6, so \(oq\f(CW%g\fR\(cq is equivalent to \(oq\f(CW%.6g\fR\(cq, and would show the output to six significant digits. Similarly, \(oq\f(CW%e\fR\(cq or \(oq\f(CW%f\fR\(cq would show the output with six digits after the decimal point. .PP The C \%\f(CWprintf\fR function allows a precision of arbitrary size, whether or not all of the digits are meaningful. With most compilers, the maximum internal precision with \fIunits\fP is 15 decimal digits (or 13 hexadecimal digits). With the \(oq\f(CW-\&-digits\fR\(cq option, you are limited to the maximum internal precision; with the \(oq\f(CW-\&-output-format\fR\(cq option, you may specify a precision greater than this, but it may not be meaningful. In some cases, specifying excess precision can result in rounding artifacts. For example, a pound is exactly 7000 grains, but with the format \(oq\f(CW%.18g\fR\(cq, the output might be .EX .PP You have: pound You want: grain * 6999.9999999999991 / 0.00014285714285714287 .EE .PP With the format \(oq\f(CW%.25g\fR\(cq you might get the following: .EX .PP You have: 1/3 You want: Definition: 0.333333333333333314829616256247 .EE .PP In this case the displayed value includes a series of digits that represent the underlying binary floating-point approximation to 1/3 but are not meaningful for the desired computation. In general, the result with excess precision is system dependent. The precision affects only the \fIdisplay\fP of numbers; if a result relies on physical constants that are not known to the specified precision, the number of physically meaningful digits may be less than the number of digits shown. .PP See the documentation for \%\f(CWprintf\fR for more detailed descriptions of the format specification. .PP The \(oq\f(CW-\&-output-format\fR\(cq option is incompatible with the \(oq\f(CW-\&-exponential\fR\(cq or \(oq\f(CW-\&-digits\fR\(cq options; if the former is given in combination with either of the latter, the format is controlled by the last option given. .\" ==================================================================== .SH LOCALIZATION .\" ==================================================================== Some units have different values in different locations. The localization feature accommodates this by allowing a units data file to specify definitions that depend on the user's locale. .\" -------------------------------------------------------------------- .SS Locale .\" -------------------------------------------------------------------- A locale is a subset of a user's environment that indicates the user's language and country, and some attendant preferences, such as the formatting of dates. The \fIunits\fP program attempts to determine the locale from the POSIX \%\f(CWsetlocale\fR function; if this cannot be done, \fIunits\fP examines the environment variables \%\f(CWLC_CTYPE\fR and \%\f(CWLANG\fR. On POSIX systems, a locale is of the form \fIlanguage\fP\%\f(CW_\fR\fIcountry\fP, where \fIlanguage\fP is the two-character code from ISO 639-1 and \fIcountry\fP is the two-character code from ISO 3166-1; \fIlanguage\fP is lower case and \fIcountry\fP is upper case. For example, the POSIX locale for the United Kingdom is \%\f(CWen_GB\fR. .PP On systems running Microsoft Windows, the value returned by \%\f(CWsetlocale\fR is different from that on POSIX systems; \fIunits\fP attempts to map the Windows value to a POSIX value by means of a table in the file \%\(oq\f(CWlocale_map.txt\fR\(cq in the same directory as the other data files. The file includes entries for many combinations of language and country, and can be extended to include other combinations. The \%\(oq\f(CWlocale_map.txt\fR\(cq file comprises two tab-separated columns; each entry is of the form .RS 5n .PP \fIWindows-locale\fP \fIPOSIX-locale\fP .RE .PP where \fIPOSIX-locale\fP is as described above, and \fIWindows-locale\fP typically spells out both the language and country. For example, the entry for the United States is .EX .PP English_United States en_US .EE .PP You can force \fIunits\fP to run in a desired locale by using the \(oq\f(CW-l\fR\(cq option. .PP In order to create unit definitions for a particular locale you begin a block of definitions in a unit datafile with \(oq\f(CW!locale\fR\(cq followed by a locale name. The \(oq\f(CW!\fR\(cq must be the first character on the line. The \fIunits\fP program reads the following definitions only if the current locale matches. You end the block of localized units with \(oq\f(CW!endlocale\fR\(cq. Here is an example, which defines the British gallon. .EX .PP !locale en_GB gallon 4.54609 liter !endlocale .EE .\" -------------------------------------------------------------------- .SS Additional Localization .\" -------------------------------------------------------------------- Sometimes the locale isn't sufficient to determine unit preferences. There could be regional preferences, or a company could have specific preferences. Though probably uncommon, such differences could arise with the choice of English customary units outside of English-speaking countries. To address this, \fIunits\fP allows specifying definitions that depend on environment variable settings. The environment variables can be controlled based on the current locale, or the user can set them to force a particular group of definitions. .PP A conditional block of definitions in a units data file begins with either \(oq\f(CW!var\fR\(cq or \(oq\f(CW!varnot\fR\(cq following by an environment variable name and then a space separated list of values. The leading \(oq\f(CW!\fR\(cq must appear in the first column of a units data file, and the conditional block is terminated by \(oq\f(CW!endvar\fR\(cq. Definitions in blocks beginning with \(oq\f(CW!var\fR\(cq are executed only if the environment variable is exactly equal to one of the listed values. Definitions in blocks beginning with \(oq\f(CW!varnot\fR\(cq are executed only if the environment variable does \fInot\fP equal any of the list values. .PP The inch has long been a customary measure of length in many places. The word comes from the Latin \fIuncia\fP meaning \(lqone twelfth,\(rq referring to its relationship with the foot. By the 20th century, the inch was officially defined in English-speaking countries relative to the yard, but until 1959, the yard differed slightly among those countries. In France the customary inch, which was displaced in 1799 by the meter, had a different length based on a french foot. These customary definitions could be accommodated as follows: .EX .PP !var INCH_UNIT usa yard 3600|3937 m !endvar !var INCH_UNIT canada yard 0.9144 meter !endvar !var INCH_UNIT uk yard 0.91439841 meter !endvar !var INCH_UNIT canada uk usa foot 1|3 yard inch 1|12 foot !endvar !var INCH_UNIT france foot 144|443.296 m inch 1|12 foot line 1|12 inch !endvar !varnot INCH_UNIT usa uk france canada !message Unknown value for INCH_UNIT !endvar .EE .PP When \fIunits\fP reads the above definitions it will check the environment variable \%\f(CWINCH_UNIT\fR and load only the definitions for the appropriate section. If \%\f(CWINCH_UNIT\fR is unset or is not set to one of the four values listed, then \fIunits\fP will run the last block. In this case that block uses the \(oq\f(CW!message\fR\(cq command to display a warning message. Alternatively that block could set default values. .PP In order to create default values that are overridden by user settings the data file can use the \(oq\f(CW!set\fR\(cq command, which sets an environment variable \fIonly if it is not already set\fP; these settings are only for the current \fIunits\fP invocation and do not persist. So if the example above were preceded by \(oq\f(CW!set INCH_UNIT france\fR\(cq, then this would make \%\(oq\f(CWfrance\fR\(cq the default value for \%\f(CWINCH_UNIT\fR. If the user had set the variable in the environment before invoking \fIunits\fP, then \fIunits\fP would use the user's value. .PP To link these settings to the user's locale you combine the \(oq\f(CW!set\fR\(cq command with the \(oq\f(CW!locale\fR\(cq command. If you wanted to combine the above example with suitable locales you could do by \fIpreceding\fP the above definition with the following: .EX .PP !locale en_US !set INCH_UNIT usa !endlocale !locale en_GB !set INCH_UNIT uk !endlocale !locale en_CA !set INCH_UNIT canada !endlocale !locale fr_FR !set INCH_UNIT france !endlocale !set INCH_UNIT france .EE .PP These definitions set the overall default for \%\f(CWINCH_UNIT\fR to \%\(oq\f(CWfrance\fR\(cq and set default values for four locales appropriately. The overall default setting comes last so that it only applies when \%\f(CWINCH_UNIT\fR was not set by one of the other commands or by the user. .PP If the variable given after \(oq\f(CW!var\fR\(cq or \(oq\f(CW!varnot\fR\(cq is undefined, then \fIunits\fP prints an error message and ignores the definitions that follow. Use \(oq\f(CW!set\fR\(cq to create defaults to prevent this situation from arising. The \(oq\f(CW-c\fR\(cq option only checks the definitions that are active for the current environment and locale, so when adding new definitions take care to check that all cases give rise to a well defined set of definitions. .\" ==================================================================== .SH ENVIRONMENT VARIABLES .\" ==================================================================== The \fIunits\fP program uses the following environment variables: .TP .BR "HOME" Specifies the location of your home directory; it is used by \fIunits\fP to find a personal units data file \(oq\f(CW.units\fR\(cq. On systems running Microsoft Windows, the file is \%\(oq\f(CWunitdef.units\fR\(cq, and if \%\f(CWHOME\fR does not exist, \fIunits\fP tries to determine your home directory from the \%\f(CWHOMEDRIVE\fR and \%\f(CWHOMEPATH\fR environment variables; if these variables do not exist, units finally tries \%\f(CWUSERPROFILE\fR\(emtypically \%\(oq\f(CWC:\eUsers\e\fIusername\fP\fR\(cq (Windows Vista and Windows\ 7) or \%\(oq\f(CWC:\eDocuments\ and\ Settings\e\fIusername\fP\fR\(cq (Windows\ XP). .TP .BR "LC_CTYPE, LANG" Checked to determine the locale if \fIunits\fP cannot obtain it from the operating system. Sections of the default main units data file are specific to certain locales. .TP .BR "MYUNITSFILE" Specifies your personal units data file. If this variable exists, \fIunits\fP uses its value rather than searching your home directory for \(oq\f(CW.units\fR\(cq. The personal units file will not be loaded if any data files are given using the \(oq\f(CW-f\fR\(cq option. .TP .BR "PAGER" Specifies the pager to use for help and for displaying the conformable units. The help function browses the units database and calls the pager using the \(oq\f(CW+n\fR\(cq\fIn\fP syntax for specifying a line number. The default pager is \fImore\fP; \%\f(CWPAGER\fR can be used to specify alternatives such as \fIless\fP, \fIpg\fP, \fIemacs\fP, or \fIvi\fP. .TP .BR "UNITS_ENGLISH" Set to either \%\(oq\f(CWUS\fR\(cq or \%\(oq\f(CWGB\fR\(cq to choose United States or British volume definitions, overriding the default from your locale. .TP .BR "UNITSFILE" Specifies the units data file to use (instead of the default). You can only specify a single units data file using this environment variable. If units data files are given using the \(oq\f(CW-f\fR\(cq option, the file specified by \%\f(CWUNITSFILE\fR will be not be loaded unless the \(oq\f(CW-f\fR\(cq option is given with the empty string (\%\(oq\f(CWunits\ -f\ ""\fR\(cq). .TP .BR "UNITSLOCALEMAP" Windows only; this variable has no effect on Unix-like systems. Specifies the units locale map file to use (instead of the default). This variable seldom needs to be set, but you can use it to ensure that the locale map file will be found if you specify a location for the units data file using either the \(oq\f(CW-f\fR\(cq option or the \%\f(CWUNITSFILE\fR environment variable, and that location does not also contain the locale map file. .TP .BR "UNITS_SYSTEM" This environment variable is used in the default main data file to select CGS measurement systems. Currently supported systems are \%\(oq\f(CWesu\fR\(cq, \%\(oq\f(CWemu\fR\(cq, \%\(oq\f(CWgauss[ian]\fR\(cq, \%\(oq\f(CWhlu\fR\(cq, \%\(oq\f(CWnatural\fR\(cq, \%\(oq\f(CWnatural-gauss\fR\(cq, \%\(oq\f(CWplanck\fR\(cq, \%\(oq\f(CWplanck-red\fR\(cq, \%\(oq\f(CWhartree\fR\(cq and \%\(oq\f(CWsi\fR\(cq. The default is \%\(oq\f(CWsi\fR\(cq. .\" ==================================================================== .SH DATA FILES .\" ==================================================================== The \fIunits\fP program uses four default data files: the main data file, \%\(oq\f(CWdefinitions.units\fR\(cq; the atomic masses of the elements, \%\(oq\f(CWelements.units\fR\(cq; currency exchange rates, \%\(oq\f(CWcurrency.units\fR\(cq, and the US Consumer Price Index, \%\(oq\f(CWcpi.units\fR\(cq. The last three files are loaded by means of \(oq\f(CW!include\fR\(cq directives in the main file (see \fIDatabase Command Syntax\fP). The program can also use an optional personal units data file \(oq\f(CW.units\fR\(cq (\%\(oq\f(CWunitdef.units\fR\(cq under Windows) located in the user's home directory. The personal units data file is described in more detail in \fIUnits Data Files\fP. .PP On Unix-like systems, the data files are typically located in \(oq\f(CW/usr/share/units\fR\(cq if \fIunits\fP is provided with the operating system, or in \(oq\f(CW/usr/local/share/units\fR\(cq if \fIunits\fP is compiled from the source distribution. Note that the currency file \%\(oq\f(CWcurrency.units\fR\(cq is a symbolic link to another location. .PP On systems running Microsoft Windows, the files may be in the same locations if Unix-like commands are available, a Unix-like file structure is present (e.g., \%\(oq\f(CWC:/usr/local\fR\(cq), and \fIunits\fP is compiled from the source distribution. If Unix-like commands are not available, a more common location is \%\(oq\f(CWC:\eProgram\ Files\ (x86)\eGNU\eunits\fR\(cq (for 64-bit Windows installations) or \%\(oq\f(CWC:\eProgram\ Files\eGNU\eunits\fR\(cq (for 32-bit installations). .PP If \fIunits\fP is obtained from the GNU Win32 Project (\fRhttp://gnuwin32.sourceforge.net/\fP), the files are commonly in \%\(oq\f(CWC:\eProgram\ Files\eGnuWin32\eshare\eunits\fR\(cq. .PP If the default main units data file is not an absolute pathname, \fIunits\fP will look for the file in the directory that contains the \fIunits\fP program; if the file is not found there, \fIunits\fP will look in a directory \f(CW../share/units\fR relative to the directory with the \fIunits\fP program. .PP You can determine the location of the files by running \%\(oq\f(CWunits\ -\&-version\fR\(cq. Running \%\(oq\f(CWunits\ -\&-info\fR\(cq will give you additional information about the files, how \fIunits\fP will attempt to find them, and the status of the related environment variables. .\" ==================================================================== .SH UNICODE SUPPORT .\" ==================================================================== The standard units data file is in Unicode, using UTF-8 encoding. Most definitions use only ASCII characters (i.e., code points U+0000 through U+007F); definitions using non-ASCII characters appear in blocks beginning with \(oq\f(CW!utf8\fR\(cq and ending with \(oq\f(CW!endutf8\fR\(cq. .PP The non-ASCII definitions are loaded only if the platform and the locale support UTF-8. Platform support is determined when \fIunits\fP is compiled; the locale is checked at every invocation of \fIunits\fP. To see if your version of \fIunits\fP includes Unicode support, invoke the program with the \(oq\f(CW-\&-version\fR\(cq option. .PP When Unicode support is available, \fIunits\fP checks every line within UTF-8 blocks in all of the units data files for invalid or non-printing UTF-8 sequences; if such sequences occur, \fIunits\fP ignores the entire line. In addition to checking validity, \fIunits\fP determines the display width of non-ASCII characters to ensure proper positioning of the pointer in some error messages and to align columns for the \%\(oq\f(CWsearch\fR\(cq and \(oq\f(CW?\fR\(cq commands. .PP As of early 2019, Microsoft Windows provides limited support for UTF-8 in console applications, and accordingly, \fIunits\fP does not support Unicode on Windows. The UTF-16 and UTF-32 encodings are not supported on any platforms. .PP If Unicode support is available and definitions that contain non-ASCII UTF-8 characters are added to a units data file, those definitions should be enclosed within \(oq\f(CW!utf8\fR\(cq \&...\& \(oq\f(CW!endutf8\fR\(cq to ensure that they are only loaded when Unicode support is available. As usual, the \(oq\f(CW!\fR\(cq must appear as the first character on the line. As discussed in \fIUnits Data Files\fP, it's usually best to put such definitions in supplemental data files linked by an \(oq\f(CW!include\fR\(cq command or in a personal units data file. .PP When Unicode support is not available, \fIunits\fP makes no assumptions about character encoding, except that characters in the range 00\(en7F hexadecimal correspond to ASCII encoding. Non-ASCII characters are simply sequences of bytes, and have no special meanings; for definitions in supplementary units data files, you can use any encoding consistent with this assumption. For example, if you wish to use non-ASCII characters in definitions when running \fIunits\fP under Windows, you can use a character set such as Windows \(lqANSI\(rq (code page 1252 in the US and Western Europe); if this is done, the console code page must be set to the same encoding for the characters to display properly. You can even use UTF-8, though some messages may be improperly aligned, and \fIunits\fP will not detect invalid UTF-8 sequences. If you use UTF-8 encoding when Unicode support is not available, you should place any definitions with non-ASCII characters \fIoutside\fP \(oq\f(CW!utf8\fR\(cq \&...\& \(oq\f(CW!endutf8\fR\(cq blocks\(emotherwise, they will be ignored. .PP Except for code examples, typeset material usually uses the Unicode symbols for mathematical operators. To facilitate copying and pasting from such sources, several typographical characters are converted to the ASCII operators used in \fIunits\fP: the figure dash (U+2012), minus (\(oq\f(CW\-\fR\(cq; U+2212), and en dash (\(oq\(en\(cq; U+2013) are converted to the operator \(oq\f(CW-\fR\(cq; the multiplication sign (\(oq\f(CW\(mu\fR\(cq; U+00D7), N-ary times operator (U+2A09), dot operator (\(oq\f(CW\(md\fR\(cq; U+22C5), and middle dot (\(oq\f(CW\(pc\fR\(cq; U+00B7) are converted to the operator \(oq\f(CW*\fR\(cq; the division sign (\(oq\f(CW\[u00F7]\fR\(cq; U+00F7) is converted to the operator \(oq\f(CW/\fR\(cq; and the fraction slash (U+2044) is converted to the operator\ \(oq\f(CW|\fR\(cq. .\" ==================================================================== .SH READLINE SUPPORT .\" ==================================================================== If the \fIreadline\fP package has been compiled in, then when \fIunits\fP is used interactively, numerous command line editing features are available. To check if your version of \fIunits\fP includes \fIreadline\fP, invoke the program with the \(oq\f(CW-\&-version\fR\(cq option. .PP For complete information about \fIreadline\fP, consult the documentation for the \fIreadline\fP package. Without any configuration, \fIunits\fP will allow editing in the style of emacs. Of particular use with \fIunits\fP are the completion commands. .PP If you type a few characters and then hit \fIESC\fP followed by \f(CI?\fR, then \fIunits\fP will display a list of all the units that start with the characters typed. For example, if you type \%\f(CImetr\fR and then request completion, you will see something like this: .EX .PP You have: metr metre metriccup metrichorsepower metrictenth metretes metricfifth metricounce metricton metriccarat metricgrain metricquart metricyarncount You have: metr .EE .PP If there is a unique way to complete a unit name, you can hit the \fITAB\fP key and \fIunits\fP will provide the rest of the unit name. If \fIunits\fP beeps, it means that there is no unique completion. Pressing the \fITAB\fP key a second time will print the list of all completions. .PP The readline library also keeps a history of the values you enter. You can move through this history using the up and down arrows. The history is saved to the file \(oq\f(CW.units_history\fR\(cq in your home directory so that it will persist across multiple \fIunits\fP invocations. If you wish to keep work for a certain project separate you can change the history filename using the \(oq\f(CW-\&-history\fR\(cq option. You could, for example, make an alias for \fIunits\fP to \%\f(CWunits -\&-history .units_history\fR so that \fIunits\fP would save separate history in the current directory. The length of each history file is limited to 5000 lines. Note also that if you run several concurrent copies of \fIunits\fP each one will save its new history to the history file upon exit. .\" ==================================================================== .SH UPDATING CURRENCY EXCHANGE RATES AND CPI .\" ==================================================================== .\" -------------------------------------------------------------------- .SS Currency Exchange Rates .\" -------------------------------------------------------------------- .na The units program database includes currency exchange rates and prices for some precious metals. Of course, these values change over time, sometimes very rapidly, and \fIunits\fP cannot provide real-time values. To update the exchange rates, run \fIunits_cur\fP, which rewrites the file containing the currency rates, typically \(oq\f(CW/var/lib/\:units/\:currency.units\fR\(cq or \(oq\f(CW/usr/local/\:com/\:units/\:currency.units\fR\(cq on a Unix-like system or \%\(oq\f(CWC:\eProgram\ Files\ (x86)\e\:GNU\e\:units\e\:definitions.units\fR\(cq on a Windows system. .ad b .PP This program requires Python 3 (\fRhttps://www.python.org\fP). The program must be run with suitable permissions to write the file. To keep the rates updated automatically, run it using a cron job on a Unix-like system, or a similar scheduling program on a different system. .PP Reliable free sources of currency exchange rates have been annoyingly ephemeral. The program currently supports several sources: .IP \h'1n'\(bu 4n ExchangeRate-API.com (\fRhttps://www.exchangerate-api.com\fP). .br The default currency server. Allows open access without an API key, with unlimited API requests. Rates update once a day, the US dollar (\%\(oq\f(CWUSD\fR\(cq) is the default base currency, and you can choose your base currency with the \(oq\f(CW-b\fR\(cq option described below. You can optionally sign up for an API key to access paid benefits such as faster data update rates. .IP \h'1n'\(bu 4n FloatRates (\fRhttps://www/floatrates.com\fP). .br The US dollar (\%\(oq\f(CWUSD\fR\(cq) is the default base currency. You can change the base currency with the \(oq\f(CW-b\fR\(cq option described below. Allowable base currencies are listed on the FloatRates website. Exchange rates update daily. .IP \h'1n'\(bu 4n The European Central Bank (\fRhttps://www.ecb.europa.eu\fP). .br The base currency is always the euro (\%\(oq\f(CWEUR\fR\(cq). Exchange rates update daily. This source offers a more limited list of currencies than the others. .IP \h'1n'\(bu 4n Fixer (\fRhttps://fixer.io\fP). .br Registration for a free API key is required. With a free API key, base currency is the euro; exchange rates are updated hourly, the service has a limit of 1,000 API calls per month, and SSL encryption (https protocol) is not available. Most of these restrictions are eliminated or reduced with paid plans. .IP \h'1n'\(bu 4n open exchange rates (\fRhttps://openexchangerates.org\fP). .br Registration for a free API key is required. With a free API key, the base currency is the US dollar; exchange rates are updated hourly, and there is a limit of 1,000 API calls per month. Most of these restrictions are eliminated or reduced with paid plans. .PP The default source is FloatRates; you can select a different one using \(oq\f(CW-s\fR\(cq option described below. .PP Precious metals pricing is obtained from Packetizer (\fRwww.packetizer.com\fP). This site updates once per day. .\" -------------------------------------------------------------------- .SS US Consumer Price Index .\" -------------------------------------------------------------------- The \fIunits\fP program includes the US Consumer Price Index (CPI) published by the US Bureau of Labor Statistics: specifically, the Consumer Price Index for All Urban Consumers (CPI-U), Series CUUR0000SA0. The \fIunits_cur\fP command updates the CPI and saves the result in \%\(oq\f(CWcpi.units\fR\(cq in the same location as \%\(oq\f(CWcurrency.units\fR\(cq. The data are obtained via the BLS Public Data API (\fRhttps://www.bls.gov/developers/\fP). This data updates once a month. When \fIunits_cur\fP runs it will only attempt to update the CPI data if the current CPI data file is from a previous month, or if the current date is after the 18th of the month. .\" -------------------------------------------------------------------- .SS Invoking \fIunits_cur\fP .\" -------------------------------------------------------------------- You invoke \fIunits_cur\fP like this: .EX .PP units_cur [\fIoptions\fP] [\fIcurrency_file\fP] [\fIcpi_file\fP] .EE .PP By default, the output is written to the default currency and CPI files described above; this is usually what you want, because this is where \fIunits\fP looks for the files. If you wish, you can specify different filenames on the command line and \fIunits_cur\fP will write the data to those files. If you give \(oq\f(CW-\fR\(cq for a file it will write to standard output. .PP The following options are available: .TP .BR "\-\^h" ", " "\-\^\-\^help" Print a summary of the options for \fIunits_cur\fP. .TP .BR "\-\^V" ", " "\-\^\-\^version" Print the \fIunits_cur\fP version number. .TP .BR "\-\^v" ", " "\-\^\-\^verbose" Give slightly more verbose output when attempting to update currency exchange rates. .TP .BR "\-\^s \fIsource\fP" ", " "\-\^\-\^source \fIsource\fP" Specify the source for currency exchange rates; currently supported values are \%\(oq\f(CWfloatrates\fR\(cq (for FloatRates), \%\(oq\f(CWeubank\fR\(cq (for the European Central Bank), \%\(oq\f(CWfixer\fR\(cq (for Fixer), and \%\(oq\f(CWopenexchangerates\fR\(cq (for open exchange rates); the last two require an API key to be given with the \(oq\f(CW-k\fR\(cq option. .TP .BR "\-\^b \fIbase\fP" ", " "\-\^\-\^base \fIbase\fP" Set the base currency (when allowed by the site providing the data). \fIbase\fP should be a 3-letter ISO currency code, e.g., \%\(oq\f(CWUSD\fR\(cq. The specified currency will be the primitive currency unit used by \fIunits\fP. You may find it convenient to specify your local currency. Conversions may be more accurate and you will be able to convert to your currency by simply hitting \fIEnter\fP at the \%\(oq\f(CWYou\ want:\fR\(cq prompt. This option is ignored if the source does not allow specifying the base currency. (Currently only floatrates supports this option.) .TP .BR "\-\^k \fIkey\fP" ", " "\-\^\-\^key \fIkey\fP" Set the API key to \fIkey\fP for currency sources that require it. .TP .BR "\-\^\\-\^blskey \fIBLSkey\fP" Set the US Bureau of Labor Statistics (BLS) key for fetching CPI data. Without a BLS key you should be able to fetch the CPI data exactly one time per day. If you want to use a key you must request a personal key from BLS. .\" ==================================================================== .SH DATABASE COMMAND SYNTAX .\" ==================================================================== .TP .BR "\fIunit\fP \fIdefinition\fP" Define a regular unit. .TP .BR "\fIprefix\fP- \fIdefinition\fP" Define a prefix. .TP .BR "\fIfuncname\fP(\fIvar\fP) noerror units=[\fIin\-\^units\fP,\fIout-units\fP] domain=[\fIx1\fP,\fIx2\fP] range=[\fIy1\fP,\fIy2\fP] \fIdefinition(var)\fP ; \fIinverse(funcname)\fP" Define a nonlinear unit or unit function. The four optional keywords \fInoerror\fP, \%\(oq\f(CWunits=\fR\(cq, \%\(oq\f(CWrange=\fR\(cq and \%\(oq\f(CWdomain=\fR\(cq can appear in any order. The definition of the inverse is optional. .TP .BR "\fItabname\fP[\fIout\-\^units\fP] noerror \fIpair-list\fP" Define a piecewise linear unit. The pair list gives the points on the table listed in ascending order. The \fInoerror\fP keyword is optional. .TP .BR "!endlocale" End a block of definitions beginning with \(oq\f(CW!locale\fR\(cq .TP .BR "!endutf8" End a block of definitions begun with \(oq\f(CW!utf8\fR\(cq .TP .BR "!endvar" End a block of definitions begun with \(oq\f(CW!var\fR\(cq or \(oq\f(CW!varnot\fR\(cq .TP .BR "!include \fIfile\fP" Include the specified file. .TP .BR "!locale \fIvalue\fP" Load the following definitions only of the locale is set to \fIvalue\fP. .TP .BR "!message \fItext\fP" Display \fItext\fP when the database is read unless the quiet option (\(oq\f(CW-q\fR\(cq) is enabled. If you omit \fItext\fP, then units will display a blank line. Messages will also appear in the log file. .TP .BR "!prompt \fItext\fP" Prefix the \%\(oq\f(CWYou\ have:\fR\(cq prompt with the specified text. If you omit \fItext\fP, then any existing prefix is canceled. .TP .BR "!set \fIvariable\fP \fIvalue\fP" Sets the environment variable, \fIvariable\fP, to the specified value \fIonly if\fP it is not already set. .TP .BR "!unitlist \fIalias\fP \fIdefinition\fP" Define a unit list alias. .TP .BR "!utf8" Load the following definitions only if \fIunits\fP is running with UTF-8 enabled. .TP .BR "!var \fIenvar\fP \fIvalue\-\^list\fP" Load the block of definitions that follows only if the environment variable \fIenvar\fP is set to one of the values listed in the space-separated value list. If \fIenvar\fP is not set, \fIunits\fP prints an error message and ignores the block of definitions. .TP .BR "!varnot \fIenvar\fP \fIvalue\-\^list\fP" Load the block of definitions that follows only if the environment variable \fIenvar\fP is set to value that is \fInot\fP listed in the space-separated value list. If \fIenvar\fP is not set, \fIunits\fP prints an error message and ignores the block of definitions. .SH FILES @DATAFILE@ \(em the standard units data file .SH AUTHOR .I units was written by Adrian Mariano units-2.23/units.h0000664000175000017500000001112014503577555013410 0ustar adrianadrian/* * units, a program for units conversion * Copyright (C) 1996, 1997, 1999, 2000, 2001, 2014, 2017 * Free Software Foundation, Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * This program was written by Adrian Mariano (adrianm@gnu.org) */ #include #include /* Apparently popen and pclose require leading _ under windows */ #if defined(_MSC_VER) || defined(__MINGW32__) # define popen _popen # define pclose _pclose #endif #ifdef NO_ISFINITE # if defined _WIN32 && defined _MSC_VER # define isfinite(x) (!_isnan(x) && _finite(x)) # else # define isfinite(x) ( -DBL_MAX <= (x) && (x) <= DBL_MAX ) # endif #endif #ifdef STRINGS_H # include #else # include #endif #ifndef NO_STDLIB_H # include #else char *malloc(), *realloc(), *getenv(); #endif #ifndef strchr # ifdef NO_STRCHR # define strchr(a,b) index((a),(b)) # else char *strchr(); # endif #endif /* !strchr */ #define E_NORMAL 0 #define E_PARSE 1 #define E_PRODOVERFLOW 2 #define E_REDUCE 3 #define E_CIRCULARDEF 4 #define E_BADSUM 5 #define E_NOTANUMBER 6 #define E_NOTROOT 7 #define E_UNKNOWNUNIT 8 #define E_FUNC 9 /* If errno is set after calling a function */ #define E_BADFUNCTYPE 10 #define E_BADFUNCARG 11 #define E_NOTINDOMAIN 12 #define E_BADFUNCDIMEN 13 #define E_NOINVERSE 14 #define E_PARSEMEM 15 #define E_FUNARGDEF 16 #define E_FILE 17 #define E_BADFILE 18 #define E_MEMORY 19 #define E_BADNUM 20 #define E_UNITEND 21 #define E_LASTUNSET 22 #define E_IRRATIONAL_EXPONENT 23 #define E_BASE_NOTROOT 24 #define E_DIMEXPONENT 25 #define E_NOTAFUNC 26 #define E_OVERFLOW 27 #define E_UNDERFLOW 28 extern char *errormsg[]; /* Data type used to store a single unit being operated on. The numerator and denominator arrays contain lists of units (strings) which are terminated by a null pointer. The special string NULLUNIT is used to mark blank units that occur in the middle of the list. */ extern char *NULLUNIT; #define MAXSUBUNITS 100 /* Size of internal unit reduction buffer */ struct unittype { char *numerator[MAXSUBUNITS]; char *denominator[MAXSUBUNITS]; double factor; }; struct functype { char *param; char *def; char *dimen; double *domain_min, *domain_max; int domain_min_open, domain_max_open; }; struct pair { double location, value; }; struct func { char *name; struct functype forward; struct functype inverse; struct pair *table; int tablelen; char *tableunit; struct func *next; int skip_error_check; /* do not check for errors when running units -c */ int linenumber; char *file; /* file where defined */ }; struct parseflag { int oldstar; /* Does '*' have higher precedence than '/' */ int minusminus; /* Does '-' character give subtraction */ }; extern struct parseflag parserflags; extern struct unittype *parameter_value; extern char *function_parameter; extern int lastunitset; extern struct unittype lastunit; void *mymalloc(int bytes, const char *mesg); int hassubscript(const char *str); void initializeunit(struct unittype *theunit); void freeunit(struct unittype *theunit); void unitcopy(struct unittype *dest,struct unittype *src); int divunit(struct unittype *left, struct unittype *right); void invertunit(struct unittype *theunit); int multunit(struct unittype *left, struct unittype *right); int expunit(struct unittype *theunit, int power); int addunit(struct unittype *unita, struct unittype *unitb); int rootunit(struct unittype *inunit,int n); int unitpower(struct unittype *base, struct unittype *exponent); char *dupstr(const char *str); char *dupnstr(const char *string, int length); int unit2num(struct unittype *input); struct func *fnlookup(const char *str); int evalfunc(struct unittype *theunit, struct func *infunc, int inverse, int allerror); int parseunit(struct unittype *output, const char *input, char **errstr, int *errloc); units-2.23/INSTALL0000664000175000017500000003660513341344310013121 0ustar adrianadrianInstallation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands './configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. units-2.23/units.pdf0000664000175000017500000152074314564532666013754 0ustar adrianadrian%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 272 /Filter /FlateDecode >> stream xÚ½NÄ0„{?…ˤðâÝÿJ@(Ð Š¹ $"wðü¬cr:$„PЬ­ùƃÚʇ:Y˜!5Q¿¼)»Üίº ÷× ¿÷&ùÿ¹bòŽÁ˜¡š@‹ßE«Î®"i²à]tºís&çBŒºíôSõ0‡}m8¸êrkÆê³fªvó~ãs{£6­z?ºg¹cˆxL‘ƒI,qŸwºWwêœF É&ÌPv´]C@.ò¦™a˜¹’{,S?Í+þÔ"Dð>oÑ~,©ËÚO’Z×ëÈëSV ™´‚ pã)Ëäý B/úón¶ciçv›çé×JЊù´„”x­ä % uE endstream endobj 14 0 obj << /Length 718 /Filter /FlateDecode >> stream xÚ}TMoÔ0½ï¯ˆ89R“ú+_âD[Z!„ åB9¤I¶±È&UâeYñç™ñ¸›Ýª =düæÍØóü¼"àðAÁƒL©¸ÐyPoVÜ¡Óc@Á—›•ð<­$|ÿK‰)ƒè¨ÛE¹:¿N’@ð¸à…Ê5n' «< Ê&øÎÊÎÌa¤ÒŒmª!”9ÛV=­Ÿñõ8Qpó鎂»ÁXŸ¼ç ÿ…eí4›q PÆRABœÁ2KØ®3u(3ÖQö)Œ`ÑNÐwã»l—†õèNñ+tìéÕÐ<“CÁÿ£ücGBÅ"4M]õõ¶¯,–ÅB Uár|ÂöûÉ> stream xÚíœ]oÛ8†ïû+|·öæŠ_"µwm'3˜Å6-šdofXÕQal¹ä¶ù÷Ão}„¤¹mÚI“ @¤Ç|¾ÉÃCªp‘‰?pQd †1(_lvÏ2õÓöj¡¿xûË3hâÖ"p=Š|qþì?Sº€(².Îß/(ä `®¹óËÅoËzõßó=;9wíP„eä-EŽ)‘Šâ3圈‰V;_dY¾ÛV«5ft¹¯__˾Ò/üLº)0É‘lJüvŒ Ý\­!Dtùú£|KÕ~¬«O®Qõv˜‘ñû!”Ÿƒ‹vÔûMmu`ÆÇ$$‡6îŸB'gú%Ÿ|÷•?¼ÓÆþ¿Î'¢_ ˹ìßqÝF¯GáÎùQ/Î5¦Í¥i(¡©Ò&úˆ´„.ã€A¦U‘AåWY[núº¹Ò´|ªûk?/D€Øq^0¢—¦#S™ÂcLŒÝ 3‘&혈J &(£â[C"6L\t’Ÿÿy8óM³ß T¸Ùât߬'˜éÙi{ã%G|À‹â/G'à½í°DïGáï'.÷‰ÒÖû¸´ôž@Päܪï…§zø©ú=ƒD|[ïÿ ‡¢Väßܪ{³T„˜0™ÊÄcbì 2‘&혘IOS!1ØEÚBD¶CE…Ȭ"˲å›ëâË›®Þ”[Æ2Eéú²Y!æò“OZÉUþÅ„<ˆî ±[Ôm½qéuÄX?„{¬Ÿ7¤.UVD‘t´A0s´!CÛs [¿ßÕÉY¾*»®ê4w*E¯ýu¥ÿñd[íDž,ßáçÉô>c̘¾Nef1360÷2“&«˜‰JZfHQ„ìÒ°aæå¡m«fs£é8ù¼‘D\—Í•ÁämÙ[„Êær˜Ã»ªÕoÚzSéøµ¹¬>û`Bï4C‰XfÕDËFáË&ýçµ,QVZ—t–ñdŒYˈ±ì¤¹ÚÖݵñâЉ_¶7ÚŒ‹f—u`DÍïÚ„‡°²„@2¤‚4„Ç@»ê)MV•t 1¤ö $j@zUw›j»-›j0cüto†;Yîý#“ÞŠ¯<éíl˜CpŽ~¼5#ä¿é·Tÿ‡ð˜ÿc3˜×ÿ4YåÿLòÖŽEæÆ»ìd¾c9ùü¡­º.²_ábâÆ¹ŠB@ï)lÿ%nTFá‘ÊÄÚ¨$JÛÊ\:0  ÜFåõ‡ÕZ,üU[öûÖ;¶ÅÖQöxÒÁ{øqC³”±4u–Âc³Ô˜î¥ÒdÕ,•thB,³dÚMÍÙa7Í?Éò§Z¬C¸’yë|{sÑ„’åŽM~î\aî.€ì ÓÉGL3Áë!ڇʴI]…ͼ¨$‰*Rb‚”,n³™ÓÃNn]Þ™yÌ2ÓÙ¼8Ä…Ä=%Åw¹vZ0”O©¨ÙàiƒñzAKQTœEÔ,fXäÖ±©“Û~½8ÔÛ~]›ìøçÇËC³ æÄ0ž£Ç3ñ|GÀ¬C‰ˆÂ#Ml÷c–¨+A‹k:Ô¬°•k·A{ÓVk·7{[u‡mïe,“X†žjÆß®há0F¥7„Lj»‘—¸4]E\TÓ—g 'ޏܖ÷»ÛzSöÕåt÷OäVq—­Ì¸à² Nw"Ïâ~¼ecë©éßTP†ð(cÓ ñ‚’¦«@‰j:P¤`f@ù\÷ʶ–—pÌüô¼ëê«Æ‚SlÞÌJy^ï*/1\^Ç!™˜#¦kSÂcŒŒý 0’¦«‰j:F°ªqXF¸Í”JušðÇ'ùwÙ^š\\Î1e_¿«·bj‘Ç£¢ŸÄ¶sù?MÍ'4yæŠÖ71Óûh€ lþ6Û,z[ÅêKû–u¨Q>4ê70§?,¶!&•©Lá1&Ç|@oÍ;QW19Ó¼UóÄKDÝéš®yžî›mÝTe« ŸC Ô\4÷ÿ:y~ª†"ô5yÖÓqËBˆ*ö×?f¡Ž^Â}%ËY£ÚBªY&jÛšå\Û?½ ÎGfã—»šå¹\‚ª¬\²e%³’V˜Wö‡¶²:ßþ¸Ò`ÊBøW”fö˜¬‰³Ã(<2;Lìõ¢•ª+g‡¸¦CŠÛ38Wk¼8ûÒnH!(¾ø ÞÛЇàÑ}žÊދޡ3²z«Ôi¢ œ˜ ã&‡€B»´¸âãëþZÓ‚'ëL´ ñãÚ(Ýq!Û:‘ŠÓãil/,¼@¥é*¢fš·„! Ù£àùáì¿ë®ïD?Pµ1·Y 2k™Žé÷úÕ“Œ†¸ß4‡°<½@’a?zb’1 $“þ@Á݉Ú6ɘkF¶ø»éújØgT¬lô^j.Û‰ ×(<²pMú=HÔ¶ ×\Û?‘@J†¦(̇…ë—³#(+ÍžnôüÅ5=X'™Qxd’™á¥2UWN2qM À¹œ$€vK&ht<ž™f›úýË¥ŽC 1œ>ŸGá1}ž σgl$òÖlu¡!<†ÐØNä-ì%ê*„¢š!HÏG¹]<Å`ÅÑ‹JB©CªªjæW ÕR¾q€†ÿàžÖLl示<„Ç\÷xÀå4]årTÓå< Rë²&Neñß>i\R <~"û)ïùNgÖ³Tø†ð|c·`—¨«à‹jZø¸È›sbÙÃî®Ö~÷ÁLoZõ¤Œ÷¤   cô‰¾ïLŸ1-¾!:ÂÞ˜ì½÷ýeó¡‚ endstream endobj 107 0 obj << /Length 1946 /Filter /FlateDecode >> stream xÚí›moÛ6ÇßçSø¥ý¬ø$J{×¥M‘!hƒ&Ù0làÚZ*Ì‘Ùn’}ú‘IQ6Éš´Í$²rÖ_¾ûéxGÒx”È<Ê“‘ å,Í.ö’öls>ê>¾ÛÃÚn* §Žåϧ{¯8áåIŽG§ÿŒ8æ(§¹½Þé|ôǸª&þ²÷öÔ^‰”T–;ša†(K‰ÒT·/o!¡¢“Ë'SŒ -ÏÏ«ú|2¥‚÷‹Ål³(ÖÕ²^©»yu€“̽ 1&EÛkü$¯‘ŠîO:xuÇ“÷z±Ý“[~f”!–¤Ö?q_ë©cîñ÷öE[‡ÑdG›'ˆ3ÕÖÖ·hËX§"C4¥,Nt°ë Åã/ê×ò_uc6x·z§ñ¦®Ö~FÒ÷ÉÂ7ûמ àb\ ÄÅ1à2ˆÅ!\€Ú—¸¶Â…¥(Ír Ö¸œÌšêrm³ÃUµþì%Syù\‘Ô’üѦÚyPzónDh¦mAˆj+äД`®A „›õåfÝQp²VéãfQFyÿò-}ˆ¸ó`b …¢7AáF‡fA(`ÚЍ¶„‚gT¾Ä ª¡x=ŸÛÔðû$gãå¦é^}¸ª»ƒ7åŸ f2 ÂÂâÛãrûSl>$0`Žy$`ϱàèÔ6ÛÖV—29Ë:xšÊs¦ Heõ$IÆgmzžRJÇoŠu¡ŽØø ²´'Ü«ÉcÂÓÇ5Ì?Ћí—#åe¨ÛÈë¬§Ž¹'úÛ “Õ•–·hZâ8E‚KÑÄ™4Ðf ‰Ýûòª£ÎA±¨çÝÁqÓZ_pÌJsþ$q ᡽ Å£7áᆊa/0ݨ¦ÅC–ib‡DCx,ëEU—EÓ½<ëËÉ-8A$ûÚä‰e¡<ÚçPxzóÈ…Ði=ÇǰéCÈR/4Å™ÚNÃäcžc¦iaºy¿¹(›j¦;§Ñ=h{šæ¢Xû;—$—I?LH=Žñ°ÇqÌ#=ÎÀ­,8SÔ6=ζ¶ÿñgiŽ˜0ÓÌö8“ŒêصýÉådJ²q9«Tb˜µ3ÜÞ'Ÿ’Ýí<ôZÕĘóH‚™ _Šêª$×´`É!€’,ÓÊ,Šsï˜!í3,^Àyh !Pu|¡ öæ1P]h Ât[P£šTFvP³MÕAU.tGý[57÷CfóA^ú§o¬BPGŠ`oCÐÅe^aº-‚QM‹ UË:Ô"hZ³ãFŽ·«ÀH+8’™ø…½¡RÇ doÒ…#$L·rKs·ÆO0JÍr;æv“ƒÌ„x<+ÕNí·½tE0ÂÏgá ´*bü ízóXÇà‰åÁަm;†-m²¢²¯Àyf±ƒBDv‘Ò—®RÖ. ¿¤«‡:£eâ L^Žy$y `ñ‚ ÕUÉ+®i%¬Ôtj¹U¥®b¡g²,°ƒœ¶ÕÏÊ<—YîYp{/U™q?”£Þ<Æ‘Sî]Œê¶miî ‚TF=MÍ\yªÁ·Ý毪YÖe{¬'º~U]ESŸ‚›:rpò(6îÆ1ãà8æ˜GƱŸ9 c@m3ŽÅµUx1Fyfj¡Ã«×òÕÄeŒc’!ž=ƒ-{wE; JoŧAP`Ú”¨¶…d ¢Ø4f™嬮f]=> stream xÚµZÛn9}×Wð1ó0‹¬âHâd±ÀfÖH2Àîdó Q:‰°²è’±ÿ~»Z–bw™¸õ⾑çÔ…U¬¢,Æ6Å †¢òÆK2B&x7& ¾%“ê·lr*†Š)…Ç{ryâ “ð®Á f2ž ‰T8ÀÄ`|NJÆ'e\3J6ScêTïÝ$`jü€`6SE¢  Œãï# GH˜êÄ|"H ¦b;Lež@”À˜Ï€”ä LÅü Þcj?ãÖA)N† äÉП}‚ðB.ÆØäðµÎ$&á¹@j˜Fвƒù"™Œ¹ 犕‹ÉÁˆ8¼g#vÎb Or4’¡ l"ËÙDÙ`J¤Ô:'z .db(ɧÀ]%˜a]Ø &X¡ˆ‰YÂ:ÅCahr ƒ, §™ /9gW7@˜$°9_ GB­”býÄÐ WϤRÒ„\Õ v%8,¬U”)Iu;”tõ ´ð\ßTµa‚r¨K–„’©® XÀÕrà Áâ¹zˆ`ÙÌ0ÁæY A¦,• ÞÈ¥H0=ž0!GðX®9Â8„‡œÚuŒéÐbBXv9W®jÎŒD çXoÀ•«[( amägU•Š«ËŸ‹k×?¬ç`w‚p…(N?žLßÜ|nÌôrö±™LŸ­W»fµÛšˆxz5™¾j¶ëýfÞl\í‹—ÍûÅìéúÚ¼uxQÝŸŠ7Áô æ!’Úa¿üÒ"¿šyüØL_@œT¿àV`®Ã-äjo1~z¹YÏ_7;ó²\¼0Ó7Íõμ;@õ I|WJÈó1Od«¶•‡'þ®pâþŽpÓ'«Õ8oköªrZTBRËy§Ò‹×KÐ ëEÕðŠâÅ+ŠW” (AQ‚¢E Š%(JP” (AQXQXQXQXQXQXQXQXQîØ±Õ{2}½ÿc×>ÿk±úÿdút½yßlÔdî]5ëî`ö–±¼#®ua³8+ ‰‚gŒ{Òzöµ™þcýfm¦æýT]úpJ'¶ÀŒ·””mÌçdD–µRÓyÇ(YlpýJòH”L¶æà[JÁsèe”‡2²2ø`ÙµŒØn‚¥Ç¢#o±}*[„{éâ8t\4JJç¢Íî¼t9@£ØÒao·QÂYé°@‹Wí°ÿYl}½tiœÅÉìä·k“óy€1¤ g«!¼,vò³°…‚dFµ|³^”Í;›}?¹‘蜳¤l.Ù˜²'Ãr´…5ðByý™ùR°©¨ïB&}䑉O2tÒÐCn½ï=â‘ø›AêøD¬Kgæ :éê u—ðý‘GÍ-± mr=)·ÑÏCœiÑ­XÍf¾ˆõC1[bDÒe—Â}¤ìâ#YìxÊë»õÊ8ô,‡c‰†žÔ†N?RÐ{ìî9ÕÑ£zJýt#Å„wdÑ *+–©œ‰OMŠæÕYº5)!¯¥!NGGBn ¤y”¢·)ùóòÕMž5¯›¸?¯ù8ŸGUV4¯Qˆ(4¨Ÿo¤¨'lò ÝQËWk_>3ŸƒÏ¨Óœõe€¯ŒÃ—TÒ¨µoÿ¦¾*a.Ì[ÑrúŸÿþ^ÏÚÜÕ~¹|÷Í–ý䡞ûß>d4.‡¾>‰c?¸tïÂÉ5ù¬Z° ”ô)éSÖÆ:«Q²6ÖYë¬ZfÕ/«jYí%+JQ”¢(EQŠ¢E)ŠR¥(JQ”¢(õÔM¯Ô]}w Ý•ÜÔwé-¡ õ|l>± ¾cõü8J^ì|ìès¶a è4'£C;9¶ˆèÑúj©ÂRDáœèiJê?¸yN©Í Ðñ½hh}y¤vF" §™^E"Ïçå²1h%¨­‚à©¶‘-wç$œ-¥þÚ†GêgПA¥î $ ¿ ©–ª3t8˜ñ¨«ÒßHaQJȃŸQñŸ³ë¸c²Atï甬“þ½˜GÚûYÐ3u!Á‰ç¼lHm”:í`Õö‰Ç:- (}§\HÃñ>RNcWãýX|3¡Ÿ*&-cšˆ¥Ã!F©Å7Ÿ—/yß_*6bÈH;pÀ’‰ñ¸OÁ³ï×QüHœð[ÉG?$›¶TÂH­0b]Nr/¨ÃrŒÔ+zF>;–zÉ6–ÊC[7¤™j÷ͶþÉ œ(xQuÔ_LÎÃyho vE=F Žmñ\:øÐߎݨ ’¨Þd¬öYKì–í~vt&¾îˆéøX¡Öö3ÄY×M<®UlËØšûËét*{Ëå˜x[yè·’x§W­ÿPñÀfõ¤?ýªsý¡fõkqÿý¥Ù|Y4¶B?¢ÿ9v‡Wõ~ý¡þݯ»íO÷æþ}îf6ß-¾4uÔoÛFQ|}ºý¸úXÿ\ì>}êÙúêj¶z_GÀ_Ã}ê€Z€zóëzõó‰Ë›û¨¿alzÑ|Xàv±^m’[Èž¯“þß]~ºÙ.æ³eþ~»›­úÔPß?z²[_-æuìËÙvÛl–Ü}ju{¾l®šo!<Ûo6Íj~Ó¾žš­>¶_Ív ׫ʲ¿j6õþr³˜7jú÷Íõ ôóÕÇåbÛ:ãÙ~ Ig››ƒ9zÒ }ôr±7ËålÕ¬÷ù;IÖ«ï6æaÐóëÏ›f»=úCN!N¿Þ_¯ŸáðÝzÓM<>Þùzuj©‹Å‡Mµé©;Tçéû‡ßcúuõG³ÑÙÛ;°ßîa<Ý/–»Ÿ­-_ìWó“ÅÚÿéÂå¦ù²èœóªÙî—»vú_õ™‹[ endstream endobj 371 0 obj << /Length 3359 /Filter /FlateDecode >> stream xÚ¥ÙŽÛFòÝ_¡·pv-š}ðòbbo¼Hd±ñä!pŒ]ŽÔ¦D™‡Çöã·®æ!Ñ‘‚`€aw³ººªºnJ­"øS«Ýé,pM[ÂtmTœ%º{ÿóïb­o¤!/HÊôJ¥¡V±’’̆ÊX&IÝ­ãDÿº[+ Æh æS鞀˜4êÒòâŠì‡Ò0ÎðTBÑW8gíãP¥9ƒßï'S`­BfWq*x°SS?6Åán­AŒi†"M 4®~ì ZîÊ®t²æ>Ÿ×¶n‹Ó<(¼üé.N‚¢)ë^àÚ/mç-C0hñàŠ¶oÜÁ1Z~ÙÕü²Û»²Aºñ2B r[+à=frÝǾäC*G×OÚwŽೆý ÓñlZßñÏÆ›êïTÐ8y2»u™àÇòiã80ë_xs[ʪô"¹ö9LsAÇË›B(ÙÇmE²f3q@”}Õ•§ªÜ]ùÉhÚ p†C¸ \,®EÚl|ßÉ:EÕÖ<’ÓDZ>V Do>½\o/­ÙóI‚²å盻̞qG¸n‰ ¼1kÁ]Õ–}û7V6»JÂ<5ªZ¬ÂH™XSœ{cYÐÈ<Ìò T|k;·a•äajõ*Q*Œ#sÅŽ=ôz¾à^ΑÒáoݦ#o‚Ì%¡âÁ»û»Ìîp5E]úC¸”ì{Ð ›ªà·P< œJÏ™²‘çÛxà+,¡$Ž@}ÒÔß B£Ç )“µš•‰ Ï(>izÛžï]ÝÀF%_Q(x±kj¥äê >Ûþ @dð$?…6¤ÔTqs{~y¥òøÈë@¬t¸þDD¸#¿9¸:#açÜ\…¯ª—€RùtG"$Xe!  JÃÌÈŽWE[nÐHtPÚÀñ'WAÙò;p§Ê½äèð1×=¿‡C~ ¦ÝÞñ —àHº}ÑñâlçòZx·I›kÞ°™EÃNÌ,›9þØ„Q<ˆ]s«njÁ"5Øp>Ä¡PÊ ’ƒ\Ðf'‚ôÔëÈS¯ò õ°L—4R€5?窴H½²y¨FšºzÙ“¨<÷ !ªuüŠŽŒHzØs‰}ë<­ì(q<ØNJKÅÆ»èê‹0Rv{Æ;'Ö_ §Hà‚,$4y<7 Q kòÌGž0-¨(cƒ'²!˜°zàžúpà«€ 8x· ¢’“¼r|A§‰è"§$xO¼º`ÀÏ— d'¹![1:Lö`,êt°Sžô”3 dÞ°RðôÑAÔÕúÔ7lTu+·$¬R¬¦ü-RvÃo V®Yâ:JB§s‰oúªèj´2e4Çwwjå\0®|à)ù%xzuV†s |ú8—p—pO 4T4“MM¼*À_Ô'EóPÂyͪñZ>óäPtûõRœuðò„ yN}æ%Þˆ`xnKÈd&ëàΪ~ËÞ¦èyQM³ •–$¼í7_ûØ×Ä¥ ,éœî¯Ýlãß°6"Q¬CÇÿ*gÕ”MÆì÷ñ9’‹âSºßSZD`éh-KÂÄUØAQ‹Í¦‡«û"3$A¼(0Ú G” ˜Ø»#¿"vêæÃ¢Øɉµ§YPÕ~íâD½¨ª®†Ô@bó’OÒ•2× ‰0îï1scUK³/¦¢ÃNLæ(‰|/ào{xA*µÀ»_BÉ;²p'Þ•„ÃŽÃÙs^¢hx™i¨L2•­lœ†6½VWyèõ|!y9G:ÏÇš8L˜ôw¯‘SÌŸ¸Ä_رÁè»ñvÞ 'ÊÂp£²YX EVjndÅC_aå©„$Ÿ©Îç>ûžý¼<ÁÜ]Ö¶ÝÞ‘YU|ÛðlÅðò°à>CÀ:úÙ¶è áîŠêLùFO¯ØSá¹­ÖyJÏ ÄK(%âù 4­Xu£•ÒñHl F| $èJ H «c´ÄýD"ÃR–Sn%hC^'²¯ÆÙ“€ ±0bbå䚟m_vÃaéˆâèÜ–}zŒ’²HÆ¥_Ûx“‘ 4kˆã’`y$ ^yù™‘$ŒñµØZë c\“Û°AÛ“+ší2¢öë ëpݰ°/ÖÆò’_Ð9øbëvT§¼úÀ îžüƧ¯a|_ã,QÈ ä=ú¦Dn=ë•}<¶Pt§Ž],žùXú(Ãï„¡Ûù':c3»1N™À,¸”ËúÒØPC)h2°ÍøšðÐë øR}y†”èx½/NœüÃå©HÜÙ÷“°ñcø4ñav,&qb.º\NòôF<ôΑâS%zØ@qëÚMSžFgM©ÉT…Y‹¨SVŃW¹æueÞnƒ›ô„Âb"­æ² „†þŠstŽÍâc»n @:½¡ë&€ó®Y‘4{¦—Eué’9Ä æ&½%mÎG£a¡gŒõGê[Dàf°»  ª¦`.5(£NôLÿTfö’À¥g>u‹Ø&Ú»ªâ!W=Ô”ÒÒUˆ¦Õ€¹O£7U]t?o~‹âè—·ÿàÉCÑBôÏP·ñ©#mÖQºŽ²¥\Ë$J3œïoàXE9 =Ù•ŸÝ°®˜;w[vÃ^jriñèèÍb_|r/uøR*ß×cˆÿï’DÁÒbc¼:üê‹Ö¯¥¹þ cf%y.çÍ4ušeèiÙg¸˜úp¥«§éd0Õ<˒Κ ¨H ç¡QéM}fY˜…KW Üq×à÷B¨Ý%/ô-†ÖÖdv¶è,}Ý#è$z‡»âðc<Ú«w+=•Ÿ 3|þͱê¦N1ù iÀx·ÀyrÂM“Y_VØ0ºT×§âØÝ¢®èÇR5fI6BgW÷Õ–ÇgºKK{ˆrâp¸^œÌ¯—¶Ôü¼¡Q§m&Æ^kuéÉ¥ >@ §L•hJ‚è‹Õé`G,î #[¨E·(Xœ…zͤézYèápÂ@ª¢àûž¡|›ñü’-d c°qÅ}åö8-UùÀ-¤Ÿ/¦å Ëeå¶|l‰/x·çNÆEzk75ÞKñðŸ‘fz®Ûþ° ÌŒ£.KÝÚ0Rj.õcqàj àR²j“Ðf’FV]KVz=_JVÏΓU'Êñï~ö§å·Pµp“§é(W|½oãø"Q…¬Xiu#õú õçH‡D5’Di9ÔPUñC†´í‘§‚+ºï¯ÞäàbÔ-ÊgcjaD³ŠßB8ÎÓ™#òIpUûò¼Ú£l ~ß¾šëéÙÁ„r¹µÛ!¤q»@e\2è¹û| ¦Bp¥|e(OäAš†FgóÒ”›`k©æÄ€éãöÕ'O¶e{ª¤ †«[ ¯ÇIèco%h&ý.Š[j<kæ¦íxšL ü¯€œzŽ©6xÚ—Ãg)<¯e˜CÑ|éÐCÙqÖ éLœ./~münÿ—E‡¦c¸ü†qQô±ó·¥.Îü¶œN¿-רMDF3Э aÀ`},ÝäéË˼>f30‘ö€ÏÖa¥hGáÀŒ ® V±ÿñúƒƒ‘çðÄE;Z÷»÷Ñj ëö‚ÇÏVOu…:Y­Þ>û7{€é·æ´?IAh&ÌÇŸf,õ Œ/Iø×a”baf‘Ôu¯z qŒy]<ùâMk2á)߸yRÒ3 8UÇ ‘QÏ'çð£wÁ–3†5ð,?Õ‚¬­eå[AÞÇvtC\üNhÅϰÑIî/™ Aî ò|A„ì.Ñ‚›7Iþ;h“0‰»ÆRh´0“ÈÏ—(R°€Å_/÷CYš $|¹Üoá2Õ„üŸšàï—˜è³x”`|€¨Ÿ¨ßå*ùs\Å ¡fN•J²%þÀôÓT]‘ñ Ô˜?&#úÆD…“ÒT0Ë7¨¢¬Z^Üy?=)µàɳ?Oí5ÙÙ9µìmáFXòàìŠTJ…‰J~G»²0I —ðç]óÏÄ)ø¥RDtf–üéOÞ8’#Uv*úŽ—µ|[dÛûßÂïWlfCcŠ> stream xÚµX]oÛ6}ׯàc;`²ø-E¤i‹]ÄɆ¡+ Ef!¶dÈrÒì×ï\JvœPvÒ{°)‘÷ž{xù%žJ–0žj&8Š”Yƒ"cœKÆ3Á8½g’ jÎ &Ei™äðH&M‚’3•$‘HSÊâ]3?‘¤L‹ eÆ´QèA0ƒŸ¶QTfÈŽ[fG™¡{؉„ÙTGB–CÉRIõ†¥ÄTX–¡NÈ„eþ’³ÌÂ6<ápÄD‚m’Q…Äm$Ð/JÔ(H= ……†1¸ >ŠHAK ¦ÈÒ7Y%0Ö@V d4•å‘0@ÖÔ»²Öp7@Öº0@6¤˜²„ À6È–‚°@¶)ˆY §‚j€œZ‰TÐXÀ8¥A!ã”Ô…Ì"%¹©ÄŒ’ÔÍHqªÎH2ÌHKK5‘™H&°“Y&$'ô” éi4¼|h⤧RM(<Yé> øJ [ƒÄB5¨Ð†3I¼II uáƒ4’QÂP2I ®’FÙBZ)I,ŒµÄ"~zrªe$)¶”ˆa¤ÁŒ3wzIŠ 6PU¨M0DC)òÒ>$j¢ W AÉŽò‚’Z’Ò³DzJ¨†D€1I£02ƒ+ â–†š©ã*ÓŒ07H£¸µÑ«“ÆÝ”õjùO¢’S·\ÍÚ×ÑÛ·l4f£OõYÍFGìÕûz¾˜•EÞº ™WeK凟‹Æ-—e]-_³wï¢çØØæM™_Ìœ'p«iÕyçÞ÷tUQqVÎ]×Ç/Ø}æÅõmÞL¼/‘ÍÛò¢œ•í]‡½»ý Õü滩|o¿‡èÇu5++—7wuãš-m Õ>0Y˳m€ž¹ùÂ5y»jÜ ìžöë|Ü›,Wsç)œ4eáý>W÷³C|Ò*ÀýÚ^u†Ax=É}!Ë^–/årío·åòõoKomMÿãÕÜ^}¹§ ¡ÖùZ_—Õ”,ÿpùî¶Ýîާެ̗nü`Öº¦BæÜ¸mÚã»eëæ}@i‡°×0œ…ŸÆt}PØ®(/ïúCï=í{û¢ÙÕ8°Žl²“ì]{ë\âí4;*//]ãªýBÓtÈg j¿“S¾í2Þ]–ý|j¿/õtºV1Ÿ«Æt3A3Ÿ4;,¨ÏÕÍ&%·¸ó¤›~÷«c^4å¢ímnËöê1÷Ê Yí@üºj«NïöËn#¨&h ¼ XÕwôw½òóþëmõ˜•ôóa2¶ì@v(¶Éº£¼Í©üXnXîhÛËòØÝ>b·«uk7è2ãIèËã6až–®p·åÒuëш{­÷òݵä]<{m<¦-¥,æÎǺ™çmŸ Ê‹°Ç,Àìê}úÎH•oWcˆ2˧}dÝchQº™ì¿ÊI{Õ›>¬XQÐérÃæþu` )òYùïu®»•c«~Ø«?õÏá~„iEÞÝÒö³§=ÀúPÝ”M]Íûg±õ öÇ›°¹;ª ¤Y8Y¹}ÆLE¦õÄu;ýbQ7ë¼Iû<|Ü œº|B3,„Ⱥ#pØîc«›PÑŸ…_œÏ“|½¤®Û»Ãoq•WSxŠ“ñö²ñþäs®u¿ îp3/=¾­=ƒíåG±j†‡î"ï–“ñ]Õæý>)øzüÖ­8AÏûH{ÃìÓñ¹íÆy£ºXQöøôëV”ÂUË>Ã…ßtžë2°·nθ%¢ÑÙݱÑI>uѪµ€ZâzÄYÂN£nDØ‹ ‡*Üâ|ÕnRæ‡õOö-A}5°™ø‚&¸ÂwfUU雿—¡Æ_˺ÒöeÚ—ª+m÷þ=Ã{f'W­Ç ~ëf⚎Bòx-ûÆM[\BM’ÆÖºêŸ9žÅ¸›Ãì€ýâýâÅTp›SÜA•V±Å WY +™2:6ÃTžyË|¹:RÅô‘EÚ,¦Û3ObÅÏ’XËlÒðqìå ”‰})1iLŸ*$qú|FBÈA »Ö«!ýªTÅôi"µ±‚iü2Ë”B~@›Ýw~ú¹û{uÕ¶‹å›ÑÈUñmy].(û㺙ŽèmÔ'~ÌóÅ/’≊3¥˜51×ôAFÇÚZ–šØpù¿û*Üš endstream endobj 382 0 obj << /Length 1710 /Filter /FlateDecode >> stream xÚ­XKoÜ6¾ûWì­Ú ’I‰zè¡)š"=î¡h TÖÒ^!+i+iíøßw^Ü•Ö\Û#æˆ΋ßÌÖ+?zUªUž$QiŠUÝ^)šîWLüþ땾ÃçÇ›«ëOiºÒ**U©W7wsQ7›Õ_Á]3ë0I’àç¾[Çyð°Ž‹ÀcŸa¢Ó" âõß7¿]ýrsT”Æñ-BÎ×MÊ éİI£­ûnº³"Ø5eª¿Ã1úô?Lïá#σÇmS£¹[æiFÛjøJ^ˆ”ÇfŽŠ…üƒÙÜŽ8."S$`7™q-< [Ó(sÇñËœzÑÞmšºš,«Ø4 ÆP,½o8®bá´µnN»˜Ÿ|Ý«0NLCué”uòF8­ÚwZ0WÕS?DëÐ|Æ %&xB®þ0ÛI:sØ9ñ¤V<¶vi¼‹C‘ÖBÀ}Ë D,uñ8–a¨(|8¿­&¦(f0c´ý÷P¹mÕí:¤¸ ?ÍFŽ(ÍËà†掰š¢rhñ7˰/8­CŒÎÛC_8ÎZ#æhä@ôû=[:6“LmšÁÖlA$%yðÙíYë`Kyu5¢!ö=Š ™„G"ä x¤¯ÍÃ]ÏjeÖ‰¥"©‚0µ%|ãÙú|ÝØ¯ë4 ª–"„Æ1H‰›®–ü‘D2³-EÖI€eRPN¥ÁgÉ8fÉçïy¢‰¿(èÎŒ)ø³s^Á7z‘[Ú@Á4K|"R|I¨#Sê×sPGP`…k?ô÷CÕ‚vSœ²päoŠ ÏjN ëêàfÆâÓ´V¶# b“““ø]ñÐöƒðŸêÈéKuL6½>$Ìò(‡"°8m%Ô ±8Kû­j÷;˳.º'e€Ó³¯ì2-RÌÂoBÏš’°„ë„—ÝA”’£¨O¬©õÄK W)?ˆ×³Î€$±"1­žvO>Œ»ºF!ô¦‚ÞQÊþǃàîØ-ü¨ @èY‘€I[f«°PF¡‰ÜjN0†Ö^F.·¡džæ,6b0 5tgHÊÓ¡ÛŒï=¢Ne´çé}×ïvǦ»ÿàK ˆm3‹6ó'ŠÆ&²­ì&ѶnôÈ‘û±ê&áÞ“µÄ }¬Ðù¢¿;¶(¥´‰‹4׿…V–›·å&ÊHôÌöOë" †³»ˆÕ@¸þ‚4_«Âk³q­Œa/x'Í·¬¸œÅk‚9MÛÚM÷@©(°NÖ=¤*(r²käQj<±÷ æÑJeXÄÃÝ~úÃXuºÎÅ _ cC×:&9Á„!†’I¥¤KGÍ*Þ(â–PØ€`^¸£Ð!Åž/pFÃ(åJ kwXà º›’nÍ ç-A$Á!xNú”y$DÀ‹Ù6´®ÀÞ ‡ÝKLÃ4éRžÒ×(T¥&s= ìpÛÖ{ÏM#]›J¿Ÿ¨tyoiÐÙÊ8cúxÎÔ—<•½oºª…ÿÏHâ%˜BîçɤŒÎ²,÷ÊQ¯‰ø¢R¥™”Ì+3¥`Vû作óÚ—ª àcø[TJ½ Iµ§Wð²Ôë‰j-R±†˜¦ò|K·+ØÑÚj<`·eUuíž„Ôt­‚É ´ëUP9M êïx \H’̼z»ã"ÀR— ´©ÆõÐ=» {b×HBo`~°ãaG^·<å`º’eûm*^„äYòã¬0®$±4\âáWíÁ˶’†'Gâšæ¦ï¬79àAyöÆð%FÆC¿mßÜ\ÆÆâ^Lq’üC~ðïÁã×Y/Âġܹ܈²7w¡ßŸã.½€ñŒ› 2Hdùc<ì÷pø#=ãi1.5@»Šätá^œ§r7NCSO>Lee²¬vø<ƒ‹ÚO£Óý “%ƒ¼틚ñåeÉòáþÝåVJ|/#+o¾Gó;¾…ðl1‘owrÛáæq¡RgQRè× õd¿½‡Ó¼/\qÞˆA‘¾¬ºh¼.›2‹ô®ôLíw y^ܱcÄJ§¥ÊÊS‘?JW9¥/G,V<¶ûí›3ØÖ×m³³ÿO /Ýš›3€.”Gù‹1¼$ÊË”ÿe§XÎ5áÿÿ¹Bì endstream endobj 386 0 obj << /Length 2045 /Filter /FlateDecode >> stream xÚ­Û²ãFñ}¿ÂoÈT¬£Ñ]¡(ª! ) EQ„-æÈc[DÒ8Òh½Î×Ó·‘/GË1,öƒZ­žî™¾÷¨Uµª¢U‘$a•–«º{vدøÓ7ï”Ðm€psEùÕó»§ßgÙJEaUjõ¼»fõ¼]ý=øK߸q½I’$ø­í×q|XÇe`†±×M¢²2’õ?žÿðîëçYPÇî)ßÞR^¦¡JRÞÒw»õ&UUpÆÝ؉_LÛrf€×8 š¾¶ÝQ»æ¥5L0ÁAø›CÊóq½ÁsŒ_2U;<ÈίeÇQ¦e {%ÑiƒénöˆÕLvì~Ð >5mË‚Cûäš±G½7~ßÛ¦†m÷kìQÐj'E˜Wéj£’Pe,À´c£à¾Hqk°†m•z0ü½·BX¯7*°Èwg‡N“^ˆ²ß2A#„¼_ü´mÆc«I[7Â’`0Û©6[&C~Œˆ£k4ÎßPk_.j· K8Wªªàƒý í™ÅYpÐÌ— ša?>ì4>"Q„º[pÒ½“;í¶ùåÇýû˜¡'~lõy‰Qm{VLÓ6îì%–¥¦YXªâÆqXЯ4¥¼,~vw"GS¿O–„Æ¡R9ü ³‰²ûýv÷<–oS¤aN;»Ò"FH¢Ðl`;T¾Ø¾=3tB´ö®ˆgùùC¤RòÄ‘±U +©` ž6gðbwd=ðskˆAã$7ÀÙ‰æ%è pI¬‚±éŽ~CÇb`ÉA’B…YéÃêëã{)ú@QêÉ´»€"(’2È­êÿ¹(/Œφ<‹‚Í®ýíÏŸ"òQàV<ê¸ÏÞçìäŽÙ1v Ñ%5•I˜ÆéÛ©92I°fd9’HAÊìî¢TB6B&ŽmÄó9\òà…k#ÍO“n…—e”x=¬Í¼^ñóéÐÔ|vO¥²0Ëݘ*À&. ¡Oƒ@¸|^í…,?ç½à‹æGm§='(ˆ(ô¥é5Ç'"1>ñÉ)Á9,‡q™`îQpó*Hyž?£{Ç)› ‘»©ÅXFK¤ *7°Ç…¤÷C”EÄ.R:'>ÝχP­GÃÐh;s"á[gÁ×Ãùèšø(D$’‰ð“>J]׃°³³Y½ÓC³?P„ÓäYÎ}Å5åÔº¦_Y°»L—$—::WdQÊ]½Læz‰U4%ÔÍVZpÏö‹;V-˜Æ ·™D*;¨é`qá©ÿŒûÕµõá,òr]'‡RðÿU&À.I´ˆà¬Eì”v :T$3,¯*`ÙwùÅ´'ˆ‹™fÖ!KjvÒŽùVÜç·5û½Ýº­¤£ƒ´Ð|Xƒ{éÖ\w/“´£hGÎIñ›Ý8Å[æ-?mÞïÿ5¢7'‡§¼²ïÜ÷¼Jü7%â-âG}ãÏ0“¦A¯;ÎÉ©ä¹ùÀ L$Z¾n›Îô8½´Øtªéù9ÎŒÇÆM”&GLuI‰þ8šW’`Ìh§­—v h^¤Ao*üÞ•°ûMxꢋ„j–TÒ£Ã\ŠMuu2 á“UsÂÇ2JñkÓ¿b\[ò¬«in”ü‘ºF lâͰà<”¬A-"AÉÏá§É ºJÝï§–Ro⥶–ŽT7<‘­¡ÌÀŠ µíÔ C'áµÜÖ"„ *’\G~0ÙRÊŠêäÒ~ÊJs’Eg›r1dŸá„ í+hëζXU*-—4[íËŽ ÚL ÑÃÛŸ` ‚‡ VóOÍ.¿dš8.pˆIã%¦˜QE Ð(΢êñ„jvÅnñÛÑ2†íb1ò ¥mò€_œPàà>Qb……»ˆuž÷ `4ë®·ýFk2ÍÞàVÀ{2ù,Þ1Á]*ÀO!¿ZÒw(TêÛV˜¢#ÈxM»æ”Á˜q’&Kýx7Bk( Žs|¦9 °{cÇsÏ ÛÛI–Ùáå³fèzz1ƒµënõàÇ›<Œu3Ô­y¡ú@šia`FÇ{_üssÅýsuË®]¿é–q Õ9/þƒ[¦aZeà¹MÎúå÷\/°¡½³=¢$;R»‹%겘3.}&²t‰ µÛðEPR­3åØ˜ÊÉY>êÞww'½$|¼C}û¨G?AŠ÷Ò#x¿³Ò~Rƒt3mJ[¹8ú*§’ËôÛaóÿ^Râ‚zóz•ânöõYs‡îŠо„—[¬¨Ìî)Êøêž^în'£ùÑ6£ ¬¬³Go÷L¨< psÙÇÉãÛ¾<Ì“yŒüÍÒa«°¬n¯3E2Ë7 y+õ9w Ày¾KȪHfcÆÒí"é5A}&·a$=CYÞÝà•«²œUY‰*˹“Ð7 ðÕ yB.¥¥E‚ùª¬ÄÉ'swusáÅ›ù\ª¼ÜÛ²ô Õ»˜|1«rYÙ± ÓäõÅ ç¿G”œYÙ ë—KéàÖƒÚ@º¿)é€K3Hž‡Y1ï©^g¾'X‘¨y"a#¢NA¸«ËpËšâ«RJBhØÐ߯ÿ\þ1í endstream endobj 391 0 obj << /Length 2264 /Filter /FlateDecode >> stream xÚYI㸾÷¯0æÒrÐf‹¤¨%9˜dzЃ ‡A ƒL–MÛÂÈ¢[Kuw~}ÞBÊ’£îªu0—§Ç·|o!KnRø“›*ÝZ‹*+7ûË«”V»Ó†?~ÿJºîf”ß>¼zûΘLE•Vrópœ³z8lþ–üÔÖC¿Ýi­“?ùv«Šäi«ÊÄu} Ó–¦Ì“lû÷‡^}÷0d”z¡DHùŒH2Í`7Ûäe&¤ÎX®”âóµnOxöÛw¹š¢K!+ 'íÙ5W¦Z2V…ð] ²¨S¥‰«‡³ëx|íüåÖum,ÛóŠåŸþì;¤)+>‰/®ïíÉmw2Û].³ä—m™%~äí½m¦÷<X£íÍ»ª”*EQ©ç´Úei%p¼“ZHÃÄGß4øHÞ;lwYV%t$-ÿŒíV&õÀ“Ö^H_T2y8×=.‡ºix»nñ{ƒÿ ¡á˜"°º‚þ*¸–Ǭpx€í¾y´} °A†ðI™°e<: æ` ÖQ²’Áo@¬30æ™Ü©ù$^Cð÷à~MeÖº¨–å£Ù1@¾G‘s`Ò9{ˆüc”–¼Š<` Ü9`϶zï/Çrö÷ò\,Zê3ONõS°mùέéupƒ­à¤r0eÇ¿àÁwõÞ68/ÁGß],Kƒö‘ 6<'pÁÔ^éäý‘W?“ÇÀ=øŽøDäôo¡Š”¼{±C8!pYÊK5xÞé÷ p¡ëöh÷øÑoüiwÀCP,'N7˜B<ÂZj’¸çËìP H !(×"ˆB‘âu8­S°+÷v$ÔÁ½¿¸¡†àå)¢2Í’Æ· eXо%‰†9‘§oLÀŽ|øòÔùñÊ ý‘L±“Òˆ4/–AHŽ5­Tb¯!3ØŽ·‚üGO‡†( ¾ ˜èd€ß â°Ï¹xž\ë:pïg^ÿ0R¤(¢”IìU„ËÀ¾ÇñµƒŒÒñ=€W§E:eèÏ»Mã\ÈÍ•‹Â¼¬"Ï'.=˜o‡UwGnpŸ†ÕŠBƒ*x'SóÚ€ ’J¬7¤<"3âFü„TÌ,rr;¬}<ûÞñSpXÝ{N)RàŠªÈ…ÊòÿMx[Æc^KóE€öãc?thÝÎQ~‡˜8j„Dž.À×ú H̵ §l“P,aT·‘gWïQ´iS; §ôCât®}=ð¸‡ä5}"ìˆllèeºútæ:Ó, Øà’Gv+H…PvDNÚ™*æ¤Aµ\%?õî M™ÓЬäU´3;w…­IE‘Mdõíî}»Õ` ˆÌýåA«ÄA„®z© 1’åf§*Qé*„ÃÙ­E¸½0rEœ%OhÄ&l@ósêì2ˆ1œ4pÒP‡Õ†Wb-G*k ¸E -(*wT I0õàöú,q¹7œg± .M!´Yv4MÝ:ê¬dÌnÜb7˜ÃLŸê»ÆŠ¨UOy%ÔÚSÝbµÅå¹Oœù|û†s;wøéW¸µîã>cЊ溼Ö’ë¶É©n#åŸéËr&oÍòFàÞ°ÍõÌÇ‹ƒ>‚¿¥b|¶è"ðß^œ‰RÌû`äÜa5Îøñ1®}A.uãz"ùj±((lY=W;[ëÎïú-Jˆ¥§à£LòâߦÆÃ¿áɇÑvëq¸£^¿Z²S´«±‰nOÏÆ¶ªÐwÅ‹œ4ë©ïy¢°”ãw,½Ròl o™&Y¡%ЫZ)Š´\rçø1%«K#÷©¨–¤”Þh ú­+¶\D È@h›jæ4â`…â¶>SRM‚µyŸL¤Bò€½ƒ1sGÔ phíø¨D¾ÔYš«µ[&`¯˜°·[¸pÅ E)n®òWnI}^â‹Mž|K=,PøÖñàvóŸwb7&ùíI…ãˆ7Žk©dR¹~?ØÁ gwobáµÎñ³L-¯çtñ5.OGºðü’塚âÚM¯?@ LUx04¬ b ‰ÞÍE¿ã>Î]¿²WØLO:\S†¦,æO·,!]¹8¤ÐîL¯ /}ˆø…û=|´íðûµ“³JdfîõÔç^®Ô™ƒ’ïè¡7ô¢¡ ­æOHX"/³/öŒK´ÒÒÉŽ}¿òŒöí?ß½ÿî/†X7˜Ùõ]kG¾Gÿ¨4]á#ãk ”UµÆ‚÷ùCH& _¾ž|3°`½Ûó 4~ûË?Ôÿ~xÀ† „ì¡ãÿ¢ ¸ùŽY'¼ÑñKÓŸß~éð@I\,Pá?.þ…Fê endstream endobj 395 0 obj << /Length 1917 /Filter /FlateDecode >> stream xÚµXKÛ6¾çWøX3¢Dꑞ’&MS4@QlÚCS¤\‰¶…èaPÒn6¿¾3êá]9vR>˜Ï™!ç›o†â+~|•ú«8 Y*’UV=ñí¨Ù­¨ñû›'Ü­ÛÀÂÍlåËë'Ï~’rÅ}–ú)_]o碮óÕ_ÞûºèÚõ& CïǦ^±w»O›¶€î&ä2‰<¹þûú—'¯¯GE2.´Wž7)Jã¡ “Þn×Ácï­izêì ² {‰W5FÓx·W5µšÚMöp$ÒŸF·tìßÝžÖt{gS¢¹)”Œs4ÞZ²ÙdM½mL¥nÊaý‘éqÊ|?–7‡T]†4XUÓ쌪pû îʓՆ‡ŒKÚvW”%Ü´ Á^´[d)¶ðxvΘÆP³‚3©ÆŽ€ùœFîzãoUQöfÍñ¾¸ÇÖé‡Þõ¾hiš ¥ö^¹ÁºqŠpËŸ‡:sÆõø.è´QY7¸Oå»ãp:O‚`.×ÌÎr¾°$b1ç“‹Ñøn}ÆE0yT¶‹÷/Wé°ðƒ/ý%q‚3iÝ’ Ι€‘I'ç7E·'F(ÖÔ\uò4<ˆÀ€ðrP%,äÁ#P…2õæ;­M½ _‚–Ÿ² ‰}¡0N0¸Û}ƒátWSnúŽ:¹w ŠÚ¦Ø¢SÙ!ˆ¥Û¢é[èϪ:”úÊ-¬¼ s‡×ÓôeN+w3¬< ¸„%ÇРoÈÑñ®stxÚ©¾m—øòãOo_ÿúêhŠfÞ,®¿^|,ÆÛnqyÛ©ÓnKµ49N<ÁæñÍü¹GÈÂ?4‘0G—ã,f~,qFòÑ‘ø_76øò8n9#EÛ]–ìÂæÓIóˆÕœ9ø¡u!g—QKS—÷CK“uÊìúJ9]-é„4–0_Èã»?­:`rRLä,þŽÿ°+ÁD¯ØžãÁÙF{°¤¨³—êœFÑËα÷ÖÉN„.¡;YÅCá”ñp÷ÀQè9b<˾ÎVí‚“ÒÒ~gʰ‘AŠ¡q« þ ŒÊBGˆèœÑm&ÁŠÇ,àRàmâCÉ|“~ÇBï=h"A±ô^Í hÉ# #HY2„+š"¹D:!7T,8^î;7 ¬¥8a´Ê©µý¦©¨Ój'B•404sÕ)‚6–º}¾˜±®ÑT äz[¸ã°“0KcFcZX®Hã#êRØ»¯N }&ü«‚¡é‹Ñܬ7F×Ùýå"7‘ ì,ÞK§se‡â´XÉ™òØ»}‘¡; àeP “ €³íU‰Á’ŠŒLuˆdÁ*ÿOãk»”?ÈÏúÖøñû.Zeûï§Î¶é©î^mà!­ðYî¸_œ`W®LöƒãCýd_’Sikl.„—´¡<øŒ…¬e¨ù•äè^°/¨â‘CY6rî­«†ç«{¶b½V·P¬éÅo2ö¸‰Þ„ê͸O ~fØî½ïûvTe—ÐÿúDùÚÖ6û> stream xÚ•koÜ6ò{~…?µ2àUDRÏÁ! Òž¯iPÔwmÑ£%í.Q­´´± ôÇß¼¨Õnä$E9‘ÃyÏÈê"‚ꢈ.2cÂ"Î/Êݳˆ ýæ‚¿üðL Þ W3Ì×·ÏžŸ$* ‹¨P·ëùV·ÕůÁ‡ÖÃåʼéÚK/uÔýà`º2*ÉÓ ½üýö_ÏÞÞN%Z%Eˆùe’Ò<•‰™¤ÿái€”ΑLØ‘6½Ý ‚t²“ÎÃÔ¤íÛðrÇYp»½T£K&òŒƒ¶y`[~Ö[{DXWÁè˜ ¼Ô¸a¤½RäÑphäÕq+ÏÄ8¨ìhyô[¤âFÆŽŸC]Ÿ½Zv»}S5S׸‰‚+¼à LÓôb¥L¨¾W׳¼Î65~ST5D  yÑö‚uê*d6æúBÅ¡‰Sl%2Q˜ær^êËU’êàÕ¥º+aƒ, ~²ÃP<îÖüd`ð¶©wuKo,Ê QE¨´èá-½—$žI긠 i&iîå\ÓIã²Î튒 ßµes¨ˆp8Ïú Á‰;!€¯‰Í0Øu,žña¨$qx H•lÐ ‚÷gÛ!Ò}ËbTq¦ÚËQ !C7vûËjÚ€ ¦£àø¨S8•¶æñ®kd´îm)BÕiDLGp Ñ!ŒÓîYP "ÑãàO¤¹Ck¿o¯%!;À=ý³`´ ƒ-~O†”¶)‘)h0+ºatzµÆŽ5òDÇ@s·Ã‘× ÖhoØ÷Q\Jâﳃ·žØ ¶­ÎQ½@Èų̂8çÚüËÊ“‚gŠ·ÁÁÑ5,®8Ósªp˜Žpr9™tXŸD©ßJ £¥[3äx i‚†ÑÞ5ø—[/Ib:ì/'š½熎/8ðsô8SqÔ\£;q!œß_æ†Ý¬õ¶rÞxr™ f÷TúÌâÀ # hüÞñ5z¡²H–nƒ‡Æ »M_ƒ†õWì•™KÚLtòlÚ<£ÍÁämâ®×z¹‹ªé¹ ã¹y?Y”ðâ Ì/z«º‚ä.¥{r“U#íLs8ÿP924;Õ?^wƒÇsM# ÖOœ“ŠâëmçqùNüþqK¯ÌµÒdþmºº ÎTÐYWeƒIMZv%a‡Œ"Ñ#‚»Cïùـ৚‡7”ˆ¿íˆän8Ÿ^rtÀœÇ¾wv”%G~$?rc wêŠ8r³‚î,þÄÚÇ”.z »ÑºéÂû3áÎþµ7ü|oÑô‘I¸Å5{˜QÖ¬¾Ip3;l_‰:o~‹†UóÛ®é6>|Å3ÿ%Ñûë›[xªïÎ4e4`š‹¸À”è 9šG^±9M; ºg[ ÛqÜß=¾ß>®Â3¥M÷ñy¹q«;×>šÙ œˆ<ðÖئkëpßü|ÄËoø~±0¿Ÿmš—ðÿ;”ν¤_ý ªïã¾Æ…ó+ëÌ„:Sqž„qV|áÎ{5C_ÈMÏ7%ÊÀÌ2ˆ¨2K™jæ¹ù[ÉIyWä¥ÊYclrˆ²- ï½x²©ÛºçðŠH¤Žœ*FÀ=uš+‚ >)œ2ÓÃàÚÍ1e\¸ƒŠ"HÍÔüåÇq‰úØ„™Î<"8¢ºñy–˜½øÿ“4´¥wwÔŽÅDôÞ„9gù¨á|ôÍ¡ïë¶|”„­ý¡¼4:ØÚv#iè/À)IQ™0P¿Ã`€³Ÿ{W òu[Õ_›¬Æ*òÎB©Ï%«àe²‰•¥ÐüY}H—’U<¯œnŒg–¹ä“‚ ±z¾³ ^`4Ê%ö|–H­T¨õ¤…åÞ=M`’†ÑÕµ+±aà˜Ë©{âµO0t¾G9àLä€,‚¢—{óó5:¹+†ìwC·¨Wˆ{‡·|â„×È<¦džï,Gç®gÜðâ#xmðÔ%q-\ g·¾`óf”øB 쉣K%9/@v,™qÛ<2®§r»’àõ»›ÇîÌ &X¤¦HC­â/¸3½š¡/¸³óMéjo¶v?’5%:bÚ~ýÀ‰\JœE2·7À|ûÀqŠl4@!bÎ8o€óú»¤{»o$WŸ¸t =J9”ÿ_ c{5C_ré@]ZdÓ¦DåÚÕ®…ᎂ8ºv&ä‰K>Ó`:ÿ Cߦ&׉ÌY4LÔWÚ¥ “8ñ¨Ë5†œ'q¨±w¨1;Tr¡íÌ 3q–‡òuÛ‹—ýðÔéÞEJŒ|KÛlÑÄ4ðbÚC'Ê·Kp¥Â¼Ù° ÐÀ|~~¼ÄººwÝAÐîQÓ,Ù@,˜Øætcõ À¾Þ`ÎUµÊÀ¡0ôuï0•“-˜*d1ö èÃBz><cEkµ™I"ö»]Œá»ÚàoNê(Ùý¶vÄj¹'ðO¨Fàòš®å½ÌEVt‚16Öå`¶Î6‚<Ø yÑ Ô.y³{Hg1ãÌü‰0Î}šAêµ°Ê$„~BzLå{¸˜èÃ΂™„â×ò@ꩾ”«`2¥Sð¯\[åÒ{pãlC–¿ ¼ó~\º)‰W—Œ\n‘báSå:Æ‘::d€Z~ô5š>/K»  %Uš•`Ê>B»ëëFöhë{0Ëлå‘ï†E¤xd8¹ÞI9‚›¿µ xÒÊ#bÍR¥û€€%„9×IeyØsÏ® Ë#Uý0`1t‡¶äÅ5?™w Xh:iüT[ºìý{“ãd¡CAÄ}uÑKWšú^¨š`¸Àß4šöí¢Äï•EŽLðoH‡HÇë#úÒe\…‘Dæ~B$—Hú–ý±Ú(Æ/w܇Àûø}©Å¡0ÞS2 $ðe Ý£ 3ñ,ÐÃØ'‡‘ç㤛táÓÀu¯¥X J”èµ,WõÚrï&Üìù4Zä@XácÀ“¡J¹)PõêŸáž­ÐÉ"L–;ñ ¤yé±¾iÿøáõWôâyÃFÔÓ6r±iÀhSRÓ˜<Œ!>á8ÓW˜™Ud Ùd 0Gwì{”=1e›jÍýxÝü¢Ö…9ž°ÈP 0Iâ ß|ŠÙœ°cà NaŽ,(¦~ŒsZ4%µ˜™<§])¦]êÄmH,¢CâñÏäEÐÁf=g¢ÂÁ€ -iä9„cPææà9ñ=¾‘3iôæìÃ?{ÍkÇ{ÂäžÅ†{tüß[ÖŸ³¯cx/¢Óƒ°0(¨ÌÁÈ{ µ qAPD‡>º¾kwǦ»#¾{¢0u/Š)«úðþúöæ·ïxw}óÏ%™g_©É:ðrt¼óý|ÐE>xQ³âRµIc–µ *µ8IfZ…tŸÛUëPEÓËæz¾«´eò2åSã“¶ñø¤…žë}÷nᔃôBx I”ySöc¤C?oÌtôéÎÝk Û(fñ½HŠ+NëXô&’d´§œ½!Øòƒ´Òöϰڤ,'b,8ô«‰¦÷ÅÂxS¹­¿žl@‰&ù*ùz–R÷çâÇ$ðâ_ò§0° ÇLÓŽA¨õƒ-ÿ¾‘ûƒRnDš²Túž†íh<8ÌÓQnF7`›õ=+ë[Yâ[|³Ì™œ™ÿ¢Š¤ÌÝ0.à÷[^¹“TÇ‚•Ú é$—à¹O®rLÜ^0„¢aŽÍ³s[UÎwµqÁVlSò•p#hd¾9~Å„±’½Û©4ÙKÆ×P®2 ÜñóŒË¨°àÛ¨4X¥Ü±¡/bÔMçÙ±V0šL¯–…c¯³8ñ| „ÏhÊ™®Ù`ê¾=vòáåÿ`g^Ôæ“B¿íêcá½ÊâS›Š!l 'þ›±'‹ 0h}C¥3£Îâá¬"€šÝòg 5/²ÞÔífÜ<¡¼&ÕÞ!:pòR†ÁÂÅ ÙAâ %4ÝŒA•«xGþ“ „… úǧEi°>ô {0˜P• Ïžý}…ÂA|rö% ‘v¬w<£Ìž k6ŒÀ+sQ­ysêåub~tVàñkFœˆÛ÷õ Ý#ÏÈù£×SúI¯wÃ}î%0#~$íƒ%Œ›±ÊÌ¡ÙLhˆt¤’Ù~ø–á𠔀0ïJ>pvêÚ+þFà)º¦–å©Ð £ è¤´àþrsi endstream endobj 406 0 obj << /Length 3514 /Filter /FlateDecode >> stream xÚkoä¶ñûý ‹ØŠHŠ• _’&í¥hZäAS Ü]­-œVÚRZßm}çAêe­½ X|‡óžáŠ›þÄM‘ÜäJÅEjn¶‡w ºÇnüòçw¯»‡…÷“•ß=¼ûêG­oDI!nöSP»›E¿6UßÝÞ+¥¢ïÛæVæÑó­4Qéº º÷Jh“Eùí¿~z÷ÃÃp–òJŒpåÛ(e&…J¥ºj>þžhq{/ U ~ó¨/Ý¡ã¡vÏßþ©ä¹£+Ÿ«öä§ŸouÙúTrwߺÅò} _ÓßÁ}zª¶xé'^÷ ÛÖÃcËG!ÿbŠ¿R:–)Þ˜)úwv'Ǥ†<ðy7÷i¢ã4S7÷BÅBÇ(“F»ò÷D¤ âˆ]»†a–Å2ɧâÒ)‚Ø?Tu¹Š›‰ÅˆWkin½€w{/"s_–Då8ÒìƸ±¾‘G\¯#.L§iÎîzÛŸúòut3+“-ѵ®DQU€Àe©§¨ðà§I%€¬È±Æ_æ!ë¸OR† ’ïWr÷äõ š» î¬JG7Æ-®= {¸Q‘ö·‚‰èhÙ4ÑÖ|üòØ â{æ9»Ë£öD˜]N²’‡˜¦E *‰Èc“e¼†oY¨Hºà`ËVõl Iú‡s}X>Š6ÍÂKáa®.m]ŸyfS5»ªy䙪Y€!ÚâªSϰ±Å ~ÄjÇ+¶lªz¤—‰N@Qâêp§É½OBÏ2ƾ|4Ž@\GPŸ¡ÅöÇ^ÛJÎùÂÔuÜx,™»²“BC£PÁÅAš4pí½ß7XìØ®;‘©á“,­ÑЪº?'×Jµbí©ÞqwCçû¹¾<™3κó­Qèb ¢0®Àð:4û]_îü²º´Ì.Öòh¿?±wÀ.©56JçZ×ùÃhÕOдݚdÒM ˆ“n×q÷r¦ÎôO8äİ– eöÊ›÷ü}n¸CŠØ[Ô¢u»ÉÒó¡j¶ÔO–€œPÏÜ™Ïd°ÒH&RQSG³­S Û)çÆ}yÁ'f±‰XA˲án r–m+¯Š x²­íY r°‘:Yº^© ðùÎÓX õ†û «ï'ËW\ð(¡m4cõã/ŒM&³Â,ÑQI)®D'¬~%PBCdGzS‘Lnl\9¯æ¢‡Cå hHfqt¨o]µ%3 ãì‹pu0µv{f#"…Çq¢möx¬a7Z„nÅ|æ£ùd‡”͈+ãTá;„¿¥d,‹ÁÕ]ûè,ʱʼ)p’5ÛV²úOÂÍw<ËR CAA\3:ž9Ì–"»Öù­„Þ7ØÎ«{`—Ø<]7fÏÐA$Ј˜Â‡N0ü¶/2µHÌäB òbå ]*'âå¼Y:¢˜Œ+hx¥¡ISo`À§€†Þû¬²à_ÿÊ_ ™#"""5FDéÁÃ(+¶šdY¸ Ý ?õñ øðT…”ÓîÑ@\t¢º˜ÞP|ÛÜÅ¡š¡bàÍ<ýáó¶<ö‹{í ¶ýt?ëW”Ÿ!ŸÚq›rn_ä‘'J³›+w~'I|‘~Õª;…JŽX?S5 rÈÂ÷Èú±¶M¹’Éó}¾÷)–ƒ”tØõá éê!¤ãéXmo»@#"?ÄA˜ ’¤œS3®š®zlfŠR€Ò׫*bâ~kO ÅRCÿ\~ÍM‘$ܘXêß/惴/²ÿæ'Ûô&$µO´4Õ± ãô¥‡+ã,‡¼V¯¥©_ñˆÐrSU˜tÕø˜f¹Z+IÁŒ…¯Ý:?2Ö8 3Ïxa`Z½„.q¾¾ØK[PÐdâ™69b–‚CVÕ•\ãXét¬F—ðZ:&Ô`ŸÂ ¼ïÆ+zÝ3˜Þ©9)ç%$©“hci£Ôp#?Ä 4VÒ5\7™¾Á¯™”ŸçvT™Ïå 0/ƒí~‰aÕñ±/¹Mqjۃǖ*ãÓ©©>N3Ð]1'1-+Fƒ‹žMËè=9©C¬bñ"Îq™(<â}Xv4$ìÏÀrÍÆ|”;*·–]ÊS$G6ú’Ø«â=<†L%œ ÙXU[ÇœÁ•&ëg‡dÅüÈ}»c,ŸÉ€ÿÍg–€_7ò<¤¯³Çèq^¾xÕÁzD¡}è°…’Cªf}Ʊ©åïúBhïËYƒ®Ay*ÿT§©Ÿzl­ëW«‚¡ 9¸™P™TFbýE¥™DRÁFíick­LF£bb²-kt-^ZtôsÛ—¾I%^øâ;·þ4ÑŒUEBD‹XH3±}ÂÊu9Óq"†„÷Ø‚]MïLœ©lZ6À9½AI|»Àî‰P”>‚ljƒíÈUÑ{Q2„‰¸„ÂDlìQMÜ–t†Þ»’è@%ϺG :Ög^7aBEž6óN9–ÜçrTÈ VRh磞1Àk 0†ŠYœ¤ÅJa_fá]´¯{jˆ3ê&ޝë`B¹“?§ÞìW£,H°ŒœÅ’’㔜p*éÍ%û’eÕº¾^2˜…û •Xަv¥ÝýQö#Q½ñsÝòÞÒí(oÃa»Ù °Þ²gá43“d=/bm²9A±ÞóÃëäÉ+p[«75àOõÀ9ð+Lï]þ+$Ê$ëó3Éÿ§$ë(Â\9HFì@Yõ©òOj|ú ôºV&&Öb¬&Õá"æ/sH<ɽÂq-Gèíÿ.–tÌ2–ŸW«xîŸOTnIÒè;v©{âÎÖí¶¢¢Ì™GB®’Œñ/÷ü[cBuÀÊñ»79M„W÷™c4|ÛËÃbÛ ûWPyö:Ä sŽ€ms7}ÉɃISyÊì‚‘i@˜‡D«¥|*¯HCõ;r­ü’ùMÀRJ¶qWU…š÷𗬚ˆós§îºÂT>¦TÓ™Ž~»5@žO×ÂnmíéÓ‘ÙîñSDÕëje*6Ëñ®Äè²QPáù…!ôâ.êÕlþÔ ØíÂH…OÑ€jfòèû“Ã0àÌsÈ/ü.÷0?hEï— âåüÞ†bI}½’Ù¼YØ”õcu:줱WTQ|Z¸ ²¡ÉÒ È3$ñ]ô°WW¡ ¤Þù<åc}MÁâv¥u¬Eüެ16,Ê€¥N XÙóó·{­ÚRâI4ÆÑÞyh ±È`8ƒSX±bàG¿ÕúÓÊÏvKõ\ší&(p¸v1ïFn!~’ôïeô¥\Äð®W¤" LÜ‹—.„K²Í'´˜ŒßaÀ•‡Ia‚çlXk«šIb.”wE‘‚Ê6¹{Û!û;¯C`ã[]Ù]Uª¹/ öú¹üÜ3šÞVã5FVøÌ¡ô\£]y¬íÖ›t¹œ\ù¢‘2àqÇßíT°ÄPG,ÌT0ªòR¥*NÇg‘óÛ¤$c§|²'CÕ ÚÃ%º»Õr<ˆˆÎ¯ÉÒód¸#Kf+éóÑŸÕº'rˆ0¾³½ÅlÝ›X­b],~SR5Ûú´#3 ‰°Á¥ `õ…ƘaZTzžÁ3`@(þÞŠªs1©"œÊŸ<î¡êéÁ›VòCãž7à(ÉÌFûGìí¡ÚBì€ÿöÖÙUËà4ÁÊk49ÕÄd¸h_ô—ÉÏyž)ytøˆ0óŒ¼J­Ø`C–{C†G”á r6ÐBbµÜä˜[û6ü~¨âG» 1XžÅÓ °ëàÝE¡_ óÖÌèòåë„)Ä2æU*)Ö‰©èá>ÞÍ«¥ã‚õ &]r'¤È¯òþñù”½þŽãÿÑ›( endstream endobj 409 0 obj << /Length 2408 /Filter /FlateDecode >> stream xÚ¥YYoãÈ~Ÿ_¡·¥V‹}ñ˜}Ú;6HA6@Ú"%¦H ñÈOUW‘eÊödáu«»«ëøªª-W!üÉU®b­Ej’Õîô!ôÔæ°¢Á_ÿôA2ß7œ¸ÿ°ýlíJ†" S¹ºß_nuŸ­þü½*ºv½ÑZ¬«µŠƒ¯k•yÓ0Ýhi“(HÖÿ¾ÿåÃÏ÷ãAV©wJ„œoˆ$C_Í*JŒÚ\÷ëD5`¢à·Pš*£qÝw4x:®ePìPâ#Qz¾ ÝÀ~¦&_o¤ß&ßrÏÉžïûumaT”î¡ÌïžÂ2Ç›tGfÍò½ëËîÅq™ëÜ$j™·?ÂÌ*¿4·ÚHºáFj!-]ð䊊ôΫµáÕD-Ø*ù·.¯Ú‚¬‚)Ÿéƒ«ªºs]ž q8}ó¾kÂ08ƒ‹úˆìÐÕ½í[ô^ü¶¯ÈàÐÔý./Ö›üoT52¡ª/ï é}‹Š¶–ý×·]}rÍ3ÑÛgÒª×Y]¶Ä´!ðTÃÊa“ Õ¢7xÚÓ1¯Ø/¢K¿PÖŠØ€<$‡·Ô‚ûh%¬Ô[Á›:Õ^»ŸFf±Èò@šÕKH¦1¡¬žkÃ;hÏè4ø‰­äJ2PäÝÒ%R+R-ßs ¶­íϤ§ºñ2¢Ô§œFâ Bg¨veŸ‘Kƒó‹Ã‘8ÏMQ7Â@ÝutMF•ˆPÛ™÷ö-midàáJíÙíïÌ€™ã·c÷Ãäê` øèíOyÇ–´pˆb¨)È1ˆô[hÃÿ,éT‡‘uõß%u‚ã¨dàø6’tfwtmNÀ¤¶@üسœ^Í^%Z‚I`“™ùó =Ž®F¨ŽD’È+3Z]jü™(>ùi‡Ž~¼–ièÿTüÛí#ÍnêG+L÷ÿø> WÇ& î|xŽF£ü›1¹=Öx¥'–ŸÃbŠ‚&Š„ŒÒ¹Ö~Ní§EI‘°ò+g• Žîkþ‰†®qÅn_×Í?^’»Æeù¹îÑ/>™»|“ÇýŸ\Õñþ{Þ·|Øû ¾DÆó;ð¶!¨-–prK Rè8Œ xXÐ9èWD~ã%oÁ,M^‰Y‚#Ë)Ï_$4œqX!2 Úҵǡ(¸á2ÑÂÆÑ`òí-§ˆ¯Ãö÷ ›3veñ cÕ°þ ¹zá ¨:d2â‹n±Q*‰ŽÞv}ß”uuhi†GÖï*ÀÁîpÚ¶o[> CE:L“× 8ÐãïôÊ» tNì ¥Q®óöƒI &ZŸÔG„¡×È­"‹#áñ@¿Ûéûãa{Ê<ÓÂý—ôZæîÐç/U» YH?¨÷ͦ‘D˜hý¶fùªÿ8–œP‡}Ó ^ðJõ¢(AZÑß(Ń–ïkú⣾uÏ &°„É®îËŒ†Gî0É,œ-øçrʃô<ÄÌ…±À&K¦yÙ3ÁútŒ9_¿ÄÁO¾´  ?;Hjù—>¯(ÇKpBz/2÷yä=ƒNÎP»qé [´¬È²Ì³ õ^@åÜ?‰yÃ'£ì¹8ˆ;®B ¯K5·ý›ÚÀPÞtOõ" Ia]@´ï‡(„¨òà5Ï~|ãR%LbÿŸÃ/5ãëSßÏ€÷þ4wðqùä€sDWÒ’ ­P‹Ee8ƒZÁ… 4СºªYþ2/ ¡ž2 ýpáðèe>Yª:¹ïhè Ül—gèO4‡â‹w¾(ý–Ïá|f‡:E»Ðe5äeO®¨bȃY]ÅPóÕDiPBÔ9˜W¥ -àé9ôÑ:ßuwè›flŸðvØMËû,gÕÔ§ß‘Ui3z‰€ fç[Z$AGõØÒ¹ZÆñr(*jY‘Vﯘ@Åõ©¨Üз„¡PatÕ·ø|¡Œ_­±x¢iO->Œ¦ÒáJá{ÿdÒûÉQÕ3-²T<çDC=û¨ Íù@>èK_wç1ZËÅ|ktñ­|‚ŧᤊw?.UsÃÕázŸ°‹M—­‡ÂÚ1¡ÈÙRäœê’æ^²d-ërBÇåkdÝ€|IÑé›Õ÷Ì%"Mž~sS(ˆt¬¾ÏÏ"ý"µ!mÌDþ‰)ÝpŸÖx4/ÆEOâù§0 QÇ~'S)Òôª_æˆÔ6äˆÄ·2ï)@¹ŒHm“ ØýÙwí=Mæ RØqLz+$A©ýýßÂ,Ûv4óï&,<=ƒ„£“ÂÐ;)’èé/½ôË!(!¨«Ü6•ÓóϿݠ?›Û© ¶É²?cN}ú#»ö­ÂºµY]À † ¯µ…±¹zëÐ# b Ò»aÍP|á·yŸ¤“㇜ø¬Œ‹]éÅœ¯4Z¢1§ËÈÿHoîC ñ™D6øì+êæ•„AEþ²›TÈtl—°A Vk›¹çE¤H…±æ2ÛGœí#ÀÄ/}ÁÑ2a ^Mß%H SR£ŸfV¤Þ„E²PëèJ$J¨X¸¬8ñƒ}ð)~AÔƒwP„†»^I” …‘r®Ý]φÊ/Sü­8¥k†g2mËWN„NF¸…"—îç‹Û÷)a%ßS…‰ÉPãè‡ÓŒêýÀìUñõêÜÔ^lz¡òˆÅ €1[ÐÎ,xqdªÁ‡ZVÇÐÁÎûA‰GwöÏÇ y;žèa*Á8ÀGážÉIeFÓ¡h¬†9^"I/ ˆãKyÎ\üè|³A¶ôQ<‡œwĉ!îJÞ~Tÿuc6žkðý|’Õ$ø|”gôU„ßÑâ`ù©ú¾?©˜± 'CÏÚÕW$Âar™¿“T1˜%73пGß—¿q¯Yª¥›û&2Á6°šRnUðåéÛžp ÿ_ö?a T endstream endobj 412 0 obj << /Length 3108 /Filter /FlateDecode >> stream xÚµZێܸ}÷WÌ[ÔÆ´F¼èBo^²Én<Ù ‹lѨÙÝʪ¥Im{|êBݺ){E`À"ÙY,žª:UqÁ?qg¢»T©Ðèì®8½‰h´=Üqãï~#ܼ-LÜÎf~ûøæáû8¾Qh"#î÷ó¥wwÿ þQ—}·Ù*¥‚?6õF¦ÁûÌÛv%t·JÄY˜Í¿ÿúæ»Çq£XÊ_)Îü²HI¦C¡4‹tB.U_ž«×²>€YäøÈ‚ξ\l]Xlö<úriúÒÖø^ß…›m¥Á÷›LMËìÇüt®ìýf«#üR$s)d…*JAjâÁiå->tÐ=ìòW÷ÞBú8 3‘ ¯ýŽ+;·ïË¥|¿‰“ ¯œx<Þ7<Ï+I–…"Í&AV6–Y˜¨dÜ8Ä9w[-ãÐ(s·*1ÿöCy*«¼­^7™ îùX¯(MsáNÑ\ªŸóC[ö–G½Â i`]9l+äBM'ÛÛvUMé\Mð©Þ:ØžŽyµçV>[ÏM¤*Œd Ž<ç-7~ŽâÈŽ( “Q퟼@S9áV€H ¶Ð5¼x¹çç¨)ì|ÀNÎ&dw8–Ç ÜIåfç<Æø»}ß!œ–"„“¢e”†Âd cñž €§FÈr_ź6¡ŽõÌ2· 8ÑŸÈ!Ú 'ŽuðãѺ_s~\P¿ÃŠe]T—í3έÅHô=tj¼è†Y óSrø€pôÈí°Îù\91ÈÕá“yòˆ3çÝ:ÊsÉx¡ ‰‰ahð»G¡´äÂÖ}IDÈë%5÷̰ä¡dnCÚÅå¹,ø—ÂŽWÃ,Në(øËžðΞ󖸮ÁÑPNjãá}Ûœx|8úVhM²/î–ã•ÌÐ:ú‰ cÎY»ûÄŽïÎñ­…“á©3%ÍŠ È «ÄB3Zé:©KP7äÙ¸à‚âLJ.Å'œxsÆ.UrJÝŽtžQ†LÞš€S¸Ì˜?Ò¶Š9{¦‡íµ«8Œ€,mÇ"Õ«{óz…á>Ôü>šK5m8'âöyÆ;[4õŽ`.d÷óÁŸxBùÓôØ6þLM˜d±ç]*Lnï/ÊwŸF-È šx æM°íÜXböð8ëÄfv߆)˜›¡'«‚À­K þîâi.µ–a–\YÆÒ"Ñ%ñZ¾ ™ØÐgÓmq›n§Šo"ÕAUžJ* º|¯­!¨¾òû3¼JƒÝ¥èÝ»¤˜b ÷]èê¾Af j-ЦÝQÆ:ˆîÝÉ…ÆÀ5€4ó©Ž=HUþ²qù‚ëhc²Ã÷.¢È˺0úÅWŽ‘høšÏ²™¦£ÝÿrYû¤´7õŒ¯Ë,°&"±µx&;eÐx’KãÖJ…ÙxÏ¿P vZOIưà|‡dÉ,<ØÀœ5‘ѹyº «íó²â®Ëh}[¢Äׯ¼$TÒ|EMÂ%ÑK¿Ž‰ó‘ȨPC¢®‚cy8Ú®çŸAÁ…Ýau ºbïˆ?ŒÁËeþü®cI³õÀ{½\òÖ Àá=·:'õ0×eº˜ó²æÒ%zûcÙîðw™É duôqTŒü¤ž°´áU4¿³©))}um•†ñ×å(î•Îqè8Ã|ž~ôÒ?ºüØ=5Ƭ•’ÝdHIanédÁíCrQ](<²G€ŒÙ¤W¾°…f™ÅP¸¬ì¾wu’ÜÕ‹/Ý%¯ÞýïÉFÌ—(È'õ$=‘ë*õ¸É6œØ²ûœ1x2·ºŒ“èWç?R~fXÒ  ¡ F¿X{ä_žsäø££™‘qZyÉÃpfé~>Ù¼?½¿T<>ñ)O¦ôÅzݹ|‚ýp `O©X‹Å €yöÉE§m ÈûŽ£0¥¼†È`ÚX¤< ‡9m6`óàûáÄ®;/ìp.›-5BÉ|âT’N*qº4Uè\\vµC.˜ãä÷Npd\Üá‘¢¢Ò,ëoÀ¥|jó]éÒp“•Ë‹xb}?}÷ñŒçêy%KdøPy+%QêÜ4€Ør•§ÈÕàÉjŠ2ò°Ùà8Ïej©ƒ× „œ–õ%]Ñt®7•#®Á£¥Ü€Êÿ(ÞÌ…“,çÛÜAÍÒ]  c`={s©P™‘`<øV‰ç~ñ¯Mù¯;2ûD§R—]¼ÝxWH¦"W\†Rd4(ßPrœ:™h^ie~ §Ù1Ñ7^Ôs*‰ß¦o9/+Á$ÎfçÒ‘æ,Ö¬}íkÏÆ,–‹6O½‹§¡Lulu^JMžJ—þ3&2Œã1ÞåEk×¶»¥p° nøÄŽ,VW%°?«Þâ" »j66ÙÌWywäæú8"(\Áî _txÑ5÷äà× )„ß«›!ïý°šG%ÙŠä•…ê”Ø* {îóçÊBZ ãYul\ªõ tŒõ<ƒXt)6j |oÇíg®Æ9UBq„sUhLÄûh<ø\A&°­8þ*î„‹•N8¤DÿÁz„Ñ®ŽÌ"åý\½Bó~i•_q똆+ü€~Ïé‹ÉàË•úbŽðVTïó…<°Ã`Êd¨žCó˜‡ýák¦º «øyüé@¡¹å7œŠ({¼w5 þXÕ*RüvÙ&}”ÞJ ³÷bLïc,cÌF¿èsxà›¦„åÅ_îLôè½~ïͳæ5SHD©N"]5R&§Jö ØÉù ¯èšL°Ø@UîPÁfzÅ©Oí|ù½? Ó¡_¾}àÞöó¾·§sßñNÃÆESOœ§ʶʄB\ѺAìlQžø¶ñ_›áÅS3¼2qì¹o¨‹ N?Î|7(²ÐÄÉÿã b@$ò‘L>eîIr6î4îˆ]W>WÖÿW@÷§pô¹ëHƸº+»sEØ}í†1š¾ÏMõæ[.þ}Çý äsß?‰PrÉãÚœ¾%ˆ³˜ƒ¬SÌoxlº\ìÙ7¾z ðô_™eš endstream endobj 417 0 obj << /Length 2308 /Filter /FlateDecode >> stream xÚ­Ë’Û¸ñÛR‹&‚ÓÆy”÷CvrØÊÆŒI,S¤–Û“ÊǧÝ|i¨9•šƒ€F³ÑïFÜEð'î²è.U*Ìbs·;½‰<´9ÜÑâoy#o ˆÛæÞ¼û³Öw" ³(wû9©‡üîÁß«¢k7[¥Tð¡®62 ¾l¤ \Ó°Ý*™$ÑæŸ?½ùÓÃx“–òF–óuž‡BÅÄÓ›­Î¢ w»âdK܈À};o¶ÀX]¹ ì|Âuß;Ûíp$^2„7¶iR;7 ¸ÙŠ ej¾êêÑ**G€s ¡ZÞn¶‰ÖA[£V@Ê­P¡ÐÄû¿&sU)Àóv׸O"ÔŒ·PD¬C#Ì€ù™å+¥n>³•ûŽ«7%Q˜dé@á`˲®>,IÖîKL˜Êôâ¾¼öŠv|_Uw!}käˆC'¿ÝŠÔ„2ã*š(#:” ¬D?÷'$êÀV9-þXü åWíŸÕ{ú%/\á•›…B²·þ²1*¨{ø8ñü<YÅ+:ö*Hèh™¤mÚwm‘;BíŽ ýùcH‹%çȬEÆž.$ØEÊ2øZ´GZu é[·fw°E¤FKö×Ô©$ e£+¶DÓÒÏΖ»¾´]Ýð•$$¬>û”àÎŒß5Ÿi땆¬á­ n¬ÒÁü³Ó]]íëædK7C÷âo°¥É…¼f1š¢ë&#ƒFº#IÇ×ADt™D½_Ó†^ñþühAÂÎ5o FŒ¡qáÁßÃXð‡Û¶ßË$,P:¸ °®]°•I JÌ@‰à †Sé/èrZj ñާ¥dHÝ7--ïù@Ñ難úÎ-ÏÕ:0dÞ®d¾ñª¯¶êÞ?ÇöÉ-]Úøw„f!×áƒsD‘‰i¤ÉcFb¯È*˜í}·”†~ŠjíÖ5Av§ç2,DP© •yE™¤F*ÊÅ·ËÀ"è;¦ ŸZ—ìã Š } ”¸ñõ;V`Y„RƒD€yAGÌz?‡·]ùD{Îäèxc/8t xÞú\ ^âÏž1pbùû¶s.§µ/žÅ µI`‹’DGðØCŽì­¸°¦kèH«xEÜùc+°_#Yòºg˜Ðø«A8`û:$95x€ä¼à;þ¤hé9€t"(¹ ®w¾Œ{D>n¡5/]C›Qí´=YêÖÊDÅÁH͵­áCÒ°(mspë#ýßãÞp”‚þ›Q¸MÎ}$ =Ñ™âhç¨ïg9‘n‹àpÏ¿ÝxFüé¿]S‡ÿ{t–ÅáØ=9(ìóœNe楰`-þµ•=nS‘¯ÀKd"0ÿ¥8œW 6ÇzŒÇC8‡62ø±¥û¶·%c“þ€åh.Ç·p÷>¯ÁbµÝ‘™†NS}_ûÄxX¸B&,2¯öPæ‚hÁâ•30óà÷Õ¸ê(Í)­Z–,¼Ö»¿–¬=yÀjŠO×`ëìà,ÃÏöX¡xöÄýoX/,MEÇIÚ~˜\‘ºwA€Júïx±ë};Ï7€¦ú¡1èÙäK2ëÊÌ@›cƒŒùDÞ‹ÿH̬BX¤&ÏÀŠÚ¥Äå¨wS=´Äq’gÛpé=ºÖçæ$¥âާ•ƒvÚ7¶y"Kµ³8ïx•÷²+Î%”oJLHåh[B8BD¡Iü}à°ƒ³"’73Õ0bt9ip¦ó¦K|ÉQ:š2¾·÷ɧM.p!ÔÛÕ¶ß$¡ŒÕ-ƒYœŒsŒ;§sÇ–ö‰«Ö4q(õhyS¼!Qop˵x“fœYÀ9x&¹â±ZÜ€‰DóÿLŸä\!vpݼwЧÞI ½ÓkÝ~¡‰¾÷ìû$Ëìó¬çVgyôr«Ã)…‘º/s:¢'\ù€0ˆßõàÙ8IûOZÂYÏß 'y‘ÞQvxÑ ’zÄÑ•À˜’SxéSx3²Ã¢­2‘Špš˜Ùx¯:¡Ö¡0rrsµ@«Ù…5Çy½=Û÷ß?zq«åP8õph‡ûÌ"Ât,G6OCŠÚ`þõijMIYíßðí™^b‰€ ³Ò^¶öÄŒ[~ƒXpPÉüd²ÚjúNBë™Ñ(Fa<ÔñúwåV©!ÝéWËþ¢B-Ê׈ª(Œ³ï«ú@ŠLzÉi©)lg/„xí™K·mBeüü¹™ÏËâó0ü]UJÃXŒ¡ÀÒîÞ¬æËhn!* ;õb¸ÌÙœ—]Í&ÑY˜\L`ìi}‰|,ýÔY(i>’βîg"]}¼5Óó"ÈÃAøôaµ˜™…L0<—ãò ~ N/”îÖg²!J,‡46Ø÷Ó¶ç+õqô¬æãàøoŠÁ‚%e ­‚ŽÕº.1ïºü[ÃÁ6ü>!ÇWU÷[_ÐXŽÿ²˜¿ä®kÄÏä"§´»®ñò‰Ž ƒáwÝKe8µ þö¼êÞç{2ÒÓ‡¡#|–Ä⋤á_~÷•«þàᜰ.iÉYã¤!qÑq>Ž® Ö-}óNÃ÷Zª¦1èjJ24S&¹ùM˜ß¯g§Yë{óÃ‹¼ðͱÿñ9(ÿËËÇ3£q‚‚H†®"þA÷_i®üá endstream endobj 420 0 obj << /Length 1794 /Filter /FlateDecode >> stream xÚ­YYsÛ6~÷¯ÐCfBu,„¸x¤OMÛd¦}hÕ‡NÓLi’ÐP¤ÊÃÇ¿ï R¤BÚ’ÆöŒ‰c±øö°»¦ ~é"ö!ç$Ñ"Ýßøv´Ú.°ñÛ§êèV@¸P~Xß¼û(å‚ú$öcºXo†¬ÖÙâ/ïB7õrÅ9÷~,‹% ½û%‹$©“Ï^¥0¥þkõýR^’+ÄåN³[2 ‰Êðã3ƒÖû2‰ÌzfÔ##H3~2W<–$b8KœˆÎÏ$øp~huÞ¬¬3À#ùqsÐyڀɟ},cdó»r1@êp½ÞõìLoÓ³²]ûҙơ²Žz¯3•Áù ¨œQEƒ*h'` |§ì=æí->#Ó áÀƲ#MËz–½‚_“¼ ¾ÞôÉŒÀŒ™æ“‰-Ãè†3"_$Þ…_¸:c.ÉM8¼<«ïÎÄìÏcrhö×e˜ÌjaY^ÂqVè 9Š¡å_#‚gžžóøåÅ—ùìÊíkÀ;*ð®~Uq«²-²W5È&/û<èu8¦JçמnzæñÞ$iSV:™ÜHR"…!çÁü½$z®Ÿ’ý>9SçqÌ‹YžbÆø –ªÚœùž?›¹‰¹——ƒêE8`œžqÃ} !ر¥áÜ=ÿÏìB¬ë9ê¿ý†EÒ´Zâ ¹+ãc÷SœTºí1³Y¡M¯l;'FœÄá¥Îà26§‚°â™aÔ åÚ ÅÓ{3°ß1F}.YBð>í4œæ¬ ˆòC§™ÊCJzY4„ì@G`€ÔíÖa¨WãDeBèÊiGi¬ŠˆÈÖÌP¦÷ª0 J®j·$©¶õwá¶¡-+7S  ¨ãbìãeÆ Ä .Êï7ª‡ž¡~±Íy!æW0çg_úÜÇn¦¶•R5 Ñ32×¹|û'µÑ8Ú÷]*/˧¬ƒ~Ç®Å2…Na/ë{_·=êíc¿/ξ£)z,_"“¢t±óL¥èßÖRìQå¾ôº /‡iŽ)ðÛt¤¹¶…=hõîl:'¾Ëý`䄵Iš¹<¤Ü®h* Nº-‹rosÞÆ$½:ÈÆ‡(Áq!/n+WŠê· ½®ÄÛå·üÄóÅ„ç›%bBQ‚ÎÄ`vE…jÈ o îbD††lÈw˜ª÷­¾wUN3Ù½+¶c¸Z÷‚v#иKŒYÌõq¤Rµ«Ãwd™?™ 37¹·¶Õf¤-ïšDwW”ψ'•×rëjÙ[ ƒAµ5Dÿª­õK0pL}1 <çSÊ­C× Í}Sƒ?fGzœ×û½ÊtÒ°v*ÙôkgD—it C:(øwWÞr°›Ò½å‚“@Žô ;Õo ¯ˆ†\±¶+e£Gc‰µ«¬>@ðÜ‹O%øú;#êŽF6.ô<‡U„=Ø®,†%àè\½(NòàørpBºÔüuû\™ endstream endobj 424 0 obj << /Length 982 /Filter /FlateDecode >> stream xÚµWÛnÛ8}ÏWèm©ÅŠæM"•Çv/èîË¢pQÛMK;”%Ô–\ŠJš~}9"}K”6)`°‡äpxfF爦 ñš”$‘œãR¨d¹¹ ã¬]%Áxý×~™wÌŽ<_Ì/fæyB .II“yuj~ü‡Þ´ëÓŒsŽ^vmÊ$ºI™BÆöfœU ÊÒÿç_ü1ߟ”3öDHàùSqŒ‰R…UR()Ö»nHýÖÕúÆ\sÝ­Ø{’ßù2Ê1ÍïmºÕ­»DŽ•Ñ‹·ßMÕø¬}~1p>ºfS¾ààgÁk¢J=8 †¢2çi}6óÀÀ¹øüªPrn8÷yžå%.$÷–2xU¥“ÝÅáL& tÛôu˜v]˜qú # ³Þd¼º*Ì ¿Áš:(ÑFÃè. †>†qµ 3#Ü `‚b‘s_—hÿÙº©¬sçõKdà Ó)Vlw9,ŒíºÉر⧱«¡M)Z¦E®ñV×ö8Í+м6>µñAà¢ðêVœ6Ëï\B« jŠ k>5aàjívVœÒv5lÌ(Àq©ËÔøÄ™"½Ýz,¶ÛÚF»87¶ÉÃø$z—*Zâw.uŒnátíºYÕÆFx‡&?ž1—El(¼%†¾iW` TY=¦¨×aÉ|Ù†(-$¢ë/'[jò\N± ^Zó€6t’7£Yã2(øÿuø³)‘b*æ,øLˆ%匰Sº³s !aðv¶¹bÁŒ{g*Ý.ºµûºÑm ©]Á:?R‡pÈÓå[•X¥âùÿL¤ñúï¨Øj³tú¨ T(ßÍ{ç_…ø“kpËaÛ.:üب˜‹=—ب_á)á +^† ¹eyÁп@Gknšn€«‹赩ޓbXO’*ZbÊâ­gO.X MÛ¯;Þæk0iM1G¤~ã"GÛ ÔµÊî.Pâ@™ÃNæÕóÚ»,;#A™'Œ3²×¥SÙåX²ƒrA›@$E¯b6MDèÕ¸ÖQµŠ—þ¾uÒ¨ÛÚ´Ìw Ec‰üàRÒÔû𮀕Ӝw‹c–~µ×›h5ív¸·µ7qWЮ}ÿš÷„r|8ïß6`W ø°Á|Ñ›íÚü¼È0̃áºÖšÊ6+(ôTµY¸aVÛG9¹YxAxÈìÙîÞW0N•&#ä™—‹OEúéíTQa¯²ˆ·›ÇT‘2^0Å÷¾õ!É endstream endobj 428 0 obj << /Length 1702 /Filter /FlateDecode >> stream xÚ•XYÛ6~ß_á·ÈÅŠ] úÐéC[4›‡ ÇV±i[ˆ®êØÍýñáP²ìPY/XRäp8œã›óU|•«XJ–ªdµ)¯³ÚîW4ùû·+né| ôg”?Þ\=ÿ5 W<`iòÕÍnÎêf»z罩ò¾[ûRJ狀Z‹Ø»[‹ÄÓm—ç/yD—ë7¿_ýr3Ý q¡HHù¸LQ¢—Šdz=4ÍÚ)êN£h‰÷€2Õ~¤Þ=~dþïi¥¯‰lkÇ®.×>÷ìá­Ö ÍvíC^íí™CÖÓj«ÿòVw´žU´ZçÅx¼é´WïhIÐg^mPˆƒîØÚWQà½]'jóá&iÕêð¹d<¤GòçÀEı·ÏŠUs¼ÀŒyqÀwniizuŒ¯Æ|5ŽŸ«5÷jܸ·M“"k÷ºëýmž•º×-­6Y5Òe–Õ}^4+³œ4‹ã)7«§íÉc8½Æ( µ ïÆuTuUä•ÎðÞ0õp5ÚøY€Ds/à"aI,³á¸ÉÛMguf‰O\&Œ™ˆÅHûŒØîsÒvGŸ(8MæGUÊâ8¶ë{Ù6:×5R°0 GZcËØLHFš¿ Óú ‡^¿¢]²{‰šŠƒgÑ+ Þ$bΔ⣋L‘æp&_¦“‚ŸÀHäàÊ‹Å䣀3€1Nÿ àò‰î…+¬|®˜ŒÚ.·ûߊ@êN¿ )ÿOÐd$œ?§Áî°ç±?1»ÏªÞ2;Þ• YÂ㓇 RKðXÒ‰’|ô„’/Kk%º½T +ºCïˆ aa¬R™JG«™GOR§ycp[ä=Wô+¢ðººëi¶É:Ýp½nhÛz¨¶&)áæý!ï5M»&ÛØiŽ€G^Ý€?cŒgÅÈ & ‹Ñ¡×´ú.¯‡Ž¾ô—¬l @ÁéM=[Z?IMfeèܸîDjÉ‚ ¦Å­K‚"œpó&¥¼W&}*7S¡X‚=âä΃â-»œro¢ž3 ÿø&™ ¥nóMVÐõ”‡ {(qû¨T\=X~ûÚCvǨYXãàZnï³ãBFLDÖ5ä²W—äÏ‘`išžZâ#Ňk믬ÅB hp(7ø`v=u"mµ"Á-+š }£}¬t›+'Hù“Íe4C•c BµÜƒ5ìH…e RQñFÈK˜MÖ·›ÖÓ¯Êðäí_&_ˆ%ûYïrð+ÎN—amY‚ÛËQíÉ‚|£Ö›ŽÊdµ«PÍ'ü‰Æ^Öž¨;,Y1…ãzF殎°4ö°~ȺãyØÒf]zÔ#蜠Äü$X…i¶g°*òòvò¬×ѽjgÊ`œæÇÛjÃi“õS±€{]ù¶pJY(“ë鸎pSY'ÄàsÆ¿#øœÖÇÛlië þ“­±|£³GàÇ/èf†¢IïÞâ?ú¬êž&î/DŠ6›ºÅ,j̸þ.D`øäé0ÞéöÎn7B7ÍО´‚R¤®Üí ãÄÖv ý¬qÁ;?v¾õgãÛc ± X l’õ S%˳>FN}Œô$ÿê— ¨Ñ/¤~Düs¦F|D–k›„e3ò)áÞ­ÃÐËŠÁ~މÏo‚³'Ç9¾"0Àý¥ÉªíRù(C~A…NìÒŠ|×/æ0ÃÆ}OC(’àäTðÈôU~ÒÂ@ @€~ªägü.Oо®\|Ü퉠< @·J¹*ýÂÃ"ÁeÌyz|Xyq¶w×ã)ß(Ù£˜%qúdߣßÝ+0‚ê”HÞŽòMÅÏW¿‰¤Ðr¨³«š¶.›þšîû4`ûD󱺺݇… °¥Èì2¦Òe(؈#ÿ¤9Ñ endstream endobj 433 0 obj << /Length 2172 /Filter /FlateDecode >> stream xÚ½XYoäÆ~ׯ æŠ}°ÙtëÄAvW¶aØ^§EöhˆðóVðŸwUWó’¨Í‹5æaú(vU×ñUU³]?¶K£]"D˜J½Ëª‹È­¶·;¼úçót <,(¿¼¾¸ú:Žw, Ó(e»ëãò¨ë|÷cðm]ôÝþ „þÞÔ{žw{®ÛvL‚EZLî¾þ×ÅW×§˜ó÷ )ŸÈ¤ùŽÉPHŽLJË I2Å¡ÚbÅA¢ê\™ém¢$±“–F_½=·¶C!;”íñ5A, ÷·¼>YO¥–Tœ‡2@숧ŠÃQÙHvn›ÛÖT †Œ‚Âé. lwÞPoYaÊò6O¶<‡’(ŠšmÝ mQßҪɲ¡5™ÿÀÔ9 ò¢:¸œñ_gpÏ¢ëm ¤ !¨U†ôu`"d1 v²È#ÑHFô–쉬—¶¾íO¸ú@ ƒ×'Íú AùI|½×2hÚqÛ€)ì%Ìt4µ¥åcÓV4jŽôߟüÖ?L›=üöý^‹ÀÝÉíÉ y±ÉýSÄâ¡Èøß Õ=ù£ýu0=y¡¨iü–%à`4¯TÉxBÄÈpJ¬œ=Ä·Û¶LËXËt$ù±ˆÃ˜‹] ï=zôþ_'·æ)œ©â,L•BÇþñçh—Ã&Ü/©ÞÝ;Ò YD ²(w¯/^’ÿ¯ÅœÒ$ŽÇ; '¹Saš 0G)¶CÝq¢â[× ©xñ%& öX¾qWäQ˜$ñâŠ/Ÿ²Ò¡âx¥qºàµVƒ€Ðˆâ÷SƒcÈw©lŠO×jÈŸ ×KôR ñ–e\¦!ç)šO!Ò‚rÅžõÔñÿu‘Œˆxžs| åâhÙäms¾ÜôÍ$Ôi<ž‚Úb¥ Ø³¬*Óù¥ᢧȆˆÛæ(BÁ&_?n±KCV|ŽÝOQMÈTÂ-aͱ-2ŠU73Yß´›BÀ~ò”¯ë›g´ÌôJÍBÆ_`à±Ìø,7ÏÂqØMà~4ßóå&wÀ|­Ÿåî µ)‡ÊöpsZ[áÌ[È[˜R;`ß$Æ´(G.ù¶I¤äÏÊA|¦i^ȶá üô…f Œ!"@ž¬±·*n]>è dïqlêiE}C;'3g¿ãd€­%N Êsó¶ AЭ@íÝ‚…’óÝOô $lб[Ç4ºb¨„"¢Ma$¤št· úˆ€ \¤ÚÅ2ðT jÍ>Pu˜¤ B–úÐíO=Es,eì™*5˜‘ùa0t¶ý¤£q ®à*ͨÚú+øi” ‹ÐbèÃJ¾%Õt?۹ؒǷ¯/­´à”E»g謀Žt”E‡UBWX¼àÐY3”99ïÍ]0鮓¯ÝDPÿ£pت,u¨‰ %ó5ʇP ÇIwö3" ê«sñ†#’⬼©®Žýóc+8»rHë¨"vUÔob‡¼µÔÄåÞÔ½çrî G*ãP³Gñÿ)‘HȼPfªtC=WDþÈyš@¶×›Þ‘H(M’õ¯É,8›Öºæ¢“œl‡F±íA½<¡&(꼸+òœ¬jÛÊ“éÙlè¹nõ ýφƒ‰ç ¹ß{Bmz(»±P‡}'•馣¶T»„J¥ T îfrZ>¶ME#Qù"ø¥ÁÒZ¦Á‹d r½Òçl¨›“ù³ ÷†²/¨¢*=y'°½¡$G“œªr ¸/\bô2l\å¿[. p2µBŸn™8>åãOHiã ¤¢1@Š˜Æ¡…îl2‹!Î]ƪiÕû‚®sN€ÊÇz ?­­Í•`ŠŒ‡q»j¿º-<í:žR:Íf/e±nám™ÀÏúHâøŽrV¬/Õ*2À÷܇ xºÐg hìƒrÄ‚Õâ±_M#­:ˆøèðÀ>¾Gm†=$zìPøPKŒÛC瀇ί:»Ôb=âÇ1þSŽGkïŠfðßÎmr2á?®»*ÈEÙS4Dÿ\WFsb-D7ðHT¦ûŸý`múÙ'æ‘7ÂìCóV7.ý)NñnŸX¿ûL>õ‰ˆôøø“ÐãÏwûÔ׿¦t(‘ÄÁ úÛz| r…G"ƒW˜M†š&×П¼ëA(Ÿ½È@¹…º]ÂÔ=%‘ÍZŸðqçíhɦÎ6S=“PõÉ÷zEâjªWO¦›yÔEwÙ`*™JŒ©ˆ†ë±`z©ËMoæ¯K‹(ààÒW-ƒ¿œñÿ-|ï`Œ%)¨|Ý}õ¨2—úÈñ)³fƧTã´>×c>§.à™—C8Åji7غ?53oe}Aççv,ç|ÚBŽ·â2kZêã;®‡„U3Ò=Pš·ïw¿øzŸ?›éPâgÎÂ~`ê?œÇ¾uK Í`K!âEí²q¾Žq8~õÅ&¨2¥B‹ÇU—ëÜSE&äÆð%’–*S›[KcCeƒZD2(»3¨R|#[7þ­Çu€+,Åê* mgïÏ„^Ö! lGÇ/xF¼ð ÜríÆi'O”,¥kH¦—žqdtMn±ù7æwJ)#ç’ø]Ž=qUÔþkJ0èNM¨›¢³‡²¨ ×¼ ½«OÑç±:=ô ÑÐ7-ªgò0_ÿû=‰8¼8’Gš±1®Ìíä¯ÝC×ÛŠnì£ÌU Õoµ›êÒt®‘ÁŽæ’¾šcö§ŽEBøÇÎ/¥©nrCïÑ pË'¢V"Š‚¿øÄRµc긳þEæ]fÉ«V|²U"›$Qfž_sî©3t [¼ñ=›èßôôJ³ endstream endobj 436 0 obj << /Length 2215 /Filter /FlateDecode >> stream xÚÍËŽãÆñ>_¡›©`D³›M²¹±c r‰=ÆÂð›±G$L‘c>V;Ÿª®jŠ”¸ó8æÐ*ÖûÕ±‰àOlòh“Åq˜+½Ùo"wÛ6´ùñ7‚ñv€¸›a~{wóõI²Q˜G¹ØÜ=ÌIÝ›_ƒŸ›jè·»8ŽƒïÚf+³àÓVêÀv}Ç],""Ùþv÷¯›ïï&N‰”¯ 1¯eJç2 ¡C½Iµ E¬H¬_Úq Ÿ&Ai>Ùw´ýøX¶CÛ|´íOt÷ cÑòFlF”øïDŠä9’íÉv RIÑf|¿ "^lߎͰ 6§ÏÂ%ÓozZ¿^Õûf)~ÿG7|ˆ’h!\ˆ×Z >ÇüdšáÃPI¨E¶Dû»}¨ ¢ vÞ½$Ï\j™'yæR"áËÝe*L£,T"%FßÞÛG0vœ¥ÁCÛá& î·;ŒÝCÕ4Us à©J‚š†nƦ€ðÞ·½… ïnl0æ‡êh ãÓ6ô®2÷µíéㇶ®[L‡’q{ã¿jÌqâÚmE0âÇ+¦4HRÄ ¤^¸Ý©8 ¾µ{3ö–@È2ÎB# y kV vÿe‹-*OÃ,¾ŽßÇ5£&a&'Œ¯ˆ–éœ2è,Š"œŸPi[€, ¨ ¾—Œ•Î…„š‚U å\-4ÈNF2Ty¶ˆÆ½išÖ¡æ3µñ¬'}óu}s&É[ôEÇKyáx ~¥KŽbѦ±\éXV4²†:(ì‡H(ŠçY?>ÏÙ#סÔê"Jœ3¤páêÈ:'à½2T5ÞDÁž0AñpDϙ߬ôÓ ¦ï«Cst®%¡>´§eTзªV8* ¦J˜ å쮲îœ×r¡¡ÞsÎI<+Ž 4-­^öIn@* w.æh™ØÑ.µå ÑÜp°kj»Î4~cûÞlè„ º•Zœ÷¥#Ÿå3[Àäâ=–“ÈÇ\ØÏJÜIâ ͈°,Ãàóи] t©E¨áãØUµh%äâÑöÈ¥´{”û÷žxsýZÈèb1–y˜\Tu'·Š!¾ÛA‘ÃO• N¥2ÁœÎ¸ö´R ­«=¡ 6} ¦œÇz (qôÏù³¤Ö}døÎÐ2ØÏƒGꀔ㗺Z 8G0S•š E(ƽ# r »êRLån}ÁNÒ4¸+ù’ÙÃîTÕ5í0§¯»Ö…ç¬ìù˜Æžhg y‡‰q š.2î=3àzÝÇçaxQ¸º «¡eߺ@[Nvpï‚á¦ÞµA³»~¤@=g(€­ix;”f`ú´²”ŽŒºtÀ ûH©ÙLƒ *h]ä¬8è¢ëëf¬(¨çkÈ:è™Õ¾2õõ—t³Ú=déž¿¥}àüâf‡YQ(›öÖÉ®4L} v3Ë]JJ˜gò¢'p„A¹r¹\7pÉt>¡â&‘¾»lùr([Cq|eO¢¦‘Ö?hZIð7ºŸ¹Ï6{þ¾±vªÍ\ˆÏñ‡¢êì~ør!ý®e»et¶ Y7ö³9>Ö|@ÐÚôXrpkˆo{~µÜbôÂL6>’àNiDÒ ¥9gÝmc/øÌr‚¹q³žtš9¦/[¤vjØ~¿lµâ¶ƒ¥ÆÁÈf''v;ž(§RšGomv‹÷謉Ag†šJz¶õ“ÝßZÞ:S½[ï#ðàZxeõ-P›ã}a“ºJ`çÌñM¯”gÞΛ"§k˜ÒËçUoŠ®Ù{(ýXqÎ’ BŽ5ò²+±/={Ó“”õ:¾ÿ¿¶wk™†:V¯·wÓÖÔ¯]¥RSròLòì‘@}µ4ôÒÀÁÍ lA£GJTÛ ÌrDŒùç¹T%³Qœ}SÚi(R28Ò ;”£§­¡åbZA€/|¦s¨‚æ„ðºô ô“ì¨E¹æƒÌÍ£VÎ0ʧ+Ü@Ž"9MT«eß›k¡Ž)Nu¼ŒSMv‚eÑ6ðbì…'_'8–ot%0IÀLg*6=]8  Qz"s[â` .ýÁµžµôç¾zKOy2G”ùtq{§¬†–Þ¸`¬šNÐ ÀÐOŒ1,0Ý“MÅ4ÁÃX0zÌ!»¯«ÆgÆoæ§‘!4~Î ¯Äè=%¹«7i¼ø$ÎCIxÎ$!ŠÐÿ½V™`«’é©ô “$D ùû–_Wài˜g±v«8ŒsµQa±e?DQDˆj†—†R¦ž0w!‘oò0Oáž´†s¦=™õÀt˜È|³Êk1µªuJ!=Ë’QÔ’V6=Ïb_™¶ëU¼>Dqº.z,ô)‰ÔÿÚüÇô32«0CM’,Œ²Hþõ·hS¢ü¡7'‡zÜd›lëÍO7ÿYû <Æ}šA ƒ~•²ñ'__—†J&oRó9JêRÍ‹2LÓ ì9(âÕŽ*5˜âp=<ó9­­³kÜc¦çh\Ï 5GÅ¥˜Ëf4K8PѸ]ã¤ÁCi~„WEñ9AøŠïLM…d•“ˆd¨uö’s`+EöEn5?Ï]Yò|}»õ}¨X@ÅPe²kŸ^FGžé5þ®ñ¨ü—ëeeó&ñ¹hBá§÷9|M Sõ–Üš$5Z8ö-¶v¢aü8àŠ ·÷ƒ©øWÅ8xèÚãòósñ¿¤pï#öGÜã˺öcý„Íî…JýÒSÄ3.ÌÓâ?$xæÂð?ðu endstream endobj 443 0 obj << /Length 2571 /Filter /FlateDecode >> stream xÚ­YYsܸ~÷¯˜7S‰H xŒ·ò°vÅɦò”(©8cHhÈ2‡œð°¬Ÿ>#Jm¶T%‚ØèóënŒØ…ð'vûp—FQ°WÙ.?½ i¶;îxð·?½vŸýÅÎwoÞ}Šãƒ}¸»»û%©»b÷/ïM5ô7~EÞǶ¹‘©÷íFfžéú ^ýH„Yâ‰äæßwyóÇ»é¤XÊ+YÂ?æ)ÉT "Å<}x¼ñ%p’#C™eˆ†0u ‹ †¥á]›á½íùM×C5Œ…]Ó>¯«z;Óv<Ó›'ªe{÷)QK–`KˆD Ž>‡aÈÛÖœgÊb·)¶[D²K‚}e¸ƒ7ï@üxÏÛ6 ÅLÒ¿Ø6´N ÄkÑ2Ìú=Ë€ÒÚþ\š®Ê­˜æ¾Óù@–£ M‡í|‹@¦ÙÎQ b{)0A§_xUçTúdðe0/¶÷ü$/‘iâUÿ5¸ñ•Œ½ŸÉ$¼n©bÇÓÉ}Ü·u?T¹A“eé¼LFö‚-…ÉëªÑ–g<Èž£Ïç®Å¾W'=˜ú‘$ ­‚e‘5^´T¦Õ¹5Ëû-}GA¹ J]e·Ï!‡Á%)Ä™X™î'Ž'´`)üP!xU€ƒÚ4Ç¡ä1ê7΋ms4ýÀ/…FÛ?.·.è<â¢Ñ¿‘kà@3ÅZc4€] Ãîû8Þ9’iíÕµB¯d¾ØÉ¼väÃòv¬­ÜEk©$K*°$ƒ,á‹$ˆ…%õOü>ÿ*õ7óž‡ÿ¸æÑøáC´Ñ@wù©j¶œc“N­×t@ô,ÌqEãè²+2 À‡6ɼÄJ3žVdúªùÆ!Š Oaå\¯ûóš›D†höÚ“ Ó´ë³ó¶JßMnÒ|_èǵ‚øÄ´#:IÿnÉÔ|¸Î«.¯Í<-­¢Ëîzi/¸Yð×W…錮§ {*¾¿†ü ŠyÐÍ`·–'Ê5;ä–i‘NrÑó÷ü{~¢‹/ç#dûXLž`ò­(õSEYl^jG{‹È*ô*ί„ܰ°DîØ%[˜wÈ Ã5rÃDe,r§€Ü€<”[&’g³$PB½*Ïþ_ /~CÔ¿@ÔTß²& Ä—uÐ"#¢¾s]ç#›áüID2[»ÄF®PO@_¶Ý`“…¢d‘=“,35%‹ðãø~ —edW`ò ô_@ÂWDøu!´AÙv)6ƒâV½>€þª]‰©¤¢‹  4sNï«$£sT{i·ŸÏX ±pb ÊB_«ÆN—Æ~þýÜEªÊúÞRU”é7,É€aª[j/å’r,P¯¨4tG*(#ûÓíÌ×wìª* ²0Y«Þ|×§sml#¡$bk‹÷Ô³®ZÙõ‘UP€ûÛòà0y-T ¤-ÝÁ;­7õã…'»‰¡D¬GóLT,À) ¾…‚D­ ùË@X¦ºNÈvƒ¦&h°MFËë9A‘ |±d„’ áSÛŠ‘!‡‡0G¥3~<ÚÞådx‚™ï*} •=S˜Ú–{xL ’Ä *j *ð’ë¦i6Ê$Ýi'ý•h°‚tcM.tlN¶›²e'¸ ‚/ÎF½©ï}è' =Zîue¿Š½O7™ò¸ÐTÎò·ú¿oëš{– »³£E§–ÕgÏ@öið@ru_S0ú•UÙSPã©W}ÿø>B€o±i„®Û±v_Á :Íþ<þgVÙÊ©p‚ ÓŒ<¡ F×IÈÇG'ÌHK€*.Ví7¹óëù.u¸+çX›öÓzÓäØuŽ-ˆ“ årÉ‘auÆg˜Á· ˜æ0\ö™w¬¾vð×öÛ£iL§kKè¿S ÂÛJøÕG.ªÝ‘Ï¡nœ¡šQ›•¢îí¥$€*À‘Á^å 2$³mõŸtX*Ì¡âµn''}R!É@¦Ò‘.u±²½YÙ˜=@Ùà:=—<L.œÃtkPO¨RÈhúhæ$“Ò‘J$·†Ì ¨Äò I¢&‘ÞÈ©‘ð¾>àÝ(iì}lOg°ë¡ªÁ}aåñ=oÿbK½P-Pt‰x²Úï¶Ø€†8›ôñ–O¡Œƒm²PšÄóå‚ÿÕh¦ºø*€¼ vÛBÚ˺;W®·]éQ×[&÷Ÿ''é~oËÔ"ñ$ÚlR$O©¬Xë*Ÿ2Zˆ· ø(±Ä9–œCïÜ™Ü@÷–[æ +Úýb?}MõæEßÑ׺/9Cû{\Öw%å#È7E˜™Ž^!¿tØÀâc Æ~ÄðÆÕ%G¸Ô˜¢ö‰÷PV®Ã%À —&ámKpœg“åY"œFÙûùü[6X¶á4o›{«Å-Žò¸(1í¹¶ ýP¶I«æëºÊÝM.bûâ(¢fƒ=´Ýó%yt"^?P›€¡m Ö¿ä)là¿lùÞ>T”]DÔåMg*§˜{Ë=Ò¬š¼†¢ºpoüJw?»>(Ë _’?vrhðBg–öØéS.5y„Dø·÷kX“š{ ö·+ä ºÅ™Ö··ªQ$ê¢ ™A’¤Z8 ´Nûn)çÝsÉÔó„ é<‡ëX‹Ø³±.j®ËpáÀ]ÇWBgFHü>_"$ÕÜ©w¾ÄKë±0¨æËøÖ––†Iã ãk “ÌnðPQ{ ‡Ø6ã’ªB율ú~[ä [þðM[Û3·~ ƒs“,r_°.1_E\á¼ÌrIÑÍ´ËŠ¡§V@DâéÆúà{G+Øp~²E×cÝ0º@¸EÄo˜ëõ/n™û³ÎÍóPð窇€*5t_}人cŠþs&âû³   `‘³Oø×¢B1¯JœçGUÃh¿!xÊ9æ©óxpZèy3õsôýØ‘ã Màõ¤c΋=• ²ô"!ئ’í”IWØ€ÒèÅô, êP꺙ùºðœÎØÖ9µ…zÊ`COžÞtX^¡9Æ Ñ“kPèfýÔr­…癎 …/ñ– £*°ØS!þêf]DáD;P¬àðÍÇ×Wv7Z‹6M÷0æÎ G+“Ý./c`qju„DzÑì—í+“8R¼Â=™Xe¹ÔV´ñ0t:·©!JT=Îú76–o)¦*»4µ)ø¢ë£9tÞÃW¼ 2tÔo6Z^)®r-¨DÝ6ò¦žO`†ÁÜ·{äñ¦Ö2¨a¬³l‰•(=GóÃêÌu¿x¹”ñ~s—ÚŠçû"•¸”I0‹Ë XÚH‚8ý4 Qr\& ÉŠŽ,›³x :ß3Y(Ñ: !\¨Ì ) p*¹gï~_ÿþ endstream endobj 447 0 obj << /Length 2090 /Filter /FlateDecode >> stream xÚÅÛŽÛ¶ò=_á·È§1Ë›n}ìž³úЇÄÅAÑ8Z‰»bK>g~|çBÉ’#'EwkH‡sŸ!ÕJ¿Zår•#r›­ÊÃ+I³ÝÓŠ·?¼Roˆ› æ÷ÛWßÞÇñJI‘Ë\­¶SRÛjõkôsSû~½1ÆDwm³Öiôa­³Èu} ÃQ2K"•®ßþøê?Ûñ¤X버˜Ÿò”\ñ”dV(c™§ñ'^3Ttj.¡ùv½±:Ž|ç Àcà¡nŠî™áÿR³3•”Bé| µY:.©NŒ×L¬=®7¤ŸÂ·O}øòçØµ„RJ¿°G¬7©–Ñw®ù {Z&BåÙW³WOyI¢Úò´÷õq_—QYmL¬„Re„Šƒ.ÙÚ6efÓô¨¢n­"–WjÏß Œi¾8èØ¹ÒU®)iœDê=‹’ÈËåÀsíw Ú±(Ý€c=Õêæi~~Á¤wõÓÎu$’ ²(fÆ8¶ßx–±QäбmSœÒÂÞö†x`»˜\-ÛÅÄÂfê«Ì‚´Ð,&×Ñ©wÏbðØ]qæÊÃh»çoãž ï­4é|ÙÓTà`‰Ê¢·€ÛU{ׇƒÚGFE£- fS¡•ø¾‚+0‰yO{Dsöd³,ªñ¤Ø,+0¶"Íõ×)hÇ aÑõaæÑ»î3¥‰ˆÍh©ßd,_zVÛ]`—O°¹ˆ‡­ßÜ">†ðë Ïôɪ@ü\ï÷áÄÒ`’1Èî0ÈßU:‰¥Þµ¼öŒßž8Ð!)ãyp” †Tv9BùŽã ž‹‹EWâÑ ÊW:±‹ÅkyLŽ"7ù\'¿¬3ƒZÚYÈ™½çD,~GAlÒ¨ÄÔÆPQ ƒ\ÏöÌ3[Ød£5hP¹ß¤²M ׸s8`(ÀèŒìZã¡3`¹¦õÌÃû¦E㇡Ná,,YsÁË@yC‚ÇAÝðòcÛ éràßÇw<¨I §5À;b¡àªWBÂq•`‹dz¥0­Ä-"±ôˆ<è<&:ú‰•¹¯m –ZjIŠ©#1 :øáŽd1'!a5JýÓ…š• ô»ÆÚó¨èƒ*ÑžYÜž<ÔJ=ž2i±ç%Ð<… fW(>Û{æ…Cñž&qh¶}_?ìSjF~JÕ‰e]–-ñòÍ:ÈJ ý©Ä…«º³Þ.iàÔ¹‰Æ­€ò¨ÅHaUT.+}»ÎMDH±DàZãúÒ|Nñ*‡6*ÔλQ„l"B’ŽíqáL«äaIò‰a™ ׫|θ.ŠW1âÚFÏìeÂÂ-ÒÄýÑ•…H7,{6ËVZH5Ö—º)»u Ê<¸f¹pÆZ$ü?zjš(ÜÇâpÜÓ btÏQNg•F§cÔâ¡o÷”§‰Â•yvQ´yÀ€®úƒŠóbjE‚úTô!‡[«‡4e-8¤/:Ï ܾ!´Üg«Xd*{väuA; Í\Îj¥MeT`ìV|ê˜ ñ¨KŽÆ%J—8= ZO‚6Më7Ì5†ÞD¾úce2(Üóí‹¶ ^hÉ N¯¼8ÇPµM€†Ä‚`P$€EÂ(( å꘥"³£"¡*.V=he3=½ CMÅ€ç¬E¬ñ— ûÿ©fOǤ Q=ó†©r1]”»È­Èæõ/h;,Ù»âƒûŽA´Ã=¶f6†_µ~ã¶sÑøÉ¶;B¶è\éÌRPoø/Ôû€¡a¤¾ÍŠÇnã~¡”.±¨ \¾ÿÅ8:^ê[^”BÚŃ‘Nô·ÝÕÍ{¼ùXnåí­®4ê’gF 3*”…YϼP?.¶ëÓþx°Ñ›hà; ~ù3xN„e®±ßâ‘Çö† º©ðîèúÉ3”ϼ/U"N?‘l)RèdŒ”~מöSÝ—*â!ASSú¶8g{ÜŠ[ ×¥x–ÿî`&“Ìn"9ܽ}Qb’Ùѵf|ËßÚcã¯Môιë·!Søà‚úÂóL@ÞL°^®HïÜ`HàcX ¿þ;´‰ÔëÃÒ¤Ã!=8ýþ†ëò±xrõØ1LDºÊ?½À£tž,‹ó“PÃa%§§%ÚGMiÑ qŒA€_’+Ÿ\Ûpò/XS¹¡l;ê÷¸iNáP gµü-"E´pÇyäj‰–_x¦·Å‰2lÌåÞjO:aï#7•æÆ‹‚FØþ³™uré¢TãK3¸t/x.mØtɘ3n6®Ëyœþm5ìòöKÅhŠ$]0ò¥^J•gÊæ:qÝ|ªÙ΃Ö'o–žö~¼^ýÝÌÛ[ÝÌmͨ¿®šïOáîI/v—ûþB”ÐUÐ&8r¼g/û÷‡~¾ÀPÄ̤¾»yÉg¯vô„ÞK ñÆü¥™æØµÅÃþylyùÌ‹1sÕº!FKp‚Pöþ-|ì endstream endobj 450 0 obj << /Length 2236 /Filter /FlateDecode >> stream xÚ­Yëoä¶ÿ~Å~(Pmq«ð!êÑ .—^qIѵ ´hÚ+½¢×B´ÒF”ìóß©•díÙi‹¼| g†óøÍPÇ7 þñMÁ6™”q‘ä›ýñ s«ÝaCƒ¿þé ÷t; ÜM(¿¹~óÕ¥6œÅ+øæúnÊêºÜü#ºiªÞnwRÊè}ÛlE=lE™ÎV0ÝIÎò4âùöŸ×ß½ùãõ(I ñJ•ò¹NéT'Îó8ߤys™Zo‡-Uѽ~0¿§aoާ?1Å9ª"v\Æ\-N=ê¦÷§JsxïHç<óôœüŽhDÎb™ !f<=ÍWDÃbƤJÓ4Ïœè¥awY§Ž¿Š³\ÒÙë{³Ý YD±CÝÃ8aQei­›p±íŽG'˜e`yÝñ¤ Q|ÿ–~oᜳ׃õgÿíu™T°,ÎE7qZ,U†y ú-1tÚèÒüÄxÒ˜’–µý‚¼4‹•L£ï×dQD6ŠÂë¨ülŸ1ðLýP5ñv—p}ØæIÔv¤Ê¾mle{Ó`döÎG;É’¹›ÈÂ8'LFÎ>2÷FÆÁªâÎï<¨…FT©xf§Ñš{ùz$qð©ÃÇ{ÓÐhߺ[<¸ w}Õ¼ž-ýj?EUœ¯C8à*ŒïM.¦Ÿ±Ìg,5YгBwø+üªfß™£·sìŽó7Y‰j™Ê Á”™šÚô=&mHÙ¥åH¬‚OMŒuSâ@¬KÔÅ487Öñ œK¨îì{Æuq§’EŠÿË[smï]w r{bÚÞÑïÝÐì{WÈÜêÐÛª4¾.´G &szçã\&öˆä¤8üå¾H¦±€Càà›-®À$™ÂjiAbG³»johø±)Íç5{ éŠ˜ Ï”àa%^%’|„eÈÉz(Ñ!J)‚3¥’èæŠÎjàÌ«¤†[= ·ueï1¤qz‹1ñDTžŸù}¡ ÚtV„µ?kª;>v^Á™ý¯zˆ6ÛW{ ÎS©¢+ãI×[hØè KS êLrkZªüæ$Âå&®ŸºÖa¸±„âBæ0B±X‰ÑŠûSµfjžÅ´,AÙ\g= —ńߧ¦}|n<$€ŠŸv+ëzÇLž]Wk´Ø' Q`Ö„åjVÂߎ´Èä‚ìÅÆÞ ­kÝÙO!e-‹Ev¶Oì0U±`©ÏídZ2v±(ä*ûuÞ vçÆÙ¡¢ÊiiÚ¡ïüèÉ[—‘ÜÁ Ì­¹}…€ïP=Ãæf_1.qòäÂTw1F{½óª3ý3˜sn¨æÇ3<¾v#4”£ÊN.á`™GO©«f±¨@Ÿ$¾MÂÁ(ÊÍNõ°$¸ë´3êæHt×ÓsyÉËÝúk¸5KåôDmôi~ÄI-(Êfë'Ì–ŒŸýeéö^HíªGòG—¬¦!ŠsŒÓ’˜Gf-CªR íG¹;eB€AR˜r¥3÷ ü±¡c”`ÍcU–µïî]ºÁ//2õ–¶{P"„¾ë1µ]-‚`|ükM<¶t()~åcýÒý[sWQŸîy+§/?ÀgU CÓŽ¦ÎÓç!Ý$ç-ÑÎ< 2ÐòèHšV~yLUœL.ÿ¶£x³våBð8½b,ïPxœ`sޓǦwý›œiG:%aGÓ;OUµ¾­½ç+wyéA‡ý6W¯m}ø¤]pþCCb²ç°äÉۅ곫%_ ÉÀÞ‚½.(ƒâKy)/„âÍUà馠ɲøÂSôBŒ:lä9¼¦tã†Y€+ª+Ï<\ñ|´†›8i\ ¶I¸èqø[³7G„¡  Â.\b)2Ê\[ïEsƽç‰'9±«(Òp+/õ;)p.ÄÜ mãˆKL9šX;ÇÖE?Œ:¸œû`éçâ8 a®B˜»šžE¶¥ýÊ3õ}&Õ£˜=Â>¶]7B)ƒðˆB>vúÒÁMç ãú»Ÿ‡+CñJV_‡p?7”ì¡ÍºÕµ¦ü—óbõÈs•Ç@6õ6Êrì×zÛ<ÎDº|@¿s¾ú6È/¼G Èÿý£‡XOÞ ¹š¾-íkÚ˜},kªsÁåUp,œ¡rø *ð ³_¦ë(Ðú]å´õ/#¸Kž.>MÜAêŠJ Ï“®=âˆÞ'éêû$¾O€r0£Rá郱"¤|›0uŸ„¦´¾È£<"=kÅs')S‡'Ï£vŠã™K剃ò—¾}¡¾÷-{Ö@üo¨ ù$Qy^¼¡C[Õúϯ¡"µ]iý“ûÐRƒFiC¦}ªîÛP´=4ß\ýfìðh.:é¿ü7¾ÙQT|qºmf\=àç¡íÆ +ãð_8ÿ7@ endstream endobj 453 0 obj << /Length 1847 /Filter /FlateDecode >> stream xÚ­XYsÛF ~÷¯ÐC:¥:³¯ô)IiÚNíL'Ó´)-®¤¡–*8Nûã ,@6»IGA,À~8Vr&à'g…˜eZÇ…ÉgËí™Üv=#â—ïÏ$Ë-@pq$ùüâìÉwI2“".D!g«cUÕì·è•w}7_h­£Ÿ«,z7WydÛÎÁëBK‘§‘,æ¿_¼<ûöb¿S¢ÔMBÉ{l’ÂÀW3KsKmȰ‹…íÓ,ú÷†%éñ•ĹÌa‡ ëüª.{0ømçüÒò‚“=òÈý‚/Iõjðs-ç õ¨à1ð—%—óD„ :[Õ7øL£Êö¶Ý:ÏãªÒ{ŒáPÖ$Ö–=K4+z:ÿFÈv VÇhðl!U§!k™Y*ÍTâ,2§Aù‘—„K™œŒu BAsDg~M\FP'Ï1âÈ¥Ô‚7ê< 0®QÕhD‹ûÓ^!ÁŽ¿QŠ}ô%ì¨ÖL‡ä³v7”|imhëÀá…ìÁÚyïüúé§ã³Ü9ÂM®5OöïYx‘$þ7ÉåqªL&´>ÑxF³Â¤BÝ£ìFwÆû=¦×+ìN%7+ç+kY® øè6n½Åöø¤*+©ÕÜF³1wµ¨Êy1vŽª©k¨HoŸò2Éb•©£.ƒZWP翤AVcÒ¨s[ʈ‰€Bæ¤ RæqfŠÏéw¨û[@° g )ìöLæ96óÕù#jLZè8IÕ)0 é6¶Ý''ª é}AFÔVk^ºÏH‚Cà÷1ÿ€ßQ ¿±+³ñéqiL’ç\‰Ùû•ÃgèõÚD„¦RéT=8pÏí²¤è¤ù4òÁ,©å'fj…©‡ Î$à²ãnÃ{8þ>:KiÜÀø DÀëÁ;ÔÉú¦§7TÉ@Õ–¨²¿¡|ºœdJ=Z$Ô¬p¬^™"6‰9xRÒ@Ч3Ñv×ã¬dLôzžëhÔMMWÖ]s“ÓõF±2úSþï&Z6¡ûó¥¢?éŒã0 9`ý>…x¾äõ·†%´;iÆŠ¿Ÿ ' ÊB‚I@þÞ¢ò_è#íóæêä°úîÑL&ilŠ<ÍîɪTçE®EòऺÚ@ùølh†ï6aT¾êÆQ½ä{@pž®ˆãxˆGÿ‰CGA)6%&]Š€cÿÜ»yóUmýXÛ€¿Z2¢„µ&et”Íá ѲI _L’ô¶AÁÁÇŽ\aG׺„äࢩs.™i¬!Œ©Ž~âV•™èGhFáÂå²;p¾OXPhß–Ï›0½ð‚UBŸ´ïËí.t¸ðaEOÁÞ–-q¾jI·4Xn܈mÑ"Û65NªòÚ¶‡¸³¥hÕ¹´g.]wåZ¶o]k •íÎÉÖèhݺ Uq«f}j¼é‚ ñ@”—-œ$¥q(˜&9(ª =9§kâtKÀ‹!ÇYþh¯ñ+Jv'»©c;sýx…6Ö×Û ÐÆë´'ºˆ.Ëa‹. e±Ð9zD¯‡ •mEotF «LÍ2T-ƒô°Ûáý›Þø ‘ #±„Ú;ôçž5qúq+8lVŽÆÎÔ±,]»¬CçÐ| )NVÔ¹ÁoêaËïôgÓ£Û"mŒ~ëèÜ¡1’øyï0¾X² C°’Ñ}¤é4€Ø6­=ȆÜéq‘«;ÞîWÄÝ„O„BZ{åú ë ÷ôºw»q«€| —ãŽ[ûCéG˹žéí¦`Â$sB:ýŒÇv܃Ã1=é1S»;~NO$PpLžŒýn!§ê†”'M;»6Låº8쳺·­ßûQ_cã~Œx„‰$ MÜþSʈœZ7„0 ºkOmözÛgzôÐ-Š}W_ 1i:Ì'ù¡S1Gú&*…äM…%¦JÅö7ôlüèö(¤¨,‚À[^áü!!´*ÉãDå§ð;¼>`¯)x˜/ðñøÿæ¿í'W` endstream endobj 456 0 obj << /Length 1332 /Filter /FlateDecode >> stream xÚµWÉrã6½û+T¹ •a°pœ²LRÉÉ•h©8 LBj(Ráb{.óíéFƒ”(Ó‹)W‰Fwã¡WX,8ü‰EƉR, ÓE¾¿âŽÛlDüúÓ•ðr+\H~·¾z÷c-gÏÄb½95µ.+۵˕R*ø¾®–2 î–2 LÓZX®”àiH¾üsýËÕ‡õxR$å+!¡äcLñ)&!R–.â4dB…ë÷º_‚jìôyOä½mÌV÷[sÃ#.ü „Ǭ„b":Ó¼×Uç5m•ïLë„È¥"ñ‚T¾&)ÎxÆ“Pr.'v½Ô;’‚qÉe9™Õ`OÆLqñ4øÛfËù#üâò œáWaú rÉÒDE±’—!ôÙï_ v¼è“‡xK.2‘]†dÛØîïkt_|™ûœ¢®Z›×º3ÅS~T¡dIœI…ç…³JB;…ü¬Hc½3P#1JÝvH‰À<èý¡ôìvWcIÝ·´ìñ|¹–[zVn°·iê=™º&ƶÑ€&ƒº*hó Ë•S}‹ 8dgs´µ#IÛ’Üx懾©½Š®æ<×v`\7u:ˆ½Æ+|¦Å-všO½“ ƒ(ßkÍW´í._Bû·ÚüôÖóë³ý¿}Kœ s0E½#ôŽ—>ÊË€H«¼©ñ¤Dy½?ô!.™®nŒ&ªÞЖ_æ¶ÉK/Ý·¶ÚÛ+ò ª«ÒVF7Äï¡U"ô$ þñ2icЧ,Œ%¸ÕA$ëîð™tŠ&“Qö ƒDâÇ×rõ¡RÎâ$FK—-ø/Œ³ pßpcÌ‘ã/ƒ¤» §/uc«%ÜCº#µº9 ”:K"”F‚w+óÐ5&8*Ÿ$¸ƒàhÀcs´ÆŸÏDýqÓ>NzÈHøÀåç,¹å8 ïm·óâô¹á"¤¢¢õp#ZA-Ù¾õ .Ål5Cü×c©I"Çš„¢ß=ÆéN«Ë~oF´3å¥}nv¦ñ ï±cµÑgD›îήŒ†r3iØ\æIœŸ“Æ4×> ‰-4&ËEsT¾4D“”E*KEüÌ ‚A+d¢¤Ê.¢‚ÿ%Oï‚cñõ#T¾0?ÿWèö»ºDß»H^2À6zÉñ"LX&£DÍÄòžÇI õ‘É Gœ”…ÜŸ<ß7UØ×´yCå'/[{‡‘3´Òô9I…P ï"Ü(\` q°Ö½ß&£8¸·ÐS]þøÚ›:@#>8ô0•Ã(¢~Žb9m;‚3w}¨ çn®$Si8ä†ÆÈ†!%`ˆžÏ:ðS2ª¹``FŒÁ8?&ÌXòoÈò¡SŽãf8»¦ïÖ8ÆðjÎÔ™¸å*v4-O+¸=Ö±í¾ÁLÇÍã»M,º”ž+BNš V°ÌàePwDÜ-á£K[ÐrƒÁBB—%0y<åb×ïñ׿( ¢â1ÜWx5§ «­'ñNþ©Âv¾[àrÚá@|!5¤eÅ01dð³·Ò 'LG ÿí¡ÛÙ²?çµrŠnüš^`8¼m×ßkز^„°¡HaÛCéßîý~ø'û?1 endstream endobj 462 0 obj << /Length 2121 /Filter /FlateDecode >> stream xÚ½XÝܶ÷_±oÕÖ^Zü’(-ÐÆm‘8H€úò`8)Bku·B´«­(ÝøoÏ ‡ÔjuºÜú¡Åa#j8œÎüf(¾Jᯊt•KÉ eVåþEêg»›ÿþ× ø6À¸™pþýêÅëj½â)+Ò‚¯®®§¢®¶«É‡ºwë”2ùº=¬EžÜ®…IªÎÕð¸‘<5Y"øúç«o_üãjÜI q¡JÈùX§lª熙UfãR‘ZÚa Ku²³·Õ"ûjüY)Í ÏW.×´àmu]ƒ) ô”û§T§÷ðÓÜ_h¸§á /ipý—xù™a¹ˆò9m°Å ª-1_·Ý™¨¿É‘ã/dùbZ©s1K†}þ2Ë>¦EâܼñM°Ÿ7ÁZt¼”*QbnÏ83y±ÒiÁ”Ϙ¹7öóæB½JŒ"ψÏ™àZy̓@©™Jƒò9Àn&“,üaç:ù®v½{C/°‘^ŠS#<}KãûaïˆÂ@Ѻ˜…ȇä–)“&£zWo¶†Ò¶D¼EÔ”UWÊ*¼óÖ)=ÉU•Ç\…iž>‚"Y0S¨ ­‰ÜϘ4êíòʘ“öu4‡WïMPso{ßœ,R‰Ýn ­`³‡pJ}¦85œ®wu¿#”‚‘'±k fˆ•——”3”îêèd”±Â7ƒ“6n©/å"´¼ýÙ½@Ò€ee:û›çšˆQþ=ôoF¹Oô»Ž 0a¸ÐK_‡–›¥†+ð´Ì{Ö\±ŒÏlý[ÓïÚá}_dÉæj‡¥ÅÐ.r<ðº±öb8×ÕØP!iiðЄ„X1x;zò8ƒÏJv¿…`Y6‚¬\0¤`"2 $óÐËá]冦zúV)hqI‹ÜªEæÃS¦P‰`ß3·>n1`·T0§±ƒ„‰ÇHb§Ùâkp׳H> =MuÞv31ïíw_—Ccƒ* ~KÛ/Èé\!vö„ß4Sù}!‘}‹¹“EàEü‚L :ëË2`šC³”â³”úƒDáL£sþL¦©6Z¨‹3…  (b Tu„€ -<ßÔäÕðh[W.·èÐ.I3"Ö‡xLäšíI•VS„ÑÇ®ÝÃ~¯Q=¸8„&Û,rЩ :º_ ¬¦¾ˆ…@$-Œšßï@’ÀR€Ü|5GS¾ÓWÙ0.X!ÇDæ§ @ã_þóS,Œ³r úÏ4cÜðÑA{úÆ»]M- éVáÊQ@“H×}`vÁ(ºÔQ¢òÓ‹:̘!*nëvpáZ“Œsyî5lÍ¨Š‚AþÀÀÜ釅%±ýÿ§ãè—˪Óÿ(éðk„4jÁý=…­QʆÚx¤bdB?±Ë€©¦þ5Â/t=5ï2ÜGBáÄn¾±^Ã\ÆÏ9xÿû°úS@I¾Gbî2ôÙê|“|rO„;£uµ?±˜³Ìè ™O</~½¿ÂJ¤ô©zK$^8;ït/pWZGiq»n¬ Ç5— w ›LXšŸµÛCFOøüàªxµÐôø]ÑÆ˜”ñ¸aÒUûºl›6 =~Í]®˜F3.F€ÿêù/ôM…–;ÒÆƒJ}Ò½‰7®ßÃÇHý endstream endobj 467 0 obj << /Length 1767 /Filter /FlateDecode >> stream xÚÅ]oÛF콿Âo“·êz_’NÍÛ†mذ§!CQ¬ªØçX˜#e’œ4Å~üÈ#%KŽœ4k¶ÂÇ£x$ßgµðS‹\.2cDnÝbuõBls¹ à×_(¦‹0Q~{þâÕI²PRä2W‹ó͘Õùzñ{ô[Uví26ÆDßÕÕRgÑÍR»È7m ÛØ(éÒHëåç?¿øþ|”hý‰*!å}Ò±NJ9ᩳBKj½­÷K8šDÛâÆ¿&Pi¡Ò í6ê2be„JŽŽÝU÷º'<+«3õ·£mY…s6Ne|XÑi¥Öaý†3œ`§ ígV¤AÒ,à|ëÁ¤ZE+4µ;25à‹Ý-¢ ôúEËè²¼Á­o‰¤ ';雞×2ÆïËXEï¤JW¥'>@¼eÔõÂ÷ìrbÖáÛ®l»—šÈXùëŽÐ× ÂEuÛ–»»þÈRбø–»¢í(¢PB6ºÝúŠp$ €ƒ ²ƒ _r8V5ŸõŠ8“Œ< q3±ðq“ÎÆúÿGH)sÖækVñ_ªnÖ!ÀT%Ûðv[®Ð¸[ÚÞ¡ñ†¸AO\aÁOàK®vp@yÅnoº‚"ê3œÀ¶øóòS­_<Û]œ¶¸Lz²‰q¥‰2iæR60óˆ{&:F>§ž»‹3Ðážžtà ÄXÉMå\â†+<êsMü~ß•Õå2¶ü¾¯VX¾žò›ºñ„`×í«5S\7u@­÷á‚–ÎS¬TåªØaz#rU7_u¸±QRêK»ßuC…°P.ö‡TqäœfVûÖoö»9{Ö•Ë8S*z»t&D¨Õ:ºBuö¥¸£xµšãQ\ÁĈÇuíÛ•¯ÖdØsRpCÇÛò£Ÿu5]z;»ª{Mf.B÷h<F„/ÊB§³S·}ÏŠ™Ì¢‰páÒ˜ ù¸Û²ÛD™ @믋¦èꆶïçP9•8Ð);›‹¦Dd:ë)¾"fÛ¢=–V\1ä¡“˜àÿ 36žÂÊÝpîæÊß_/$ž–©Ht>±•ú¬/@nh;¶5}›½j¦‚Qù£êU5{õL “šñÝ;Õ8¸É_{h¯I —»&ệ´{çùZ0lOTs%!³M2h)`Aƒ7ä}Nfɰó]]ï¨É"C¨/zšA%~}˜&^’èà–’+z!Ž_¾‰ž=ÿøuÔž¥»"[íô(àúQ‹ERÍ‹9€DÁaL†3DÕšNnb`Æ)vôx` Cë’ \VT©ýdš£O›º9"¦œCsc jïOBÝ-C˜sVYµ/@;c4¿ 3„Í(ô×`ó ¾q‚ꄎš­%˜*¼,ú¡&جzÊuÝË ‘ —DKµb&zM®D®ú\ŠcÒzÎËL9®Cïd"ç˜Z¡íßq3›ÄJØdÈa`¤x»F/£l2¤ôhêKß”õžG,Nð!g™ˆúÉ0ÏÕ|¸„4Ó.óä´ý¢o¦°¢‚Çüšëú–?aáZùÌÑÝËä`òOÍæ7áù¡i›ÐÐ {"¸ Ð§iòH ˜q3 ÷ƒ?ub¸]fC»ì%`YQ„zÒ±2a"ÀOuE˜mz¶¯#BôÏ>®Q€A›zq)X‰÷ó5_Š,w÷[uøŠÁ}T/Æ=nÎ6‡SvÔhu–‡„ë\£E|WÓ:ßh°Æl´sJ¤)ôÖtP£ ‘K.Å ºæf’ZyÈÐP«a³æ’Ök ô}‡mA » *MÃ'wÂÒZŠÔÙ' g‚,¦ “OÀE¥aŒTÌ´ÕåΊGJÀ†«"êD\+‹$µ6 ²2»ØøWBÁÜ}sU†Ž†Bg¯ŸCý±æ)£)Q¸‰O…uðR¢£Ì„•¶Þ%=å¶8LE½]Hñ¾©Cµ³&z³­ (óåV¥Â¥yÏ™Þ3 -¤È ¶Ù•0‚†j=re×@Y8úgfð& Ù›hmþ³¦ -¿Ü ¨ñÛîà! ÀÚ AÊ+î9÷,/L# äH5ÌV†¸«÷#uï·ÿ¡kPªKæ#ÁÀ讞j¹;ÁÀYúX‹†ê}xQ“‚ôòqi¨¢ˆ=w`GdéÁ€cwtÿ«¬”JÓØ'ûÁ=h·a<¿åo£?Îb§EžuT°óõ¾ÿ­¥wÖ-Ê9šNbDC†˜ý+'Nsaœþï^ ý¬n3a²Dé™{uñÓÌ%V&næÏ矆|´ØìóFšÃ$ƒÿ¯ÿOrè) endstream endobj 471 0 obj << /Length 1741 /Filter /FlateDecode >> stream xÚ­]“£6ì}EÞŽôŠ1h¦mçÚ¹¾t¦·}¸éÇÔ'ñ”Èmw}%K&c÷¶,˲,Éú2bÂ'Vy¸J¥ ò8[õMh±ÝaEÀÏ?ܦóПP~{wóå÷I²a‡¹XÝí§¬îÊÕ¯Þ/úµ/¥ô¾k›u”zÖQæé®70õ¥³Éõïw?Þ¼¹OJ¢è…"!å§eÚdq dL2½QÊp„ããÌ;ƒ„¥ÞpTáÔi-¼ÓÚGIU×Ò4ŽL¢2=﬑߹çÝ;ÚHKEÛìÛ®V»ŠwÝ›áxÅè·PÄãu‘Ç–™.µÞ˜O5%Ú là ˆ„4k÷k?ŽC8ôÜõš`8Mx #]|¦›Að">ÎTÕ·Éü¢ñœ(‚R鬀ާ;m‰‹xéí™&ÚºÀ ;šª‘ZÏ´¤ÎŸˆ„ÛÜLoS¡BKðù¢oÕýSÏî>΃8‰ý+¢>um}‚%î~$p#QNŽI¢„±`­Q‹¡Gâ{Õ L¼¶,qƒgˆh#Ÿ0ð_Ðb÷JÿŒõ‡•QPΠ¹'ÌFwº¤ ÊiÂ;¥WêÞà2# d’}ä£ÈeRÄLa‰ww4\çfnŒtˆÙ•-‰#Ý KZmçZȉÓÁÄ©´@ç–$_(Ê.b(‡ñÜ«‚“°®‰O ·Ø”¦Tƒf‘öíHä4M/åniìÏuÏ"í/’0ÕiZSÍ¡r¬ÙÞÀÂÔc¶žyX:Ì'“/$éX¦iÓ´Ô‡—& ݪ®¨MƒC¯ »1Š@„«›†¦ddn×|ö†Fâ2[±sÇãºcï;þŸÊ£iI‘3úÅ õØmQŸEehW:²œ‰Ë^«‘ÄAÆJ0ÏÒf"l®›9Ø»¶¶}ŠÀôS™B à3=aÈ«pݰÞÊ«µra“I÷Dºgšvg½Ñ´ç#n“yïÎØ¤qÖèyƒëáÆ~F±“£º´ž,# nû *Bô…ª›ë½QžBßÓÊl( F7ýaWÍðª'œ*Šs!Æ3^4m±¥ owsT—C¤mS=ÐTÚ΃¤f×Y3åCs8ÚDgíÙíý:“hˆÛÅÚ‘R¬ÝͶ—Q\]ö’÷r9^.îKŽ+€Ã6!޲q..4ˆÆµqÓÂÈfîàKÈh )–ÐTÅy‘Ê[¾¸¢}iŸá.Æ—à›Ó»ˆìÛ !èT©BØ6 h|Á¤öƒèý¸‡ÔÇzðL¦Ó5®RZ„`< Ô\ŒÎä$¸:ŠÂÅ‚#ŸcËÝÇ’p€bd·3°Ox˜/4v®ŠVÓTqž÷Éç*Åçr€ºtû¸à‹cKšgé& s9 ”ç]…UûÆ5tP¬mCfY|%Yf×Tm—H‚4J¯^D®¨/ò„jF#Ïe©…€~;¹â Y¿‹? àÂ~eî Å;UkLÆà6®±¤)ªséÌž-?ût§¯V ¿0®Ù9©n *œgAžÇó;q½ ï¡íÏÕ0oÓu×ÞÒrßNבÄ^Ó2ªÄõ /¬|º#{‹g§dš¶ñ5¼K]-L¥ûÃâyº&¨4ÐJmÿJÀôÃ:Ùxª*ÞbÿRÀèÀ=> stream xÚ½ÙnäÆñ}¿b—åØ"—ÍfóÐ>ë Ž7ˆókÙ¡f8ÃÆòPxh,c?>u‘CŽ(ï8qbuuuuUw=jãßڤþ&ÖÚKÃd³«^ù„mþò‡WJè\ tg”ßܽzó­1å{©ŸªÍÝaÎên¿ù»ó¡¶}·uµÖÎïšzÄÎã6Hœ¼í, ]­ü$r‚pû»?¾úýÝ´“ ‚+EBÊg2%ÁF…ž£@dŠ’ÐS:d™bOm] H8Í'[Šó}žuC›£8—šê*õT нéÃÀ8nÚ¾`ð]•·v—ÝÀ(Œ6ßm]娇­ ZçÓš–ì !{#¦ÇƒyzeùĨJÄ¡¶ùÞæ5ÒõÂïž1L'Û”C•“‰“Õ{œ ¡#•Hí)Ã* |7a˜:}‘õ e´u3bÊ2Îh'¡ß5$ß%ªYÛ­ˆÄc² á¡ìíC™ËÊæÀß<Ûád!ؾÈ[oëÆ©r~ølºüRº'RqàA‘Íe QZ*V.Â2C ÒQÈw€@Ä:&&î88Ù®`¨oø[eŸ¶g.DÔ¶g{ž³W Ñ‘óþ | YúL"¼òîbu LÞ°„¤9Œr¯©»4°ÎÎMƒ»UöXÈ%áPM + ˜Ouƒó'±Ø¸Ž­±:[ bm-dy[u̇œ°sÁpŸ?Ú].ËF‰V4XÞ«Ö¡#9™-³û ñgµ ¾ìš¡Ü3(ö.Í]X…Ê3qûÍìÅÕuàq0’±yWÑ›¬¼]ãïªÐx>Ä!WEž1š×ÿ 4àŸEö˜ß2øÑ7~ðµú ÷ËÀþDkG3ñ:eu;-| œæ=„çAßÁ¿nFσpЦ E¢âåÎs¦ |ÍY¯â™çå»qèE´ž”æo0…!Ê!ƒ¨Q,†z`lƼ5†ÐòÂP¥ídâž}ëhëŽ'K1 C q*£ÈÜcÈjjÆ7² ;6mÅZ»j­bÏ@ ù,4éœÆx1d ¡øqí”ò´Y)֋ܳøióV&Éd7hÿžIÍ"¢g5Ç{+–zÌ[ÉF¬W€í8V¡¤‘£ewtÖñwZõÐrºÚ»ž1t`s’ “;Ê §:Š œ§4’l¤Ú¬oÚ·€‹RŠz+æžÿ˜Uèí+7$^²4Ÿ5GSàʉ ýµNuèßÚ<#á!ÀÏ=C#˜xÏÍ_ —Ø3ë½+ vUVK²×Ü0ëòNÂ`7ìðð –9n §Èë²{ªGšs)v3’ÛŽI¬08QÚEhÂàªLŒk/ ×uM•÷¶Ê…Ø.,(¼µãÿv›h‡²žŠÏ7…™O9T+ÅS¦â‹ ˆÃÈ âÏ<Ç!H°„†?êM($×´Š8{)Ò“¾Ï*HÆJÃì9Á`~>kªfœH.jÀ°TpXÁ #¦¤#üeZ¹,&LLµ!Æ ¢¢ÖKÆ4’1Çêìí‚«p¢³ŠYÚ·Oÿ¹¿ab3ØÂ—›^)E×\ðºœöbÂÒ³åËÄt±ú*'¼#ïu ¦×A”èêÏ­ §îG‹Ä¹¾ k>vrá¯SÎV`@RL öT4Œ/²îLÅh(ùêwn hãs%ávͱ¶?qµíS X‹«ÿ,—Se^ïr¼+Ìf»}CÞúuÐ4žxÀ=ofšÂ€$ö©Ë8 %ã°”Ä/Æ„¦BIÃȵiWÚÊB,ê\øSvA:Ö´»Y±92(87±ÎÆánå܆ˆ0BH•Ä~oÑ÷²’ç!:ì†2CTGEGpÎÅM]JU2wnÉÏÌØÌ fÄ~„Nó; °‚8Gn$Æ«\»¾^hKG¥q¤yÀ¾çOÓaÍ&@›ßþfë&Z9ï=ÌBÀCUÒº§×ÂŒC:®âS4”ÖEÜx"¢cëÜ{Ìø¯|s¸k±ZZ_èâº]ÑœÜ0nÚ5'‹/ÕcáÓ<àÑ“¦R'(åÈb€}°Œß± p6Aì*?îmM§C+HbEI?T7Š)#Ÿy"[w!ž§ž“ -uny‹èy¤¸ÚÿC¦úßÅL&ùê9³ÿ>‚¾ƒû ±Ë[·“ܽ³%ñÊpj,MÑ-‰”*}„ø2z… ÄâöEO ÂÝÕ )^…±›–åcÐ –EPÛÚý>G ÂÄ)Äqæ‰òöóJÂÎD§ŠÒ:|X^„0ÝÚŽí¾s¡pÇdÿ\mRýÄ‹ÏMªÆ³¦övló0Ï¿pð‰‚–#—¾¾‘øÌ»‰ áEs?ÈI/0¯äCÈã@쉤õÅ»âF§$ÇQ©ï_/M¬“³­çŪ^?Š0÷XS~Å õlЀ響ûzÍkOEÎV‚¸äÒçšé…Ц|ßó§û¸&²!´mË"mj¶<^¿|­„Œ¼0 @õõøfð›å6²Ø8¢~¡w¥Ånàç^-ÓÉ é}¤‹snšGMDÂM&€/4=%­_÷ñáY,yDwT™ƒñN)@›Û Ïr|²Á·E£B(ã^x <¥Ô5C êHMñ±Í*Þ;dŒ&v?–Ú" ˜K‹iÏÃ:ãÉŒ­’@‘Ä(ÈcUS‹û`ÕÑE‘ÐЛ$:.Wn¯Ë;EµªO¡&˜L{·[¾þ:ޱ»¬ø5aè¥ßS*³Þ¯Zˆ+,Bï¯Ù=«å¸ý>‡–+ÿ8+ö‹Ô¢˜Ÿµã~{ r7?{:Åÿ_xRC÷Ø”_õÃã“çüGÄP¶¢ßn§´±*XÅ^ÞŽ¿»ü’Ê endstream endobj 379 0 obj << /Type /ObjStm /N 100 /First 865 /Length 1740 /Filter /FlateDecode >> stream xÚÍYmoÛF þî_qŸŠîCOw<ÞÛvX[d(°—¢/À¶®ÜDi…ºR;}ù÷{xN3ÇrcYÎÚqDI¼#ùGòN>*£¬3Ê\XE••µ¸&«(z\]yæ’QläÞ+.÷QùÀ¸² ÆL\6*à瓊`±.©D¯³J×Ì*c:ÙM„P&ˆ1/¯H†dQ&˜ «¬Y9*c„•²‡DEF´Ì §¢a§ˆ¼UJLò€A^Ü4èi…%@108Â~6Dañ*qé2ˈ̂…®bB02ÒŠ†ÐfÂð[°à‰£¬&ˆàe( +@À@¶I9/ú’à q˜ÉEb¼‹€‡ öÅD¦(°Ãü‚N‚µNô x¢ü01C»lU1YF°ÃÆ<ðn†›8D(ìÀ!›ñ”4a‡ÙŠ˜œ=Ë\ÊØàoe4+O2–zAšá=ï¢ÈÅ+ Ÿ„„ØÀ 6 ÅY˜%BfÄ@ôBdÄ z>#,¶CM(w#ò=Á‹PMÀ&g&d…(ö/g„@,H¨2à ,:@çàÓòóExÆ«8  8¢ÅŸ ˜±o£ 2Xe4Þ:#@! ¨Å%bà$ HEhZÖC @èĈ'ò&æ498˜TÕ 8 퉪~ÿãO•E„QíùlörrïÞ><MXWø»v¡TupÒ’ÿ0A¡ ÒñÒÅ*_ˆU¨}ñщ˜]Þ‰ÃÏ„öŸ'Uâõ%í$j—" Gõø¬;zZ/Ô U=~x¨ªgõÇ…ºTñÙ§Ó/¦¯ëIõêÖíbŽ/Ò'Õ“zÞŸÕó’tÊ£_êãfz¿û¨^ȃÅL/!fz†±H …m¨d¯s#H—`Œ¶ ô-àA¸”z&ø}Lø²Ç—m߸<Ö¸< Ø×x<;à×í \ ØUD¤”е+b48¾Nv£Ááà\åAÖ’®wŠKFZÍÆô­N;Y]ýض¦zQʾè"U_®Rô—÷K­©RÆMªûÝÙq}¶b^Š&G0Á:ÒÖ;©`:#{’"t²¢ÂÓóW‹2ÇÏMû3ˆžªêù“GË·ß,§óï«êôͧys4×m3_è×ÝûêèusçUÓ‚w§Ý¼Y4];¯æ‹i{ü÷tÖµµ>ýPÏê»·¦³Ù]ünMçGMs·ü§[ͼÁòâ;Á|¸Aâáä´ñ¥QÑ„ÂŹÜÿßí¹¢Ü—ÌCû¤m.Í fi,IÚ5Öˆ ð\ôS÷¬SˆþÛÎÏEGŸö“*4íÐ…¡³Ð¦´©(¨ì -+1ï—§WÑJ‚½${%HàqKRzé]—¹¬YzÅháJi•–€Owî®>|(mÚ“®Dëôô´:®Óf6¯ŸÜASiîXsÇøª„Æ–Ö¼#û‚ÞY-_*©ûgÏÜwUY3ds³­f¬óOZ:ÿ­|ÆëˆÖp§.sß^ Û›:vX7È–×ѱö{©X¥6öó£ Û]¿Æ¼Ó!Åñ‰ê_<ÆB@¦A AÁî<Ì( ƒºª›Œ|â2Dc‘!·Ýê5rAË¡Æ×í%)õ­;Y½R¸h¹Þ圤\É_SÈ5 P2Škð^˹•´(!mìæná·Å›úì/Ãæ×®5m=-7ÏÛf1ß»k lÑì£4 ;¢’ÇS௫†ÃnÌ3+"ÔuÊÊ[Ö‘"‚í©K•yÔ¾ïÞ6íë*”@Œ7–¦Ç†¡s½0tvìâs´}ñà!ÊÚ72-aŒQØpê³ÿ!VI¾aí'rm¾=O@VíDd—6mËÁé笖ux4ܶcà±±ÆC±.’\Úº†Î*l›Ëÿþ&ÌýˆýN8­¤{æ}Ó;즑½p‘cbΌ݋|Á&4ÒÆlö°>iÚ‹lv}v-nФ­ñøtŽv+gÒ„ÔwÍÜúÙÙþ®ï·yœF¯‡-Ü7¨KaǼ±ŠÁÍnÏ}?=øÑéÁHk<míån²·óýªàGWï¿ÁѾ|@\7! ÜŽ†^{ê—jI¦)WŸ÷Í_¹Bv•ÞfxÙžzgtôaÏä5ªC•ÃÖ ßqƒÕ)Jwu0þ[¨‚¶ ¢‘âÉ,{ u6ªòôüÝ\$OÛc¹> stream xÚ•XÝ“›F÷_Á[غՄùoåáÎI|¹‹îv·®RŽ«ŽE#‰2Ð*kû¿þØ[§x`˜éééé_w#ƒdQj-2cƒbû*¢Ùvðàßo_IO·ÂÅ åßî^}ÿs2Y”ÉànuÊên¼ïë²ï®ZëðMS_©4|¼R6tmWÂçBËÈ&¡Š¯>ÜýãÕOwãI±Rß(R^Ê”œÊ$¥6H¬Rkßz<ó\üÄŠT%À™…¿eÉ(·+׽͓»«|5ûzéï—×KÀ\á:Ï~"ÉÂó_H-ḋ¬ú²~Y”ÊÕë~ã^9×_ãЄe] Pw.„üÞ^P¼(‘äÃ`ËfUÖîOŠ5•Å„Ýþt´,¯døX.Ý’çûf11';Ópƒ‚—¥"&‘b‘¦^K÷]Y¯™¸‡œ?aÓ´ýîÜ]{Õ·^ælâšÆƒÐ{ðI&¯Ê®gNyUæÝ¨¢ÉS)’,6ûƒžPÞfÏE^ó`ÙŒ"2ÛUSU *å0Š_`X ƒÔ‡A÷zÖ22ÕÂFƒ>þ7<3Vq¸ÉÝkæu³Íñ*eñärÒH;±è¸í×½ßÖ—[²p`bae:qJÉ$ÄŽFáD*½·à³§óZ˜$ÖJ&üÙ¹‚M9a-Ÿ¿‚üêwûÝ·Ê¿ï›ê¹ (LJn7½€Ÿïvs¦^¤F$ÄéTåWV“©M"Ãâj!C47~,Ýï‘4'ð¥Ð%Zþb«×üÁ‡#ö8y»AИ;Ç@­"a“4ˆi¬_ÀÁzqB>ƒÏçL醷®è ŽQ.PbÌ£÷?òýÈuñ¾÷ã5~¯ñW¾Æ‡k6¸Ò^ŒSëíòµcç7Éù-¥J„NLk³H½pËzqB>sËs¦$…ðJaÔ\ŽN æºéý¸Ù¢J²1LäøJÁž€h¤ øð&ÅUÔe¿áQ`ÐòÝ‚ÒUäw'áq`?rØqZ¡¸c–Íx¶§Ap¡›HIÏLUýß9(Ñ"Ò~ý6€GÒL˜L˜Ø ôßùl×6Û]ïU¨ Í3*T&e<ÄÁ²ìvUŽ*|â FZñ®Å~‡3ÍŠß9¿8dpÄú¥%Ö/N˜:ÔÞµä¨83lÍû³cçÕ£´H’øBCŒOߢ!dÍš‡rgB%úe(_n»KDó¦ýÑAN&… H*ªèÚsp뛼- ñåøÿãœ7á6ÓX” HÆ÷È¢\=ጥ¨ÜA 䄇=Ï7û~·ïyùÿŒ*d&…´cý°X³]^Ìc±7‹‰w†]†ÐGfàÝlÕb0A tc‘0• ¢$; 6+DœU£á¹Ö‚Ëz µ+ÐHÓny²¸,w9xãä,l±$2©a|ÑC¾€ ¶ìŒ¸P(5)if‹5„Ë5àÖ1c <ë²áùX¥i=õªiyÖå¾R;“³ô»<[3º$øEçvy›÷XþáŠ]†°(l’Setn[ _'æn®°šŸ‚ÏL$ý™Jh™?Ý`À eËÙÄ7ÚØÊ,5IjgCêR¬ûº*?’ùϪÂ"ïü‚δn½¯ó¹À8ò…æg×6ƒeíy$¥j¬Kas,ÃYç—xö%PkW{_‹k²ËVúª}Œb_?SœZ%"õ2 U%ÄäD©Ï›j¿ùU~˜ã•r3Ö17<€àÊF€Ê,­UL…’€ÒGÛ@,Hãχæ(N4T/ ^÷åã•Vd§4öeŽnŸºÞm»#O#4=ȤÐÒ†o(­À’ê¡7oo\fCåÏ„T¾C¾£Üëðö—¯”7cº?zWs(â ¥ÆØ;®¿ûç-ÏüÅÑÖÁ¾|,«fÝæÛ/àÄM½„É´Ýáë†2'l7[»ê‰?ºý4ÆçŒz9  Q-©Ž1†ïˆsx|áÓoÉr 2`^h°Lò¢à>åa@†èdÈdäÆ F”yëO…¦¦ªxnß‚vZ|ç¼°r‡;æ-(>ÓV¨³±êpõ‹Æd!¶ª’ð;eJT ÒÑ0¹£žÿ©+‹ŽPÍ9‚jØúÿ+G¹1áa&¼eÄotB'Ö³“ ][~ýÀ &£Èwß[tGPZ%'JKJC–ψ6,3®ÖCé—¯k 8ÙA%8$OÆ»‚ʰ2Øî*ÐD‚|“ æ2LdÈ—“¼ÖÚ cšu×B¬¨-ÅѲ„Ðà´<Ùy˜#él`½&“Š,‹§&Z™v Z@]Ÿ“ŒŒFŸ’ÌóÓí=ªýš=ýQeHæ[ªÓMïN71ÁÒÛ|ßu%µà0Í¢óŠ×â,‚!"ÿÝQ+òXvåÒ}ùµ”ð™—™•@·ŒÊª•£Â ú¯„g!e9¤peø5•š£Nq>oËÎ ±j±zžrfS\úÇZSÒÉ:_¢ UqAh;FkƒÖõ¾5ÂUH`>Àó dÃdwaXdXÁ2–%5К}åÛ`ØŠ-]攽.‚|1qæôó²i _ýÌc•#£n_21ì@êò?:OŠJ\úAúÊSÐ|âÕý?_A6©Ž¥Hô`íluöXò¿žãEP$´•ø÷+D&ýy¶ƒ–fì1~˜c†r$ùÈ$,Õ–åIÒ ÎÁ}ÝõfŽOJAå'=Õ§KVÐͤNrŽ“Ö) N¨¾…“þó|:þÏ’ šÎ$°±0ŠþÕ¿ÿKX/:³Á(·´tÇ(¨‚ÛWÿâ> stream xÚ¥ÙnÜFòÝ_1Ø þÈf‚<$íx‘,°‘üÄÙ,=C¸’2ɱ#ïÏo]Ícı”, xú¨®®®»ŠR«þ©U¯Rc¢ÌúÕ¶zÓj»_ñà§WÏ”Àmp3üöúÙ/[©8ÊâL­®o¦¨®w«_Öoê²ï.6ƘõwM}¡Óõ‡ í×EÛ•0Ýûd­“‹_¯ÿþìÅõp“Óú‰$!äã4%ÞFÊX¦é›êîbCDÏ‘6•­9Rõ‘'ûòZÈ^[ð 8Û¾mª|_}¹åÅ›¦Ý⾎׈޵<;^¨5<ž'‡¢Þ÷·|âƒõxÇGbFQËML¬7¼°=¶-lÂj¿Ùæm{_Ö{d<}£L¤?hÛÔ»ã¶oZátWÜåmÞ;œZ¸ÜóVÎ?»²ëód_¼LÌ”]*U€Yļe˜9K]¤µ _.aI#ãìj£MäSÍp/ƒ”ßâÓ©‰R³J¬Ž¬ËP~¿ü¯v°oŒLæW ²ZùÈVWÏþÉBžß§S¥Pi›ñÿ^¢†)œM#ë ƒ}ñk½È$ÊÒðÒß®pÑxæD’f (1‰¨×2;\êVY+zý•ÒÌÍP©%T6²éjô$Lú!ï <-UOá½zŒùÄl=g>)Î Ô4NgÜþrI(m“È LY¥b©×dz ¯£±4¼*L¦Ñ].±)³@’ýS’ûn‰²,òàb&Py½[ºO«H+ýW4e~_›@]Šå¶›s[‚m›™m³£ˆîýQ Íº¹9Ý7u±Që€%Êý-±tѤ-ª•Q‰N}îþñgf‘gÏüzÑúTäÀËý!Îñ$‘ònvÛö!.€WiÆãb;±šûKàÊ Ø>Åà;6ñŠ­‚§·^³4ppõúj\4;]cäĽÛ| œ ´+«¢Æ º¿q)P) 6—òÝ®ì ?ðü]ÞÉÙ#D%95\šW!xdLÀQ ÕJ˜aWEÞ[Œ‹Ö¦1Z›LCUt±I½eãÅ­ï^]ñ »ïú¢’㻆ë¦çÁ®x+[¼]yY‡%‰¨ød›ºõ»£,þ¸¢º¥ÀˆôÜæí0èL¸¤3?¥–òŽ!vE[2£òÈ î•5/õE[uàÆHØW°‘žØÀJb\×ÓÁîXç: ‡º†wúÛ¼#¹r ËŽd ›ƒ_ZxÓ ,›$ñ0CÞ‡]Ç3Ž.p]NÖëTà5¬}_Ò|(»rWü÷‡&<ý“ ̇q)ˆßB y9yåòS±û›€6á:xèCí¹É%µ×Y"'YÛ¥Èät”ÄIˆ–oc£Î$4fB/ŒøÈ ã ¿“H·¼À^/Yÿ˜ÿÁÕÊáð\ˆ) ÏÀ×tâٮ٣%ë+ÐÛ×< | Tr®+«ò·¨Ž8²D¢O9©ÕsÙ±¿×©D-T¥=yÌ–·8ÔÀ` 5ZŠ«ðJ N:á@Œâ 8þŒDqûmìâïx?jzÇ M,­%Ý#û…½(:H±m¬•.Y€bQyUǨQVø;‰ð< ~âåˆÏw`¨6N˜ ¥À ª `»lílÝ´2*ž°yÐÄíÀlŒb<—•äª3H…Ô²zK"Ê̱³Œ+ÅLÊŠ»‡•Œ€8Q+ I‹Ëüi)cA݇RF¤×2'<ÈbG™8]ºlnP7ÙÇD–D‰ 03ÁYÈF‘ z&Ù¤Ò±jT;ž£Öàoðj”ÏÁLµ²¼B`QüøÛd.Xt[6G`ûPSû€ Û]ÎÒ.8ýäÅ›~6'”,&†L–§À9Ç] èMyD~cE î_׃OðK̶ =qÒ1œ‚C¿[(¨pu¸(x….Ü^‹ÉÉFŠñù öJ.ÑèLú: ¨ø»å#Ö¬¿=ÊfEšóCÄL¹ÈÑ 6pÂ%)åÒ!Ø $±‡.¦bì¾c©ãÊ{̤8 Á_Ê™FA<-b™¶]õ³Êê5(òö‰·-þP,â¬Þ5¬ëu±¤â©‹\:ø®ÙÔ|9×<$®QöÂQƒ±&3;Ô6ÒVfóÂåØqÈ—x×6û6¯ø’YNåB®“ "ƒ!ñH£ î©ývwUÇn®[ί «çÐÐìCA¾ü|H‚€©EÇ.N¢o­÷¼u»¤e}R¯Ïl˜º{¬IsÃkj±;16R¢Ð>ñ‘Š V¹êÌ;Tu±-oîùZ¨ ÈààÍ9P5Ïú1 3> á1FžíWË`·ÀÊC¨[qc[-”ÝÀd(»M”¹lÖöRñ ¶ÓÁ‘~½ÔòŠý -zé->21Vãã=’ êõþ!> Q@eO¡Jÿ_TI7arURɬ’rœTÐpðBU.¹ëPŽl!/Û‘‹§ò9C²©å…ž{àp úB²“)nÓÍ=e[Iu‘€Ó=J^Ò`²ÐóâM a^Ú8o¥à4^qr¿\íã(¸<8ã"´K k2æÍæìã,Bû1V»x 8;Hks\ÌÀàùÎM)¡ÿ®ç0V4dþò¶Žb7n3 !î+í’Ã$¥Â/ñb_‰ÔÞ4²2ØÎÉ}𘻢íï h›#d˜Ö8 ¯Bc:ö J0žH 8nÙAÀ± t¬¸B¯!yXÍóKBóÑÆéZP’”qNÉ ü†Ï!˜zrç ±‡ò%È;SCß~®È‰O4ø€î}Ûÿüɉ´cpˆî9c—k’eÜ ünÅ©ÈY7au¸†VTè;a¤¤>Õ¦¤¬û¦,_h]䕟²ÅB º¾-¥M6µ$!è,)PŽI[CM)í·n€º³Ñ…apÊ"çO E¡i¡’õR¸½"ê±™ÀvQãG< ÆÉ˜À’¯2Ôn€jl‚ÁÚÇŒk¸‡“‡`£”רõOÅåÜì):~’~ûCƒ!ê4õöÇJ4¨ã%ê9I'bÉ$b&{ŠÔ0T"x+º8XÔg"g†ï_{,ô~Jï×EµK#=FÃç—Ü[¶e,ú‹nÙצ OÇ7PYTçÑ©?îpût_a<“´íT˜¼RŠÎ : ÷$•T«xL;T¿^Úз~ƲÒR¡ ù¡kx´/Cš¥½=ç?9¥ ö\>ßž3òI¯§ÿ9v=¤êRá+8ĺ)`°+nòãAÀ©à‚ߊƒÿN`Ø3yú*}ÇMŠûÁ¾=e%Î9b|¿zMÁyá‰MaŒÕk²`«B]/_V„#9ú3Ê3òÛüC±ø $=iÈUÁUwẆ׊êî6ïÊOr¹P¡†° kÓP#’l}ÕTº¨x˜'<9H©…Õ3·©ð{¬¹!ö>”jÈä n·ôÁ‘v;ÞÛݶ-%ù”=™‰¯¸3öªüP¢Šìù«.–þ-DÂ}M?^:…µ/êÿ‚¡“Kù‡ÂFÞÖàª/Ïuw—ÒÄÙ—ÙÏV’é C¡GÎZ;iÒÂ1"¬´pÒim„ß–øÛE½'%_`_2é§ÐÆ9¯î0œê§¥µvLk‡4 =l¸ ÒîÐùGÚ¸£¹Þá@amH³ô,EÿF`àÍ›¼¾¾ú-X¦3UºúùêúÅ‹ÌÊ–uÓûSÝL ±y1—ª"Ø/þÈ«»C©c-5ýÓ‰ÚúP²;Þ›”ÏÞOõ×úëgßöüXÁ¿‹,8Ã*ü-ý•]ä”ÙÒmq6½ €ä6óß% ÀH8¬n…hXçÏÆý¢¿¥T6÷ç}Bª#A’""\u&…P7ËF‘#W$Œ“3~$^>œ`7LÞK_¬äËÂÿ4VjX endstream endobj 488 0 obj << /Length 2972 /Filter /FlateDecode >> stream xÚÍZmã¶þ~¿b¿ œU‘Ôk‹~È]/— ’èî%(š"•m­-œ%m$ù6›þùÎ)Ê+ç6) ¬È!9’3ó ‡VWü©«"ºÊŒ ‹8¿Ú6/"¢öû+.üýÝ %ýÖÐqíõ|}ûâŸ'É•ŠÂ"*ÔÕíÏêvwõÏà}[ÃjmŒ ÞtíJgÁǕ΃ªj¨®Šò4ÐÙê_·_¾x{ëfJ´~¦HØóÓ2¥y*³Lõx€©uÀWNcRLlBc2˜‚F¬×'ZwLÎ:&™ëØÝ°®pµŽãÖ~¬?Ðjq¡ÌVñ´e¿?5U‹M£ÒM]¤Q™ M¢¥8¯p=Mÿq•¤AyIAŠÌNQ fÛît& ÁæÕlcEU&mW¢ÐÑ× WY&,æ—›—“Ž%é:x“ñ~ ™fÇEv¨$v·Ñâ@zy´3>¶âæã«4,2““§Ô°ñ°ÿI¨”žâ^*ò»AÉù¤??e‡Qîü­^:Õ4Ô9¸oožm‘îÂêOùÆ¡Ésœ>)x”ùͤËA‡§yöOÙ$a ˆáõQ¿“,b&*ñ1‘ñ…ù.Š¢§Ó3íPN-‚wg³ÙØu¯cpÚÅpÅSg$©IlO}/ÁYIjÃjEU-ôç…±%d ¶Õ3# +[aT‚£ïöÝiàÑ›á(Ÿ_É­‡úž{ À÷æ:\²Ê¿ :æÀ‚|D½E41ydÝ6±»…‚ |1wšÜÎŽ{ÔÒPrµ)ÛÖN0ÔM},{n'_LË‘Kw+1(„—døØ{Kå[X̉ÁÂH×T ¾mÙTïašžœÎ$36¸€G./Ç+qí;<§õ’ ¦¤ÆiÙKÂ$ðAá>”â"w ùÇÐsIE“0W™Ä y$×&Ì¢ÄçýÍ3›€êÝÚm¼— û™‰Rà Ô4ÑúbH§Ïä¯å`ÀAw6ÆMÀ³ùáöÕ¶Û·õO•„[ßEIdw0yQ¨Ü„iêÛ7ψ3¯ËÏè´µ™DQÔ …È¡0g(Œ„Ñv¯Î‰ÖÄ€‹_¢!)q.ØHÁ4PæÎÅ$ÉĿܔÍz!Pc©}ƒ7ðÀ8†°¿ÇÀmÉ 5Ò%Á¦Ï&'öRšŽ#:çb´OHFÁ\_º$¨~8¡³¡):‘¬sŸÁ„YVüöø\„q¬fø &@ C] –ÀÚ S< õÿ$* VZüŸ€õôü½±zD:ë\°Òw‰^=Ó¨ÚzÎXêQ“mɬ— £2v*÷%a2ššl¿c²¤@§Šä©TÏ€½/ÜV,4Ã%aÍYìü414g-“æ˜ Mµ4”\u˜ ¤ “‘EÇDÁd ðå ¯)× —%‹Î™ÊnfSØ€ÅAhÒ(¸‹ÇP¼÷ÁêŒ/Á¥Öq˜æÓÊÍs †ð·˜ ¸¸Å‘c} ˆ hrû@Òò^E8OõÄù9P„Švk·Ö£dViÎÜneuˆ´GaHÐð&…ÓNÔ˜ºîËÓ0¼â²ã · ø&]²ÃõiÊH׎ÇO¤:L–ïpšš.ÙY:©J* Š@ë_¡ø—Ò‘¢*}hùn/Ìl‡ÑÎuóØ4Z­z3€fzÝ/¦7PSp,©ö¼×i#¨A 9Ãd"Èó@°‹5CR!•¤Â]Þ±`Ã,{±L\\ˆe ˆã) ‰¡Ü›çÅ YÂ’ã|x~ö Ž Ñ'€\Ö¼«)åÖËb7¸VKóPGóë“„œA4Ö=OÁ©æérÄ©GêK¾ Jµ|tò>>6cÔ,o£‚'­_ÍGùcü¹¯0™…Â.\9¼ŒJQLcŦW IWa3&P`±Ôµ•ô¥”¡tió»S°IãHkþ¸Â[©»™(Bf­ƒ¨äQ2žÛ1 ê»°çت³çXµÉƒ/*ÎÅÖC½«þóUgcÔŸ¸ÙÈPö’™Stà{,ÉÆ>p ‚N>³iTóàÛU2«ËâQ Ë. £6åÀç*y®W—­| À·Z•?OßoÙøÌ#É *œ#MzÉà€kšÌØ’ûXĘéJø y>óöøË˜Vw5jö¥õ á (’ ù£ È.|ö›Ÿg¯ÏØs\’PªYž2yÖ&t4Q>ó;òôdÐ×ò.fs¹`óqp=r37ÂWn.]?–îÁѯãö¾j*›«! ³ÜKé8ÍXÒ»(5z²5Jÿ#…E9Ca}9ÝÑ”6T2˜ödI?pUF+ÏnN#šŠ³ÜÐØBÄ+çÆÅ|eSn-«/¾z/ÜA+(Ú]—E±y¯:Þ’†¼Ö‰ò2¼d´°ƒ×í]£¶{‰Kiðý Ôá·Èêõ4ªlºÓt¨ö`Ô<Êš¼³èÊžm<ùa¼ˆ,óèK”ílƒ™Hѹ‹üdÝù::<÷ÁÁȃ˜,ëã ÖdMƒbù×Õˆ´l­ì¥á/“h¸µ¿îq"•Ð.¾¸2ùjj‡Œ©5,¡œúÊ’¥ 8I$:x,ÒYÒkXq‚ôž‡p0mRoG7”ôb½¤–´Aò´ðù*‡óëñ†¯Vôúi#K¥=åâ:i޲ª¥ÌB²GYÝTnùXäÛÚJ^湺íš{¸nŽKoT¢x˜&½»¹üú$yÔúŽÓ¤ÓÛ\®¦ÝÅ–é!‡ëœ³UNñò@’³Oõ5—|Zl3,Ltö,;M½“¼ïAÈt² çp 3ä¶KÏòt{ÙËK:E‚Šnœ½¼íóc>E/¼+W/å.kÛU‚yæ?ÕpOµvWµD_ø, Í&‹«ŸöŠMÈýÂ@åÓó#ì¬íé–ªÂ÷üZÙàì4×:*BUœ¥E/þV­#·êátï  £t•ómÐÁg>ùˆ$Úp”6òc¬]%¶laïp߈žËŽŒ ›l¤–E*øöÀò ?µ­ëº‹¥›ëW‹¡A…Ê]6.®nG†®à ÷ŠJRª ¹q!) «{@`SL¦dEÌ17uâd§KŽ…¤Iç1Lö.“žÍ`/¶‹É† –r­FÃÅÏöšÖ(©ò”;¿ÆÏ~‰°|ƒ7îÐOàÓxƒW6)m$—„Ãe›ÁÝ€ù£§‚†3ç@y4ܺjÚß ývh( endstream endobj 492 0 obj << /Length 2081 /Filter /FlateDecode >> stream xÚÅYKsÛ6¾çWèVªµh‚_í)NǤi”v2}Â"dq"‘IÅÕ¿ï>¾B§Î¡íø Åb±Ø]|Ø]ÐbÀŸXdÁ"‘ÒÏTºØžÄ­oLüxõDX¹®’ë'çÏ£h!? 2±Xo‡ªÖùâïMY´Ír%¥ôžUå2L¼Ë0õLÝ0\I¤±¦ËßÖß=¹\w;EaøH“Pòc›â¡MB¤~ºˆSå ©Ø¬_ƒ(¸ÒǦ)t ´X‚žÈ{[™Øéæk&›V·OѼEúY–-VBú"b5Ý‚{]¶v¾añ•H|‘†V^ð‚/YFúRF±f% c±sà “,T±ùJ¬TE~*’‘÷Å™6òD<ìJó¾nQ{~* i&æVoªr[Õ}Sì‹öÄ«M]W5-™1zìZ·Û›Ãïr0¼eÚÆ£ù=œ‹–­x5®âu•(?&Ûb_I Úk@fe^»3LèøM½ ¡ûAlùæ/}¸Û›3«yŒº öƒqJ:tf,ÂW±rb¼$©»$xuÂ8ðp{ÚTx-ÎÜÓ´™ b›c]Zßò oJ$㘽)s–G<°¼_§¯:Þî,ˆeâ«4œ6TiŠ Î˜ÚÖÕ©nòòÕRxo˜nNMkgx ²anQnªÃn‹›½]“Sbjhü%d›Ô[ï +L>Wõ;;ä1¾qÚæÀánäšTy‡Š–åpd+™%l,NP(dy¸2r@¼P¥ÉyXX­© KV[Ër:(Äg<ÙTv]kÕñÆÆj/«–åvº? §¹iGN±OÖ¶¢å ¹.—¯Þ|ƒ”B$5æýÑâaZ¦Ò;c¡…òȃ.Ù^3D °AÒÅ9ÿÚÔ®pWæ -óÉr¡ 3+{¿2¶ÿ‡5±·Ávz¿7å-±lTqjh ¿45H@ß E§¿íN·¼~Œ ž³ªŸ]½f£‘i#ÎnÍ=ÝìÚêÑn=]"ŒœÞû£.Wöf8ÇúsiÁo:a™8‹dLGœôG syQ’¦¿«ÌtÐçe„8࿾æß!åă l¤C2>˜‰Æ±BÍ? \@Ñðç.ÏSÌ2±ˆ±ùGŒ©'žîmK¶;12q؆)kd2…œµ$¶zÓV5d(޼çKØŽ +º¤ FÈ^% ðeHxŽ2n,‡W…PEêRîål]pB£x ¸Íb¢DHitN{ìGIâ”_Ì)•Ú–`¤óšžFœ¦9• .Üq0ò º<«dèÝÛ‰pì¤ 6ò9ØÖ¼ÝÈàУÌO§õ^×õ0ƒ Q´–œ ŽN)i8ÎŒfl"{?Êsì³ð6-Ë΢øNWUîOLÝqe†P!¡-ÿöiï:›;æ´µ¦üóΪÜÎdÚ{¶2AGÁFM,\óî)›6ñå-óÁÝæX›!œÞ[Ì¿d Èv9äÆgb™XJ~:ÇfÅ)ß—RŒï ,ÑV´(ób5ö¹Á÷»‚“,X—)ìïtçÚ‰0ã„‹S¶IŽZ øV!eýÁÂŒàZÓ•dº°ËøÛe½g†êÔÍl§$¡ dü˜N)U‘sºá>,#0¤.ªcð•Ч¦©‡c”×I ?º8QŽ´Ü?g;»0ð…Èœ!//¿¿Z¿˜5Xù²oí¾8û¤N?I¥]_¿šÍJaˆäT!õsj#‚Άg/žþxuù[mQ©X±Åö¨ÒÀ¾wp%îêê®.tky“Ûž ÚʲâøñôúÚGµØã!ØR@äúh$õmiZÀ-Íë"ŽûƒÂ%Úrg]…ðû<{ñÇóëË—ßÎ9¯VÖˆEw˜×úAÜ×å?hÕ]¹Dý]lqš–íqo]+rëœ}}´¶'—D|2ŒÍEOÍçxä3J€]NžáËÉ£ÂÊCà#%1u)N]¨S¨.§{¹~˜€/$øÇ™Æ«¼Ûm&kUuŽ}X˜„¤#L„Íó¦Æg&Ï`6Ä™nx‚[0¥¼¿M…u”A{×0ó¾Øï™¢œŒ³Ô Â[ƒGy}8ÊflÙ0žWþƒOãÂæÏÄÕE¸~†ÌfGÌ{;‡£Ì¡_<¼i€Ýu³0s$¯F¶Õ–ËvÀd´zïÙØNzפصVàÄj"Ñio*]gàºx"úÖWN«ý¨É…]w‚²Xû˜Âü1w5ñcÏè9ÿy{¨ì~ÎW’ÁíÿäGŸ¿xø¡ŠgPr>ý.D3ß{ÄâÏÅ#ýÌâagLÿ›/ôbäœtë* ?ñaÇ2ÿ®;{óíc1æÇ‘R"MAÉ'\’IœÈøþ&¶æ7<ïÌ_ô¬ˆúÄ…ìAâÂ!ç^”jÝBû¤†l•3ǵÁHwe&Æ=±“ï1mQ¹­ ï„ܳҖ۹ôý…ìû^|3A>|zN¯§ ›~HpM±„~7Çìt ·D÷bÏÈjP|ûÄ`úÏØóÛÅ]Ë4¼ ló:Q ñäÖ¼¶ ðñãûuÐî1#c¬rTHâaÕÂÑÄ~’Ä/|HÑK™Wà »~²±˜y“ 0g^VÄB™mƃ5>ß»ÀÈàs‰†ƒwªÖ¥[[Ìמ¼r¥¥hæ>K5ÝW/mçö,Ûz¾g¦ïþ·ð7úºYf endstream endobj 496 0 obj << /Length 2911 /Filter /FlateDecode >> stream xÚ­Ù’Û¸ñÝ_1µ/¦R#š8xmU²ÎúH9›TvòЇ#a$–)RKR¶åü|ú 5öCj4îF£/º‰àOÝäÑMjL˜Ûìfsx´ÝÝðào¯Ÿ)Á[âz‚ùÓݳ¯âøFEaåêæîaJên{óÏàïuÙw«µ1&xÙÔ+ŸV: \Û•0]eI óÕ¿îþôìç»á¤Xëïd 1ó”LyR* ³›$³¡2–ÙzÅÑëâÔueQÃX­€Nü£9ñ`_|r?ò°V{·Eoæy~³V&T1¶|.ê^¶üáÅÐ×3|Å6Mýд‡â¾¬ÊþÌ\Û6-m±q˜©t¾C˜ë~kû;¿ÐdeÃgF3îtž§¹¶Éï*¹kæ{‰‹ÿƒÆÔu•½ùðêíÏïþÈÇ«4T™ž ò;FKó0NS›ê™¬BW¤ˆÂHé8ILªëÅ+ ¥lhl¢ÑÖ© ÎD¡MÄJ³PÃæD¿¬Ö*(úS»‚Oö™ÆbÂDjnëx~*-DÞ•É´WkkÓ ßËàåë_ypB:·0N“à=XbçÕ“U­l-jùV½k½ü4= ¹8è×·üíΠþƒPíJ´åÙÅ*$# «ó’"{<æÜ•›²Cžâ( Êš¿Ûò}¤Œk]8=d]µEáb«‚Ïe¿›ùº}QVMëÁ<'™¾y Ïš¡ÖŸ¶ Êy•™ \xw{‡:°I<l“D” Ћ«Èýj ~Š·)N~7ë— :¸¢;µî l^RÞ:d¹&á`zêÊzÇÃQÃ`d 7N¢ë‹ª‰ \0_ly‚Âã·hï˾-Ú3O?­b8¾:9ÙÓ6Hb/È%Appp`VBP¾ƒ£·!ªÖoÑAÇzv)ÞbÞ·À(A{ ðõ¤=¡…è,|¿:ÍæJH:ª!%5 ˆ”‹Ø‡†Giðpª·…¿ƒ¢’#>ïK/<¢ï !°ÃG·[ó´-;!ˆ¶G'ð”uÙ–®'®,‹.ÁàÍlšÃ^ç}…Š56sÕ Eñß6㊠²¡‚WÊ­e—Ö Ç[°ÕÓñˆ‚ÀÍ /e˜·_œ°"¬Ø%憌ñ)´î{ª$çÐK‰†¿û—½“AH-+÷Ä‹ëÉ`h4Îa€êÄ߯™&÷¾CìËm¿-4 +Úgb+ (ê-6MwhªfG//,“e‡Å¿VEM²}ä¹÷µˆÔ<ôtÛpîèqvÏ7KºM)æÍ>×?ã¼i?Ò³%:¶ßµ¬¸Rl…´‘po²L Þmß:™}s€;¡±\[Y/„$=ÛL¶é7Gn³[\Cµãwþ®ÂVà j»dÙÌ5˜+:Wwt2Øñ¡`À¥ÉE-X³õ¨ ÷F%àKkt®r|J¢ý{kNÄ” ”FBúÁ{RÄÂýšg)Ÿ6)˜ä">ÖëÓµ nM1Ë#6Ç^òÒ„õ'GбØ<ƒH×…¿ž<=ga¤çÙË™®æÄ&á¥Ç1Ç”HI’‰á‚ÿMlÎÎÃ˦¬ä‡ &Áÿä™ã‰lÀ™]Š£,DåèêpS[ ÐEU~¥P… Ød×TÔÏ…ý Ç„YyË¥)Æ °(¡wê§âcZQJ@[¶ÙE[‹ï€bœ ~qŸû†9€ÙÂ=#xÊØíò›ÅÚ!Cx}ÅO§ÙT@¸”sÙ@q„1ç Ž5\Øå§¢èõÅiã¶½L4³ÄðÒÉ‹p«Ó™ É–5ÅñìɃK\–Cea:ÚÐï™ Â¡–w`øOè:|?02ë<ßÂR茢ôIu*M½Ç 6бÚH‚œ±t ]ï ž’f½dµAbhÍEˆC§iÁUgËjc¿å3• “hx0’Ǿ3aégjQm`é£ñÒà&yí³;„_˜ì-Gð~ã©—ã–²yð1ì› &Ž-5X‚#*>™ŠÂÌÄ *ô£R‰žhÇó‹:ÅfÓ¦)·C1§8«òáÌP © š†dºÃœW67÷}QÖ³¾j6±¯Ç•òP‘ä7lî !€ÔT0âh1kU`li6ØãŸÜÇÅÀ†fLž3I.œ`Àw6=w0OœL_2±)­‘Ø\c 3Ì1÷c¶Ö­Û.±§¡N‡÷òtš«IË.8Be.~L˜4&•4&Õ•Ôöx,¦˜W»vw^ àE ‰œ¤÷HŸ"ƒÒWJªœT¶tÀ‡+2çðÞL|qˆ« îÿÁ9C½ WÔ´^ÂÜ£—Žl™:1a™}U|ÅÆˆšÆsO sQ%kN-{M€PQß¡(ãé¤å=¶œ“MÌ% æMš4û™ër®·õ2KÞä ¤0EU-¼£Çt*ÇZIî·%¬`‰Y¹îÍSÌõ¨ÂÂ(‹“!±Á +GÄ9Ê{à991í[2˜0úFN|£Îj3é_¨}ˆRÓŸ~¦$fOO]I,)½;¦ êÐÜÜÁ/_ E`¥%9 Å‹V¢>ÌÔ‡÷Rpz£%­¡­C Ó’BàÖI¹ªÇ–é|i!ï”(”QsêX¹› 0W{ÿˆ4ïQò¶ÉO Pì¥Ö;8X‹=œ ’*VÙDãäî/èRþ¨?ÄO ÈÄÿ®Q´;êZ$>½L¼öað²9U $àÝËžy¢™LÍDûDo\éÃÜËŽ—XR)º–a‚,ûÒu 7òSòŸ ßó …IÃEJgrE¾˜öê é;êí ßÙi¼a#\L…Ç _Aæó±?s­!«³PÀÓ ÙT§²Èv'mš¡èç{µ-¤"&c»l//úÛm¡Ðÿ?ÂÿÍ{ Ò endstream endobj 500 0 obj << /Length 1910 /Filter /FlateDecode >> stream xÚµXÝ“Û4ï_‘Np˜FgK²Ãm§LÂ¥àŠÏVQôzÿ=»Úuâä|ÓÊäÁÒJZíÇo?”`æÃ/˜%þ,VJ$z9ËÊG¾£6› ~yñ(à} ظíüvõèìyÎ_$~ÌVë1«U>ûÕ{SÙ®/”RÞE]Íeì}˜Ë¥gšÖÂt¡yÊŸÿ¾úþѳÕþ¦PÊŠ„;ïÈ´”³@ ¥#É2EK-¥I¦¥PóEIïõ|xM]î:$ÖÞëÆüæú#Jsªh$"¬×Ë5°•—âGz=¨I„ö¶íLIc;¼–É»ùõÎ,Þ`r¢ÞØnK º­á[£ñ­A‰$ŒávwëbÑ;{Nȧ#ɰ±Þu`ß§óEäÇŽ7 a “uÃå$é,`•–†D±Žÿl!µ~ÞJ!ñÝ5†©räƒ~íjþâ5Jiï)M–K!9È÷¶îéÐ6ý`Î'õI„õ°ÿ Ú½œ·¤ «”>)-ÈÔ<¥U#6âé” @œXF¨V,¤Šˆÿo~è¿Hû¶µiã,!C’$¥¶Ý…3O$E’$lœ`¤nºI«îœ¬·DZ¿3k níy¦]V÷E]^ák¦ÿÕt(Y~[™ƒTYy´)8ì}—•Wj4ÝÐøŒISf^ÄZDA|l·ó¥òeiEƒ¶ßûÛ–ü®£W8lÜìãû–¶Ø*+úÜV›#W¶š»ǰ l©Çìð)Áïî¦hÒ>€¹¦oÚlúÒT(QG[ñ }ZÛÕ }Þ1槺J "Q̹ažv|5.Œ€ƒàYm™ËP;Ãáàš"†©u•;ß§Eqë âƒèØÌΞ1ÙSÚ³í3TmË1²®¡=,;o2&%„‚³r=þ6S¦–‡'¡(è®uxg%"@ÓÀ²Å=¼µ/î°µ]Óg]ûÉ`–Q$dr¼Ê!þÍ/W—ï.ß^®žý@” Çøh6åƒîî,ݯË$W[Ȧ ¥òJ»Ù2e¤&bÄNÒ ¸rר´cš]Ó¹[<„±ˆ“ªnJ‡7ë[Cƒ{­ðd_7‡XÇ»Êiv»ÐÅÁ!tq–[°{šu° Õ¯ûŽ…2¥®šwÇ5`õQJætq³5ŒÅ½JTM£z_¥F¨Î±n*Óìƒ×.^\òWÊ9‹?¸ €êAu[EÂØ! V~彪7 #(ûi‘õEŠAÙÞSúU ðeŸNg/)B•*uQo¦˜) œ¢ã: bhд(jTùÁL0q†o›"uo.=¤a@Ò苎×kübéæVìp}(}…“xÙv8ÇÛ… nÝTØB-#A«]úgÑ5ø¶2û¬œf)íà.à\ò3|À®ÛžÕ Ÿ¨™64s¬›÷…bØôÜ•,^3ÓrWÈ: È@HUÃÞæpÇ5ï†îÈ&zS¤ƒ±N:Sh&Uмùé^y´sºW68ë]ìéf½ôBÑà× HE…ÍRHyãšM=ûèJ:÷wÔ6޽]º1´èSÙ•†¸ˆõvB‹S¦NÑ„¢¦Út[j ÀOn5¢Ô„Ë6z íŒu˜•Aüãsu§!Kw„?L ID‡onZ»©(ГÐA¨;»cRÄ™ ä(â`e”°qºÏy{ sk AÇ.êð~Þ²¬!(qLqŠ×75&!ïOp7Q½„’îeAû](LäaKR—ª™’aáa½Õªð*û0 çk`Zsýü†{Ëõ@phëÑ'8Ë¡bMÉÇœó×G}êÀ¬ÙÖÌ•>¯èóó•<˯Â#~']õ¨ Ç®xy¶³WòÐ#­¸.ÏÖÝ•BêÚõÎ8;kqîöúÁ™­®ÂÃ)öeµÃê†ÃýëT¯“öž,ÒZ·U‡béÚèÑþ/i <£BM&tãÖš )“أ僛ôÊUìz¨6“?=z‰)¤Ò²C¥VW‹ èE¾o¸\-OíC±ó„ÍöªÞìŸ0 ½,aò¼±4ø)c›ú’+áyž«f²ð` åËÿ šŸ™ìáçÐ&~VDaü ¹ªÏùÐ$€Ãàß1<ôC;[2¾,¿ÍoÛuCÛG=¢¾ƒÎá-uÚ&î÷—Îõð7„É]Û‡ÿ÷$Z‡=ËÀ8®SÆë% åËê²Ä.ƒ{–VéÅË[Sì˜T¤]ßÒ¤ø•&¥ª‚›‰gxÒj!ÅstÐ…)¤ùe” ]$<~p˜3ŒÖ>¿÷LK3Ó5>®m†^ÙH7MS7¼‡ßõ6h!SÑ Éƒá9 Ãû•Ö¦sI$–2þÿݸ»¨Úßs‡RP§WìÿHùÔΔÐä‰ä$ ÓK_’zA÷„‘ʇ—”@yæ:‹ÿÒ™“Œ^ܸV¤îÅýžÏ®‰:å¤Ó:>ÆLÙ ;$µý@©ùÚà '3íйý $q endstream endobj 505 0 obj << /Length 2385 /Filter /FlateDecode >> stream xÚÅYÝ㸠ß¿bÞÎiÏ>ëÖ}ûÖE·¸¢èCoE±·½z%1Ö9ÛÙÙé__R¤;£ÙI ´Åc}PI‘?RЏKáOÜ•éQ*)uq·mߤnt8ÜQã/x#˜.ÂxAù»û7߽ϲ;‘&eZŠ»ûý’ÕýîîCôSWOã&VJEïún#Môy#‹Èc ÝX‰´È#%6ïÿøæ÷÷óN™”7Š„”¯Ë”:J“Lý°‰ea¢ªí»6ó¨žl;ÒhÝÑPEÝ3(@M=NÉ&Ö²ŒÞo ÅlòÈ~©ÚSc¿…^9/Û¢²ÅZY€‰ì„–xt“–÷ûç&‘íꈦ# Øë›0¾£¶mìçM[MÈ,–ˆ…JDFúñ2´ù¶?7;ljÔË Ô7$®cåKcÉ")€[–ä†Ùý­?oÀÌYt¬>Ûï©Y¦ôÝÙ5búüœfiv5õ[úHIß ¼/é3Ú-,vŽp'Ó4Ñ™\)õw7¯§ÍýÐ}®šzÇŒÎ-5ð|œ õ~oÛm-ïéÛõ] ǴzhxòìüuiSñ_±B5l_0Ì,m±>ÚYŠÇª›XŠ]Kë,)„YK]è°ʼ(컃¬b2È/_µÜRfç™ÌDþ¢€€ÍUZ(bùѤI*D!òTê›å$—_áC¼ðy†ˆû#PÓ(|~N…öQå×G–¢X7ÑTÕÝmõ~èÛÿ› Ý÷°µÈŒcü–˜¼]öÿضøå5i_”ï?÷™g¾`€‡cí 2W€¡õ„]5Ô·S§á‰»Ãà’B.Ýù²ì4Õ.ÉÀôt¬&šm ŒÏ“iêX]²ìêÖvœ7 ‹ …+'ÆLc0%ìxŒù*žuÀ ­›^iá³uΣE‡Öi´G-°1 1 Jã.Ã8ÿ"²Sd™ªë'&;h¢b~è#øŽ¼gžN`ϳK¬yýõh™ä’@AÀŒè–ö!µ*ŠDJÖ®˜¬i 2C5~ LS$*UÀʱ˜‘ÿÚ%”L¤™Éì—žKÒ¶s›Ð˜Óñ2÷ BŠ…üKÉŸA-ð Žh¨q„—ƒâ& .ÀM®rOö 3ÎW^ä\&E!ý ¹_aq!b¾Suy‡+•Ç¡ž&_ÔL=½fÎHæñÔUPäø¼¦Þ® ›ŠD_ìÇ¿žk¨§k•H1\š¸ ƒ-XèCMþÕñ¡¨Ð¢\®ªˆrí cˆ¹£›åÿøŽ]gÊ=€{ì’YÈ(f©mX]O1õ/²º’ïc¸:†ô 3¹.a(šbÒåêDR 5/©³Fi°¿žCU€Ÿ‰IeX£µ+˜¥F„{ fß"!ZªÒ—0|úÃPµÔy¬›†ZhÔ¨©°_ÆØ¼°=9t5 m¦„ë¹Ày5<á¥*¡ØÌVÀ¼ BC¤•P¢Þ"Ó#v³À›ÁHt¸~»¼²Òa¢­½~;Q©N •Í ÿ)ýÊû‰§Žä7”k¦N™wÇê ‘p’>~¸Â%W_âÌO£ýˆéJ›èTxðÙË6 ²¸QzOýŠô×LôlAôd”äÁ·¼ø_¬ Þh™û^óks©._öë"+oók©‹µ_—Š LçÁ7*ú¦ZCÌBpóÓÀ9»Ò×?ŠK j»Aéï 82ÖüüTªà+޳5Àš%î­Öf謨&Nép`¨ï Ë, w¿LÜ8ä¤Kw”Ñï@ß¹æØömë hm zƒÆ:‡ëÄ •Tŵµñ®O»>­j˜±XõàÕ“Ÿûb%D’™õ» Ýõâ6ÈO—0ÆWE=T ÿ2‹£#›`[ãFvÇWÎÎ3´Ô˜í€Æ¡Òµ9_;k™À•þ¹+¦ýõÜO×€¥“ÝN¡klàœ)w¢ØaÖ™,óE@Íi°SÅeZFîå™aÍaèÏ'šYòj&™°C;Ìd8œ[K `›e©Žþ ’òl3ú…äùÄ:äW:}í¢áfcžžXù|Å誇Ƨ.à¼Ï@{g÷•‹M$®ùâòDÏUÔ¹œõ>G2-±Þ»5u3“zYç‹Ä%nðÒþV̵ å¬þ)@öúÂð[?ϯ3ÖœŠ*Âïf¹`ðOαÅù I(?á ¾–Tšî׿6q=ñ×e¾bÉɉðŸ£Jµ®½ø™@_N;gü’TÓ¯a!V0‘·€•¹<&l«nµu¨„©ºƒ l7K‰íÏ› ßëþ<²<\-»Îœ¾xŽ¿“W==ý˜o¡¹¼ú€½KHî `©§W.àRvÄ“…ÊcFôø´;í ½z¡2š ¨KoX¥5ˆ9P{<öÃDÓX›Ñ >V<ïs"_`T%»ž«…8t«¢þb¼ï›¦Ÿ‘‹Þïæ TaD¢×™¢B$@¡K°ËLje›èm‡•x]wϘ0Bâjô.¼·‹‹vð=I'FÌø\¹€6lW´'Aô°[Kw¤$¢ÔñèàAÉ3ó+GTÎU*úΗë®Èåu‰GÇ)ÔÂ[„æ F·ÃŒo©ópžhz°€ñž¤±ãH-÷«ßÓ ìþdŠF!±ßeé“B­Ù´=µ8U96—m¥þüdé endstream endobj 508 0 obj << /Length 3304 /Filter /FlateDecode >> stream xÚZëܶÿî¿bQ ˆ°‰¤(©ùÔ¤I`´¾¢(’•µÚ]ÂZi­‡}׿¾ó¢¤ÝÓ||ŒÈá<~3Cn²‹á_²+â]¦uT˜|WßÄ4ÚwÜøç_Þ$Ba¸¢üáþÍw?§é.‰£".’Ýýa½Ôý~÷kð¯ÖÃ]¨µ~ìÚ;•ŸïTÔýà ê$Îm ÕÝï÷óÓý¼SªÔ+YBʯóds%Ú0Oe_#GEpî¸üÜ…Iðp——¦l˱뙢l÷BZ"Û2úá.„ƒÜ,­¶>w­«¢»ÐØ8ø·O<Ñtí1°O3 ½¸1U’~p`å ƒ·›Ö+àD>òÙQ2o2‰@`kë¾ïš†c^Ÿùð˜‰úMî£ ÍQÚžE\ ¬rªtà·{©vÐ „L-Šè¾‰uøUoI-ôŸ\Ù‡çC²O( Tn`Ë—£DUÛn]5ð@ÉG B¾š†‹«\7m²vÅPQež‹ãäŬÓ|Öiîu LÛ$Þq¥–ç[ë•Õ¬YZîfý<¨¦¾_"fŽW0t„ Ò-žÙƒ,‚f«ÞšqŒª©±Á¤&&ƒ$ojÐN-Ú8h›ò6–ìÀ$ýÔnÆÊqНߨȚîEÝ–‚?ìÛ]`_ÉÝ !Í™»‡"«X‹¼Q4P°E¬ÕSWtbeÀ2æ$z–™Ò\¯KUÌê¾ïúÛK†“Û ‰7¯™S+ÈUÈ2aðåGÒ…Î,]hc²²-IeM”$¯d›AæÊ 2÷¢È§€461Wò)¥“û/dPÕ‰úk‚95¡X0ŸQ‰¨Å ê‹8Yç< “ €fb«u ·¢ƒã}£í$zá^|›(šzø„Õ÷ Ô+`?×ý‡n¨·±_&¿®>úÅÍÕtû|ùÉ]Q a;]2Ÿg×Â8žUÌzzëËBÊK+}‚íÀ ›PÏP.VÏlÎð]¶‚ÛsÏvQÄÀ²½2 r„­‚¡ÂsôôĨ #¸÷Àƒ P0æ}šå2÷(#ŒFZîqg4Êtü weóª[ÙVzÉ+Ä åF1€·.š'!F#†Ž‚’ƒ ÌiñdÜòÀ-05ð¨Zÿ?cá»h\N´ß>I©¥0|Þ×udÔ|b®11†0¾©xOe{DSJŒG‚"_ê0hóXÆn},žÈ÷¡ÝÖU= eÿˆ1pÿ·qý&%#À%3¸2‡3hÐíe_’¸ÆŒO•%íôòb·_½£ ¯öz‘®UW! ¼¬˜¥ÖÊíÜfâÈ”70±þàzeS@‚i¶W¾®—¢ÄÜ Éûš2æÄgÛX1`"É• ûfÏèÒZÇ7)·dâI௱Í@¾ZK9 1~³îf~uqŠÝå‚÷á§¾öûrrì®:$ž§ö°KB¨uûºàyü£eºÿÕ}ç¯˜Éæ* ç^ª’TœD&ׯ¼¿U‘Z.w†še½ìsROEêvCêIÁ³üÆX¼*L,Jð7QèAañqA–KA–KA†3Ty# læVˆÒ¯É­4„•ùÌ717¡»ÇX,›ñÌ-W¸øhSF!?ȉœ´¸½Šå ‘œÂ=é¹rg: $erJ·Èí»ŸÍ2LçänÙt§£"-x¹M@UÎ-dró’ñŽM½ºLÉ%X.—ŒÍ6û¥ŠÅqŠ–6÷óðqM%ÎsgÀ[(âßI:Ù>»^IäÜ òL9<c}Æ4ɤ©XŒ!…|pg±:¢Û4A#ŽO¯˜þFª…M1Ïu‰o8‡©ašùÔˆ%é÷œM¸Ã†×.ï²Jß¼¬àU¢F¸ç±mgQÚ{5Ð˪2Î"øvàžœjÞó¶gçE1é59obÕ’órŽÄÍÀ¬HM U¥éÍÛ][–=?ƒ©Ìʽ34flð]vö DEwC Y±äûµ†°?C-Ö=Ïí&Û¨Û',l¤®W¤Á¶`é” µ©Æ¬Ü&«»($ í¤éö]:Nt‡í›A™x¾}7¯ª“(¾ºº{ñ®=]nÑ=t?³îækDÊiæ hH)åÜÛ)Ö/S?pÁ_^|šRQÀ€ÉJø{Š_w{ƒéå»/DuÞ%ãz³{ÿæü›‹5ni”Û XHò¿ºäRë k ãVŒ/W ´Âß|Ñ›Efè öÕÍ·Ê4dUúE’°uA© °Ä„×ôöØÍøR§‡±wdK¹ ðYF.ˆ=®øSâI6Ç“¾Ü»‡§§ÔÏU±DÐKÙ xÙò—Kó#û†Ç™þLƒßg˜û²—;ŸP¥†"UJ7Ö'æ¨À‚*ü‘7íJ¬CC> stream xÚµiã¶õûþŠÁA4ÀšD>¥‹l°Å"ºE Z›¶ÕÈ’+É»3ÿ¾ï ¨cä§@1ÀˆÇ#ùÞã»iyß¼³ñ]¦µ°&¿Ûž^Å4Úî¸ñ÷_I·ÀÍò¯¯þò.Iîd,llåÝÃ~ºÕÃîî×è—ºì»ûÖ:zÛÔ÷*‹>ß« 8·2+Æm¾=7³ºýŒ¨ *š1s<°K²:°Û0_7펦ÜÆé\¹Þñä–ƒ“¾Ml*¿x®ð›8XLÀÁÄÁ@0qL´/8¹k‚ qÔy§½%ev;O¥R™¦BÉôen3r®ÄÚÊ”Í ž4â%£èì¸Yx<ÑÊñŠi6P§¹¹^óØ‚ñ-"ÛÔ<“L”É5aGÃ5Êú¹-ë~¿.Ç"·A÷—zëï¶.ëñj¼ÅO Ȉmð í-RO´ÁTVçRp+*¾¯*^‰òQVõa·»œ½Úe)¸ëd&О?-²F4Ç5ˆÅ/™±Ñïæ_ëŠoD*ƒüV]1¨h¸ëoy³B¿ë»jÄ8D ?^Û4[lJn(è<òÛrÿäGžù ZÀÖ£ÀT]¡"¨LTÜÿƒ¾n¥“ j¢ÁêØ¹Ø®ÄÌ 1ÆÀÆ Æ×©UR€Ë"{b°kŒMQÍ£Ûmžëa68`TvmeÏ¢÷æµo­å ìwEës©2k=§ÕoÜ6tÎî²Ew¬2öOаëôe‰6÷îòhS´ £FàöD1Î]£çBÈ+ˆó/£(s n9(Tq+Ž~û+»*”âà¿ÿŸï”Ýãàßc-Ò|ÊxL¢fvZ%oI܃ó]ˆË;´7ÎçkÁåt8Ž­ã ?ã\‰¼ÞŽ9LA¸©M¤ÔŒ›"ëèÏnû+Þ£ß,˼„׸ç˜;ÁRB›œ7|¯Z™„‹üF䫯B#h¾#+¬g2n}h]Ñ“W7 ;·1 =ŠŒÐ„e ²N”Á /Ý6—jÇM‚œÅÕø'Sà Š1Õ&¾}C«ø›DärêÉCªå–…õEœ›;m!Õ—ö…bɽ™€¯L–›oÅ™X¦Ó$’†¿¿þ4D:M£Ÿ}„3ïîsÑ¥þ\Ô™‰ÎàdyΤK2 d¨¹În$c€~Œå¦D!£Y¯Ndù]C¹½í‹…ÂC&Úwòž ‚z98åµ§™€Ýof2š4‰ìx×Sƒ©r̯úTnÇã;×mÛ’‚ÚŽç1!Ã69ç’^™°;/·Eˆü°Øˆ,·ËØùJqDdÚÑR°­ûÏ¥lÉC¯ð£•+ºà²+ÃÝ·OrÃ>+/uoVÔ:‰ó—/GOŸ›¾”Tò@|ðzV²L*R.“Þ¿VKq`2Ó8]«s¥ñ„=Љ„NUv=·ˆki<,’Ä5έ ®vßaÜ &Ä/ð¸C‹Ÿ©Šdl²K¥“Z*z+Xõ`…&sÏﻯ_¯&béô•Ê?Ñh9<µHíóÀ{öŽÐ?ô#GÛ ÕÈf¹VhûÇ©ž×Qiô¥Ú«Ê¢Aªƒ®üòÓû‡ïÞX/É% ¼9I³ëY‹T}|àЬZ„“Öüؤ!ëÞíJï5¿§â—ã²'¡HÌ¿Ÿ¯£W‹,É'—´fúå< Xs9 8=©…#ûð²#«šÃè˜nòc°bÕ©iax¾m² ‚Ô"üHïÆ\ÅÇl~¨ÎfÉøxŽ ÝñëŸÃ·$‘…O´p•–³d\~Ý])à«]`<ƒãœ ´nôp^z¬8†Ó? Ž ;àö—Š!J7YDü îßä󷈇BuˆþéÕ³áïqÆ+)øuÓú§RzÄÇÓºôË}ªöUØá_,IIñËùÁk¾ò“ëðKU(ÏŠUý!„æ§[!³{ì]Ý•ŒuõăœG[º4ì܅ܹÇ!øÁm_~.ûáw¨_¶HÄ‘{E7[ìqç@B^ü!üÈ€ñFôo·íÅëF›Rß$/  #¤{ä:;š ¶§`j÷…GƇh_⣆¯Ô¹Ú$ãMO¾©Íþ%?¨áæ!ž×>žÇï¡nÚá)Û——ÁÅfž•~Ág½ˆjÆÄðkA‹RvêÛŒ’^°U7õÆ—‰]KW;H¤eÅYôÑq!tQ}ÒI.Xo« d7/ŸàͽR{Zl9¯ !º–?¿~h_¿•ÑÛ‰vüþf5ãIxÈq¹–¢ã%52צæ.³BÅújàͽö ªù–¡¦5—¬H®¸ïÓm­'•+œžT®?ç=Xל¼Ì¹Çßd9£B’þ o·? endstream endobj 521 0 obj << /Length 2567 /Filter /FlateDecode >> stream xÚ­ËŽÛÈñî¯ìÅÃä°ÙÍ×ú”]ĉ÷’ ;‹=d¤GjID(R&)ðǧ^|š²d$Эêbuu½«¨îBø©»<¼Kµr“ÝmޝB‚6û;^üã/¯”àù€èO0z|õð>ŽïTäa®îwSRÛ»z¿UE×ÞûZkï纺RïÓ}”y®i øëkf‰§Íý¿yõçÇá¤8Šnd 1¿æ)Yð”d&PÚ0Oþ_ñ¸‡÷I4ÅRq€«qvEé*{tŒ9§ç ª¯t b¡éж«›—5Òq¨ì陸¢À¨\+FÿPµ]sÞtkœ˜0ÈLÜ>“¬W¨jÄj8¿«ïý(ѨEyµÁ*A¨ñ÷Ê“›ÐÀfŠù”b¦ƒ4zŠ„Ê\¾“Λ÷-MS¯­…üÁvÌŽe@ã6u³eP½cØ òWŸþ·©G[m[Æ)èÆ ²<Ȧ²“Ûűg‹Ò>•xÇ4övuËÆuMá¡dÝ4uÛòz[ÀÍ´kîªTšqx“ ’AE5HÅyÛ;´Á½o¢Ø{¼Ï4m §Æ±v„v¹ÈÄæîü(ÌÖ05Ë]SÙûžð ÏÕžÿ·3Í+o‹àÈk]·¦oÿ:»MáF®™šHLãîxêð2/r"¨ gê0W¥†A’ ǃú?¬úhdt ©P®Æx .~±>u~àüƒ`U‹SðÂ,ž[’#K/Tãà$;^6ÎnË¢rL£h foIoÁjD‰Ó ³ Ì"¹ã¸ çl@˜qåiíÖDAîü÷†-¬“ÛžfXõgp æE6增^6rô”5}ä¨ôªÕGXÂÀÖúÕ#ð <Ô‹Û×o,ªs{íú?Ûsëà&ͼ¯†Mñ{0P•^FÃý^3-´d|>‘Ï:þ#’v xjç¶ ´rºåG{~ê»a›C@}b÷ëÌÆÖI$åI*ÁÅÖíì¹ìØÔ¬—zM}®¶×J½ß)AFY]áØT¹¦£–áÔíÂÓöhGÄx**ɼ¤>ž\ÇÒr%þ'Œ­ýOøÞË„XFø (¡ÃÎ6Ï<æ›Ï¦> Ü”g·vU®À‡Éx¥m%rò”«%RÑ#-,,+lãÚñEª˜ö®¹¹õøu]#í¡~öweëÛ²#+DŽ٪rŒä9Ü·=ÚB9FnŠrÔJrß`n¨è©§]!&*1JþéRd|iy.Ãå0°r㪮|Ò+^žÜž2£¦Ð"9Þ´ü¥QR¥-þ¨¤Zx.ºÃì­ÝX¾¬m/ø€˜T%/¹–žÂèœk3•÷µÆ› ÝCÙ`ÔÀ1€ÈÌŸªòÞÈÔò°%ªçð¯^ù¤V´J ‘ãËÚôa5?¯Ù^äÙ3-Ç £1öJff”2ŽL<2µ3÷TéXJM0˜Jþ΃©IêŽë'=ÔOTo{ˆãÅD*Âû¢Ÿæض‹·N „ž QF@銞ù³r“hsÀ¢›œ}wHX¸` ë&¿ÔrÈ0ñPé/¤îˆ$³6å2Nô4ÑÀÉpâ¡çKf.Ô>Ih3Ø‚æö†£šúöѱž$©×ýÔ'SÞ‡JŒÁdAf9µ­9÷koc¡’§„Œ\r‘I±ÐÏs2ìÈÈ¥'[ZÄP¶ï8žÐ„±Üg{<•n ,§A|É!‚ÌÍ ²B³?¯þÆÉ¯Û8¨IŠÓ0‚¡á…Š^Æ=&Œf‘íBKžÇ çô’œ#–óæ¼>h1ªYõr Žg¯ž™ NãÑ„¾Mß„SE‚“y¿S´ÁP„k–£‚8{Ëk¹*…KŒmo}òû€ýšÉŽ^Œ‰$ŒIA¹íá:ä&ë#Ž ™#»aö–óŸÀãí[I«mÑžJÛ‡÷œÅ‰ÈëâDSÿ_Ú£ûô G’‡²0” ²Ô|gz“z§Í–Ÿ‚Vÿò… ÝtãSvOgÙ¶úxJý†Ê%g™!áÊòƒFåc¨CÄlC‰ C¡|Dbl[Ôb°VÉðdxòýª)¶„Ñ.°§ÃÙÿBY6OÙf’>ÇÂJ’*¬uLËÐ >¥s6‘²aµƒ”ß‘ÎQùDž©e×< _bˬñ( ´Z ¾?ž )_‡oÔK† µ•’ÇCÄp±o‰}¯Ô_ÆzøÒ²p`A +xëÒÐY ò¡ ˆf.@²¹æ³®™=8ñx‘â11êó'< @C_'ൌ™é÷E¢1Üß%Ʊ×P2\šb™À¤Ùr.7^ôÍë¦ÙÄ<6©è¦¬èrÃè)†LÙiKù,žê _µ¤oXH©ŽKêékB ì%)ãPr",ꦀòÒNhðÊ}öW² ´æ-¨Ò¼¿Ñ8û/‡‚Âúî VîsÍ((Z„Û~®1ù ¦¼wôYšªdD’üæ~n©ôG8„Áño×ë\¨bÇO€?™ø=âL;}³®á.…|ÍâTL¢™.,4Ki[»w=ŽLN×yag‹òÜð7)üüþ_ÿ²û# endstream endobj 527 0 obj << /Length 2268 /Filter /FlateDecode >> stream xÚYYsܸ~÷¯På%T•ɯìÓÚY»œòfS‘œ­”ãJ¨Œµr– åèß§ ð$Méa°Ñhôñu7Ä®RøcWUzU‘T²¼ÚÞ¤vµ¿¿¢Á?>¾aŽ.ÂxAùîöÍŸ>dÙK“*­ØÕíaÉêvõ5úÒêÁ\ÇBˆè}×^ó"z¸æe¤z£a ––y$²ëo·}óÓítRÆù…"!åS™òLy)&$É?àq°=f"a™[ŒT×…ß¶·ÊŠ$wÔŒÈ?jºÇuÌó*2¾?â|hiåÔõî›§cQ+E„gØ/Ý8œÇÆßª¥ÑÕTz5 º½§õ5™\Ç’‹è×õ ït«öޓޫû9‰‡£¿ÚJ9¬L ɘ´° ]ŸeI*¥§éÎÙŽWÀTÝ;…ÿA¡ÕÓÈÔ'EKêß)j7Ь6Aiò*©X5‰ïŽj÷ÛK¦)3–~êGzýà1+ý Vb^VIÎÄÊø^g[qxž°ª˜¥yp~r‘<É„§<÷£Œöã"³"ªé‡üG{5ÔºA«áŒ|á-LÊ"R¿ Í,‹êFYgˆhèÜoØ”ÜT°YZݺ¨±i’ŠbídÖ$Ä8vþ_&’9êøŸ!{YCsõß{ío'˜t.Ã2ÔÞ}_ŸhuYd·ŒdU«dÕ¿Å/ÀG5 m‚hn=mÓ²(¬0 7*r¯±^Õû%$¼¬.'Ohô]_÷tر6t…·R­s´ªH .ÖÒí®÷j–žD–)ŸE–)‹¾Ü~ˆKZ7ãùL°Ñ´bÏC*w}tuœzÖ?ÀTäS@ÒG«\ÜÝgîÀµ¼ äM[[N„í’`è—˜ñ|øPÍ@«§Z;º‘@‡ûz¨‰¢_Ò™2êvO«Ä /9ŽÎеuÀðqN6t®’εü}Õí^ÃIÊÍôë0Kús,fÃNƒŠA<Aà á.HûŽXš¶Ý@4êÚ É$z–¥S·ƒ,Ð7œ›j÷k‘¬££¥–pÝb—=‡ðø./g\@ƒa'I¹FyŒ,Éfàˆ94íDƒ06©[mÀR×B$ïç"IáÔ'9Èêááš I·€…@TÓë)¨CPæ¿gU— ¾ðy”Ë.i÷;'§;\üŽ„z€[qA<«ÂŠ%%«DðB­ 2þDYéÔˆç:5.–C¨ËtXž=-SžEØ,a%{’§á^„QBÎpy}’ò2ªÂyimæ€&é4‘eöz¢eHg_xøùN8‚±„çÛœó)œsž;Þ&œôI®‘ÂÃÔ¸·?yЫèÃï]~K°~’I^e—Ö\°'®!3™#©ƒN%ñàÐs=[´ÅäíŠo*QDÉ,uWÂ'.ü ¢x>cEo†z݆%³PÂ,Süò·O·7>}þ)¬|O†ä5ȤŒŸÿõ"7ëÇV±@µÑƒî»ö4×IEQíÔëún~ƒ:`Ì% ©÷{úGH—E¶q$ ?íFÇ«ˆaë{è6"-“´œül €X>×SÒS†L,$ƒ8 À¦”9T( â dæò ¶€È/-‘˜G3¨“qôcÛÚéÖ»¾3Ýa o¿B$@ÝÈBÎÇxÀ]6 ÃÚ3± FkÄÏ¿¼ÿ1lƼH*1acØ~f‡,wö³Å2wfËøÆLøei¦Ìa,f]e«ª‡ôì$YºÓ©†¼/ªNVnИGswõqœ‹*º¥¾h&dƒ±_ÍX7Ø Z‚ƒûH‰RõÊ îKëi†Ž~÷ŠŽiº³K‚Ž£‹¡­ºëýI·PQôõÐõhF‹¯£ƒq=æïj‡¼¦;©AŸ|UrçË[Òu¢»Ðw#ØÃ*»Ñ` ~?eWêWŸÏjˆÏäep ÈÊ^…‘4ÉeyYfF~›”dHX îÚ̂ۥH^:™ÚW\ñÄàxã`úNyRUÅ¥ÙJÈDäbndC,¡ ©r±ÉŠ_‚¯º¹ð=cÕ‹ù‚ñmYŽKÖ¡—4¶ 6n358òu2Q £©Nf.®q€ÕçPîë-ÿåðe,¦±àÊ ïÁc»wñp^\ û&ä—×ê÷©`·ŒþpqW<aηÏ'[¥†˜`:ÈÖ‘Ìb5{1'”óõK¤ŸbÓ’Þ8¬ÙéÃ#¾?0ûV¾ýþã Í}?‡1A¬í2¢®AE=ö6†h1ËS¹ÕECká¹äsºÜuÊf"cˆËFz(Òêј¯ºn¿¡!Ù+3ú‘"šQÒnüÄËÉ¢õBlÙ¹ýǺz¥ÜìÜÔíþö6eó׸·-}–æ¾Â€‹j¼zžF7Jmß7y=Yà…UÃ+/œŽ6ž‰ï®k†„ÉÇú<Ø_ }ý±%l¨£U "»!}sw9×÷Š>ð§O´išˆòÂ;xâ—/±aioá$Á”DRÆ!íl ¤ÃØ»÷ÛÜ/JÛÎ,J×Ö57ò.7ÒÍ/ŽôæõHo:_o¼ãSjXnØDy•@—d¼~ M˜\?²}¸.„Ú3™(1´¹(èIÃ=sì4"Ÿ}>‚e¥dÌh]üèöúýo°’ERd‹úî?ß…¤äe’Ïmĉ#Ö@ø{¯¼ë¡@7Gx]ªlµÏÙß @¬G»‡(|þe‚ª3ë-¬ÈÁ£ªMÇ´x_ïõžž¬s—o`°R.ì͉žØq~è»<Ú±°>rÜl ¿Û"·°yˆç«"wñ®±槸Áòj yÅ {Â6áå¨óÔñ‚<v[¦îðÝA஌æëgzÙBåXðÅç2‹H'«­À¶/Âã.ØS¿"ð–©ŠEí*#—ÕÁ¼»^/ž:÷Ú·¶2l Ôg^°%´ÁÊ«í(ÉÍeu×_´¡.EÚ…þC†€ÕѯG+Ù¯ìÿ—r endstream endobj 531 0 obj << /Length 2442 /Filter /FlateDecode >> stream xÚ•YÝoä¶¿¿ÂÈKeÀREQŸÉC€´MÚ¾4H\ä¡W ´Äõª§•6¢t>ç¯Ï|QÒ®å;,j8"g83¿™áª›þÔMßZGUZÞÔ§w1QÇÇüôÃ;%|!0†Îïîßýùû,»QqTÅ•º¹?l—ºonþü»o'wj­ƒ¿ ýmRo“2°£ká5Ô*.ó@ç·ÿ½ÿ绿Ý/;eIòF‘ó¥Lù•Ly™FJ§,Sèp;øó`:ÞªÀÞ†*hGžmÝžG˜†Ejœ0Ýæëè6L³8øþ¶ÔÁ _ØOætîì{¡­N2Pµðò²;Jé$J*íÙžÚ®£S 5h›j9ųý0žL×=ÃîUy¥ôÄÄ#Œ~ã!i OGZwã)TUðZ‚ùk3ã,q­úÓ>3ò)áx=ØÛtŽ™éˆáiMÒ/l*r°øˆ˜¦ÁýѲ:”j‚åÉÜ@Jƒá<‰é4ìöëÜŽÞFâ»ÓÑL<šW‡]dUò:"x¥xfL³õupæoFœÝñB\Iº9a*w8‘Î’8È^4zl™ßLÏO;Žä,0lü|F¶a¾i²§3ꔈp~Û%B'&zÃÂÐó9‹FÏÜq¿‚%LÒ¨ˆBµoCoîíí«waÊV5u =tRÁHH´“Â4OçybÚû8‹§£°Âá?ábflx¶~MÀ¯¾aîfàg?ÈZç±%vy]–­_Àî9ãK£‚gfYüå-b2~_»;_~Ìô}±PäW…ø•mÐ[ ’¬ß³QRdQ^ê·@D^\Bmê¦eÈgQ,à—‘Îò KO>ðÞ¿TŽ£åêø¿â ´é›½lÚõ²É›ãs þã¢E˜ä…xW’çh$¸¶ÄHFÒä#ý`ê CùŸÚé8Ì“¬AüÏî™:×§Þ”ÎÒx1èaN¸x§OI€wÏ{̸‰‚íéššq¼€p’²@³Æ= çÀ3gÞ±ïW8£¾p?Ê9)"+æ’átBüÞѱ€êD]ªHþïÝ—’Ô©õÉä´wJ%0Nü*>Èš¹¶Ž…˜XšŒu»Å$H¯ÿÛIÅùö@U^Å‘NÓ½Ó,*Ué9ÿ>R¨’}„AAWQ¢¯ðÜ;NµÍÑ€„I*PŠ”ÌGŽURþCDtYm1gã¢<>¥~ ­é¾ÞÅ<(‹ŠÅ–j¾ CHùvb.` x!|‚€góJµ¨¢,ÍüN1*~!oO´ZT#§ÕƒôñD5!šå¸o*Ê•^5ø(è³'BÅù"B;ñÎW.$æuçÎx˜‚;øöDP€‚D>•EI¢÷!~ 0pØÞœ„Ìe .óò a>á)§Æ7þgð™"1ãó§ôâc=Ëà`Í4¤7MQ*À Žž¸ÚMÅHçð "d¾r“js7µç®­Í$».ûð| ÚÀ[¿"¦ÇÞñ„-¨ ¡I1‚>Fñ²Â0·Žyûß;kQ ’Ô‘œË\8 À±0Ï5•#8ï“ÑKDIHQ„‰œ3ñaŒ ]ë&ªH2®H˜›\&ßmÎòjÎvøÊ Ä©­‡Žü…H¹fBH@F\Z–90å:‚[ÌÆŠ«ýhO IbXœÏcï¤@Œñ5¿ÝóIJˆŠ¤¸Çá•:±rAdF§}ïNâ8ÊâJ¼µÝÛƒÕn )¢ÿ#-l¡ÅEz H #-°µ¿…š¯vL7œß©ÀÁwYATÅabð–*:-ž÷ ú ßvƒi¸^-5UJïIκÝRÇ™GD/]ækCîPf°¥|_f"pùÝ€Ö˜É<gï¤Éì›+^À/芸*¥/}Ù(fF&¨½*—&ýUKð:À';ð°†AØÊÅ3݀̚ ƒBt7¤e”©üË‘ŠTµ°m¬+;s²¥ûE JíJÍ%Ê…¡"õ\¨Š**Tráƒ|©S®–€1­6àêFUµéFá¥]ádøÀ(½§¸Ž£$Uo)×j KqÞÙð^‚K@°Ÿ( ä"ªZdgk+J'ö nzˆiUDS^UE=„B(Ö‰L š»< ~®ÇÖ{ ‰C‹¨8Ý®¢²<ÒUòEåBÏi&*µ¸Ú_­;·9i"e; $¹Úq˜G˜˜T`ñnß½Š(Óé[N¹Œ—jîaÛzØ4HLòñ³çèk ù8ƒlÁW$%¢V{S(—F/Û]øp2۪„‚TW—!·Ü’A˰ޒA[ å> ã•‹¤N©÷hÖ”)‡aFÓãÐa3¡üĉƒ*ó–ΗrÐÃðFið@Þ“Á™€Jƒ¼bÃõ8²Êà¹ð&ê(-‡ý²¿ÃµKÌÙ5 zäWòd|¢yc¼)Gô8 h¿à™XÏàoËø;†Ï'‡yd2_RI“Ž“”Äy ü‰átTd¡~T!yyyrHÁÔrPŠ«Â—YlxŒ]îzJŸ `@ßòpô… ¾ì÷/ äéjéJâH%ñž'e”ë|Û¼d•þε¯O@ð|Ú9˜O†î¡É‚Cœøj+4™ô[^õ_ãË…Níãqs‚ÑBô]¶ÊŒ}CÑ• a(€±Y¯$yDÍø;ïâž{©ç“»ûŠ™ÚÈFwÌâ{äígê±SëµÀwRÓ§Go7Kû«Ò¨JSCÈ Õ¦ýM´¿Õ>ciöÐvíÔrö£Kܽ«ŒŠ·à¼‚Fd©Ä¨BÆÍ¬!pk;Øî™·±Ÿ& Ç×0«…t×"@0Õy ¦<¨ƒïæ*º†ÁÆ’?òåÏ0ØtŽà*n[Ljȿà1bÃzG,… ]:Jà`UÀSñæÄco•\ùê‡åbÖ˜ä|ɰÅ:ùbXñRìÏæ2¢æ®aÛ¯<ð²4"ÒëÕØ[Aa~´Í«ntºnÓaÒ2tþ_û_‚~ÇÏîW endstream endobj 534 0 obj << /Length 1488 /Filter /FlateDecode >> stream xÚXßoÜ6 ~Ï_qK Ì7ÄŽåß–=t[‡íqKч®Ãt¶îlÔ–n–ô†ýñ#EÙ±sÎy°HQõ‘ü¤ ÛøðÇ6¹¿IÃÐË£lS´¾Ñv‡ ~ûù‚Y; Ý™å›Û‹ë·q¼a¾—û9ÛÜîç®nËÍç¬{½uÃ0t~Pr¤ÎÝ6ÈÑéD7d~–8aºýxûëÅO·ÓNq¼0$´<)™ÇÄXæe›$‹<FÖ«¯®wµ¼Ön ŽÜ ñBŸÑä±SÉ[qó‡;® [Ø)v^ûôõt…“ãjz,¶«‡Vn.ßi~ßÚE£C?|'‡v'ºï?’<D—kqÔ{»ÀºyE_·éiÀèóq-оÒèƒpÈì$͉¢R´ôr ͆ÚÖZ×ò@Âß—}ÝŸHêíšBÉ;Ñ=D<ßuîqX7ú\OÀiw%Ä}½$°ZÕ=@F£ZÒ³1P­Œ\Ì[¾kÄÑ7—4ú×d°>ÜýO·]²øat–n ©Tç(¯€[³8›ÃŠß‰1Ò€ýÿX¿&8˜û£ÿ{p¶ô†‡Yôþ¥’bÖÛÚw âÛ)ÁÕc2pl<7`^dûî½-ËÇ-BAG¤2›­8„6Ód4«! (45”bxE}2ìRÒÄ}ÝW8Š©H#•tÕ±7܃zÞ†V˜õ½¾]â;ˆ%Úv‚—cù<Š ö½8™Â¨ø´ý* / &ëë5±Ákqž8Å´ê/ó|H—µ>òº#ŸNÕ¸”Ù0 ÀsôˆD'yoº< r§©¥0âÐÙwªE‚¦iÝsYò®$©–Ç¡·ÆZ‘)P Mö\¢QÁ%Íí¶.P¾ …jM­+aÝÙÁHÉædÝáÁ j¥ßæ¹ßl…ÙÄ`sÔ~­¸R汈=[\€kNyò¶n’&ÎmU[ßYVuiuttàÁ†Þ„ÂTA2¬=¿« ”¬vO ¤e#´6§¹ÀĬ´ÐÌxRæ(yî¥izÆð°Ô÷ñ@`iòRÉ{ŽwI†1Ãé^´d¦Zb<¼ïÛô<&2:xfŽ/…)É©c11Èzf5‹àªˆUœ\¼ÄaÕŠf…BjC­.ºúØ[ ÜZE*«°AZƒû¡ñÛçÍ0.²ßB MIëw&d1­*­¥¤i¨Œ~·E'¾Áy*x)¯£ìŽ'šƒZhwÊÕK(‰½< `Þ#+l‘L·Õe1þÈÓY(¯ìuv3¾~âš½4>,®âp|¸Xü—]¼‡š0Ó«y K—-5Û÷f¶[œÄ!‰ü¨Y¬Vók÷pç|ùjõO¿r3<»¬ïx)î‡OõIT_´oß©Óõäs-è¿+â³û±ÖaÜÖÐTæj7"ä»h†ÒLFP¾Üê©a  j˜­-=‚¦Þu¼7¤CtI«;Ó'ÒšHõÓœùÙa-(dè›Õwà•f¥pÄñMH…ÒQš£ØËØ£KìG¥P#?Ú Ì·¿°Ú?ƒE.Ïá?žtÊP‡, +!”{ÒÿµÚð`‹ƒ±½mø÷c©Ç²éQñ5¹«Ìå‰/09Ë„>IEr‹-œ¿ÛÆpÓ6ƒ@þŠbçv›EŽ¢9äOÄ¿$Q™×t[ #­‚Xfín¯Ô0|Éà×)æòfñÛèò<“(-Òe¯5ÚS¶4þà?ù¯+ endstream endobj 538 0 obj << /Length 1103 /Filter /FlateDecode >> stream xÚíWKã6 ¾Ï¯ð¡»]{õðs½tÛ-ÐKÝ,Š¢íAI”D][Nm9ÙüûŠ¢œ×8A0è±`LQ4õ‘æ'24 ö Γ*-ƒEóDœ¶[(|üù‰z»ØÆg–?ÌžÞ~Ȳ€’¤" f«sW³eðGøY+ÓG1ç<|ßêˆá.be(»^ÙeÌ))ó—Ñ_³_ž~šOÊ{X¾ÀT²€ £Yê1åešPž"&Ê¢8ËYøkÓp0ÛÁX E~2§á¡–=À¹ŽÌ†žò$å:™m¤}‹±°=Xy! &FÃyC”¨5ñb—â‹‹~‰Jãsey(:Õ=*ö`%àßÁk†^éµ?¤m¡½‹ZéÇÖØ”öI§) SfƒzÝ^ì¿Ø Êša,ÆÅb?Ñ1ž†uDÃÖ…Ñ~é½J!|465&*?O+“2ˆMXæþÍ7ËÂÁÕÂùñ÷ß]'õâ€fòëb#ôZâªÆ~'®º¶AéCÝ óñ´ó'ÉÈçO?âb.ziWPeðd„ñ˜1)'ÀsW#Æ7(SR¡°íäJ}•G=óƺÕÑMÄÇò„†îo´Øˆ|öxøÊL 9šî…6Þ´qvi–”´¸LÜ·hP$„’t*³oÑ€$4eyš1êŒâ _·16S.§®Ì;[Ë·PòÑŸßáƒ'¼ ¤( \âûפ‹‹4ÉÁŸ+'>ROù+EùÂÝzóú€Z¹2(,€ç-烥Àâ¾5?Q¼4Ï’ÜrœàQq¼“ݼíå¸,KhIGSäžØxž{x‹ÚÕìì7ÂŒ,"‰ò‰wö])tÿ<…-¦³_ú¹œxú®׎ø`AOPÙU1ÁÀÛ¬¹ñ$Ó'ïUOym&XKïÐVÙ=x·Üg.z:üŸq9=µÑ©“2+O,ügPÒL9µ¨iþ‚ƒiž…ý°µµÔ÷P·°vM.̓qav©úmvìÌ Þo¤žÄÅàzÈÆóŽUx ËÎ#ÉG³ÞˆÎUzZÙ¶Þ# êµþZ lË.ž_|¿­åäHÎò"4­BX ½ì ùÛV$(Ç„€<ꤶW% ‹9†îä¥\‰¡6¸ppÒ€BéÀb­v~pgâ¥ãNÒWxÆ1e‚ @ä䣃¿ÝŽÅpUß÷iþš.úP=¿}^Âu}þþòº.þ0½lW)ÃN6Biœ!ye+Ò}÷ÚïúÙ¢®[œX©ã|~؃ªåÒö.Ï(t¢k/ixehd§¢ÆpÄ­éÙÛù´Å–WµB+‹¹w×ÝœT«Ü&ލÚÖößy+Ë#7W@ìò¿1¬y¯ÖÚRpì,\,vïü pŠ¿ §‡¡Áx§£½®=R»ô£7ll0a˜Þ*;Á\µÎòÝ$­KÕÙO¢çñ—п±Udà endstream endobj 541 0 obj << /Length 1244 /Filter /FlateDecode >> stream xÚ¥WK“ã4¾Ï¯È*j­ÕölöÔBÁ¢ œ€ƒÇQ&bý–½Ãü{ºÕrb'PS5nI­îVëûZ±áð'6ßh¥X‘䛪yà~¶Úðã7"èÅ Ï4¿Ü=¼ý:M7‚³‚b³;ÌMíö›_¢Ÿ[;¸m¬”оêÚ­ÔÑÇ­Ì#Ó; ÃX žg‘*¶¿í¾{x¿;{J¥¼3$Ô¼)›Ç$DÎòM–'L¨„Âúd Óh¤èPŒãªkNe5ÐPªCŒ |ÅB1‘Òv͸àÉbAÐ g"‘Y’J1­ÊŒ).îtÛÐçW.ÒÃðζ(¬¹QïSšsë{ýt­‰kÛšõó%)Ë…^:ùŒf‡'µÿêL¼}Ý]o*{껪¬I·êÚ'+Á]åûøáiÍ„rèú¦|´µ^HÓô}×ßf‹bîîšD±NX†á '£ßwD« Çr éùhZ’*$W>‘k°íSÐíè[Òs@RmÝðÅì™Å‚6RhVÈ "÷þ/H]‰8M™Ôé¤Úb7øÙ[wªK ëÅ-Bq¦±UWOzΜʘîPjÅ$\Þ<¡}9˜=ÕŒœ¤î@ßÞ¸±ÛÆI’F_Ô®£ùÇmŒé áÿ•½ŸJ¦DÂâ«)Y&çsM YÉ@R0@áMÀö¾£0\ûé0€î‰Fã)ÄÐQTç‚Ù–MP±‡™Œí³%”^ÐV7nq52šjD à ¤k‹Èž¶"ê)O2\«VŠ2δý<ûïÂÉ“ôðW‚AŠà­HíŽ!(Ô4Þº€0\˜­ÊU–ŸoPæ<:õ†âôP÷xÀéÑy´£8ራ7)xÁr=³z»Žå^ -–7 L‘¾Ù Óu„¡."7ž &çŒ#÷¡‚Í2œó+fb†=PÁÊO¶±uÙ×/t¹"Í™N–uä’ö‚r‚ð~ñ. ^«s´JÔF‰âwœ}ëËíSÊÖÏá‘äâ’¦¶Ckn•ó‚¥É™óx&Å£oƒg¢²Íɧ£sÎ>Ö†&éxŽ« ‹ÇIëØpõ%K®pOåéA¥Ø“§LÍ8°Õãa#°¨ªÿø"_RpßMfßSD¨jÛ•-ŸÓÜeïÌõs2½åòÞ×ë æõÇöæu™e\xn&™ ¤”GÛŽ&ѹöë2!¬y8¢€$ÕQ0ÉÃ-ÝžfJ Iwê-Tp€zž Tr%/^¡vÛ¦n ”TCѱukÕᕪ- &uÁð`0ËkL°ç·LWy:gºÒéüTnÕ¥ÈXVÜU]°YÈ'Í7kÆ4“*½Øúc´fÝg(ý S÷€¥ «åÅšOCÙî_áQÁå½A¦Îu˜Omš”€pµ¼Î©tîÇÊw:9ÕÛDj ÇGß¼¤"ú}ôÝL—ôÁÒV‡m¾®Œ ^diO ‡.½y¡Óà¶\º`ºÝ/}œ{—[êc#3u+z*Æ(‘O½ö"мoôTÉ§ÍøZ¤itÁšŠ³Ï¶®§õÞðÊ/ …tš…Mq®;[™y\YùêËæªM­Ò3n/§Š}i\° @\+hÉÕTÈV¢$ðL[J9µf-Õöyÿbœ»ê–¨ dÓ/É¿1ÇZ endstream endobj 547 0 obj << /Length 2252 /Filter /FlateDecode >> stream xÚioÜÆõ»…00)ÎÁc`ôCÚØ‹\9AÐ(½äJƒòX\Ûú÷}Ç 9”¨Ø0ô3oÞ¼ûš•¸JáO\™ôªP*1º¼:vÏR‚Ž·W¼x÷÷gÂáÅ€˜½yvý:Ë®Dš˜Ôˆ«›SHꦾúwô¾·ótˆ•RÑ߆þ ‹èãA–Q3N¶±i™G:=üçæÏ^Ý,œ2)¿R$Ä|,SÊ$D™”Wy©¡4‹õý.fÑ…¥ÃeÏ TéN3¯:” 8ÅB%"ãËE’ŠTû™'*•_E¶ãÏ©ÈNóKÛãb‡¾z©U¤iQßÀd•]\ïIúÓ0vÕÛÚùž1›qÆ ®Ø¨ºc ‡ øìú É+¾J^4‚£ÒÙ¶ydÏ(OM¢´þvFH}r&Ë”1¼áþâì÷˜åõëR^‰"‘"ÓZ±ÄЂðN”ô‚*ÀÏeôÃ!Q]Ûþ¼ÐÑá2â.‹Þ~êyñ#j¬Adȇie¡q.‘H«L"ŒôäÁ |j!‘j®xõ”td¶‰‰Jéòò欢òÒ[Kå&ªúšaç‘„úÜL¼ŸïªÙÑÜ&–â°L™&“Úá­d’ƒ½Ú±ê™ì B‰¡€œXN°š ÓÔ,œí½,TV°ðJ{QƒÆ&)¢™ÜŸí±jÛû=5b‘—‰X˜&×—i¼žî@œkât]7'ëÜ”<©©0:)dæUM0tŠèÍ ¥K£{Ôt¸ðÌðœt$5Û^€~ ¾Öƒ¶yÁZŽ—~× ™JtVn@7Ž?º:»#i¬t™ˆRmsa±ÎLtÛ̼°\,fªÖð_ò.XF^·pŒ}¬8š ÷yq~ `ÂÓ !L0S)!cÚùn¸ÜÞmÐyC1ƒ‹æóÜ€©vҘؤ*êP†"ªíéžóšS§ÒŠ¡jO [ð®Z{CªóyΣ­æ†ñ/S3ò@?BÞÝ6¸JË4²óóÉ#](ìïY§™g‘Ì Xç˼§);±)Ñ¡”JGSs®F’¡¬‹C™F¡”%' ,êM¥!¬O¶mùЉÆÈЕ¯ÓBTžx¹Ø Q/gºX£4;Á©L µR}±B@ÍU¾¦ -Ø$KÊ\ñÙï‡Rw©‡.ll/uƒðT] XU-ƒØóˆ¹X ÁÖ]'áÂe¿òILXKüùDõ<¸#£ÿî*Å6—‹âßywt× Xò÷¹ÓlèºÊz¬Ê4Qe¶ †Å¿3\¨ÆÚ9f­®<.¡é¦5´ŠC©)kðró¹êÎí®¹Å…>øn5·HS.•íõuS0 òt©Œºn*ë,$?DFn*‚˜„Í&ý@u…Nø3Ù¹‰?ÙšŽe4]Îgð^Ûtä>ê43†â:‹¤"°›"@[®!G¼êj‚‡g·ïú½$¿Åõö`Sl ¾›Îi¼]CLưÿ1`)àC–^áµ\«´ä6ƒ¤:ÎâaÄâ%ŽæE幅ծ͹­ŽŽ{S­õÈC¥ðñìIÕ©Ì"ær›üe8'ÝÏíÉ„5ïಫ`Ü,‹‘àˆçV0p@ü8lA@Þwg&)¿ÉD”\»D6e’ê­k¯–®Ä—ÒË$ì.9«ÁÅïœWk ãÌÈè7 C{ìÝ-¯íúú »4F&“ü„çÕØóØŠ×&þÞZžÓœ|'ç°ß¸ÆfcwŒ&ÅÝ¿ÐÓ.d{„¹>%öÅwàáHq'.—NŒŠ ø‚1Øt0pŸ’8x„Ê÷Äð¤r™d©ØžŽ».`./] "@›Ïv¢àµÝ×áMU3„#בq7ƒJ£×„ƒ: Þ#ºàbN*Çg b½T^|Íøâ«]e÷ÂïTŽE“ùÚntÐiÌã’n8ÈðˆuÍlUçv^ãøí17ZØ©j² 4ií.gÁÄM@×›v´9C‡Ùë»´2›)méËʃ<íoص*h×:]¦uÕzæE0¶ï^XÙƒª²Ž Õ‰Éò‹Eã) 9ZÚØwù`4w£ÎÐ\a`RÉrÈ)[}à¬ÑÛž¦û ¦xúÍŽ~ÎqSœülã0 'G#HšÏRÌè]8ìktJõ2äÔV”þÀ £bp|©y¼ØãD‰R~ÑíôfWùƒ^Í öÙÿXI#O‘­¿zÚ÷ê‘wìdÄ œŒ[rò^PÂ:—;üøîͯ»ÆÈDèà}eèÌ!±_~¸ùi7§ ,×q°¯÷…KòÕGïÿõêÝ/ïÞ¾~óÏ]éÖ ±“›å÷÷’ÿG™ endstream endobj 550 0 obj << /Length 3750 /Filter /FlateDecode >> stream xÚ­ÙŽãÆñÝ_1FV“¬h²/’Ù'Û› $ë #p¼>¸"5"–"’ÚÙI‚|{êjjFz`_ª®ª®»;º á]¥áU¬ušäj³ÿ,¤ÑööŠûãg‘¬[ÃÂõdåW7Ÿ}ñÆÚ«( Ò0®n¶SP7ùÕ«ïê²ï®×ZëÕ×M}­âÕÇk•¬Š¶+¡»ÖQ˜¸•‰®¼ùÓg¸v²J]ˆ®|'—˜ Ò†qÚd¸s˜¬ºÃõ‘Ù”Û{ñ3Yû¾ìÛ¬•áwadªB¦:þÞ#1ͱåBŠ‘¬¦Î*JWÇëh%ÔC/Ïúì!°»²ßq«ßÈÀÝMq×ʉBj õ¿|ÿÝÛonþþæ›?ÿAVÏ(u.ÐnX\ÔÈêeÛÔk\}µÖ©¢Á×òª=/ëëàt¬êËì}U¼Bî¨U¹å©~WvÃ"çñ|¢Õ§(î°Õw/‘ÑŠÈáVGYï!»"çr¢9 ÁËZ€·A6ïÊú–gîWâ:övÍ^æe[lú,Ñ«€¨ …̈é¼ÙáÒ$\åÅ6ó©zîùTì ùd8k‡¿v›¶|ÏR“ódYóܾ¡U¥è³²âQ˜=m ‡¤Ltål$Z?!Þ~õz²|AÄOÅ_ï²C_´ŒT3B?¼h|L(‰Èhõ#X®Ù­Paõ¥Œ’ /D\?÷ HB;`É1L S¸pmÃSi`œ)¯º^[§V¯ <°šÄDÇvõ¶¸ã†·?ÐÌêœmiõ' |A‡PlÒ RbÀ¾DãeHHØŒ•ŒÆ¡4à(5øf¼¸ŒH×a¨*ki½G!¾çömù‘±†ö`*ël/Kijð·ø×±dý«ŠzS×kcØÖ½×c^Ÿµý’°ÉAÉøóˢݱp@ Éo–ødƒXÅ~Å µA vY›m@îȨÕÝÅŒÕXV!- íÁAx˜‰>gDÂýÝ®h½¡¨g¸"‘ä(}†±÷ÿÐUY·cÀ¼›àÁ«Þ…6èMäÝÊz¢†fR*›-Ÿdâ3ò»§9üò`‘ bH+eéúW6(ÍoM`_<}^—û﯉ÙO—ãøJÙ ÕéÌœ>iz^]†«;‡+Àr~åÿ.†Å‚jc6¦hb³ñitŠCgÊ>#—Ý:ú³'yE‡®6ŠW7˜%7¼j›mʪ쳞PNå©GI6‘„àuý0ºm›=ŸK¶Åªhn[ò†ŒËæ8¤%€œAÏA_,AŸ1à“i7±E·mvØ•?wªÔ8Fɸ1ÊÛ ‰!{ô|¯áo#Ñ2Ùˆî÷×kçB>ü3:ÖÛ#F2cò°àÜÐ ~wFŒ2—ÛFJ|‚‰ æ–MUj§v×™)ŒX:¹wa.í”&$åÅ«kT–Õ2ÚIŒK/@[ÍÐfa„‹š¿Ä·àç/ÿáýÝ™ý!7N?‹oZœ\jùô±±pú8LA~w²nî*8µÀ?Ï\`Û±^K6¦L"¾®êËC"͹Žw孴Ξz¤Lèdrìê¢cÇý—Ù¦Ä]Îô0|Ë©+gWo×T E”û’|¹2éÀZúA3ÉãÌy¥1I`Óçœþ—a:A$Ç€јi÷SÌ„ÄËÄ#3£¥}§§ýâÕ’Ï“°HYB…Õg¨Õ×ÖGˆ:öef!Ϲ`ä˜Xœ=O–Ï”~&e39+%éˆã%bòU,º©è¦Žuæ9q>Œ‹†qçaœPyÿ©È(9%RvÂòðÇRn G Èq±1A”ª‡&ÙCÖ?e¶¹H'±ºŽÛ.|·ß·U*%tøŽÌŽ=³q™M_NÛÝ)³qèLé túdäŸÒ(%“É–[tÜlö çës©{̩ƜÉs¼ƒ1—ðDNK}ó’…R?š[,ò)N†zFLüŠ7Ê6næX¦»Š—Rñm¸8¬§ÉN'CK¹ ×½Þ´ˆJj™ð%kÉœ9Ã^C‚™j;ϱ%?SÖ ueõ,­Æ¾¯®Æ.­Ü–=Uz%6À…|c$Ë|5 !—}?]¢‡Á#î?ÉÚ’s©‡{MñEäi0›âà/z´ñeéáPF;qÛä’£Rñ ¨u1^i#B 'Ìñ—¥p^{ÁMP)>‰Ý«=ÿ„Ú(µAxZaþžŠ!G_ˆ R+O#xν` nN–å+ˆfžSjÍâU‡¡b„@­Ù☟ã»8ði„<úè“IºÏ³ìÚŒ5C>ŠÊýa²ð%¦§~Öêγ!8µ$¯E •ªÀ ‚Rñƒ¸–¨Â@›m“0`—ñÃkâN¢Ø÷cãÜ“øY÷L ‹Ë@ØBÁ2üðƒvc¹Âf]ÜúÃÀÌ¥‡îHN©Õ–|¹Ë Ø4Bsf‹Oiäù$σÿœ]üX endstream endobj 553 0 obj << /Length 2865 /Filter /FlateDecode >> stream xÚ]oܸñ=¿ÂE*7^E)Qj‡ö®iÓ÷ÐúPÉ¥%ÙK`%mE)Nþ}g8CJÚhS·ðƒÈ!93Î÷:½Ià/½©’%D\Éò¦î^%:>ÝÐàoz•ò¾l<¬vþáþÕ›÷y~“&q•TéÍýãÕ}só1ú¹7“½=!¢†þ6SÑçÛ¬ŒÚјDš”E$³Û_îÿòê÷Rže/d wþwžŠRÆ©ÄS‡̧ɜO_…¬Š&„<#wæÞܦqžD§Vãâœ6húس®2Œ|Ô2`:òà_x;`ªX3•ÁXT\Âñô[Þ³aÍ­¥¹îtNz_i2¶ÿžÍˆGò*:¿N)à)Š6¬;kÓ@ÚÞÎ#“¨‡Þ;á™2šö@ò8Ò™aŒoA)dt[ ¾QÂWIé.õÐç©%­¤W2j̧$íÈ‚¥á‘¾»ï—f*‰ð¯ó8 {/˜ª8-³õ> ÜE,ÜÐyÐã‹ñ>fj¿‡YÅER¬8~ý)É“€oº«€*ÎÔ%§v@£%{è¿#$©ÖwAЇ+’y\¦e “&Š¢ˆ3¡àùà›´øO÷°3<{•-º•U c4BåÁeCšÂ .l‚7 »ðâ²oi«&0Xþ$Eý㈗õ¯Î:fÚÑ0îéh,[’Ò‹"Ì¿cÔjï Š*NT°éC½û¸2.dx§áŒ|ßía;ˆªŒ‹BmÕ{v.w¯Èâ$xcÏ'’Z\*OK¹=öä;ÞµÖê§–V5ÙÛ0O´è-ÇA¤YvR,ñ¹¤“î¨uOhì|ÿa­GÒÚ6PWH°–õ€8_;¤ÿîåš.²œzhú (hËl·kWL$yœ¤©—Ñë—xe‡“É8o‚öJO¦÷LIçOp-lZØëu×¢¼àÌ-ö¯™¾>Í Ž¦¥¹îWW>¢Í;!¥2‰•(·Êà”,-±®õ¶Ë>ðŠW"ÆÑÿ"’— Ø‹k@÷ÇÝß]£q©äÖäÿÜŽŒÃXBª™õö‹îΧÃ&E†©=#ãoô¤i 8߯ý:3ÆØíÐy¡ikê…[û»}­‰K§ž+–;ŒN*~u{P%|Q)îQ8èÚ©iˆw¯¦Ïy4ÐgÞè„´Ål |eEvìðþ£n<Æt‰Á¬OÎjSˆžàïés±ã%dXT¦‡ãLÛCq{(DÐÿØ>š¾½``_ö8îLïB»ÃU$Anpɱ߼Ðê ÏîÑ83¼$p ÀtAæ¼w·;òƒ?2~•ñæ­H>¸NèN8þ‘ûz!+›0Æ!T¬c²hAïv¯õè<:>AÐ)™ÛQ.æÓ. W)3ºÝGC‹tγ’åƒìH•å‹D™ÄL}+¾×$¿4®“8Érd(³E†?¨h‚® na(Ô:гN8\Á5wÜøÕ¸dóWÄh˜”){8‘¯ÁQ‹j£Œw„iú\Í4e–‡œá%‘Õèã1:ëQ×Î&¢‘VŒÝP…›¡÷ûHeôáqµš…U®<“(¹Ò¦÷h}€ÂãûÅOòÂ7×n´äƒ <Æ•Úéx)S.Ež=‘§q.óË¢ÂUÅó©Ù$|¡”ãªo)É0âß-œ€LȤ´õÎy’­ÕµÂD%›Â$¦=PAî,d‘‘UÊ"0†„Ü@ÆôD,€@‘A\YrF¾â'ˆ\àÈôHÓŸ¯¥Ñèm*(¹ÃñwÊ”7v¡²‰M«ÃÒ‚ËPTêð)AœJâ ÷l¼…yY£鬳à/hÏŽÎ0:9!¨Þ¾„î°XW®E0{¬l¥—¥þA;Žti ´/C¹âô5/£÷Xˆé#˜É±u‰,À¨‚ÁíÉšÙÒÄÖ !<†€R[@´ š¡çQÈíñ¨é\›ÇëÆ eÕ›¿½ån g1Œ–òMP˜J^¤›TøÉ|UøÉ\DOÆw€pIЫ ‚ØÛÃèÂMÄÎäªèö^ºïEçIȸ)œ¡‘d±eu·§™P-bmÀ|ÅWÈØñåèÕê—4N2ýÁW[à/êÐÂNÓmD©(ší°®d\Šˆ¾W‰–yðî3õ|í@ßí;NO“‡þÌMï¿$Ùm‹QùÔ÷î4sO†ÎáKYøø")P¯%v9¨ªJT\TùVýÊUøÊàŽÆAÜ8Y4ÆUDäã羦VĦö`]ÙÖ%î™ðêà2_„‚ÊêŽû=¦G7‘FÎ3À;Á ðk ¾ruÒu;?Êg¤#0[Ìyس»éÚ›¤0Ø# Èú>8Gdä¹ D}˜hÙb"lù–WðµåØ>é‘)aÅW¶|…Å7õL³Ó’je¸žfáXƒ¬5°F@lˆÒèaÞÛÏÎnéV–¤¸ÞàkqÖ ‚õlÁà„5;GÅWQ1”bçå€;êÞîwÕ–‘Å®×Gùz7N®gÂZ™‡êšº ¼óÑU¸ÌÚ¸Ã0om…fxÎÁ]®xq±n‹{²%æ¨ïáânïžks*ò`Ÿ0¤¨XѺsð‡ðFtØñP›‘&ônyPFÇ<Ãh¡Ho™ûÎ5‡Ž^áÏì˜` ØvxЖzòØV¸´ojc¬z©(®Ù{†zï!B~uéÛѼüÞbø»iÝ_÷ /ì±l\Ÿô®ƒ[è+OöâFÉÔvç÷˜÷}qÉ^hØwÓ·ý…kÌ¡ƒúâÝGTG«»eë¨û§öÝÇdú” é®Y”PDlÛ†Žõ½E†G–cMûôžF¯¹è›dŽ&o7œtÞâ½ù‡ØMî•Šó¬ø¦dÌ ï\ §Ü#Tò"Nàþ1=qª·'rg÷wøú…_saüDc(p4w¡6›Õæ!:æÍèn'M$kÉ îT;å…™åªjü]EÖÚ›!,QJ ƒ83ï Hoí Ê#_~!±{sÚìÞc{’™y¤oX4[Úõ·þšø”èÁ@n®ß!d¹ñ$àÙ¦bÉž†Ë$J¼$’YèÅ’¸£ä¬[î%A«E’ ØEI/@õí3 üoð¤ük˜cROÓ̵o«,VÕE1É•q„RÍRo÷ZÒ·ŒeúiîøG 7ÒK€CWP44£;¥Ñqû++a Aí›58 FÆÆ²µÌŽŽb§Åô—¿øa¢B“é)5qùÙÀiÝóÑ„p½N»Ö—A>®ð¹{¡Âc’Ð6×Ý­S,©ÊËRAQn¤Üo–Ü'RüÆâR@Üqô8œN.]¤š­!¨éº¶1ö+E“Y0öAÝ–¼!Â9Â~›±v`'6I®ýŠâö'‹Ë}IÏ ÑQÏŠÛ9 º•Äf'®±2ঋΠ­ºöj’ø])ËA®¹FའÏÔ ëÜÃ-Dj¿L[ĺ÷ÿ¤ðäI…? endstream endobj 556 0 obj << /Length 3010 /Filter /FlateDecode >> stream xÚ•َܸñÝ_1o«ÁºeQ¤®~Èqà,‡ìAàÑ´Ô=‚ÕÒXÇŽ¯O]¤(f=†i²X$‹uWÉê*‚ꪈ®2­ÃÂäWÇË‹ˆ ÃùŠÿüÛ %x@6G"ʉþ˜•¤açöš©¾Ü¿Ý£$ÎÃT§jNÂ`¾r¨¿ÌÍ5þ ¥#í~žˆƒé–„‘J89œçKÝ!f ;}wê‡Ky œ@<4 [ZÚ….¬ˆ-yjïI˜Å™÷<ìC”DMX‡ 9]ÄÌ*„?¦¨™ª8šR[#lW´UÃ[+F`Æë\-§5Ý¢#ÃȺtP& U¬9±0ÔX†7pÓÐiÈM™Àð š…£Ölù‡æŸyŠq–1N ~ý>ÿÀ^ò< Þ^ç:è>ºÃ+[;îÚ¦«KY"=ç‡Ç9¨€IV¶ä["24ÑÂ=Sð|Z9TpLÂÙCÓ¶<*Ûô%"6•Ÿ‰í‚Á?+âmÑJ௔‘»@ìsÝÕCÙzdù¾@·1ìLW„&ŽÐ$èêºâÑ,ÎEox)§#tÇSaD|™K&°™è‰‚]—ã<ð)zC·ò Çý<ð zÒE&ÁËýÇüæœÌé[Ó;Ë…Œ¬Pã„l˜Õ*Ù¸o”y˜%kW·§X:³4q¨çû„†õX®Ô4\dþÔG”÷gô9Le³Ác=@}éŽd°,b¦BŠi¾ooÇžc(‘£MPŽcsî6/!Ö.Wý¥ld™] †²;×<ÜóÛD ì}¸kœ¼qû {ªz<¢e9ؘaK ºB‘VY„Ê@<6ð0Ó\äøú+úƒ¤`á™Äç ‚}³¡¼JËM\B¢wFáB"ãïEASD ú®ÃÑOФøñ°ƒ'ž(- Þ Üsñ0:‹ÃDo\«¼µÙˆ¡ìùÂ<Ì×|$ê0T|E‡ P¼á‚þŒ:ÆÕ£ªÏoyô3ÿŒS…'í=óà]ÊwÞÜQĉUpn˜¯2ERf 8‘Qè¸J÷&¶ÜøÉ¸o€GÆröë³"f¬Ø+Æ"^XcˆŸ-i…þqAãd]p™óZþ}œ.KnǾ'!ˆx̾£„2ÈMx5”¶-nI4ÞWwÈ;qÊŒ†Y³ÞÍ!;Ë—„è'>š<»€B*ˆ߃ò’ç@§®âÁÆ-»r~/¿ûy¥ØëPwh¥ ‹ô1I ó$‰ÙXpý±3Ð|®J"Á“þÒL…DZ‘ÜÐÛšÒèß9ˆ ælo¿“÷ãz¢ÃTý㡔ȡWb5f?F+.MÓIj½Ö`¦%Õ;ON:këŠL·üRøŽG;NIÏWÚã,ñÕ×u¹YòK zwI£®'-yo?bˆ!Ñ‚õ½;9’—÷fÛŠ2ŽM˜Ff7íil™žl,©•=5-R«œ’*À-»¸|8!ëþ¼ë0¡ª[&w|øB~1^Y5ã}[ŠšáR)\ßu mÔ‡)‚wÓšØùžçl.™­mxÑe{œ!5¶v |H7ü`<cµºf¬ 4ȇ¡>bî¼çÃË£¥ @Ôþv¢*a÷Co­Ôúd¤&§4¾FŸmž’„Æ&+ž# ã‡.‘qÄD*L‹ Õ#×r™5íô‘zÑ*•§°ØwMm\›‘0¡¨d}¥Ñ­Ñ¯«ãࢃ9»T6 iHR¨ÆšÊQÈYH› ™€¼mg{¹çSÏ3x‘¾ÍàÈ÷H¢çÕÍZï¤1%ã#Ey:mû7÷­°ì/rÙªêZGßUmy)¥µ‰fÄð ãÚˆ1Kï×ý`n–ãVæ¿[£‡9@V4_€AµWïè4K‚¯Ÿž9ÔÀ–»rQ#†0Û¿±´Êá¶™|­ÑËI¶©”ÐtgIEÛ¼–À·½:׫öу‚×'ÇŒ³ËôÓ^2ãwx“Ñäw×Ïmµ’$4ÊÅ<Ô½½ú& UäÊ­Ñë°àñ±Mÿ!=ŒÙݬä›×.¼ÌJ†=äÄSªŽŒ¤Ã?î‚,Í%¸Äöð.îðÈuÚÕÕv,“µ1ùаkEaOýð¸[rçl¬©[©Ä=‘`ŸEZ'ö-¨ëÏJIGl¢N[u¿ø°ç)¶µzxsâÞì½´ûÞ¨$õtÖ¿\u‰Œ·Ý—´†œû¨ÙŒ¤Åt¿4]Ä3IAyzV5ù;#•¬•‹ËE•ëa;… {S¸2 '¾àaʯPÈLo”³lå*$©œ”Tg U×9Û¥ZÙ¥bƒwÅ o Ó,}NO1J]°d/¢Ð#u¨èò=ûõaêRatö µÓd‹tŠWKˆàÉÆ˜Q‰;ù½Ç,`h(¸ÔÛN¡Yt€:…¤êiðRõyÛ7´g»:m{ÐN¤ó¥< ÜiMgÛ`t|ËÀ?=Ï¢nKÐS4žj)ò܇¬ó«ãå“þ(=0¢ñÍûè¥ÒQ˜”ÈÜ—*È¥ = Qaâº|^¤LòJ~ÕºÍÆ÷ñøõRi?xuÁ†xðŠm×üA5ôÖløë ‘ŒG®Ê`XÑàØb®;ÀüõÒØÞ÷?̨8,–ºðs7ë‹Â¨ð¿Ï¥Ö}¬H«»j· y¶½c©–ß[¨Ç¨ÉN‹Ö¥b(ó–v‚Ï(DË#¤Eø¾D[ z)øÓé;0@V…±|Ù 2-NsNŒ¿ÌTÖ|Ó’;Zj¿{ÊÝrtÛue8ÕÄc1u„2YD§¸´ûUçØÎ5ÒØ~‡Žwx(c/ޱ–+Vñ®Ýi Ý0£æüÚš¡³H í ÓÐ…ö4¶zaTqÌ´ÛæCè; æ4yâET}ÁŸ;FzL B¥±àG˜xï é È"‚Ùµ®^#ñA=E>¦ K#-Ÿ@Ÿ¦dIâeÜèÜ-A¨Ÿ»Šh)2¦~ëF²E¸þ(áäý‹Ì N¶º®  PIÝàž3¤šms¡Ç»K’¡¹T«SMíYÃ|@°KéÒû¥ÌãO‚T¹Íý¾6N+ð=Öß3„|ø/ìqŽO4:øÕ6uÅ@— àdÒ#Ä¥ô8›eí 9÷>‘ª;ú‚ £ÿÕC¯B¯ØÛÅ=ýôâW3ÚîäÂýå3Ÿhü¦pœûŸøâèåS9_ Î6Zš¾»áð ¢(Œ7%±¶n7߈\LT«ÀçÑÀ1)úD_©¯-”ÛþLbr7(û_wþßUX: endstream endobj 560 0 obj << /Length 2850 /Filter /FlateDecode >> stream xÚÍَܸñÝ_1o«¦eIÔ câ$^l²A<Á ðzZb÷(ÖÑK©g<ÁÂßžº¨£­^;oÁ` ²X,²NVU‡7ü…7Ep“)åq~S¶/‚Úã þþËPðö€¸_`¾¾{ñòM’Ü„_ExswX’º«nÞyÿèêqØí•RÞûneÞã.Ê=c‡¦{yêÅñîýÝ_^üùn:)‰¢o¼b~ýNiû¡ŠùN?øBãƒÁAìU}«ë޽å¯ÕÝÑð°íXóݻۋýƒ)û®b éªÓnh=P„ÏÈàÇçaä CÈ­Ñ£±Ž¦î.¨ÿ„±FetÆÀh|³3?ósG˜I>ó‘dž¦ Ð1°ofÊi–z ŒUj·ï$HÚò  ½Ê´« ³Õ<󲜓y|0p]V{[gH¸é»#ñ°Ÿ˜P~˜„ÌÄS=>à3Žƒ3Ûázx…l}{·vç¶<î’N:Ùw@u®ˆ:á˜îŽ‘Q”‡NÙ¤¿áÚ =ŽºÄ•#»ÇžØ Ö ±þâбÃÉ‚xZƒde¸…½¥.4½8©#‰;SšaÐöy—Ç!©™æI[ݶ1˜‚R’ãtõo0P`jÉ óBbŒƒÄ+ûˆÕún¤¢5\¡Ã´`%¥ià½Ùåì^ˆn>éöÔ˜[Ô_L\ T3‰Ê à ˆšÏIÀ¸Êæ\¡Vqö/¼"xyºôr•~+¸9]™äøý»ðÕa|/è« æ~eû;6Ì8Êý"[ë‘D‡Ñö©Qâ‡AèÈ}ÿNÝþ$áÖ©IæGY4Šì«HdGˆâð©n}`³çɨ?¢PÑ‚pªþ*އQ°zþÖ’]亓ÅHˆîäù+EܸOÈžô0a_³ˆòÈW™Z‹ha_1xzÄÁù7–¾šµTÄÇvK\*q©•¸òcäÈ',,§"3¸Â`q26ÍH6€ùEeIR8Ñ õ§‡ºD?0:‰™:C]ÉA(6ŽdAä§aºr–µÛâ±* Yµ ý$eé#ìÕÒŸqy}[ f¿‹»ñ`ûöbïɚǺ?ËvƒÛÉåv2¹Ýô!Ðng+º¢—4/¾ì>aâ§*]G×#[)Í vTšˆ ÜÓ2xBJ Æ\Cá-Í…4=.ºDÏß#æU;~4dÜþNæIºP*{ÁŸ¢t¸¯úИW(€#00^£˜Ü ž³¥a3KB?;)®ª0vh£ÐYpª–!Âø(e0jEs™'¹)½a§»ŠId³“<",œàì•@Úž%™æt878 ÝëÀÌ.V¡÷CýHá'Ú€>%ÚEä4ÍšX3ôB¸Cùóþ­—)Éý8šRý¾?nÉ0V3L2dÛ‘ç µp™Þ±UY,£ÓPmÕqu÷;µ££udñàªÉ©Þ¢Éé†!Å}”*ôÀÄít8=$\@» ,"Åuwý'%ß b÷¤Á Ål’C ̆ç®çâ­Â÷ñí뚺ãš0Îç"%S”¨ã“%x¬+¶;Z&~±JÀ©”$D™Â®¶¤¢Ég&3fòªßº”u@Ï “•t\<#Å#¡ª˜ðyÊB€ÁNaÒA”´Áì<0#A*7‡Áv†~ &óü¼™ûCÁ‘Ïç|[½%oJ¼·½œH_phê0Lóg¡)ñã4õ³ôÂ'ëÛ¼rX,  Ñ´§7[·†ŠSºÅµù]Éä]óíϼ7O¶7Ýw§%©ZÛäA?XÓ=˜z„r)øD5Ó>‰’¹vûë{Ðí&¤W üÙ f 5%O¬5˜·=UyÕEÓrúÕE]Ñui’3 ôÍå-'H šzvùñÍ™AUMY‚XÁÄuÆ\«L=’M­@É) L‘®àƒÌÀ'ëAðùÓQL~â jý–шðµöYiô,Lœ-<§Hè·Éè²¾ ž9ü†W‰’t¦¹~3¡nÍ)êFÒ@uq¬ùsu7zdÿÑ6ÞŠ¶ìLä>W/³4¥i}zâU‡[­;Üš1¨P™'@P}¯¤4ÿ"¤pÀ’‚Úìkù=Þ\e™›U߯ò\6Y3œéà»”oª \…<[&È¢',0¶l"Ký ¿¥*X4 ‡Q[ì©r^T(_åÅúÆS®A¥ÙjIÐpÒ“VÊRTP5æ ‡#²þ<‡BRj[Ô2F+ÃpÍhs·6ÑûFôçt†;ð$âÎçæ?½¥$ “½à¤ê»­¼OÄÄ9YÌy:~1!£âÑ…›gq¶hBÃú¢ Ò¼¹ØÆ¹kPš6'»TðVÙ¯òsWw\6W»ÍnàONU}x,M y˜ Â%¾æ÷X•›–µ-l/æA,âEð'x†ùõ\[§ÝaE¤1Ý‘Úù’¥º;q ƒ¯´ÁÊ9ªÎ%é<£Ÿ€à[à•µŒdÂ4лÅR/˜€uWA‰M ZÄuŽ9bgWzÉQTø‘ŠÖ-ÿMŠ}•Æ‹°Š´‡ë¿'½Ý…ÞÔ˜8<óë³¼×±’z+?)Ö-`=\dU`¢9®<ÁUiÛat—¿•_KV°‹+¿¹zVí3TµåFà‘ Šõ¿!%T°Ý ž0BÚ/RðöUûK´™…INPËÚ/Ñ”“ágøÕRÌé¿<Õsn–GX¤ª8AW~–ËÏÆ Ë{å‘÷'1aÎÀïoµ) ,ÃÓŸ¦4<‘ßš7ÔЋFBümñ¿nÉmÓE“ ®Cá’R#œÌ¿"¤ÑÔš¶†ŠJþ=áôÕLí4ß§S`J#˜`4œ§ŸRùpÛé§S„>ÕVhõ™z-η”FŽI&ÅjH>ÿ–˜bQ0˜æ|ªU(£5©åñ×KûGü/#œ§ 8_d¹óÏ·8¤!çò ¦MMi.Ü/ÿÿŒ†° endstream endobj 563 0 obj << /Length 2276 /Filter /FlateDecode >> stream xÚY_Ü6ϧ˜·zŠײdËÎ=åîÚ"W íÅ!É¡Z[;#dÆž³=»M?}I‘òŸYo6-XKEQEþ¨›þĦL6ZʸTŦ:½J<µÛo¨ñÓ÷¯óí€q7ãüçí«o¾Ë²Hâ2)Åæö~.ê¶Þ¼‹~iÜÐowRÊè_m³Muô°M‹Èv½ƒîNФÈ#•m?ÜþçÕ··ãJYš~¡JÈù²Ny¡b!étÞî@…Ö5¨ÉÐÇÛ’j]½DFfÀ¯ŠÚá`;"]  ñGwlÁÐY$è“ÄI’Þ0)i#)I*Ê‘”3)•$XŸÅ¡íf å¤ÐÛ «¢á‚]øŽýÝœÎG{ƒ¶Ë£ßÖ¶Vˆ¸Ð)˜h¹­µU3g* ¬_Ñ´”„u-s²DBC“JL8; ‘}t=“ÂY#ߎ 5UÑm¶8Ë…ÔþR¡kü ÃùÊX Í-HEgÊr©…ÊúoS»Ê ¶Æn†ÎWxç ÊbÞzçÝÎÖ5ñªu# °b™Á4ïV­ë´˜…ÑLg*ðpØz–ëèÍýà¯Ò¤ (ÈúÑß¿ÎS 4†;Ó^ˆ·?´—c½Ü›¦Ðq^æKÓè,õÆA«d"Z"ñž©c†Ö>x …ØÄ$Â_ÑË µáÛÝõ4âžXsîy´¸×$‰~äû³©,Ï© O2ç3Ió±`Òë¾í‚4ôun¯ž‹JeœªÑ»?|Á¹x“)¸_¥^DÅQá¤2êQý4ñ~Ÿš´º,´ƒ×âØÑÑÙQo݉Äé\UîÛöÝÇ=E¥“…EûUõu'åÜ­@¼wsüú“yØfydŽ®þR³È¡jýà55x¦¢Œ;7|V70¤NôR·¯?£V‘«÷òUìšÅ¥,—®xKÎQ^Ýu¤øP ß!°ðU†VÕ6½ë½ëæÉÈhès„‘¥„³qä”@:ãæxüDýÞBöà`Ý1ùEN'ƒ9)èIÉaL'¬?-––EØzrZzezi*_@ï%rÕòéø”:¸fÏ ]{"Š›@¸b&ÐǘYƒxîv}”R8¨çÍÇPÕ4_Ùø¨ •¦ ¬@AŽDEcòxOãt@@˜6‹=Óí/'K)½/˦; ³z F¨Y¯Y°L=ÉÎÀ/ÓDªs–ù²¢’§i8x°¢Ê…VDyŸdIØ*Ë,ÇÈ͞Ї­ZÍ{ Pà ŠÎ:Dç¤ 4z)|VFÖ1+cgÊÊ2“Ñcˆ j¼Ü[½‰Rë®ÑßJØOc[H”`%ï¬öŸ‚ÁÒËwÛÒpG,ÓfTZŽ›Á‘Þ²Ôõˆ¢KPN?Ù…@ ®m(/ Xç³hç5øÿ‘6ñ<»b¦b9ÎÃ4Æ|ÍÚZuªgÌïýß³ÕÓbch÷æ•*÷Ë\e[Ç8ÿdBx‘r–hq„Ò´:kjsw´NÃU уm¨sé}¼À¦GTK:¨‹á«àGgi«'‰æ%Œ›?‹qßCà÷ ܹ¼Âs JÁANü;J³Kþ:þLÏä/ïî4?Ç„ÎÀô ¬/l¸>:¹²É¯n8e)N€9Ï]Èû•­Çc™'³›Å 9àxlñ`™]]eƒ~v~˜¥›áÔAB9Ùúõ—•-ÿE¸ˆ{>˜ûššË«—„»wm­qê£ižJ7g“¦°d±8±¯gG»"ìÎrŽ…ñ¼ªq"ÂÂÕaÅOÖt\DÈÍÚJÙË§Ïæ{‹w1Éy„¼¡3 ÚÐ3ô )Û—;DšÊÚ<àhqZ‚–ðmZ&ôCçªÁÃèZhW¡7 ¿› ‚Wp‹"‰¡ô&ÁOm69•N9~û Ð ;«}i’Ðöu€ó:&aþ@ìéÛA`¶=Y)lŒ…›ïú AnÖ}8Ë1jSN^9.™B£ïÙ+1\ºæJíþèÏ2öAüçJ]A Åu´„_…ŠKdœ»—kJHÓtý±Ý´M8oì2–PB=S%ô7ôÐ2zÎ 5 ìN„Y±×]j¬c„0BV,æƒÆnWlõqµHc™ËEn•˜P 4ÀÖuž­TD–¡`Ê,€Û lÖµ]@žè6Hd<›=( ÊOš3Ïì$Rþôè+â®&¢š€¯¿PØØ;:P ȫŎŽËb¬?c3Àp#´ÔÂ8¬‡ ê×`÷K¡F½ ITz])ð%pW|!·'¢anÀ³¸wÏ#3´‹ûVæÕ4Ìaæ^«Œ´€3 iš ïÎ é>ñ¬–ÞIÜn-Î7ŠhíZÓÉú'Œ¡ˆ›Çb¤ò……B žGG0ÝøŠˆÕeº&ñP‘!¨FZ@¢*ÖʦkhšËøŽNÂäû•˜išðb$%¿'úךžsó`©2ê½qG¼j†›‘eÄÍ_”·%M9¥MÕŽÇd‰ÈÀ@®0ÿŽùI4XÛ{ðµš:h×iÆ5?nÓW W¡w$ø ޾ÅW>lá^CR>_†þõн&õ4þÃg œð®ý?öyg¿x¿Ç–¿´^iútm»Z«~V´üK¢Ÿ@€"‰åu¼ÿéÒŸyæEU鸘RÑß ¾(=d1(¸;7–«š0P¯\8§Ra‡@³QÌ^c„$z„$:ç7p03ì;Í–Ï`¶©ÚKx“÷À@)ž­È³Ót^Þ¦á 3‰þöw& _ßÁ#a!ü¥ƒ‘7?þü–„U-¿ÌÕ@¡Ý»‡ñ ƒcïöcŒA+Nr²Bû ªP[õîéÝ߯m&•ùsøþà*‡Æ !@?)IB=k¯Ãï6NQ²Ñ endstream endobj 569 0 obj << /Length 2324 /Filter /FlateDecode >> stream xÚ¥ÙŽÜÆñ]_1y2öÁ ƒ<ÈŽ$ÀXdi‘œBrÄcWèãSGóÜ^G‰!@SÕ]]]]wqÅ!„â…‡D© Óé!¿¾ iµ;øñOo„¥óÐ_Q~ûøæ÷?DÑA„AfâðxZ³z,⦅šjè|¥”÷]Û<ÈÄ{z©Wv}¨¯D˜ÆžŽ~yüË›ïç›")¿R$¤|)S¼–Iˆ4Hqª¡4‹eš¾Ê[3”Åûk•wmóËpмŸe9È4ˆU|ð… DÄg&™Ì‚D¦–L0]†L"DÑŽo¸¥MgZ¼FÊ”"œH³=åÞ~$‚$D©â M%Ÿÿqlšª9³)þmmÔ¤“@K ×ý¸Î÷óK™t]•È@Åj:ó Ó?£™Û±.=WlrƆ \ k;^»–}oÎ¥K(p¹ Kû«µGó¡.­B-ÆDŒ×k“ì„—|-yÕ<ëYÄtíØ —ÍÐÝD›¸´*Ñ‹6:}W—v<_|-%¿ ªÁ÷>¡ø2Zìù·iHKe]3V” »nÊbfayNçºò ó ϾٳëJS×w†=M*M„ðþQ•Ïh‡öcŽÃ3d–Lv‘Y:Ù¥çÙ"ð~Èžˆ€Ö«vìA0j¸¹à£ÕÉn_ÊÎRš (VÂíBw%‚÷ÝEÕÉÆN]{uDÈС•Uòz ÔT{ß[?K2/G•ƒ+ãk?r0õiÚnÚ¦®šÒt¼ŽÀ5N5`Î^Ï«$³>éÇÛ­½¡%yöî Ÿ+8ý4_Œã0‡38UÎaÖ´l#‡“ê0@hmø ïþŒ`ÛGÞ9M¸Dågs½Õ¥|ÃOk­?—·L6\à%UÏH¾Äú¢ @ж±é±-t ¤ØÆvÿi¬ºáç0 ?ÂCrz1!E{5Uó‡÷áÛ… 3͹Ü.õŸVlŽÓ2ÿ—t©ýµ’°¹Û]Ä«âej†$KçVOþ‰r„ŽlÀŸ£@ÊèÿqdÉN0;/>WÃ…¡ÜŒèݘ,À3'Azs*ûaŽÝš)UÐÊi(; ù5Áü³„UÊ4 ”Øĭý&Ä(•wa:hù·í†S9B$äK¿±zÁ=”Âðž¼mP¦î:¥%3Ì S3 á±v!FS3Ìiˆa È|pó¾H³Z’Z-nBÒù^ð£(‰¿Ö^&„då ÖS¡ªa@êXráM‚8{)`Ú¶ dÅú+ïÿÖd$pQ«ÇÐ_«ÞBïêÊôeï Ã/ „Ì–F¥ƒÒͧ2tWoHÝ PîJ±€¢À&Ô_Xq™ÊAãÌ{ífT³T<å,ˆ€~âNhuaŒ>MçÍ`¡’Š<6 /+Qi;pr$¨@AA˜¼¨áUcºUÉÈ. €Š3t19øYùÌ8¾ 3 ÔÃwË Y ¦Vƒ¼ø’·}ø¹jzWBää “Äí2 d<Üïðvº×ajèG#­œ™r«ÄÐëäõXP—‘$ìö´Ï¢oHçÍõcŽØD¬)ܳ%ì-¾.Ýñ›n±w‹ tvá.5a¶ Ã~1Lg Ý*ÁL>¡°Õµ%7³Ÿ]5‘b¯9_D2—+ÊC¹tÇkÕ{hXæÙŸª+¾æïI÷X˜ûñãPÌ7åùhºÏÂÏþ¸ûôi@•Ñý§á'Å—tjº¿æö±jk çãí¨¾h>Žˆü¢D|‘kd³³:3×ji-Ò»T;|èoÇ¡_qcD¯‘tFœÅ\hùRïª9‡¡Ì¦0hö=B(§õñÎG9ãæ0g(è)[^c_`˰rÅl4N÷Y÷¶÷ñ»­Ô"ˆ£94Îè…7™ƒ7Àâ®~õ•S ÆI%e£tnè!/5¥ý Àè2Q’·ô˜MC¸b3‘Íq=ƒ­=Ûrr•sDˆ…’S,Q“2Ó¤I™ÚNK¾È¸ÄïÄ¿n}%*ÐÙ¬ Š9‡Ê¤Dpð€!T|×sc”ÅÞg— ÷ºÅæ›ÒõMq¸ôÎÜ+¹|[¢‹Ùs¶ª/mº£ÒU6¥MsÔ|©_é¹Â¥,Yçê,øqºs$RƒŒÂ Õ»œø§ÛF°›)ááØ Úì&Zg0ha! ‰+Ô!â‚[Z™8äoë×÷•ÍJêq•›xçKC¤é`­¨ì²xn*ž ЫL³gÌ)ç©nö‹rÇ¿‡¬º88."m›,}w”Øþ ³[,½¿aO5^ˮʱOÓÞßÇá6ڞ퇇LyÈtx¥mƒŽ[mâø-f° ãèdÆzxëìUÓ„Þ*ÞÁYAÐè¹¥¢¥gþ0R{‹WÂoY/Ôò1ÚWç[Ai›3+Zu†!oÅ£þùÂãFÞá jp†´Ðg„8õðÚ+¨D “lS}¿ü|ƒá·*p_—[é@GsP:•Ý·šÕ÷ùÎ? R‘,¼ì ÂÙ}À̱Ðú~Kf÷O¯Z;S/ÚõͨÊ(±C"Ì>4%Ñ”H_’ÇÓ· þ]pRklÏl•Ž5"UÉÖÑ­0¾Ž…‡ó{”¾ ³w^M,ÈÌHDŸÀ ÊÅ£?««é“îÛЄõ‘¾Êà}_ƒVXh;Ppƒ“.CuûìLÿJI(ÿ»+« NæÄcó¹3Wz„š¿úø "Ô“Ý·¸B…¤ñ§žcñ;Ík##”„°-½Ùñ¥:Ýí1ÞØME¼HÚ¯¸b'ÒŽaÕÃ_G i5ž ¹×ô¨äíÚôà ™_¶ŒËBÁ€ßœÿ,0tØýÑû•ðZ›”6·Ëk:ÓäD Áž~;36Ÿ›=ˆá…«Ë¢adR.¦ªšáä4)T/5—ôÓØäÜ2 ïªÙIþÝÒűØZØzÕæf Ý] yg4ç;+zÆþC‰EYHí".ÓÐ>Û÷P‘¸³NbˆÓ7: ÏvO§"ÚYÆö6‡ÝqÛ¦"ií‘ÇÙ¿Ûüt¤Éè endstream endobj 572 0 obj << /Length 3475 /Filter /FlateDecode >> stream xÚ½kã¶ñûýŠ‚ ÚæÌð%‰Ê}jƒ\¢@f‹¢H¨Î–m!²åHrö6¿¾3œ¡^+Ýzû¡·À™"GÃá¼g(u'áOÝeò.5FdÖÝmOo¤Ÿmw4øÇoÃmp3‚üËÛoÞÇñ’"“™º{ØQ=ìî~Žþy.»ö~cŒ‰¾«Ï÷:~¿×.*š¶„ÇQÒ%‘Mï?<üõÍ÷ýN±Ö7’„/Ó”8+”±DSñér¿"êsqFbº2¯€”LFûº9å;$ö !Ó¨x{¿±2Ž®mÁ‹ÇI†’ñN*ÑÂZ ”ù6›]yÀó脨X ™Æ2?ï–ði%PݣʑhOðÎÔ‰T©^_:àq+î7‰Š£‡eŠ“T˜Ì ;Ô×îrí6z·1N [l”*&fÑÂîÆ £âéîÀ­DGù/R™ºÙµôˆÌƒ‰M‘wEÛÑô¶&i4uEõžÀ&'“è§¢˜Ûˆq°TwIœ‚–˜ì$@oFà ¶2Gê)ûî˜_º¢!Ò”¤ßŸô$zs®-Ïšöÿá-1Yg¼é˜Ë—ùˆÁ¨ù™”N„Iì]b-°P¿p¦½/œiŽÔSñ–H¦ãÀF»{Y*j·MIº cZóŠh¼"z€SXfûò’¼Ê c[‚¶e&±JhKXW÷›ôðý}f¢àkÒ8úé‚®0*¶%XŠÝæ~û…÷«2¡tF¼aÀûû®–íb‚˯4ÅXðhåþ´;Zz,»#VtZþWÄŽbÝdàà¤zæ`‹²¥ß’¨½~l &ÞsÚS‘;•¸ñ3´hw©Ð©¾Á쬗 ᔆy Á¨ç%ŒWx +Ǽ¥A7~o‘ª,ʅݾ\Œ"Õi€ø™!Ü„d!{¤Äùa1¨h 'ë9ðaU"dÒ‹å±Üà—0%BËä¦d“XÚkr°Ks£ÁÛ²]Ñp«Ešõ²ùð/:Ðé*ÐØ4íwîIé¨ô’M£º­ë 2g3?õ‘d(½Èe°ýg‰±:‹o—óWè2íC¿ÇÚ“äŸ šV£msúAù× ŠçÆ󘒂-w8~bÅ¥©©Í·à…Œ[>†Ž3‘ †~xù´‡÷£k¼ÑVÈ! þ°†ÓÍpvõœþý¯—Bÿ þf"9ÏŽ«ç' ‰#÷îEê¨-g6éžu°LÙÊE®pGAÚ÷G/nbìWóþËÌ£uýÑ¿¿ç> m·eÈcý‘hö\wÞ]ñiHËÖHP\çà÷¯¦7þTìž+$í@n§¼,0 <öçä{Ž~üéï4ø.ËhÐv@yÞìè)ßí váå%‡ôúýMB¬3ã1áŒ0X=£éÏÈTžo£ÑÅ"½ëÓ ŸBülK?—7¼˜W¥Ý¾ZÜÑ$»BmëÓ¥¬ ŠdTGÊð!c»^¨d«›.¬'Ò=9=ÉÃTÖÖ×çna¡f8ÕÏŽ}fK³¿ÈXâ ° ÌìŠ`!ÏtCþÛ-2ÀÝÑÝáåyWB®Á4åLZí3lXÞÕ×U„(h²¿VÀiøê˦•(\_ËÔ¤Òöþæz^)’6é-óFDºâ ô<ÿR¸ÃJ‚ÞïïPø–t1SAÚÐq.M( (]y‹ú`£'_ð\é…m}­v4œ©Åƒ%£’#úïІüŸ¹˜£Kœ¬µiK"‰Źàž#=®! õG`ÅÇûHz¨Š–_‚ÞM=¸NZ!VN“e¨1‡ü\Ê%~8a]¯Ëˆ‚ÔSœ,f¢aðû} •Qu%Ý죠’2ô´+ÛK•{¾µ4“óï²Y¤™È†,] Sl¤ŒWnÖE:Cõj™gÒÂÍ«p‚k[”µ ©N6KÖ8Qá$Ä9¤x” bîñ¥!ÏõU$üö6K/å¾ÈÌú|´øíêÕf”Nö˜/PÓÆT¼­ç™~Ý8ŽŒÛ6ˆA…V•t½ù1^RpÒf#µÑ‹eŒ×tŠUËBõ•¥Æ1:5#²˜»®ébwêh Ø6Ó%Lý!Iì5)–ôïMšd .ð(C%/ñÈ)¨â›x¤^Ç#÷àQñµ”nµaF¶ÆÞ=™™ÙÇ{j“ôqǤ)jîÞë<,¬æ¥°6¢þÞßô‚âw„*‰NåáØ¿‘¾Æ´Ç8ê÷aÌ-V ¼W6ªÁMæ¢ã(É`ÏÍ„µ”9ÿ\!IÅPø}ñŠ—"¼†¹7Ç[p­ûÏÕl­^M…Cò¦r5#þpv£É¤høè òÉç ´$d<؇A“,» 2ó€ix}½P]™Ñ~†P-³Kü¦ô”iÍÙ¶]S_Ž\gá¢O8°a÷¬4…IN2=*MÉ$ ÈÚNë,*WmjB¹ê¨\µ)6(ñÆ'±Ñû ›¼~Žª·-Èï{ãìG6£ÂßÁÁ(!4 ¼\àá¹éí3d3Î鑾ø©¿cïà‚b *öËâGq†¹RÉxɆœ .zèC Œ}ò±`¥£&WŸ¢C&uàÄz¥yføxæ3—öø9áÝä+9ôðùéRù¤€8i1f(úÏZÌ俈 uûÕÊËN[sDxÇ,Ô¬×ôoŒxÓùïÅ·4„ürÑËõ°ù¹ëa·M½¿6þ¶ßáVöØ>ÿD ŽúßbhƒÏ7ø†Ç ø­ã­è3 endstream endobj 476 0 obj << /Type /ObjStm /N 100 /First 880 /Length 1706 /Filter /FlateDecode >> stream xÚÅYMo7½ï¯à±½¬È!gHF'®‹éâhëú Ê[Cˆ,’$ÿ¾oÖr­heKâ éÁ^j5Kμyóµ ÑkBÌ&%\¢!çLHÎxƒïØZC {Á5ޱdÄáš¼‰ÁáÏ$/y2)n“ÉN¯Ñ8²‰lœ Áöp.aÃ`£vÜ!œ²3ÎãÁ½qªGÈaç«ñ8'lYIØ[¹HÐ:ëBt‘KA‘YÈ´†X†lÂ:í¾¸ƒUÅ[Q&˜ˆ¯ƒc, ÃAµÎ†VªjÌ· ÖvN T&‹"™ rÞ‘T =qÄ2Þã@v€z‹…/¢ EÃ0ÄG}œ œ`»l|Va0–táMpÁW O;ðV°º`,¬ÀAu .¤Èëã àÉÞ«¡gu”÷ ¹ÍûuƒI ‰ªÅÕõìÂA÷R´ç‘>žu/ü ¢wá;˜ÌìbÄ*ŠzGí €X¼.ð@´ú>$Øä€g¨Jp2« lj lj~ !‹Á  *œƒsŒ´jt ê&ü‰R'aOá`PCQ§0Žˆ Ü•¤*Àdà”*ìœU;X-up\tÊÄIt^š9»Grˆ¯NR+!ÌŠ*d$QurR ÎgÓ¥991ƒsè~ï±÷ãj ùü¸T*PûáÕ«jðë|6ºh–æÒ ~=;7ƒÍ祹ªð•îûáË]ƒ/†7M5xƒ3šér7[}¼¼o³ûù¨Y´ñÛÞú©¹_Ï>›K•¸.fºÂ1Ã9žgƒÜét:ÃV—m‚P]4AèuãèV®\Üÿ½l?¿O?Vƒ×³ùu38Ã^©"#XàÉÖ È5uëgRšP=Cæ´Åç ~œ}˜™Á™ùî¬ùg<Ooþ²Áþ6/õún¼h¯§“ñpÑ,¾WŒŠÊm Ôj‚¸öJŸjñþúœ™KM²­WÿãOƒÓ4…Mï'“«d¼µ5!4wÉ!ÛÔaõ•ÜVžm'>$¤!ß%£f8Y­‘ßbO2†DÆ5 ’ßç† ’VÒ>8m·÷‘­xfkÀ®Á§É8q?ÌR3Ù³”;˜Å=0ûZ†cÞ)ãRª5{Æ¿g(·÷~ø€zèS/03uÀ̶Ìì^sO+6Gºæ„bsx776dàó:¤óÎÖìRˆ€ö§ÒA¬•·û–5Í1Ñ׆ùkBo쓯sÜ^EÞÌnï&ãÑpÙ\¯’>ßÍ›Åb<›vŠHÞ£ˆÈF¡cv;r[£Rì<Þtž6ÚeÎÓ6^uÑ.¾oobCÐ"c„¨µ½GÛS;j熃ÂVO¾…Móáh9þÔ´ž\4½Ûç]-:“ÄŒ6-,Z%täÏév8½~èB¦ÛT€ÓuäÙEŒMí@~Àœ¸ê¨KpÝrûEiäVähuí‰Ðݣ郣k gäĤ£¦EŽ´Û©üóým3”¿Ü/ïîÛŒx>›ß—ýBÊsjs\B8­&vó3Ç»ÙÍͪÁ3œŒî'ÃåfB. k$ -œ–´LIês©J\JˆûLïzì%×%h>ˆ k–’=bˆøØ1ޏ4úèÁúާoÔI®¡Y®=ë .¤ð¤åLjÚJµÓ Ê×tø_ùZ5"_Ëæ¶'çHõ]Ê'””T[8ÈyM ñꆓNý"9šÿK]î»|¦b>{»»oÈP@"|Œz\ Agˆ×׈¥ø~.=Bûná¥Øž¸‡KK:cöÝ¡Kb¿'‰ƒß´8ôJÊÅ&tSoàbd·Ó6dB¤:lLÛä(Ö™KûçRtØvÑI¡³V˜Bï‚äQ¸Œ0×N_»„‘XßÇ×ö™yêl¸¶ßxÒy“ª? ìö××2¢ÃS*ŸcžÞûûÄw|®”±L»Øñ9Ô‚áà3QºV‡b«¹g±xjzKí‘ndq*¶goÈ8â¶™ú¶^”.weOî oZ-ô É]b± i·ã6d‚Ï5šß]bQJH‘¥yêwäíAH­y(‡¼Ò©OIú:l­ˆ`~©‚¼~š}\û…®ÿäÞÖyú}P˜0g¥ÃOW¿Ç~<ø`ûX endstream endobj 577 0 obj << /Length 1985 /Filter /FlateDecode >> stream xÚ­XYoÜ6~ϯ0 Ñ–"ФŽö©)’ }* AѨ¼âîѱÕaÇýõáZÉæÚ Ž‘Ôp8œó±«þ±«"¾Ê8 ‘_m›W±Yí÷W4øíÃ+féB ”oo^½y/å‹£".ØÕÍnÉꦺú3ø½Õã° 9çÁO]»I²àn“äê Ó³8O‘oþºùåÕ»›ù$™$Š„”/Ë”æ"b\LãAmB!’ )÷ ÞTÙi·Ã';½ÿ3Ñ#Mz5Lõè6â%hÒvvõvâÕh¢›FUºUmɺ[Üs§»i …{=ºiçÑ|ÛMFA£†µvO‹( èî21I7¨ôžÔšÉ`ìì¥ÆA Oìˆ1ÏRs¯E¥¶º)kšÔnQ¼1Ú„2‹ƒŸoAQ‡²­ì¡¡Že_ŽpN×ÓAzx´kÛ5 *3üËøo¼ X']Z‡i”2´§¹Úµ¥YYPFY’9Š×ÀŠ]Wð§žPÄIÄynµÄˆ²›Æã4’÷¡¶iDÒq캾)ík¯hŒe8v þ w>ù€ŽåÉ, ±lôþ`tJ§9ïðœ²8‡ t‘¤ÄæppoÊ;õ= ]¯ý=¢½/Ûq¦ÝöÝnêëœ ÷å,[oüŽhóë8Žñ/ŠÍÇçÞå’â±ÂL€)3{Œö5ågm¼9v‘ǫȃõ^••6ïÊ#ø•¢PwLE Yl5N-…S.ÀKBÁò`§î‰8ÚTÓÄb˜ŽÖ­ûñÑÉ&tBŸ÷}7¨h=´u¹ !]ÄÚ:?%¢ Ö8ðúÈá„م—½›xÑñpÍ$MO' CC¼¡Oãôn#ePÖ“}‹á‡ÏZí,AYë}«*œä& Ê×2¤'H˜ìˆÔœ.Tm'÷º*<5yÁ0^Ó™Ló(çk•š­ Ï”ƒvX¯§Éx([µJUx*Oe2XÆÍ½£U4˜£Háæ©½9¾2‰w>º f‰ŒXø³žL_b"d†í_Õw˜ŽÜ $Ü–Ó Ò œòt­J,îãå½`j4Ϲ²à„Ì‹£cY7þÄœâ`„b 4œ(¯ëÚrt§>5<®Î†'~•c¨-70âùTõ®d˜D=ÉB})›c­®×¹W¸ÜË/ȽÉ:÷ÆŒE©7ù HIÅ\?^_û3,/¢d˜|ùu컇#ÔáêÒ$»ïKˆ©'Ùu•\e–zó*['V›}Y&^έ6 Ý8uzU˜ÈH“¯òk¾ðb°×¡´à­íè©à-W[[ÓônURÏš2‰D.¿*’ 2¶Îg™\fcm%¥õNxîõV ÕFt”dHÝ\¤ ù€,"^@O P!§³ ÑûbI“ó^ùhœß#)Z¯ˆXbîÛŒƒ¢pW>D—àçÀËèDÆ‹ø.Vñ ¯(¬Š9¤_C’„ð¦±KŠ-ÑÙ‚ðdå×èV7H65ެrt­Úªa(ûŸb/ë$óä\E“8R{c2 .{ F\oªvnŠ®—n¯Í-8±‚áp® t>ViSÍJÃíÐHÞ"þ4’ÑåQMŒPAá4ò4+-´/x¶T©à„^q¹?á6\¶AÞà$ir¯I¼8îZÚIʃ²'ŽÈNøRµÝ´?Ðêp,ÁvSgö5•:qó˜Êc˜ž”‹7²;KŠàÇÅ × ¶åh:1|c4`nŽÝÍQoËÚ€2`Ålfîáö/ª ×½›[ ïó]ä`š(jÁEc¨™]=5í@ÓµÀÓAl“Ü’ý{KdŒc‡#=)ÁàÔåÀd-#Ö.&¬‹™Íý~*oñ²8s«5 àú»É²2 ð!½˜GPù]›LçëËäŽpéšÖïSW,!g¸›5RLÙÓ:%tÈB·˜ZFÛç©7M±7m(„.büwôàvØÿ™´)êŸk» ˆLL-IœsÆ^Õà?³ !M[dopÉ@K­ÔA%…„t 8ÞtŽ@âÇ Ü‡Ä™bWÈ^`ɸÀÅÒJgàY$2þ2`øÜxòŒ(øPºãÏdy&Îá„$;°DÚÆ÷)ì¸@ÎgMßUÏIÊ$GV Öϳ<ñ7гœ2N œìÿôlk;ËjÄ€Þ-‹á÷y•&€/ÓÜ ð2¨!™Qƒ Ôð«)zºö9¸P,V²F•­í‹í—'x~b\ÌUôZ«”Í×æã‹¡né9:^.8Ì"fÉÇîÂZ,™mW‘Àß1I1°ý%͈Ò?Ã4‘Lg`þáež¶~ëqQìO•n8Ýšº*É€²2zkÁüo{¦Þ‚°…QP/lÝså —çj0FŒú«õg&W(ˇn³,Ê‹|F·¡ååëTÀƒøœzº#V^„OXŽd¾Àt^u¦˜hV§:§Î|©NÄ¢g0yTÈù‹Õ»‹ls!³ÝÅ’uý3×MÒH©Ûòþb µ5©ƒŠXÈf"Çɰç¾v?Û•_´Ccëãõ)xAuMœœ‡ÛŽ/;vn?hd„ÝaZîFÇbþY9ë0 ¼|üeÖ~#ÿ‹ûèh endstream endobj 580 0 obj << /Length 2644 /Filter /FlateDecode >> stream xÚ•Yéܶÿî¿b€¢ˆ&Ø‘E‘ºœO©)Œ$ˆ·Hƒ&h¹ÎŒPSÞÿõyEI»ïÆ2ÔããñîßãŠMÿ‰Ml)ýL¥›¼zµ=nxðóûWÂòí€q7ãüÛí«×ï¢h#? 2±¹=Ì·ºÝoþíý³.ún»“Rzo›z&Þ§m˜z¦í øÜI¤±§²íï·ÿxõÝ­;) Ã^ 9Ÿ¹“̪Mœ*_HÅû¥èOÛJ”ן ¤÷_¼,Žç‹#鱄³hÕѲ,öü$LFޝxS]ï¿°)^7 Ç%ï¯mš>Úôд•îyßuy9owðcº›í. 2¯ouQõ‘Ù?›¶éìuZ+c7œÏ­é:³·Kºf¡åÁìPö³WšŽÁ nvBH_þvð+"¾Y×T¦/*ƒü"öN­Ë&fÊÁܳÁùs_É!pÜŸt£È¤î¼ø-Êì™ 7Î väþ-ˆm÷(ê}‘ë~äÔw¤fr4SÉx:aÕ*~"ºÿò"+ÃfpÉHY;*H|GV;‚ùr=tÆúÿd)qh¢áß;–ç÷[áÀ ¼3ŒJkœßƒü§C;öND~–e|ä-J*CPµ9h°$œ[ØÅàv£&eÑ8ßàoJ΀ôU% %ý8q*øëj,á«HÍÔ„Ûǘÿŧmf*M²ØË‘Â+¶I#_eÂêÇ«ç†!ݹ$OÂQˆ;“6Ci?»Sƒ„{{ü¨±fèÏÃt'2k˜¤¾J¢¥Óh¤Çš<5×”Ûz&³“ûà#Jz‹ª(u[^¶©ôð^R\Ño¤|°¬“Ô¼L¿p^Ó~a[ÔL6Yíðâ]ïQ"«3”uÒÕƒ;‘Ú`ìÔ†‹(­²nxz y$êCoìe=’3K–ù\{;{úJ—œš‚ÝæïW`¿·«y8#—ÌÏmQ÷«ú™Ng‡¡Î{Î>º,)½Üwö›Ï›ç(t¥ƒmï üöÂ䮸LIeÞýÉ€ãµÌÖ´<_7½;e¾;)é*UꑪFg§z™f^et éæ0”à‰±P¶ä!OÕt=3åMu.J(Çx«À–bÑE…Ê*&XÕ›¶&›e&2nE¦_M®Ò—±ó®ÁŠÒw#ã<Ô8u(ODü;9~ŒbËÅ2Kþ=™½²€ó'AŒ* Õ¨ß'Ñ“H?u1¹ÛÙ#W®¯2_N¾ÕœÑcn8—\8ûðAl”°p‘Ue2ÎX˜•òb,­QâЫ0ë, ú ÙègŸÑ6@q¶ù¾“tŒK˜¹&¨Hü,•“¤Õ;‹9VGL¡Þ=8 fÇŒ!R ÑÇTྶ €ò™„[(`îa2Ž®ˆi›F "\J*:J±¡w7lçcP–ýn )ÔÊÁæ²EÐ`úþÞîŽ@‡G¹îLgù\[ÚÏ<䀰H¬`áÌsqzåtó µ‹‰ÅHk€6´%PuÛsQ8ó‹ ¹;°‚—WçóŠ„(×L´ s  ˆûvŽ9ïË “ xtpR“T€ÈÐ/no­1æöÑ!å„H‘¸^½CXNÕ[¤ëå;õc/Ê÷üôE0'åUÅñ4‡nZ9~— ðêtY#~EÏŒ Éžô'ó†‡gÒÔŠÐŽù^×½e&e³Š ;$ #Í"á¦./kwŸÊsº@è€.\ü±]V‘kâ'™Ë·è%2Xiüß&˶û[X€–EóÓMÁ¸$C:ƒ<€¹ä—šî’)ySw½fXfvDÚ•Á¨¶¸éÿjFÏ5ÄIgð6J¨`,tòôU „òçô ö 3›iÂT­IË+(h€a.–B¤M…Ÿy]`á܈ðÃÁü(ÉepÄ8W~ñOÃŒl$å¬MR®×ª¯7: aÂt‡" ’•uH•È„1µÖrJ‹ô QêËÄCŠP<²jZ{‹½é5ôûñ«ËÛ‚!„pÇDt~a€ØÙ—¬+™îlw˜*?”O^V¦ð¿Ö®Â\Â åŠ ]¢\ô7IY~kÌGp»Ò°'rRÁ¹+`¤ðC1k+Ìù©MÝU+—H?žõë¶„>z z¦S D2‰dÕ¬DU¼ÙùyþßÚ0«€îÎõ3¸TêΗÑÂbPpJv³×ïÒp]R("…j„}¥ô#ȶ´/v¨t80£a—PŸYÒø°äËÌÞé#7°z°ïåй·TnN€²/¨†´Óã¬pÈ¡ãoj b¹Æz¥Ít1l&"h•¸bÁ7ë®N‹F÷Ckyt†¬šÝšj÷Жá«H,,R°zÔ7Rõ Z 3Y±‘›haÀBlî.[HZb•A;ŸÊiÒj&R!»÷Àꫵ~mÒ‡™y€ò%¬­ÀXˆÑ|ñØÌëC=¡ýÉ·>-áEDà·€J³È¼n¸ëU‰ré4e% ÛûSÑ6u5{e ƪ,2÷hÞö@· ð”º>úhgø!Uà{ÑÀo ¡Äݬ¹ÿí*!÷̦=Œßz¯~äò}@ïÌù¯pH7ä8âyzáË)îÁáÞ³ëØjŽtëuÂwN³ðZæ—QêÓÿÕg(üÛL ¦’Ø@·WÙ7Š ª‡Ì>‚’UgrÞ vèÊ¡i«¢6#’5LŸy-¤E^:òüôãÇïÿµZ»Tê+å$g(›k.A)LâÇ/˜ˆùc>°)NTëÚ¢òxÞQãËŒòUøøÅÊÕÍê%¡¸D/Ðr%}ä ÐU7Ç逘×=88åµ…†ŠÛ­ÖÂDBÁtFüðö?ooýé»+ÅP wÍ+¨a*˜¾ýáýó‚°ÝÀ¶£‚®Á®³F¢»ÿìù“*—) endstream endobj 583 0 obj << /Length 3155 /Filter /FlateDecode >> stream xÚ•ZYÜÆ~ׯXçE\`‡a¼â'+>¢ÄŒh$ˆ¥ErvqÈ É‘´ùõ©£»ÙœåXkû¬®®®ã«š7 ü7er“+—º¸©Ž/n¸ñ·^»n wÁÊW÷/~ÿ}šÞˆ$.“RÜÜïCR÷õÍ¿¢ŸûvžnwJ©èC+óèã­,¢fœZèî”HŠ,J“ÛßÿùÅw÷þ¤TÊg²„+¿ÌSVèX(Í<™ÛLuÔ ð-¢Êt ´‡=çM¤Ñ~È!.CÂ"‘±.40Bt;Ó?œÍCc—fáR +•[øn‹Xç2w+ªáÜ£œæñÑ®]ÝHe±*ý¹wÀežDŸÍØlQ†ÕYš_árEW§±L¤[éäaå |¿OÈ×°«ðs0£©æfäéŠZÛÕûq8rëõÛ7xÚÍNfE\ã;¡b‘ò)™*w4!‘éoETo GÄBègJG‹Xåá%ö|Úmãf{Ûˆ.î¢@˜Á]pÇ~„Ýxìàuh‘Y¶_o1,…ˆ³üyBÏb‹K~A;“ž'äÕL ÷L¿)©J“8SÒÊXÞ¦\öl»c3ŸÇžn½÷¸çqóRЖY鸚¹ÈKm\,·Q¬•h×í/‰PàøÑùºªk¥`ÕÀã|03·Ð)ã÷'~9 Þ$Ïvœ¾ÞbW¤@3÷Æy&¿å´Tœy573H÷„¡Îø{4'ÇPÃ@º<È4ÜiB¶éº¢È@4z}åðEʽµé'nbÀ¯ÁOÍæ}g7´=ù‰a䬻M/ h{—Ï/ø.ÏŸç-ñ@„J×{yÎdŽø¶W·cSÍÃhY7Ój5\Ày;Îó¦1©úâxk3£Ô’Ò^bÛÎÀóÜ“ìý0·Û¾êÎu3qÏêÕØº2dlMoeн  zïÛÞÌïíb/~½S¤ú3»iñU…Æè¦¡gÝhíØ *l¢á)ÉUq§ù<7}ÝÁ”uFí¸"jFn—9r BcFQiA¢ØxZ™‰Xgùo{ÛÒëþ"W:û4¶Ë1 #“5ZˆIZ¬/ ¹›š,ë+Á7Ýù؃’çl ‡4럽8iÒ¹wÒòÐa_ƒ9à<‹µ“ ¬r·‚Q"qF¸ßÉ. *™êu#îx'ÿ,òYç˼²’ E ÀÍT­U™šÇ wéZQ0 i%®Z\ÉÌÇ”k"Ùà-/cn#=ùã©…ÕÝ#³9(V6]gùÎ33iyófí­(²µYûPº˜>.™kJ`^*¢€®ŸÐWzô4xë x«èí Ê9ýZì~ªßõ];Þ9:©L=‘æ)Æ÷Ÿß~I›¬Žþ“ntvÐ¥÷LW›6ÈT_bðèùòvS|`m <ˆmžUgm…²²\ä­‰!†•èfHIc˜v§ïº-E'‹¯NèÏ,à‘Ó\¬…þšÒ°¿& Mº–°`mt‘Ä Àa·ê}tÙ¹ãk4 ÀKÍmuîŒ^‹ÉÛá;‰‚ôÿ¡í"0ìÑ#ü÷Áò»ßâC¿†lpe A1N€_[5ù|ã}2 }jÁ¾¨õŸÍWEœkoø_]g«ã^2ÉýЅоæQ§‹+Aá@oŽ¿ -mˆ¾Ê`±Þ㱯6ac˜lZÎ(TŸ§Ùqäâiæà4PLãä%ÞÙ: _ä…¥$L‰_J°Ýµ=åJ\ ²Bfq‘—_¶HîiFÄJxÈØ˜sØRØÆù“µáP¨AÀáä¸FwŒ­vA£:kh-RÈ/Ê|-‰u}!ülf–A--“ÅGátƒZf‰=FÞ;¸ëQq-ÔÛÿ55ϱŒ¨É:Œ 7UDæ2TåuÎþ•#Ÿç¡éKËûŸ0XÓY­=},žHÞ‚BˆswVa$Då•Y~:´ RÑdŒ´])G½µW#<ÓdÍ„Lëܾ\œRTñ‰â%žd’@>ƒp¨MgIÉ[º:ܲ-»BÞ€ÿÜ&ƒÀJêªOàŸ%PÌTôM]“Ι3zýˆnWò“ Ýz <¼Œ…´õµ·Ã±™Û#ÉIXÕQˆ­×n6Gê_Î<7A¼YÕ:æOÖÍÜ8·O)¡bKÄyþ$:ÁàØì1Ŭh=©´ÊКG»FW3UïM°3Ò†Œ•tùg8yÚ“Åÿ.Á0>³8]¤t6f©3òÈd æÅºâÁà Ê|Э‚-g·`x©Ÿ=àÜÙǡ¿Ûâw:{5Ne~Wô00ädMƒxŸ›l¥Øâ‡Ã…Dgh+Û§0_‹ì"pÓÃу.< °=Û£,Nm½½}·¡ÀN8æyD­CŒØ’pò\E÷ä«xÞÔõØLwæC;Ýmç…xNa@/åãü³%¿¼ÝþÑ3x<˜ ªaФÅÏ”QÂ[Ø"øƒ$]¿ÁÇvúãb…+4Œ­Mþ‹ 13p@Ú’$„qå)’H‰‰‡ˆBc±¬¸!8q}°™¸™Rů……Orà ]ÂÌ;öŸOêl牫zzÆp=¿èhÝî¢fjžYÁ:tÅãp>­óÊÕ1õÀ,Àé߀3Th¿ýâ S<Á|¸Iã÷âùq9<œ2ܵ¡S[äy–? M»Œm§š6,ŸÐäfU€³ÒdZ͸Y{”Ø ÀÝÄÖe4<¤J/Ãöiñ’3âQý0_Åœ"„vò èÁ!8¡M5)H‘sTdòÌG€Ó+œõ™w"&å9.ßHòd½%ËŸéd*»<(ZàðH3OÀò8@ R¬Ü“/Ù¡Ý¥¥pvà­ÊÊ+H ¿ #­ cϸ28é: PrR8Ÿ ‡Š©Ã•n“)‚Œ¦N)±ÉJé6³–.Kiƒ]ì,ÈLŠX¨ U D&ŸæI0Fåøz9bŽœ ‚K\óÈím᥀TŠ,ĈW4|çà3©$úö"7̬à<›×ÚI›úyhà*ٵW.e,–Òò³í ®8¡!&4eÁásSYb:·¶0#À/¿’΢ÅT.ÀÎ/# îŸøÛ|†4Émþ{¦wÔ6§-öÒ6ß]ÎÌÉzk‹‘ #Å \|Ûìw[ñ¢]B:k³Úx”B^9±Æ¦ÝƒÀ®íÉÒ°Jò%oµ²>EOB§ÒGèÁÒGŽ÷¸cìÂå°‚²:C¥!Îc}Ï—®Çš{´h86×Ë2üÕœ¶ô#¤>ýÖKä*–e€&«Öl¢É$–ÒeüU‡ÕHÿ"”z{ÎòcvÓíçÃÝï0ùJ8©ýW cÇ- ˜ïø'‚C{â)k áöƒ­Ó’|ÊèÕ£sဈÅåâ ì’ Õ°ðÆ‘x>/?¨Â-,øý)ÛÀÅt®lќڹZ²/q•;ç:|]>p þñðüó_š«â<2[žÅÿ\EE=3Öȹ7‚õk·”ÛŽ»¢LK»äÉV÷K—M¥jþekêZHÏyXaެöøCÝa˜ì/`—L©)U:aÕºGC‰+ok6Ò¢ÐZ¤ò2Ç@-ÓUáfý`§n§S˜§v;ù+ò²ä–¯úJç  y|3ZêC{Ùr‰âú÷\ô¦Šm² }²sñ2¶½ÇœÔùö¢j2äÉ:§ðþXš¹çüKBg ÛK6ƒN¯¢L™ÿ€ÂøŸóÍäÎôÞÜßýü»»b/ endstream endobj 586 0 obj << /Length 1564 /Filter /FlateDecode >> stream xÚµXKsã6 ¾çW8§•gÖ¬øDµ§v§ô°‡Ö™ÚNËHt¬‰,y$9ifòã ”,9râig!‘å‹þñE.)Yªô"Û]…NÛÜ/HøåÇ+îíV`¸Y~·¾úê‡(Zð¥aÊëÍø¨u¾ø=¸­Š®]®¤”Á§ºZŠ$x\ ئ-`¹’<ÔqñåŸëŸ¯¾_ž"!. -_Çcâ\3½ˆµb\* ëúÑ4KØ7Ÿ?ýô×íç›5-­ÁXàì—ŒGdþlšÜ}‡á‹LeBö»‰5÷§Û*GsŸÎ9ÎLeòw|Õ¸RÞ±íló_9?<\àX¦ZñÿÁ¹¿yÈeØÔuç#â/’,]”3îŠ*Û¶\±;à°߉zÓ˜*³s‡£TêE)ÉD¿—ËB%Û²¨ì+[wÀ—W£òqÎõÀ¤þ®çpÚ¹³mkî½ÝmõPÕO-My°ý½^ås&ëÇÀO f%°™WqÄ’È7óo[[yÓIßKÎÒ$£ÕÁ1Ñ̉R0%EoÖX“#a)t[K‚¹[‚Û Fæ"ú"}nÿ¹‚sËüž¢£ß§¢,IÊpÃÖºŸ‡“ƒ!n<²hêjG²ßþ¸Œ¢À4xæAiço³PÅ}Ü“t¾JšÔ!S 'ÙTÐÞ"•AY/ÕUùŒ’¢QurGT¹¢àT`öû¦ÞC¨qçu­Íp[®”äÁÍfîB ÆÓä¢;DŠ%Jõ¦…åPµ¶#‡}Tý'o`ÍKÝ/Q OŸB·«1í ÜßzaC¿¾R ÜùРûÒž[úRmg󰀞ìÎ@‘'ŠÅ/ÂâÅCIЪ“xJÓv$9„Ô „1Ì8<ª7Ã0(|°™im¯6ý“Ý”%1©ø$K‡ï 5ó…×2ø{î²@x:Š:ÐÂÌuUÄ4×½å:<«w;Â&8èjRæE»/ FøL éŸPTVT÷¤@oXoðˆ‰€ãÛ«Êtµ®C¸»&¢$˜€[”‚8”ô®¬tÊâdÚ:s8Óävc¥[(DFLÈ`n'W€45å*W kr‹€‚B9ð*êÁæA9‡šY¼ÆïA'#´öEÉ4–N«G3VSä¹­Hçs‡ÆPȆ$¸H©k}$ÛÞ½é IØü¥?¨Ÿ2Ò_ì`•ôä–$g°ÁY,‡.¾n©-Oq!Š#\àÁØiv[¸zmÉÔ’™©èwž[퓈Ü:«ž8— lÙ{'N”iK¬‰ÿE§©&®A…)›e$ vÔ-÷ÏÜ’ËÐM¤ÞÑ7”\PânRÌ®ÒѨ`J+ª:ª)H”9ã7WÔd‡¦é0GMi|5Áˆ-†¬Õðzö0›èÑ£ë^Œ!¯IáÒƒŠ½³Åé¿í =5$çך>²Å¸‰ƒDÊ8?™ýÇìö¡š—ÈHÁ6ÞjßØÌæ6§ÕÐ Ï"”Ç!ÓÇò_½>š’°ÛૺâË|DïG÷g= Îm·u°Éê˜Æ-wæ!mߊŽ',>–á|b«c ½ÆÀþq,¦¡%¢j&š4eI*.{¾9‹TÔ›"5«§wüƒg&¶8“ @ùMØiŠêÄd¾ùá!ÆÂ}<Ê LÊi¿Áý€/Ëü#ËøÝ®„Ì>’ºókÄãK†‘§„†àlâaéûßkšíÉÅü퇋§oÔz "v¥ø÷ÆJj !¡Æ$„êÁ€öôQÙϦô{Ÿ)\Z¥ãòÎýQ3:ã øaÊcZÈ/~=¼+š*pñTÀTäbØFBVã$žà`6ÉÂceín67Ú„,<²ªm† ü`‚èGí\Ð@Cµ9éh’Ót‰žãÝ44eBÇ!¨èÒínêöPtÔ=¨Õ¨¥ï}DDq2 fGÀ!Ç#´<±Î<¨QÊd:PѾÁ·Ñ=Ù åø¶V8ðÜÏ&H/N=ËÿÊøo²¤«ûÞóü]—¥ÛùPþºÿ¨§ÁÍ` endstream endobj 591 0 obj << /Length 2411 /Filter /FlateDecode >> stream xÚ¥YYoÛH~ϯÐ< …µzÙ›äÌSÆã$^ä0|dg°YdÛe¡H¤ì1°?~«ºš)·ÆÊD}««ëøªªÍg!üã³4œÅR²T%³lý*´«ÍÝŒ—o_qG·Âňò—ëWE3²4Lùìz5fu½œý+¸©Š®/¤”Ái]ÍE<ÌEäM[Àt!y˜è ó_ÿãÕÙõpR$Ä‘"!ås™ôX&ΖÌt¢—ŠÄú¡¬3Sæsø< òêëÍJ\29¢6ïˆâüã黯7ϯiºmÍ„œ;ú¼Z:¾¾Ý½#ßþò]G~ûë'ž¾þž3S™å_½çªùúæò{N]5¦ÊòÿãÔ—î»êB [,xÌ$ñ¸¾Ï[[&Q°œó†<ørcðbð×–6íQ2QAwïÈkôiçØ¦,iw™¯Ì¶ìˆbU7N†‰k .˜ÜÆJ°“Ý#o±X&=iWÓ)ÿñ±åš¥‚÷¤‡U “Zöt?GS-÷î9º‰‚kFQ`ÊmÞZ;@§Lªxj¼îBŠ[7*A`ÿ µjÊ^¿-mšÍVšzÓ¦Ë˧y"6_(%Ñ*Dó\ɰ¸ & pWTw4Éêu¦í)júíî[)Üo]Á©½,eán7õÚÇû¼òZ1a*9Úˆ<,óˆ·1UPÕ%é·ˆ—O4®«Ü VôKÎßÕ0jh î¼ó9Àµ6‚[<åiï«m›7Œ,¨#Šb$„΀çxJ,= Àì:0`žÛÒ­ÜdŒŠ¦fÕY1`è÷I²P ÎöÃi| ‡c—†õŸ1€ý¡óEMzX+ å{¬‹–~·Õ2Ç`¯òå ::Ç«{­Æ=‹­Mn¾¸L§ª'§®PS;Ê8åMC¨A¤9‹9ñ6pßÖܲUSPªPÅ]U7èØ¸j­ƒ«Nö¥p‰\©VuYÚày„ÒZ7­û̯O 2èBÑ1”=´¦#³&‡8îe³!Ú‹\Óê¦ÉнsR ©A$š…1ŸbIw6)RÑmMg ‘jÀ5ÀŒzMpÍbAC >ŒÀ0É ô"ó]Œ+¦ãÁÆõ¦?0r£ E¿Ï3”ý›“ÎEÙ3í¡1pdGe²ÎmXÈìùXmp ©õTÙ¶iz\õ |(šºZO6Ça`‘7 0u¢kÃ`0&@#âåÒ!gTù# gAØìÌ7'=Î2{/»îx[ÝXÅÁ7·åP.øíÉâ™is‡†wHBÈöu#{šZÍmB*¢xK 6ÕÈ8èUļ}j»|íD@¥n«Êú Î?YS·õªGé0^ñ$Yý³¨–äeí ~”’]#ÚkØ~ ­EpÍÎǪ‡ÔqøF±b*ÚÝÈ É•pÑi+ß1*e"¾;ä¸"e\ IpI¾™;ñm©†'ämwâ;%áLË © ¬ÃLS^SØ£BeÁ—9”Wë«@œ>¡®mDàŒ"Â’MnC¦«ó£åsrø»ÖcmüzyþùP, 8L/þj,Üò»x}ýÎuˆµ(Ó«{Ó™–IMLèqj l÷:êÜž‘Ñ­Õpଶˆ¹"–m¨BfzrL›bs½æc‰o®Î./.?½9ïÕÚ®¿úogagSdög@ÖDNsúÓ.kM‹ú ³ñTÔÐy`M_™µ·Õ;X £p²Ø™ÅÁgЊÁ¡¦Ú×%0Ñé †¯¹ƒž@Ҝ֭þNFøCWûµÎ¶`äþˆ È]WÔǼ5W´Buít Ï®Çþv÷aÞT'4ôkJÙ\'—ëÞŸ~=½þýâ섾ÿúãÛƒ©oâ)§}Åh˼,`‰­fJFŽSÊß:Wo´ãG5®¡ OÄQ­‰*àÌTÔvßú¶3EE‡nðc"Oݧ/c{m—NoK) rÎÁ¤Y_KÊëøK%3èz„¹-¨p¾¶’ ‰‹ORfÄQŸR” jXl'åEæN¨é7Ë›nà9Rië·;Ùnlô¿cKu(ÊŸûyµ£ =íp[Á`¯@w_Ü¥ûâ"ÝTË08ÇJfE$Ô!É´?Ç‹r­79É0bò_˜åbfî,G.¦¥˜„? RnQ ¨ÁMìó„’èCØúâ¨ÍMC=”-2pi¤˜QFC£Œ†¶MÂÁÞ<~d9$ÇåP,5½5!ó©aÈÇSL{‰z»{Þî}ì± vDîun‰#MÊÚ,svŪG¿Ñ3 ™·‰mcp7´ŽÐ•õ¥ÿPßÈõhu­‡Îv±òv¿Ñø‘„º_ŒÈ8a2J¦arñúíÙå÷7hhzÌ€ÁÆÜ‘ÇPøâÒ¶u{Îü:ËrC4ô42Þ[í¦4Vνî€u„k'ÈmÈ|í(¹C¤úÃ`´ÚVõ'8»m\&±wˆ\×…ƒ>Œaˆ¶¼5­Û ia€EÀþWýÍ‘™³ß~þéõ(¾§þ[åµ/‡„ížmˆ$=ÄÄËJc9°hŸ¨J3 Q…{ÇHÇhå™ ý”6ÏáÈ~¼]ãÿ.DLð¡Õ>’ o¼"œ× ou&â©xðµuÝä/?_ýì㤙ØEÂAdž¾>æ£|ê1J@‹{)a‚àÒËé{Æ.­ ˜²ÃÒ¦(r(Ðn :W _ÒvÒ‚´/káį…flîú”:žK¾6™_L'zǨÆö™9yéCñ²«³þoŒÿ¨RÁ endstream endobj 597 0 obj << /Length 3207 /Filter /FlateDecode >> stream xÚkoÜ6ò{~…¯_"YY|ITû©MÓ\Š4-Ί" zò®ÖÖeWZè‘Äÿþf8¤DÉ\ï¶¥†Ãáp8oš]$ð]äÉE&DœK}±Þ?K ´½» Á^?coˆ+ó‡›gW?)uÁ’8Orvq³õIÝl.>Dïëªï.WBˆèeS_ò,ú|ÉuT¶]Ÿ+ÁFJ\~¼ùùÙ«›q'Åù™,!æcžÒO©–1ÒòôîÍÍõ_¯Þ½~ûæú߸óò*‹Ó‹1S´âºìñ IÔ7ðËó¨¬úû²%Ø-‰Ùž©Šó4iÇëÐ6ŒÅRI‡óœ¨5-í¤ÊyœgÚ­xýÃÙTûK54\£üïá~š®$ ^S¹¡¯û¢/»97?´U_u÷47Øì†}I“›òÏ„I WÚ½@ž@xÀ†VÂJ‘3 .´÷ßV›ª¾C‚2Y’ŠlÊm1ìzúض͞F¨7ÍÐÒ׎x_»2 ie¯þOüÿéÍÛW'nÛòy}0;”ë †²àš—8H§¹†‹¾ bî,BßÐìЕnR%UÝõe±!@³%Œ‘¦=9 ²ør%á¼\Â|3Ðôº¨íÂz÷@K;d2‹`=‹ÖÕöÁÈ=™x°¨Iï@Jú´ü Í,ÿÂã¡CGWc]YÔ’¬·jÁnY´Çm¤£žæ?_*mUÜ⽬”Σ7[Kïø†}­aÏ?à®"}A_‘𑳄Ñn?“q–åNýWÛ ‰ŽM¤9 â¾@ªÚª"å»vs}ØÆ-2öâ‰$Öà—’s´OÆZ(‡ú¥ÚíhÏ[w»øQ7½ÛÓ0BÐ]Sl€cošFÐ×1­ãTŒ.t˜ÉjKK¿ù&(Pk6.{Nr"c1Ë”õÊ»«·¿¾üþí«_¾ÿí¬àð{UoŒgû‚üåÂØèwhÄ™Ágû@‚~F¬!hkÂ4 ˆO¸+†¡õ¸0YDëHa8æ2–@(ïÈUœªÓŽBæü‘£Èlqœ:d`‰RÍ/øi¯©ÀÁ¦n/ŠC&4í§˜´0:P ™dQa®À‡¹Ýœ?’(€6*G µ¨Å®³Æºnh£¢²Kœ±­,o³Ã,ôF8½qvö·™¿®ÿ¸¾yõËy¹ š‚»”R†R‰¹"„–˜fc!5ý SSÂBûÂÍ“¶áZ§mÊ&Dø –¾-`Î/___b.íË-Ð〓³c ãÑË¡mí=c6d0†LÓšDVñÑEBVÐ`° ‚Í4Ên*x!vTðç P*;’þƒ-ˆdÒÏýqzÌ£gÔG¤:1ó až½Ð}W ]÷¡*êG´‚gÂg¼ŸŽûãx\“E||áZqv×™àŒbÊ#“å¡4ð‘™Çü”ý9äÕ„8Ò‚¤õúÄdOèàY3šùµ¦îâÔf²Gæj¨ywÔÝôÔ'µí$ LsÖ¸ÿC/Vh³VSï¨t½¾±–c|5tíUÙlyuéG]öW>ÆM; ^­Of|{塇R¾Ñ™¯òc§!œí a­Ö$k€ÎMP¹8OƒëÁÜ%ŽMæò¤>cÒ£ÙTq¹HËÁïΣ¥qjÒ½ÈÉÜë•IíZav`ˆA¹ªôÞè`\ÙYòy°¶°+‹Û®Ù ½E;ý} ¡1FðLÓþ“SFk_åøšØ|"È„íá¬T,ªZA—©Ò©‹â©_ЙOûÆÞsUçæŽ”¾ FéY-M•‹EKó;ë0·Óf`x¶€’ÚîoêžÕ`°mL¾³—µa3Å:áÿ0·‚ç¹KÍŒàyn“¡œ2í 1è±¢åǧs>^ÿ²-Ñ“›ÜþI™«­ðÏ©¼;ä®ÄpÁ†$NsqÎqÎ7;ßôu_µ endstream endobj 604 0 obj << /Length 3599 /Filter /FlateDecode >> stream xÚZëoä¶ÿ~…Ó/'·^U¤H‘j?—Ç) ÈùI€è´²W¨VÚêqŽ‘þñá õ²Ö^÷ Ü’#Šçñ›¡ÄUâ*®L‡©²WùñMä¨íý5~øûÁãv0p7ùåí›?¿×úJDa¥âêön>Õíþê§àc]öÝõ.Žã૦¾–&ø|-mP´] Ý],"›Z]ÿrû7ßÜŽ+i)/d G¾À“ˆá/Œï©ï¤Œ#YÊ7x684(ç‡mÊP‹•@76‹0ÑÊóÜ}_O½—!È9,CAcû†„,Õ{l+àŽXÁñ†žfô(¦-`£ë³~èh_kdm™}Y„´-+¯„ ¥€ÍÀ¶ÀRÁ(Œ$V…½Þé$>:EÌ‘q Ê?F†Ó M1hÚ~KB0•4¡¼í[: û¨÷Y»§k 6÷YŸQ‹N‹Ú¥{*ᬩÿ‘óÛî8U0tÎHÜÓÛ÷;KÍ¢ÎÉüöð4\I|×t=/V8ù;uâõ‡Ž—lêêÑ`´<¹w¾úÖÍÿÇ`‘9ŠöµYæ'£,°®£2,B‹;yÇ“ȇ®snÁ¸$UÈç¦ÞL #€ÏsýèÝløFAw=©“‡"çT AÁO•;7åü,~òei“_4µQð¾¬|ñ®ûO*‚}zª¢õÞ¤ŒBKÈAUhÓ¶æï¦Ñ;[Mé˜uœÈéß2ÇN“P™±ÃæOç˜ nOfzë‚epïBl,|™ ³î”y¼˜703ë ÌǶëEêL…)a/¨Ñfõ=ã(úݼ'ê¡ø ÃB—¹µp–D"óuà k`û‰&Φ×Z܃Y%UEµ`‰ÚŠLgt¦‹,ÇáÙƒæÔùfÛ,éÊIZ_‘6ž•?\Ïóƒ/#×¹`ÏMãŠ#ÅÞé/U+Δ¨À]d)SøçëZXÙ'ÕØÆÂUÎí'•E$RšGQ.UØ—U‚Ñ·£hãÄe­¨&“·I¼S„†/D&êɉ 7n‰µªmLº¬+ y<Å  ábÉ §ƒ§ ª“ãb)ùn÷IvÖÎ-ï¾ÒÅE”qÎ2Õk¥ƒ±‹Œñòy* }Wn#¸Ø†ÚŒõ¦—SË3R¼¬Yg¤;-ô™5Äÿ›¢¸V÷˜ÿålÃBîÅ«Â8¸†‚Sq3Öý}cU-n@¸ºúñþ|åF\Òr ]Z3÷iHç€Ia# ¨B̦Ùüò1›*?°Háó jޙ˿ɺx”îñˆÊÅßlTüsæV9»³E9üî#w‹Cd½GÖ7­«sEï¹”+ØÃ€»,/«²wŒK‰®üä¶FUqÉåPlœ²®©wms¤Ö,ôa¯Úœ¤¤ðŽ€ïK<;s±áÝÓéàXÝ—O¾!0\LScñ‰'§2^ð7»(vaùaB²’(ÝV §Û[¾ØWß(þ$ ~eäýÃý@üãýƒVŽ®£ÍOR&‰¾üS ‰qýƤ«S/«îä½ÝÇ2RºµÙ”ÁcÏM9 £©*û3~@±õ­T¨ìÈà[wW¤Ï}³šT¾b/Òïæô˜AkMŒ³ø¤ -üþüâ"ÒTݹH’1®N+ÎI¹©sRŽØ˜Nd9#Òö%…U£‘¯ÝË7 ¼Ëq%WÕÎûJ cù)I_Žõyt[R®ûšØÙ÷àǧ»8|yÙáGöìá'‘zÍ75_øQ|¿s —ó¹åÑ9OØÇ§ m3 £Pkó x¥3ö¥ÉúdŸ•¢ûH2±31ŠÍØ=‹™/Kñ5î@~¥î röôCAp,÷{÷ ‡´[$žWÅåÚ¥;ÓZmïLF¡´ö5úñ¥!óDvù’ š™§ñæ‰dº0`óDÂJstö€‰_õ™'n’WI–ŸKú>!ËCú3:È(V3ɪs¦§f«rõwP5’ endstream endobj 609 0 obj << /Length 2922 /Filter /FlateDecode >> stream xÚ•Y[Û¸~ϯ˜·•ÑX#R¤(¥E7HÛ‡m`±hŠ-G–ÇldÉ«ËL ôÇ÷\¨›G“™À"éCòðð;WŠ«~â*‹®L‡™J¯ò㫈F›»+n|üé•ðt[ ÜÎ(¼yuý^ë+…Y”‰«›ý|©›ÝÕ¿‚O•ëÚÍ6Žãàm]m¤ î72 ЦuÐÝÆ"J“@ëÍ¿oþñêÝ͸“–ò…,!åó<%© E¬¢0•ÉÕVġм3 À!iá4/&ZS¢ÃTŒBøß³œþ2 œN˜P ­dkD¨•žt(dƤ"Ûlu"ƒxc…Ý•®"‰ªà×þìÅ2¨›nmGЙ…™ñ ý¼ßlU&èp+G‹xd°vZ;‰…QåÉæ(Ù/­{WðÛrã–ÑVTÜÍëãÉ•xØsÕk8[L,y‚l­p'ávTœ ›ö¤Û+¼¡6f#dœç¢o§-‘Ù® 02$Êó&ƒ×sJ.Ð@SúcÑÔ=B*ÍðGF8tü…@«Ø¹ÎUwÜÙ¶ë›Âϰ¨kžÌ2uXWÚÛ²7ÛDˆàù¨ý¸ç¡ð¢¥!·çïÇê¾áÞÒ¦Á@½_“ŸŠâ0NÔ³òÛ„,áåXåe¿+ÚÕ•E˜šì%¸Q %yÍêÄr"©¿ÐYxÜ«  N ¸¦¾kì‘û®;L$kfC%¡’ãQ·Û{/ž5(ƒ¢¥b ­Oh BF‚4*Œu ‚HB“¦xOW¢—¡àT]Á=WíëæhÙÄá€eì×}·Ê¥V¡2òÅr3s¹E Zµ¶/;ÞŠ„…]Mö*´2Ðgü쾟’›¶zÑMÐrZ ”\X@µ‰MðÜÊ`«@Ñ-quæás$Ô]ß—¯W™Jᆒé}¡ã¯èÚÂëO[3vØ0^:þ— Ǭ_®}³ á4¼ð ¿ã6Zjñ}ñ†›ÃI1›³ã°C’z—ç=ÈœÁÐ?ÔM[œê‡®A@t쇻¢b32®8[°ÃH¶ˆ÷nO H̰jÝWy±éØ)®1LXº9ø`W-FþìsÓÈÙ6îÔ­-ü-)=r1…Lláý£±IžÆŠº n“©´Ž¦ÕüÜ6ö¦™/UÙ#^erM³7å“´ Õd»nþþã*Þ%¸Ñ¦päãõèhA&öO¸ÁyA<Õ%½w»‚ØýA£!UÂy¾ù_^<ÐBñ`¼ª ÞǪ}‡ð+Õ/ñØ® d·l@ŠS‹²—àœi?ć­ÚÛ|5ž3çÿ¬ê‘S„;é8 µÌ–’˜ÌZ<¥‚pîv´OGx_R`ãÃíø åÂÅ{·€)éž¿v°gÓF‡/ dAz©=7´˜ñfJ"¡GVﶱ͙û¶lkn1ûp#þþ€M„TØ/ÂGP8ÀYMÙ~Ò™âúž©|H:–Èã¤Áï›TyÉZ†cíóC`¤;@vwðGT«>ò  þkdRÂÒ=\.ìvÇ=•¦?ñ—"ügÇFå‡Ö“Œü4n†‰‹Å‡[;¦1ÅŽ‡ºÚy¢ 0Ø-×M¤Ô©u;$¥ùcØh5÷3æ~ÀQ ¯g "öõ±àÖÎ5EîY‡.Þ3~Y­°åü—áˆ-_,‚ü©õÿÙ¼©Û–ÛG<.$!î´~,™ˆoåó¦Î¢GS0f„ià³ëÁ p‘äf§8n=0bÌ3q˜S,1Þ»'¨›/>¼¥ †-ò¢é¼¿KÉhn!­ù/GÀA£ƒd‡ºŒ¢øÊÕ]1ÆÆüǤDÐaX ]eªÞ£Ä¸²À ×ð_]÷DE9 S“.+Ê2Šr|âDlêÎúº%ÄñoI˜ù™{ï¾æ ŒŒ|´”j`s,ò¿ýðó´» c‡í”â(Ïï ®e_ìÁû¬—µE6†ürÀ÷–›§¡`ˆ8œ½µ­§K™ÔËGF°W|[liø°Ø¤Ãòâ.ÉL&& Z<zÚÇéÙ ôÑQéX)ÊÎôXMJ4V“hŒ/d|ù²ÑGfq|N)%ÿŸÅH pLIf\% §¸0äç{Ò3Ó6öävXýVßú‰ÌãBŸ¾Ò›©Æ n°ª1`ñ,“€ ´Ü2³Ø½§š!$±ÀX Ç?=ØwôZEÐþq=]=º6Z¯ ß0«é×k:”N-kožxðÀg™±XÄ¥ HP!Ë[fY7Ø“aBõÐ8ɼVccPd$¡Ç)¬ÓºŠ4pF¨fèÄááPY4êN.‡,à¼~¼$Œ¦‡ë{Û\—îöšÎy=8H¦™ƒuØ2|ò’S¦Ñ(Œuw/tê¸yßÂæ5ðz ¹Šgáù0‘ŒÌh•ÑÖi¡1<Ó"Á×ݯÛÒ áµç¶+ŽLµÎV¬À½_Ô­ß¾ù,bõazdˆƒ÷®d¡èyòkšà»"’ýôË'üרØ{¸:ª½‚ãþÆiPnBÏOCYoò›«|úáŸe|Š€¼ÒˆË|Žî oÉG×â{TË£äôáK¦›“qÃ6 z!ÔhUàég¹Lù!‹…ÍÁnZ~ó†Ûw5>Q±Ù WO®üðyðþÒ¡¦ endstream endobj 619 0 obj << /Length 2996 /Filter /FlateDecode >> stream xÚ­Zëo¤Èÿ¾…¿…‘înš×åÓîÝ^´ÑEZù¡Stwº`Ûd˜c¯ó×§^̓דè´ÒNwQTWwWýêõ…‚ú"SI™M/ŠÝ;EÔîá‚W}§…ÏFÂùáæÝåQt¡U©L_ÜÜOEÝl/~ñn›jè7~†Þ÷m³1‰÷´1©Wv}S?Ô*½(Þüvó·woÆ•"cÎT 9ßÖ)Nm CË:UÃÆ·Jy‡¾jx˜óOÑ¡R8úW{ÇGØÏW¿®¾Ð&˜Ô¿ôC¹û3LtâµÝŒ½¯vU ­/ð­Çr{¨Ç…÷]ûÐå»Õµ¶Õ¯J‡eW6øÞ€g{öuèˆwÂKôD[8 ã N4?¿*ë*¿«AÑ0¶Þ}WÒ(òúöÐeÏ“öž‡–*^˜Z~emóæA^ïòÁ½ò˜ã³'9¤ÀiÁÝ¢|í5ÌŸ7M‹/°Ùú…iô|¿Ñp ;–]^? ïæ±¤}øãFpŸ²‘ñ˜ÐXQ:’Z¯?ì÷¤AÛ±¹©KËk~M6ý®rùcl§&’Â’Ñüìàìf[“6A Å\'Çtä¿ÿü)(Úëð«ŠÔÒ´ ت‰“‹ØØÀ‚Èo›·ãö'ìlâñT©¥PÒíqöýw——ÏÏÏ\'鈗èçûŠt\hfaûQ˜ž©™ã>Õlv\K¡r¶‘f«õC×b&f¦à‡‰ñ¶å}~¨œè©}£¾ìä~Ñ~¢Ì{_×dnÏ=3´hð¼á·óî^=WÃc{±yÃD¸8&|A”*_6©õÀ©Ã”øÑd™ïÐÔàÔC¹ù£lŒ…D±×•ÿ>”ýУrÚzWâ;Qâ6è¨ÚˆLk›¢ä÷rþÙæ¨Ä¨Cl¼áQxo¯…¥­ YpŒvöO1Ö¹]$:ˆTì¬õöú‡U“NjÇô'¼–[‰Î²x<¹˜Üå½èWãóuš4 â4™Ÿ _[â^L–‘oq `ƒp í'Þ È£Z:£—˜°vHÍdib­gx³<NN$VAbǽúw«çaƒX.ÞîŠU(u[öEW Ø!€mE¶5±@¸t*ï¸eØLph3;ç'±,‘×g&I l<ȓÞï1°à#÷ Yœ¹Òdh…K¬iû¼Ú2UônJÀ6;ô²ÖÏ›™s¡ÞçY:¦æLemØpW¬Ÿ"D°†¯¾ &"¬UÑÿ‚°?Öm>8ÿ_ÃT fÇ6XÏÈå¸ý û ¦.….1õò5ã=¯ ihTÅé™:9îSfG³ºDS£ ’ÅéüZNmt௃¿ )J0ÿr XDüÜÚ#rà„ÝG£û‚«€Û¤q6º ?G{§Á$™ žÉÒJÑñLÍÅ Jàè”HÂÀBLú6HDÑñ$Pè$¶H³+‘¸•xÏH”<ͺá[B  :¤Š\òN8ëªx…Ès«.B$ŽyÔÒ™ž <îzˆg¨,ùqž÷…ǼسÀ„m^Õrw¬×s +|<²ÕZÉ¡€Ô¨ûãÃdõãõ«ÒZH³ kà ‰³·"¤pûöµ¹:s…{T(¨ÚÓú'4[çiâ¸O5‰æõÏ\èÒ4TUxÇ€pU>Àõ pK’…ƒœ¡T f+Ù¸ðá ¥Ç–“ýª+·hkP.ü,áå9œ‡6Q?ž:“E@&ÔËki:ß_ðê5Wí : 03€ë#€+‰0˜8Ì–)Puõ¨¼&«¨Ôª ™<æ=?ÎyNþÀCöíé?+¥˜Äû 1¹¯kÑAм[ÛÊ®åºþuPÆU Ö»¾þ‰p0ݢ‘s‰ýHï€Ù1ißµœ{E[sJ‚äJ7íÀibDP«Ã/åíÚû{Û îá(¸Þ€hU]W¨@¿¶ƒÜE‰'Ó¸óµÔB:ØÉ¡p"™<†,}CåMê¼ùÃbZ£~ß ô«q2ž8„–Xð±7ÂíOØ×béBè BÚ=Ô*“ÆE´ÝÃIDMu˜3µæS¥æñt.ò$œ&*ÐæXÃX‚ƒ\æVË’'ä8á'”3ÃïNâ(8™ŠZʱ‹ž…5¡äÇjÌÕ$×^1Û#ÊQ›Áº6ÂKtb3}b3vÐØ”9¶Ø‘_Ëzî5§fÀ'FMBÂx@ø¿_OWv3¢MxDš‘<‡1’ñ²»Sd¾Cu_:o¸;g¸ËÜÁÃ5·£ƒ‡R†ÓhôntÌ7udfÖüŠ¥b‚3 vËØ´å1Ul'ù<ÞPJm’„Š'êèRuY Ò–鋿2·‚éõrk|%‹ Ã0eLÐüþ•ÒȆæ¤4¹‹Òˆ;€Q¨t‘…-ë¥×:ÜŸ»²¨ÚG{»rÈéâ³¢@UP›TÂÐÞ yÕÐådèHÔ¨úgJmɸٕ†ê?d3Y´Š…al‚$Œ.LA=nÞBáö'ì+X¸JÄŠbŸ_X£Õ¶m©9WÇ}ªË¼m»:Á@ðZòi<:¬å"=Æ ˆÿH¯sáš`Ì)\×S‚”pëàé•/7Y§’ߘÚ1X%~bê;’³Ïg-0üÔl˯k¦ªÈù´IηÖ54ŽÄ ôMkEX¨ƒ,ÌÛñ›… ½ª)êÖÎ@¹f.IqN‡™S† 8¥}[_ù]4Çï?’&-°ìwP‡<’QÃôŽ 4Ë:f\çÃA:$‘ T¸ìÒæ„©|ʼŸò;ù¨Âóë\?TEÿ·µ{¹ÂÁÄÔÀwÕ!Ê›ìfnw ¯…¨œ{Ãà}]óÃÛv~Ç–2V“.9ÿOW‡zñÚŠ©h„§µà÷··WAÔõ{E!À¼víP3ÊÌ®ýw¢kWE`!c7¼tÇ!ÎÄÓ¦iÏ>Ô„Òc 3 u~üF*êŽ *rt¼èjõò*õfmP£©lL‹}¼j¿Ø×ˆÇ ½jX,k‹•s¾“QÍÍùÂÕN@ÊûÕ¬ÖY8®.Èë*¤jÚPį' ûÆiÀhZ®ÒÑaöTårV,.¾CðNtæ}ø ýÁ(ï3úNÁÄX8Œ¸jÇ«i°Am!)‡,0ËÞ‚[ÇíOØ×Òà…Г¦Ò]ÝíÓå¶|‚ ¸?¸\k-Y›ž©˜ã>U줵4:Ö*àжãñ-0(„ùò¹Ï-;­™K‹?ªÃïçÇrÕ¢“4Huzž[âÇEëX»%qZRJß‹m4&…ô-Fù0”»½0`!‰ÄyçS+gKZ|î”WÝ3eä™|±–~DI4¯!HI÷½%M±°³ØF*•¯ðËI >Í™°ïÊ'Np¶ã¿²  Ú`ÆÓ13fÓ÷<ä®]šÌÔ¢'Ò?Wƒ5°nGéÉø¶Né[[Êñböhr“g…ñÃø§f©Åþ×~P~q|[+¤69ëú}Ç< òãLBªfüS†–S¿5“‹â@ÅúÜH0A°ãŸŠpa±Èý Â| ?5àfžÞWò#¿HKÀL_„¬1˲y¶½ ÆVA$p|¿}Câ¼ ë@û÷ûª^ÿZbÙ³ëI,zU¦¦>þ›Ãºÿ0„( endstream endobj 622 0 obj << /Length 2160 /Filter /FlateDecode >> stream xÚ•YY7~÷¯˜7·‹Û$ûLžvl'p Af’E°»ØmIÔ¨áV·Ò‡5ú÷©bûP¨¬ªjU‹upä]ÿä]Þ¥Z‹<Êî¶Ç7¡•¶OwDüòýÉãÖ0p=yÿøæßÅñ Eæòîq?_êqw÷ïà׺ì»ÕZk¼oê•Jƒ/+•¦íJ`×Z†YÄéê¿?¼ùø8î+õ•*áÈ×uJ²HH‘N÷—ÕZeQ°3ûb¨úwÀåQÐ ‰›¡? =ÑeG¿ç¶ì{S#}CÂq/DÌvh[Soy¢ÞñþçODü'”Qe:Zjgºm[n€I³#YAlƒ8}AÄÌ·TÂ~ †¯¥2&sPGË`膢ª.ÄœET\p‰f æŒLQãÒh·ŽãwƒÙCgh®ÝÇRî÷|Xɾʠ5¨ œÌVZŠ4ÏA1«Ñ`Æ-NB+%Ú «,ŽAó™wÙ7-iiE c%Vë(OƒO{’^P}²T+»[â,EˆÖ*‰„J#%iÇm>ë ;±ÕåþB’] ›iGgÁ!!í_GÓ‘ áù¬¡¶ÍñhÏ™ª¬YŒ"N©ÙNÿ‡ñaÇBç±z.«Š–FW4WZ슾`QCæk• ðê¥ùý¡±g¬õÙ(&dA:!«£à©¤«JŸþï³GJ)8%×^;Dª27â--F' {smˆ.{ú=£»•àwÖp†kk¥ýízºhw4€/® a e*t‚$"ÖÆéPUöŽÕO¼Î©‡àÄQ«hy|AÁ+N‚¢¬ŠMe¾ñ!‚W3‹Fä๰ëõÁT'/V©Áü¹-GW´Û[ݺü­½¬ác#?¸ÖAöY*øá×ù q4ú ð-×(‘̬ݱJÙÄßvKgøü·lŸÃtéÙ?Ja‚úÚ%3é†.ó€g7Žø?ÇÄÖo±Œs‘k}eñ—›oðÖ½l1ÿ~¼rQ’]U>,ÕQrlZþF‰¡åTѱԥ.¤ÏÌWHºŽàèßÈãíÁß‚ ž>¥.äÌóÚã¼[TèPÔOìr-Ìîü8±}s8+@\ž{d,âs隡ݚÀÛWÏ',ŽrÅ‘wáÅAdBFKß{Xä‡XñC‚—±´cHLÈ!gž·x<ŒJ,JÆéPÏÕ®9œhÃ¦í± @…šj0ϱ8,eþ¸¬àŠgcšÙWMÑ[ nx¡JÕ"@gãƒt|‡óÁù –˜luîß7‡ô–ŽûšaSÔŸ½u@Y¿´'‡´,ø8´Í‰ê#›¼AôžÑk‹Š÷° ©F©?LDê%`^}µG-öå³ñ† •AŽKgÊFa2)…$˜më£V-¥HÅTþáx?\RÈ úædjðë57O+O¯û‹2­šXë‹ãÅÑ­;Éo1ùpS¡P¡Z\„ªè\üE—>Û­ùc(ÇìÈAôŸXæ¢à³ d’º|Íq•W_ðÌsÙ^ŒôJ'ŽÅ†×³lˆ˜ÅtèN:ÌE¨¢«ø´y=>mŠîïD§iørQy\š’_§‡cc;ߌÑv®-c7z„KPð•·(Ü „‡óziЕ.œZj@ÊçÙ®Xn¢9dó…a1h¬Ôk֭ݸ¹·u‡f¨vf¾’Rõ“z]Hf#>=üDÄd»å¨­Ø¹–å‰xï^Œ™™“Ñw~}øà=”t^C¼Åú:.*?Ü/à;ŠÈì|:Úrž.Ž…Š—ç<™žæ€:‚ô©-e?Õå š­ Ö?HArï¬ñ;âø°}å ¡(Ï^mÝlL¦Rpg2ø}eûeÚûX°G!ƒ¦Û¶h§ÒvþP—S§…V6S ÂF}Dz[‹äضÄq#¹Å|€<Öت",™Fe“4õ¼?t4|T™{û…ê- Š-,J…r6¬ËYsÒñP—Ótš|±q ÊÆDøµ¨dN­~ùÑ­‰…Fã¡ZÞ:78Šé®<ž*¦eU ~ò:OÇa…ÓðÀvøk$âxô–ß©¥„ž®¨ûo|{,+µ·ÜÃB§‰wá – ”µmk×Î>P¨#=¾'å“•O5ߎ™=ý’Ú@¸2é]C7–'ÖMOÄ7iÊÌ mP\,èÝu¥6^PòÄ(Šlt~¿¬m;WWœ/áöÄcÍFî¬Bì\š,™â<‡!ùµB{Fã'WûŽsŠé%cª†‡Î,ÞvfÞ}õg%†næ}¦ë/hNÑ®©©+ºº,{LÍ‘@œ]6SXÑ( n7 Þ »«ˆ|ĨÖÔi ™Ô=zóp©WZ}ñìói@Hå6^Œå¶·øò½/yý1ˆg~0¶¤X"Öš§¡*øæâÚ§ƒ'þZØþùFæš5Xko˜„Š)âˆÀØ4S_a h„Ògáþò'7Ük¼ endstream endobj 627 0 obj << /Length 1963 /Filter /FlateDecode >> stream xÚåYKoã6¾çWxO++’¢-zi»[´h¢ÍŠm€*Q$W’óø÷!)в©Ø[ì¡E‘ƒ)Šg¾o ]EðGWy´J9'yœ­6‘šínWzðë÷Ô¬ aaè¬üæêâ‹÷B¬hDò(§««­+êª\} >4ÕЯCÎyðmÛ¬Y<®YÈ®¯à1ä4Ê’@dëë«/Þ]Ùcgª„+tJØNIÊc­ÓvßlšâA⦠â®Éh¢ÕÊ?"éUs‰‚¤,=OM ͘#‰®AY4­ìº¶Ó{4Ï×}{ä)á‰ý¾jBµö´Î—'n÷ò0A‰ˆÅ¸ôZ«Y¶EÕøõ)a©Õó™zmAI,â“Ú3<³ÓR®qÉ*äB(KW!å„ ýª+š[é×6ŽH”"^–•ç›ó…–rí“2?O)·8h¨P)Èx$ç”$ÜJþjQ²˜°ó|“(v„¾#{Fß2A’”sR-à;XOãF_Yøƒ8nꪑ~5‹€Ò/Ú£ÜFÖa³àêNšùvoÖ¶;|_Ôzþã„|yÂHÑv¥§œSÀuåÈ*Ï™”ËéÌŸ›”žÎù§wññ[ÍVß<²ZW¾½„ƒ2î;¦“H ÕE‘vÝ[‰ hJ=ðëÊHlai8»h‘É›¢1[ìvëížÅ‰j|Ñ ?^ô¸EvàÏDäÚŸ8Yjœ(›e[mn*2±I…È •’û¨|05“&iŒÀ >˜‡{’UÈ@hdbûPÜ,†v÷ÔOÆ O’3 ¾$wEÕ…uÕ^ Bà€ß®­\rM@ì*¹‘OUof'22TE6:’»5 `ßqq?襷•¶|¯‡iyˆìÓÎÌ[•²á¥YÅÐܵœDÊR¹;šó „¾,úlʪ¹ÅÇØB(Žc¥¥7ˆ‚ƒóô’s7$߫ýߤæ;†Œæ€ÔØ Škyo@ïºÝµôí­Qèžø]Sš#ë­oj0~«,ºAkßM¶ú×åQòF-–·UÓƒñà©î´#ðµm´t2Ë¢ ÚzUI µ¸Uw °µò"lfʬ2¨2湡¨1>¿hƒÃÎv.†«©A{­—+êªèÍ-™½Áñ#"šË…®n*Í­ ·=¾Â=Î×ýŒ ý3T¶­ÿâ3Ÿ]˜x}ÊÀ†^##»½·Ûùpõ>Ìô¤›ÛŽ+÷$#H‡i[¿ÆSÙಉ¤‹Ý¹©Ú˜p[/àø¦¶…†…?ÎaµØ94,N wÅ MŽèÍWÊæ¸¨Úïs²ÀÈñP|^Å¡œM&Ð×0*’x/&Ææé}—'¦¼Ì…0Ñ*`ã`k^Ü™ [[šOÍÍ«ìì.îwÅF†½Ü]aWMÕ©€wQ\å#ßQ!6Ä?û¨Ð°ˆ,và©#L’BS4¿jÆð3F—Kï\î^žNˆé‚¨sî]04&³éÿàÔXI«ùbì;«Û¦ídÐBÑmfPôóвb×a)ï¶„¯•?gSk±Aú3‹åL3 È,üuЯ¦õù`TõÞtAÃeÓ%ÚRÑ%„eÈHI%µ÷1QÒ£”¡dÌ£JÒ<%)=ßF yÄÜŒÛLÙ-È®–8É"÷rã¿ÀIüßèßf_6 endstream endobj 631 0 obj << /Length 2822 /Filter /FlateDecode >> stream xÚYYܸ~÷¯hø%j`Zukó4>1×k¬g,âI6*ð‹ P›ûýr©ûzóOï·Ö v»‹¢È{ÓµÛ0óþ؆¹§{k »‹T§^Rlÿuÿ·ïî§’0ü“"!ç3™òp£2?TI,2¥yì«(f™Âp»KÒÐûðé7 K¼÷Û"òz­¹÷¶C¹¼j<év ¡XVûh*ÝZâ^Ÿ\ʼnD›]û1ÈD;ý}›GóYAÊn¸á'ö>u¨ÖÉ ¶;Òs…Aãf›R©Âò*ñ‹´àåßtgœòԛñ&±fá&ð£Pø*–7—òî"wÁö5PÉúÉü$N@ݬ½ n&éÔ ŸšáLÍnâÓøûm‹Š¡÷¥Û(ð#þ”½fî÷¨­nlkR¸,q×Vþµu(•ûù&?)ÂÿcÌ»[0³Õ¦'¼XŽy†óO¯^ííÞïúëk ö³àÏ á¸Ÿ‹‘¬ˆÌ!PŒwâ.OøéZÑŸ—:‹±œÌ0èšiCÇß #óž¸W¶2\;ôæaDé “î@ç§i¢Ñ–L Ü]E¾JD˜n/[Y€ØkÄxéŽÄaÇAs”+„͘»Bê±l¦=ðä+ëµʦé& ѵÏN†~ž'âa»KÓÀûüë»ÛŸ_|GœÀNŒbÞ÷G3rï1›[²íÚÝÚ ^Ì€ˆö›Àç‹®:}½a*nU(çjy0›#vν¶ºgmÉøžöÍ Ñ*PÊq8Û-œ®–ÉãCc,Ÿ‡xÚ#^MÉŠ\‘š”]¤ÞA£† °:ÔïÀDÞ»@ïѦgynדūÐ{<šF3;9°H®cC`M­{ eÀ‡<³ßýÁM—ÍÒùŽÀz⊒ÆeØbÉOe-êaÉó¬?ñ_ Ôy˜Ä³Î±ãˆ%¾44l¡Gà÷+ u½^ÂÑôÀ£WH<2ÛI—­,5Ë[pj0þ$õÊÙ N·Z´—[ÑӼ똻vw,F‹ZÏBœ{²º™hrÜÙcx$—%‚âpÀ3¹aË“ a` N´â¤ðîd0òs£Pöj¾ /å}Эî1â!õ3Úeµv¹É' }ι#";Æ$#Ño€I mÍ¡uÉ’m ‚M"ŽÓ¡ÜÄA”KK‘ÜóÂw0/Œ ¯ ’Ëe±U;OѪ`ñŠ´Æb/©8ÄàQ“_†R42OÌÉ2tBaÎ7öjDŽ-{µP‡!»Z•#£Ùkóq=[€©-ÄfËÍ™õY>"Ÿ„ ‘t=KîbXwèË“ìrìÆ¦æ6ØŽ,Èq™é¨uE\X‹´oj&*cƒ†+´$£XǀΩdÁJgÍ–¸¨r, ÑbG…÷š’­`d­98CÇ9ÎÁú€Fv€“º•eW18´‘ùŽÿŠÔL0D˲åÆì¼Ðû¬¹%¶Ê OÜAH2’ÇE1Wîõ¡ìëF[ËÜêA-ãz·÷oHÑ"Y €S–‡mVnäñ¨ç$i$«’fàë2P-)[È¥Œö†Ã†Ÿ!ü~Ã[€|5ù0ôš’j+ür/q²¸Y·2g—©ÒКè¢Á¤ÇÎ!Üó¸„ËàcZ€c%•b$( ²r ­­$€ì.©„%ööóçwon_ß}¼»ÿ§ß~zËë½}÷þîÓÝýÝ/Ÿ¾ü„K05ZbWè”çsƒˆžŒ—,Q`g$Ü'xÍð4*.ÒyS¼ºZ¦€ÌVÄÖd·ÂÈ^†¬UÇ·ZšV¤,×´^Â$ÃsSVhq‚F %âÛØ¨žUÀÄ{ì £ÈbÓP\À¾r$LîƒÔ2Ö< å(¯”Ì»‚éŸÖÕÊ6lÉ=àýf¹÷eä ˆÇJFÓyñpJ˜‹r 4ÛÔ»G@H¨[@Èô¨4, \O;‰¯0«™’f X{l§(„ƒp+º¯ÇÞÕÞ Ä²@\x§Vð@\¸È3È#xÂ=§«ÂÝÂDµ†¡ XH $Œqøå`à\ž¨·×°°ÔмruR*Þp€E=zÙ»FÏòG mJªJ-b¢ÂrÅÝ ö–΀}òä‹[ ú¹m ÄiÏÞo”KÊRÐ83Æ¡6ç ºåh¾/-ÇÄþÜʇf€Cë2…{ê ÕǯãK”0Àïü°"|U¥Ï·Ff ˆ„T³ç¯¬Â©ÈâÚ$ÌgT#1j ¿Ëºëb›É\VîÒ´0Ž3ᔸ0þg4½¼ÄøôaítŧçËÈ@´äã*î¿€ë¨ÀŸ—¥¥¡,À×¼X^ó^2…®7u%ÞÎ ¯u;§…ƒýÈ5_Z,\{‹ ÉGÍ\™ ƒÏ¼B¤XÍb^$_õœ™b±I¡rÈ+g‘H?5·å鉞†ˆ5äÄ€¾ÀÀ ˜V‹0Bü•ã °ÙF<÷fù× PÙJÖ!è^¶‡±<èÝW˜³Á»âù‰I_4eâ—ØcÔÔ’?-àÁZ(gyAƒõIdÃŽ9áZˆ®‡C=8nµ${š´ç/zž,í`~™yVRsõ‡/gš |ª¿WÍh¥D ‚ã¬næÈVöÑœ™BB,Y¦:ß CÏ %Æs|-yb4O¼´³kéç÷€8ÓÇÆªéÿÅòàâ•ʽ†‰—°)_ƒ$à§±bÚ€Jv¾ |Š î]ÛW(hJœøIÒrXáÊ#†âb>bîÔ`å€W€=¼=qèòPŸŸ ˆËsAΠ´ÅƒÝ©‚q¹”ðQAÁ–ÐHq´b:´'!Š˜ EìŸË^dXEQ—/›ñ½ —RäQéìäXzðC…°d%k§¹’öФêï€ÖŒ°Lîj/_nNÞ=®{¤ýܺ®¬»(¸^îFÂ@‚`Æm8\2mªKÎ8`lèzSQ>:œ¯œÆå10pWO°ï\0;»\{oa+ÅØí¢¼àdQ^ã`É߉ƒhñ$(„óÑ4íàSM4¨§ä¸˜,*Ὀ5¹ÅH5’RÙ¡+¬Æ!}Z}Þ¸çp¦(ÄÞµlë –²7¥K@8,áÖ¾än) ÛÕÀ6fŸƒõ<›{Rmas0C£­[Sˆü¨‚šG»-âž#Crþ°@—åe¡Év¡¼;ùw$>º-,N¤¾j¼÷+l8ÌÎÄRfI¥a¯éÓ´ 22 ¬J—–Í ÿßô_ÛnÊR endstream endobj 634 0 obj << /Length 2909 /Filter /FlateDecode >> stream xÚYmsÛ8þÞ_‘É—Sfj¯^ýrßÚ¦ív§ÝÍls·Ý»ÞF’mNmÉ'J›æ~ýx@ZN”Û›ÌD$‚ <áä"¦¿äb_,³l¾ÎWåáE,Ôn{Ưï_$Ê7#ÆÙˆóõí‹ÞÅEÏ×ñ:¹¸ÝŒEÝVÿŒþÖØÞ]Ͳ,‹Þ´ÍUºŒþ¸JWQÝ9KÝY–Ä«E´ˆ¯þuûÓ‹··a¥"MÿO•˜óOtJ’d¾¸X¬òy’åPkhªº£åã<êwö*‰:mY7®ž_Íò¬ˆ>l˜šEƒ®.{hMª½šñFXš¶ýkœä=hý®ÍÜ oË;ÇöUFÍÜd!•šEí#Ÿë²m*Ó=xke°ºŒul22Á,ÉæI]A‰|™ý¾e[ßËbˆ=iœqÄÊ,EêTµ³ÛÆôžÉ8Ð?4P¶XD¦³FN®g³¬Óèv§“¯aƒr8Ô®« wÀS¶2¶Áè®f ‹^X§ðë°˜ñÖìí3ŒïX‡4“£I—1lœ.“èšñL%«Ã,rRK9)fl˜±GÛVÔ©Y!,l7˜E´s®#Í0cñ^± OZ]­Ò|£iò-¿»Õ<^¥Ø˜4Óè+¹è›‘£t ß^­²¨þÞ»KôE"7ʺƒi¹ãvm×£y4Ι-ï™{ìVüíI„¶vFZÉIÔÞ:rƒ—ÔIàL|Ç wz†³ Ù’5›8¥ 'ï7ÚŽ¿EôÚ”<ñÛìÑÖxŒ¦ä2å%ŸÞ2² æêÉæìÕ•`†ÚLup2÷˜¦M8'sZU­«÷µqìöL<(æ§M}à>N\X“MfÉVkñgÙygw$_ÃYgk‡£‡ âð[kL3a _hüP7æ0JílSϺÚTæn_?Z¶Í®óɻکDr€ +VÒ|6mw[¬“è~׺dw„±JË0^…qa§Áü¢vï•JÄüÝ)a[7ugö臻½-EÙ…:öX¦lEªMm «ÿ°Î6[Ù•®Cê1H*f¯"×wÆnwB!™÷ìI¦cþý8îm¿CK´µ¥Ê¯âV]Ùž´Á]š¯$øùû5.âïØP‰Ûe{˜MĬÚ"6±¸EºH¢£ý^ïIKÐjÈ Ã² ¸LÓŽ]»íÌÁa\ˆ¾Af©:9 {2ÔH®k5Z÷¶ªyûÜž8J&DLlBg™¥)6KVþP fåPé;:TêÁZ<ÜåŸI‚½ÁE^ÙS*…¾Ÿf›¡o‰CNŠ%pî½—²¨vJetñ×]Ý{ "¢źХˆ'ÝudÕ›¬;Aw¦œt—T+%Ž 0×QÇèÍÃr7ô¡ßò%{o) ŸºÑêðÕ–I†Æ~]£ëƒ›ÛÜÜ<˜îÛpä(ÌR1-ÍáF©r©&é˜3‹vrqU”³™Ù‘*[viœ¶|/á'°j:1VN v*ëÊvè(x@w©òïátµÏ¡]ÁÜqX< Íð(.“*¦0QGnLÍÊ’žÒ>€är ·¦/RjŒåž§\:aƒï QÏ-x15B*ÆÞv¯Y¢ÀdŽC;Œ…µ*ŒÝ´/è~Êè¾áñÝHßç²i:Óÿq‡Ñ¨ì5Ë£’’nQ^gür4t>—ç—cÑo¿›ÃqÏ8XÐ3ƒõ-²q q/ijˆ5˜:éÕÌA[³È¡WÆÀq/ù!Ó_}~óA\äú éíÐOì=øt¶XûäÁ6Æ E`‰ðZ*ãGs+²’Åz¾\Ñã,Sޝ[–‘Å<^$#ò— ‘ÜBÓs¡ŸßúˆµÄ#hø‹' zÅ-pSó5 wç©Í,YóUž>Ʒ̇;™–¹¾½ÖÓÔ`O£7X5£7 «¤‹Ñ€åÓCûÇÛOuâ ‡emŸËÎ{Р3]¿C®é´>OY‹Áp0¦7.xÅŒƒ›|{‘#gb^$Q”¬uòPñ~²ôÉâWšÁÄî}†;7?¿ 1_X“7ï&\DÌÄ÷ÓÍû9Zpy´ƒpîáÜ¡‹ùÈ÷мnŸ°êÄZ%oŸáÁš“Ïø0°9èÁwí´]ÛF’˜£²†?ûÊXô mF¦T;×vîϽqã)÷;‹t]d_Ä@.¦ÎÚT?€Y–™MéÌËŠÃ¥ŒTP¥Ý;ôõA©Ë Í %[a†ÇÙŠ<®Ø·É|• Ý©’=CN_+z77oÄ:Á»Ÿ:„ìˆÎ®NG ’Ï%€1?ÙŸøg1udxøÇØð ¸ÄÛ´ƒøÃk ÝQ¡‹[XN›kyQ»X.ê¶—0ö»£È¸Ä¨<1øÈWã›cä4áí _Ý‘ÿßtVïêý"4¡ÇNïêýFYûÁÁ Áq¨·i}çqv©‰²¦Ò\aÒ2”8šº®D?®Cµ íÚ=çR/¥ìFùÏÖÞ±¥2¡Äk_¯âܧ—ãXÃ-‹:™.¢E2;ÊBlçË`~)sÔ·‘é´nÕ„JÖdê#qN"™üVÖX‰Qƒð‰úÊ7ŸÁhZ2ÊHÏ»þÕCÍèìÌ© Š:š%õÑœ+##÷‚t1[<ö$æòžÄ¸œÚ«¾f µ87ÕS«ÉNƒ…¿ëÑ£ð ›è„éDYÛHzÊÓå"¯á-÷¿8ëümzSŒâ‚Ó9OýMSÚ­måÔ‚eækáÈDÆL¹gÊ43{6w”ÔÊÃf¥ÐLš Ù>bŸôQ‹Rê¾³wC_«PŸBq[T&Q½WèXVòY0Æ9ìDá¨}dÙ Í+áØÏTLÒŨʜb†·8j>­ Ô/¿ÿãÌÞ$Ô4kÌlŒ&wC#ãTÝ!-T!"LWˆ|¿ãhA…Kg(€Ñ`mùÁ5Y1`ïô÷sIϲ½Ö¯Ia ·ZtU…u¢²äŠ$)$¸»ØõÁ DAèľ(4}êÖ§ž¼<$ù€³hOï´âWÊ{… ~ÔJnAR~äÜЈ'/ úêB:Á+sð!ìOC¸sC5P÷)÷èf˜Rß¿ÙY^¡ÐÚ`2y̶öKÈ™^ úã…rMLÒœ«¿Ut힦ù1œÝJx~¤Øi»‡Ë9Ê&9a†¼LÚ“&7\dëa§*«’­"ÎKÍ–7 îÁŠ|L A{ü"B£kÈá ¼yA—™®%ò  ÅÚ»­~»ú *ZL˜þ¤“¾úNÁêã@³Y®ª–%å:Aá~%Êøg¡ç-`wžÚT<*.«Ë+ê°JHñ‰ü—T%0ñ4áÚº’ÞŒ–$—øÞŸ_ïá—-_›çö8í%Bú°i'+¨¤£œb™ð}¶/µXÊß,Êí'ûæg~±fÃä"9Ï쑜íq©¿‚ð!“³|–ö&Diç‰+Ð}®Ëí®ÞÈP:²Z’=Y‡Žš@ IwƒÖ¤ðx᪑q^Ø–^¥Ú©t'âOÌ¥¥[¿i²ã_§1Ï«k M~ÚZ_<Êå¬ñKQ Fó7N°u‘e°l>öI ˆ£×5wvæô#(b’*`ÑÚ =<쨚šxÛd•¢%£8ôÙÿÙÅ›I„?JWÆÁ~ñEÅ ˜/VÅy´¥üÎ^ÄÑßßþúú{Ôí‡Oú‹ö/7¿øù½ÿñú¿arNº endstream endobj 638 0 obj << /Length 2900 /Filter /FlateDecode >> stream xÚYK“Û¸¾ûWÌ-T•5áK"µ7Ûo&µko’qª\Ù0$$1¦H-~üût÷× !‰³Né@ ÑhýîVtÒ/ºÛ…wY’ÜïÒü®8½Úî0øÇO/"Å[âÚÃ|ýøâÏo7›»(¼ß…»èîqï“z,ïþ|hª¡_­“$ Þ´Í*΂ϫ8l×W4]'Q˜oƒm´úÏãß^üåq:iÇÿç•ó;wŠ¢è~{·ÍÓû(Iq­«< ÚqµN£,8¾×7LŠöìÍLSò ʪºêi,†£ÅÂíjM*Æ“møeÀUƒ¯à7LN¶¬ÆUœVë(xI°„8Q©ëE{:Ù®¨L]뎶cÎÐK×Qrmpù¦m.0é)Dl†Á¹kù¸ÏUiùÞ[¾§ܨê1ú¹*lÓ[݃—lç—wÕáè^BিWl0d›ÍÛjP»¸gä.Ê[IÊ»8è0¢j˜ã:<Òëð$ ÌùL ª+Ûc>´]é,ð›Á¦ÓõÎ2¥ æY‚U×Ð[+yS²éÈréà^¼‹H‚ÄVž˜²äAL … yX°l[¡X ¤ã=0¿¥÷²jÀZ Ç–y ÔöTõ€ü,lŒ&ÛóÀÞ³ö„³3Öɨ®ájzóñJ6ú2[0ò±© Ã<ÙÒvkú±ÆoC0ž í)þX €’> ´hÁü®­]äC+5%„ì¡ïÇb èÙ¤ [¼÷‚¤³$o¼SÞ»ÝÑ{?±T,f|gKeÅIðW±‰/‚ª¬É‚ˆ¯©©ÝóÄ…=“­!¸¦7ƒ¸-Wúµ_ Þx4ÍAo²wWÁ;î—òÀoÞ$ó’MJWwò:©»áìÚt‹¡mÚ‘ìTÆ"‹ñÄ×x¢“3Q.ÞÖê)ÊÐë“@öŒý€™©YEy´oëZÙ&sˆ†(’à¡×rÓ[½K#gßÛ¬J’4HflïÃ,¹òÁqœyºK܃GµeÃ“ÅÆé.›Rì'V?Ĩ½9éHï¸b;ìuq0ƒ-•:xÔÎÁH©wÖ¬ô½¸Ù™Ý÷¹Ýœå_n:ëYí‹ÃàI)q¶ºOä8¤aðšâÿÂjýž0 C},ÁgöÇšWñºc¿@)ã«ý7,OyˆÐÒpU¨½ÛnéA  AP¦l PëM–N³´j=ôK%ÜbÃjÆÁ™sݲ7õè`÷­’"WN(“¦¼ïT5óE’\¹špFÜW%#Øäsäá¥Óì¯sdv<ÐŒùÉ’x¡ÁwKò[›Kr‚BN‚åý²ðó ÝĹŒ‚œÄAÜEx]ªIm¦©±ãÒîRPp:šM°mD Ô…©´îD!ß0YvކG>!E‰ŒtyáqKeQèê)p&Õ³RóĹ’0›ó IÎcvZ VÔÃëJ3…B´ÇWeðD¤OŽšÇbTJ â½U(z½æzÅÐ/f-HÜ\à †RÁp+<”4®Äãñ$#—¤í´tá½­&&’ ËkÚz$nÇ~Æàïoa”Nî:w½Ýú Þ.èíXëÝÎãð¼££™j'FÍIyã*ò(Ð9AÙ„¢4\/Lµ-¯8¨»HF}Ûº"½TÍU®oŠa4µ« .z²UñK¤£é,¼‰ä8 BÓAG3Sþמ‹H‚³9Øç%ïülpçgT´" ýæÃߟÍï£ÅÚ”L1¾RDÎJ‹ VÂëÏå5¼†¼†7#¯a˜ä5T-%¤ò^¢Ù¤“bE=–£ØzGr¨k.éHŠŠ Á³3M&ÅsyaëuNxfÔË„“_ãS•*fʦ[+tfër]ŽJ2ß ‘ÇPœ,}±”ºc"ÇdÎÞsú ðÔ»&Í ö"8Iz?LÎsíjn ZFòe>aw­òÓ²A{B§@„É—c¥7yÎîb2؃mlÇ6À“Æ^œ³{ˆ~«ºW`|d{ãWª½ŽÅзDéÖÔ­)™¨l”ÊšÙ”¦+¯OÍäu ×¥ð:èsÛš=n,Ê">š8W[iÅ29OA4g›½1fl ¼nŒAR:Îü¬õ·Ð±%·WD(%ˆ¸M>‹7lº·Z5Yo%àÌÇSÞk†É(% g(ŸŸî.÷ÍV$›§Ï&·ŠðHNÆÒãÁ–ôW®}öC3ñåh \œ¦Õü¡jž©6ávDùRÊÿ„Aôu(ÃÉ1¼R~¨>«÷`² 4',ÝŠBzÙµÅ×k÷àXx«Ÿ(#Kw<‹s)!¥WÿÌ$ÐQ(B:5bø–ÓÊå¥Î–þÛ’jgë—÷?>¼}xóŠ]ÇãÃûwÿ|¶›5÷3¿3›í¼ðÍ3´ìòð2£¹Áú/úW@Åi©UÜIù¯ïd€äe¹&¥ñ I†Ã`×vœPóð» Q¡„®!Ê‘šüI ®Oƒà¹5éjnMn¢«?vx‡váh4ç§ ·ßÙÉY‡£ƒ[6$†dfÜó>Ï)cQõv¹Ù©ÿàBÏ(%qäTM¢…Ö‹‘J"ó®ÀÀ I0%^¬kµ7WdÓ kk¥‹ò––Ò¾†U ]<&üÝ@šd©ë†¥”n{œ›BL¦–9'Iƒ3ðò™šnÆ™!øaçRVa’mߣèïÑßCû?óc†Þ`¡ÿ>HO* ÔÌ] â%Lyv²ÉE÷Ÿfe;Y{o]¨¤ÑcêšûS`¸}3=½úAnH·ËóKû~¥áC¯µ¯ÞäsYý¨ #þÊw6ëj_*AE<íÆøÕøe7FjHª´fW÷­Õ(m7º{>‹Uê¡ë{dòr€Ñ‚ÿ©äSåå÷i§û!ÔÈ©Uäg‘û߇P)6>û¹BÍO3U΃!ÌT(¥„2_O©öŽ´í”ô0DfñÆ$ëÓÞÿOÕyü endstream endobj 642 0 obj << /Length 2507 /Filter /FlateDecode >> stream xÚYY“ܶ~ׯØÒK8Uš1ïãÑÖ®l9râŠ6N¥¢<`‡à"c‚³òþûôœåVRó@ q7º¿þÝ„ð‹nªð¦H’C•–7ÇîMHÒññ† ûñM$ýöÐqïõüáþÍw²ì& UXE7÷?Õ}}ó¯àï½™ìnŸ$Ið~èwq<íâ2У5PÝ'QXæAïþ}ÿó›»ûy¥,ŽÿÏ-aÏÿ±§Z㛼LQ’ò¶v{Ül M‚ÖØI×XNÓ³l:iüÃøÌR«ïZ†æªëí@³/îñÓ—0‹»}ZdÁ?we Ñ)l~æQ«¯æ±ª“Òd¦vRSÕÇÞGÉ!Êø$Š•{õ“.¤êôJÇÐlþòÐcÍ£éU+£/ „“¹:̽ÕôÊ„†E²à™õ9vÆbŸmt‡*+á›Ò¤âýþ Éó0øzűYÀSf°šÊ÷pp)þŠë¨GýŽ«ÊÊ÷2†Ñ¾ssHïaäo7Œz½5;ôvÝGnÉLFK˨-v/`>kÜ€ç™ãiŸwq2´JNšÃ/é ÛDm¾„QzTh=–[ÐÒV]ñ»¢=¢ð·]™¢R¢`íX,àD<®`ôð¨'º8ìýÍ€©„‡ßV++Eœö =P¯Ì(â“ÐÎóX¶“£E™þhÎh"(—“rÛUçø¥és?p€Pµ2[œ, ¶WÀƒY,JLuR2ªÑßv컨““€ÕŠ‘Ê‰¡3zâ;¶‡KßjkgwxæÒ¨QS8§fÁ3Ž#‡…J3žNƺ¿_̨ÝÉ—‡(¬ÄäߋɞÔD³bó¥óÇb1ø28ƒ±³pní ‘]sn*ÑuÁïÝèB†Ux†…B6,òhRL%žÅãÈÜÝQ<ÝÎ@±7ËÓõqo帿‚7éñI. •G¦àÁP‡3A! Ñ Msbq?L樭Fé2è…±ñfð×[¹“­|_ ¼+Ánu>Ø_Ö!F1o„Ë áÄ4¤¶íá´Hýuœýð|¯ƒú|WÀ%‡°µÒöÖ¦·)»€l’Åëssìí¥&èŒ8ºN×xä>h&2š0“lkMËš2“ba ¢Þj¿ÏÑÁô,Ÿg>ƒ¢ùÝyyÛ¾u­£ú{I:Ã/ÅI0èT/í[Ã@ë"ëk‚G$»³,cT*ű±ô‰O…8TF Ó8ä$˃t[°cOêë[Ï—dú+SÔ}}é¸&¤å1‹7@YVWùã¦7ÅYÈ;ƒ/Gi,Í÷wÜ i4Bcêk ‡¡H*ÈÐZpö§]Ñ\crhúÌÄÇò,ª¯Y,(µ÷§;tÂòôtOô‡c…ŽH¼¦¶Îþ'¡‹ñÍ€±¨1®<â§µGð(Õ»¦©Z° Š*õ›®Qȱ^4=Äi¼f:·q0“°‰……OBåÎÑ‘–0$_€¯ ÿ|‹ž—“1¿†…ê–ó ¡PÕR èÉ8žRCïêšÍ9z\¬È…x%n\¡À¯ ,Šg—M%^’D1b$ 5Rî‚6Os™ §cnQ"; Ë %Šù‹¼ŒbáÚÛ7|R ûF†¨Û_Á°‹¾PttÏBÜ=>6s÷QzëâƒPv?1¸ºHøéçéFò°ß:ˆ3~TZÑjÔ¹ ˜ú–±w] åyA:9«¨„ÓÐÉÔÈ'ó˜tåîú÷Ë42ßIÖ}Iù6’T°TÒÁú‡ê _6Ýja? óè>81.×s¶ä*g˥Ѻã¦ZÛãhøð• 9Õ¥Fá*BЄvÏ‘­ ˜þŠ‚øé¦…”ÙNº_0(;”I¾Æ Ÿ_·a(ôz™ˆáãW¶¢iâroÈŒçë Sp*iñÍ=ãLcµÊ[G1(œ9LóìÇ#Óeœ``¤pgó= ­8FpOƒQõö¬FùÄ>˜¦±¤ÎÎJÓüáÝÌסOk¾Ò©¾+£dx´¡6®ÔfyÄ bÔÌfAÓ›zJKG ß ÒÕÆ厄µ©ìKI·e`«=" ¤f÷'meM|(XO…ÿL«µÀ&k.3|,\}ívk¸‰ Â't{1 \5öÞ$°Ç¼.V†ŽÒ.()üd¬àÒS0 [Fd±K‘jæq)(Ü€Ô1'§Œ*iêMGVñw Ø0÷®b45ZÆ®Ún8÷¯œT›ù)ÒmƒPütIɯüÁÞ[IµÆÅJLYzolÿêá$e› ô±Ñ£KCn[=ª$¯=ª§Š²5²üYåÝ(±ÝpÆªÌ +w W P‚óýûí™’BÓãœÜRbü–»ºéqÈ-äâ_oß±\ñÔÜ‘O(0Ê;^e•`dËôÐá8'ˆÏë*¡è#¹¢š´×=.€ïýQªóäES,ñvB —¤šÓºeÛ÷Ž« âÑeäA ǯª–©hý÷N!œÍZÝäÈÄ „«({ÏmaZ­Iè§í˜S–’Œ—ŽaA᣼Ï"ê{ü›þ5æÞÈ-øNÈ5³êš»jñ83J2ÙO_»ÄOáÙ ¬Òy`ÅO£˜ïsØóç™~A íò¬¸p€Àø • ãPÀô…ÏÛz¸èÅ’a^!Œ _k9 Ô!¾I @úŠ9,Äý\öL·‡‡8Y_Ö/rY·ºÕî¥höb¬x³×4$è’w} dn1¯·öÑ}¾8¦Y_Ì—Yº·Z–0”`è¡ Š/Ëb9ðU—n½>¥þëÓVÒ&úø‹ÓÇÀϼ¡óÎI#>FÌ‚ŠþâÁȬÊÂàå4 ¼R"H6•ÈMd?ÞL`p¨Ì'y`éºñQ­¸í‚bø–žÃz/¿|%ùÆ&±î-üEýõõ'7`xPãèf_Zn=¶Êtp%Î<e‰«T‡"Î%¡EKÏÌ·èuž]Ñë> stream xÚY[sÛº~ϯðä¥ôŒ¥’â}úÔ8Ω;I<Óè´Óiú@‹„š"U^â¸Óß½)Ú§£.Àb±»ØýW>ü‚«Ü¿JÃpGÙÕîôÎ'n{¸bâ/¿¼ dÜ ®œ‘¶ï~ÿ)ޝûypµÝ»¢¶åÕ?¼_kÝw׫0 ½Û¦¾Þ¤ÞëMæ©¶ÓÐ\…Ÿ%^^ÿsûçww[»R¼ÙüŸ*áÈßÐ)‚ur•dÑ:#V«×}¥P¯,óú¿¹×3*ÝõL5{Qé×qâ­.h2ä›Úõ°‘¥ë™¬/ ¦–ú»Dªdæ_¯³PLð»Î¬¹Su'“ꦇæúz•¾·=*àƒ}`¿« \ñl `Ú*4ÖÐz¤%7JØŒ®wÒµo›R‘WЖ^˜Ý€¾-“¨CàÑž˜Á묭éÚÏVáï¸f¸^EIì ˆ¢,…àO§D"6îhi’+£¾ƒcîê²i;uRÜÛ½¿¾<óÎmCÆ×¥­{þîZh4?rÀpG]¸ñ8ô³¬´š­»Ü$ìiø¾ ³Zn‘÷R×{Àt¼‡ X­ÿÂ4ÄHŒ1Ò 3ÎEÛkÕýw߈Lõ³8+uƒ­Ôëú¢g]RÑ%F].Ý}f§¢›6`•VýÐê™é†xtEÏ ?"ÔOa‹Ž ‰X’&çë€mlŽfiƱ;‘.dpÓŠZÿ§`_RO7[±úcÓjØ–fqK>(Rƒ2²?| ŽN0K]mùvØAöÃ. ;äü9]‡á\3høgž@gÚ¨Ž¨Küg ƒ¶ìD\'ò¹ù h%úV·Ÿh@:Dxf)D~öèä⡾TKT \•,… nòÔÛÄüuÃfa¾üùPìP§Q§ÌãˆI':ù‘,ŽKñ\0 Mz8º]oˆ…t=2O„—îœ+L}›È{¨+tlÞ®£ér ø¾íÊE…0Ä®T#ˆì—‰ýÒqƒ"#42B'ìò1á.ø"’ò†¿± éï~ìSBº?¶Íp8r£hÛ¢>L²pOE‰šú¡錯©¼ ”É°Ü ŠƒE#8W÷{³¦ŒüÈnÙ fE[µª(_–vŤJª<é†": !OYœzp §¾Ô¬ }]qRÌšLÄÐ]Ï-¤$*C?4PJ) `ž±fêXØ’´¹Ã,f³rzaÕ…à ±‚³Ô”ñÄ( ”¤jcZâëgO. äa-B&¥9N‘r,ª½tì±ÌùþTÆ]Ѐ¢&)»á5ì?ÀÌC"ð–KcŽØÔX¬UçªØ‰7¬[šª¢¦ú‡†O1ðÏQtÏ-)FíIwRS‹-\g,S\ ±5aL` ‡J†îp[(LÉ2ÊAf*ÅÐ$̶]Ëê.Š˜‘(%aÎ,†BȪ…ŠèªM,:.!(4Æzd=6ž8µO¦.æ‘‘/ï Ì3ÇB1,?Šä%/ ‹‡Xÿ{$âÂE Ìîg…®A„#÷ÌнÀR-8nô²|™é¤× ¨Û†Vˆ¯l*"PJHÅô,]ùG¼´IÅ©9´HÙWlhé~ªéîò\ß`¬%ü:|U1 ‰è²˜FÖµLËs¾…ÀY;1Ó &þKÀO¬\Åï¤Ç)×j²h^_lâóec!OŽ¢~–{þ®ÿ¿NÂȹ¹bCýìÛ‚þ¯‰b>0ñ¡¿\: ±y}ÁÁY ÑÔ{˜¬äìDôQ«Á)ž E …3¦ßrX->ÓT„È3{ïEÂ/ €Â†ƒµót.Øï8_Xò†‹›`´ªXÙ`iØ^Çqõ˜#ƒ ;%i L09 žk8TvŽÆö!ô‘cg#ÈtþïÁWö&w±«µùsõ«ðr endstream endobj 652 0 obj << /Length 2760 /Filter /FlateDecode >> stream xÚYYs¹~÷¯Pùe‡U¦2÷ñ¨ÄŠ­ÄkoÉL¹RÙ<@Dy8ÃCÑú÷é sH#ïh4¾ðŒ®BøEWUxU$Éu•–WÛ㛨vÅûo"á[ãzÂù×Í›¿ü=Ë®¢ðº «èj³›ŠÚÔWÿ þÕšÞ­ÖI’ëÚU\«¸ ´uºë$ Ë<ÈÓÕ7ÿxs»VÊâøOª„œ¤Sv]EÙU^¦×Q’²^ÅõjçapƒÚ|øpûáfU&ÁæîËgÖöÛÝæ#¶ÒàîóûÛßnWQßϦ}Ãi_îÿù¿Š²ë¼Ì®ÖQqV/pŒal»ãj'˜nÕó¦Ã2èv<Þ4Þw«5Xg{>jœÐâ=ót–YØ’@¨µ5«,@à#ÚTËÀÅô™‚ešÓ'eU¯y@µµHkk}¢55´È5=í|%×QñFjT¬$ÅX)\+ÏX+ø^ØÙïîô‹äÎÇiÇ9èÊ]r×Ð6ixÇ_v}gÕ^ÏEÔÆõÖ<œÅ|@9êÚœ~EÑh«šF×K{P8- ƒßÁÿj¿·zöxË4³ã/{Ûî„:>Y³?x/ÙjwnzÓî¹»³èÙg§ÑÉ(Úñ·íDÆÙéZ&uümÌÑô£œ©î¬zº6à* X¡‚<€}4]\Å0¢Ks{¢Ã/‹ZÇ£äJýD>À@ÀñËAõ^fĆy4õÙ¯|ÁeÑÇÜ=± ªC¥ û·Ç‚áIbǯ…wGd%d1í¶9×h îñ¨j¹?¸ œž¦)HæyQðÉluëd‰V-2Éò$ætjž˜†¦GÒ çÊ‚öChsÒSdCi‡'£N<~9˜-Î8Ȩ6q?ê¬N7\¥*J.g’Ëe “&&Ç.¥É¸v:5(çîõ°¬B9ïàC$­Ä³YE×̤ >ý£gN«ÿw6Vûdg–NÄ8½åèFbÂ4tvÑÂf«-KvLï!8¸[ŽQ3ÚÍ% ¾Ø×»…¤è1Ü`^FÙ§¹ÌÂûY¹*hÈ瘯ÑÎ1¥?¨–i]+sªq¬VæÅæ˜ÃXa†cœ'#ãûçåòYynù…hó~$;*ªBܑĕôkÔVKò’3à»õÒ‹@²œ¦[E‘ùVïý°È[2&=&¦}Æ;ÛwUQ‰ö {Ò DŒíZHŒuR¦G{3Ò)¼ËlÜFÉÛ@è2•Ð/Ó—&>ÇÔ¦¸Ölí,Øuöå*«Šà füÅ8Í#¾€F`î—ÁvÄ5ÎNrœMe™ÐIU8YÃÚp‰Oh/Åt/”¾ªç»¤]2ËîË¡kX'ZÓs|=Ã’饚ÍýÍ篟F0óŸä“h³ªuþÀJ“’K1|·]ë T&*ÆI…‡3’¿›¶æú ¿GvEm~£tK’°>ãAÞ1Ÿ5gaW¸å'î §ºæ~?jã–b‰Ö,2ac!|8cŸ±öpX9n²˜<àŠ$õ )X° óà^c‚ÑAüw-‡$Â-kÔt¥¯<]øZ:§ûZ§ÕPc¥çä8ݬOmýSáyn¸W; •"m™¸ ¨õhB¡5X”eñW17[c>4Úƒºª¼"…(‹±.Ïïü0÷b î_†ÌÉjNNÓ¼ g“ˆM ŸY G‚‘/k-CäÃ-G£º¾¡CFð†xÃX©¥óûCûÁyî-î5*‰ï=\BùÌÈdóѸõ¢¿:ûô–à“Pq¹»KX$ÌBG.ô°ˆ)P#nR„É¿ÁY¢­w8Rè©Y6¸·‰´©ÅÒÈ'4»§:q2x¡~âAÑoi?|çQí^îÆ£¶=Ý!‰ˆšüÀTÀÜÞÿz÷ùÌX¡ã|R¡¡Ã÷-¼DÈ鈜è xXvSª;?4c}ŽÅ ¡Æw›¦ ‰7/Â$ë[}’¶r¬ùðÇ +)ß„\ó´þ³:'–‰“á›øD{j7CU‡!Õ÷úxê¹Ó(—tü%« ±à ËtÎV)¦VA*XTn(ññÊ.U„oàô:³ô\45¸Ýn6<›üdêwrO¦âŠ —Hç¾;BfIRø j•ûD×ã³åÞðT#0[ÌÆwn#ÄÁl …å#þ2”L)X¨añ .-~J Fm5W|ºÌ4Üx4ÝP°3¾E"Yt€Ö§%c&y(7Zœ$‹Xž0œÿ8$oNã œÖöÞ¤:£³”]ˆ«¥­*”ÈmR¾V›ÖõŠ/1ÐÇ¢¡¸F`wˆP,åä ¢q7_®‘} ³T؆»œ<ôNõ3•–n’?ðyjÈ'ù†xó`Uˆ>ĉãþhNd³<••˜p—¼KäÞ·T+©Ý yÓ0Rÿ8€Ó_nfaƒµ]î¦Cã¸GoðÅCv‡á^“P+ä±³8úƒT¢¨"dŽ= A Ž¢Gä"_fBÁ7á«— TÍ:Ñ»7^ös¸5>(ù¥·Zž(ëq›[õÛ™í"›ìÒë4ÂÌ0£ÄÛubµá~‚yÿ ~—ò!AòTÿ'+]‰oÐL™d}’…ÓrëLϵ™χƬšó8–z”0ø òwHõ)2®"Ó¬ °%¡yõ /x‹­¼xlñ“!<1y,&¦G$PgGdGd(ÿ¡Ï15êHa|…'grè‹;4$ÝTŸ˜ÓW/V”˱ITQGç0RæQ‡ÿ|œ Þ&®Éî°¿C;Ó{I4}ö€ŽGTQéUTMUÒ-c2oq‰’Tõ7›…H”[z§Æ'Foªšû„q)`)ËõGÆÊE·Éẹ̄義ÅåXæƒòVSòj¤ƒ}yê._­NrÑ™ª÷l¿àAùŸüí2ùÇ# ö“ÿ4ÒIÂìóÙ#Ïÿ=–âWF^ûÿˆÿåï8´ endstream endobj 656 0 obj << /Length 2225 /Filter /FlateDecode >> stream xÚX[oÛ¸~ï¯0ò²2;¢dÝö-›“öä ÉuºÅÁé>Е%]âfýÎp†m«è"@D‡ÃáÌ7ZÌ|ø³ÌŸ%a¸ÌVé,ß¿ó µy™ÑàÓ‡w‚ùÀ¸p8{~wó>ŠfÂ_f~&fÏ[WÔs1ûŸ÷¹Ò];_„aèÝÕÕJ&¤gmRp ÎDŽÓè‡UÅZæ*®Âéà*#‡•‘4-À˜£·²qÎáâe,¿úQ^›V"=ñ• C+aJpL©(ò­“Ä´“ü‰äƒÌS\—ôʆÎùþFÓ\V4(`cÁ'wz,û¾·í»¾QX÷áéÃy§ËÝ3ÖŠGÙ¶\?1ïøÞ#œÔ—¦KÍϼ;<¹.Ñ’¼V7¶Ù…åµîÔíÆ¨±»ŒøÇ;‡‡³L÷Jš>×ÏÜ„ë{_L4eAk_‘þú‚9Mm0'@7©{K¢±¡³< ÷¡Èn‰}‘9±Ñ/;j‘¡Ó£%uó9©8Y¶5‹#H¾‚b-­e¯«ƒÀ´•¹.¡nËeÌ£ýÀ^|c¼L@)ÞhÉ€¾ ªŽ0Œ D@”Äü8¹%²­69séoš…‘-@ˆ4Pž<‘¢xì‘Ü_‘ž´ò]î%+1¶ÛñµPÂÏàì­¢(4 ý~H|t±‡„;h$kL »âí µAÜþñîÊæd›r/x§ ½(•N©¯;TƧ‰ö¡†½U¿&„?°¸`2qmJ Ku« ,Ú,ÀÁz&puŸN ãïî¿ýw±¾E“ÀÜjF,hw« &FJ½ß×–ïÖ(Ý5žQ`ÛÅzGÅønKýÍÙ.ÁÀ>Ë!¡§¦ÍYLYÓÞ/ÈVC}Äñ©F†b5¢IspsÌ5£V¡$/ ‚uXå:¢æ´'óRÐ-Òˆ7]åú Ë)u¥ÄZ¤ä\ünú°ƒoCœ!xð»–< ú%F·y}ÍÚËRƒ~•–L¼Û Aág–ʕՌ-”ðÍF”ÓòêjvÑôZ“[¿„N 6ºÀ­Ch¹g¸Â“QVú/î<À9Õâ¡Ê]ï`ÖÃw!?Âhü͉TÚbè…NÈ’X/ÚôxÈv`;îj )+(–ð!ÅܦEÃ4a¯DO§ÂÒɉ-«§÷¾5ÞN)"ƒ41y hUêm")Ø£Š8n9:WDÑ[Þßñœå°Ó Z…æO±j‚qôQƒäáùkSuCIèJœÌ3ÙZ›wK,’æg,˜a85-/9ØÁ)+…á±ÃÉøô„Ikº„½:ᶅycæÅè!AV XöšFx¥Kßµý¦Uÿï¦ KÄÛÄ ~ƒvZ…¯À“’gÜ%ƒ3Ò$¹¦uNV/a­\Y€c' ¢W5}I ~ ó“ÈúÞMúÀöztðë<Šà  åÐC˜J“›‡ïµ­B\)P•€U MÇ’Ïk J?V–Y°nN›Õ'G÷=JÜpÿKlâšØßO'kýdºÂG?o”iWü°^E¦À9µ„@X›j‹£á—;œ8IbrÛYYÇ5]ÑRgÕhÑ„Ü ØÒ‰7\…­¿bÈ‹ÁÐ:;þް¿ž†Ãïžý™pÛ¿ô-ï!hÂìšHN+YœÎÕßÚ„îcÖq^+7å,ío~~”L endstream endobj 711 0 obj << /Length 3199 /Filter /FlateDecode >> stream xÚíœ[sܶÇßý)¶}1•xâÂ[ú”رëN›É´r_šÎ˜Ú¥$6»ä–äJÖôË÷àF€\`Ù–íŒw2“åå<ÿ.¤Œ1ü‡E¼È(EË«í“X\í®òàﯞ`e·Ã¥eùãù“ï^&ÉǨˆ ¼8¿´«:_/þ½iê¡?[RJ£çmsF²èæŒäQÕõ5œ.)Žó4JÓ³ŸÿåÉO磧„À&q˃6åd¢,%ªMiΦL¶é‡/~úùÅ›¿}þ³$ús{Fqt+O†VþîûJ]¸®{yô×zU5ýŽÔ˳%ŽÚŽŸ°èŽ×Ñî;ykÍkÁÑj¿­~B8ªó³œFÂ}¡Üçñè¾PîÕ庑KyÊýAT¥?8äå;~Üî¥éuÉÏn¸•¼rÛÕÃP5Ïà¬ÀPåj³_«úKi±jwÜþNžµ—ºM*pìlÕp]ñçHNäó¹ X”Íš°h·‡jyÌkw/ÛͦåÖ·us%ï‰FåÑ]W_]ÖC£ÍØ$0nÚNÿÙ÷ªþòrÏ€£NÞ=õ°Q‡»òªú^*Gñ"GEš2.ÍÁL<S÷¼Ý‰Aý I¢_ã$~ÿò4phJg1Jã‚# ÞU%´ƒ}t'øáÅ›r[9üò’XD"ÄKÌ04¦€ƒ1¸+îýRuÛº—]Œ×Çâ¿W]Ù ÕZžpÔù/Äóî™<\×ýÐÕû¡’çÓïZÕ¦m»®/ïTÑk]ãºz£ÞV+öͺêtUã-SE9N“{¯~~#^v•ºôBU_ã³(âT‹ÿ©3 ?ÁˆNÚ!›¡ lTë7å Ûucßí/6u­ãsq7kŸiÖ?ÚËá¶ìôõžT´ðO®0ÜÖÐa¤¬*⯛›²«A U[µâ…ûgS«—]Û ËçínìyõnÐF‚vÛúÇrõ›2v´AEгŒî%Æ.dãÄZŸÍÊôò)ä HÆ»‘²}û–KëhVˆÐOŸ"Wò\ŠHÕ¥Ø YÝkxFs“÷ÍDÞӣ޼òZCI Tá%-)XÊ¢—g9‹ºVZ@t­ñKV%r6­,.Tá×A nû›(“ÛerSF8¡QWí6媒7uê„~ #S T…ëWÂ$M)†þ¿$ŒX?˜^7u£?ÊD·©•ÌdA™êêÞ•ÖX†RRÈ´ÆŠ9¼£ÐzU§©xž>Lz8Q #´J^Ðφ±ÚZ' ŽLïhXe ÓeU-¡" îgdŠ–Õk]ÝèžÖRŒò˜MZ{Ø,œ£œ³fÓ9«Z-‘r'Û)>ƒ¯yÆFZG'ƒÅAÊ ”%ùa¢0'»ãüйœŒs‡\Žû²å‡}ˆß2@ð¢< í~'coÈDoà—ìÞ@‹BN¨ –¾ÝVÒ¢…ø)ãU»åe/êFå q_µøh×®!Õ<“üo«îªÒóŒ¶×㾘eˆ§VŠ Ü‘|n5‡D(Ùïëa6sèëa/Ú%‡æ±]f‚K ïªàvòÌ11")‡•geÍcÉ 9ƒ:˜»Ô7u¹‘†Õ»r»ã=GœµÊÇ®ka¸ßÊ“•˜«Âq­yH–ògròB]¡÷k}º©Ê^Á7 èØ½xàXF-÷üŒ üwWvåfSm䙚 ðC•œÕÙŠŸ]·õJUÆ[Ï/ÅÈÀzkGiĘ˯nÌ, ÎA Y¼Wª¦aø=úXL¼ªšªãAäâýÂÿ•ÔÖL1ŒâðDB%>³2Â×,±×‰)0Õí ˜öç¼ýª+ò%J3·„©¥,aòŒ*N \ïŒYÊ,ev€Y6¢jzóigçeàÅ…Òë­#C”¤:A8ja(‹3}ÿ)< S±€á¦nÖõªäÓD~u×ÕÞOŠH]Ú‹uŸ|;)a¾Ps&¬Àp†å™œáûï}HÙr“äÊ1]Є ‚à{–œÚzi™‹eç4GO«ÏËðç"ƒ±­õ¬¬z†å.…EA–¤ÒC·ß´«rS95JQ K Ï-çg*à£HE?”"cî§È”^ŠÂ<ñÌ)¢1J NÑ~¸Ì‚\•&ù†"Iöµ24½è#J)J”1÷e‹›0/QažG¢ŽxæDá1Xµ…¥w¤ND=QJ‰P¢Œ¹Ÿ([\{‰ ó<uÄ3'*†µPš£|Ã…Ñ4ÁGJÀÉ ¨ûÇ>¥G(WÆÜÏ•-ñ‘±/ÌóÈÕÏÀ•°+B3ŸíšeødE`¢ž@Yä}¥dyXÒ²d™{YšÈÊRKž5Kǃ¿Ðà»î[þ a¿áŸ®Ô» ߀—/Áîçc´øbàù×^˜@ßODHïÕL[/-óVæUJXœß™zåß™óÈ!)2€„1È>¢¿¿ºr®zLP\|™Yɇ€Œ^(£µKŽÃd!ôr)䟺›~¦å§1=¹^.W×Õê7džŒPd|¯Â¿kwFÖK-æô󌺌õ‚Í¿N4_ M7³Ò<û}Q¡‚Š…1÷saëD‰Œ0¯‚Œ™G7„ ¼(&h,oªî‚ƒp dFA&âF„C„† ’Gê1=ÒK×Q –Pq¹_\;Òqü qgÝâ‚k³QÜv»ƒLíÈï b4÷Ê*¿Óà_¥>ªºØ$Ÿ/åü¨ d(ÆÜƒ­ uO¼ fÝ8ÄX ä# ôØmyázû2DÒì8< |šI‚Oq«PŹ_q;ü”9ó*Ÿyt*N Œ0¦Zñu}åÔƒÅ(£ø3¥uX™ä_Ú*Õ…g –¹ЉBîQ!Ð+‡bîÑ EÃÊ1ÓPTïvmÿ.7§4p ¸ŠU¨âÆÜ¯¸~JЇyŠÏ<ºO T¢¿¬ï›ù†eúy¥.è½]åƒD…7cî‡ÄVÌI˜WÉÌ£’¤@”¤’ëj³;Aò!Qá …Ä˜û!±sO(½ Hfݰ\L4$u?´ÝÝiEñpT Cq0æ~lm<8„y8Ì<ºq 9ÂtÜXªaAqÊ1g¨ð†BbÌýØŠÑÄ I˜WÉÌ£’¡dÜ„ð~Õ}Zƒ„­Ad4C‘­ýDXòx€r)x˜ºsã€Sñ—;#WÍRûÏ‘?1 "Eþ{xmê#D8cîgÄÖÌ3 ó*(™ytcƒžlܘÞÖ;?½³øÐå¬ j(ÆÜ†­“gÖæU 1óèD Ê’qW«©nû¡ìN“ÐÏ/t q°Ì½8L´qãè•ã0÷èÆ!ONÆmív³>áð~8¨@†â`Ìý8ØÚxpó*p˜ytãÉ?ŒÐ84ÕRüƒz%1Âæï?ñØ‘ üs~{ê#@Å.”cî'À–Ãýž+Ы `æÑM@JáÚ¸ÁÝî‡Ý~XŠw]ÃWüN[‡%T\cî׎´{^èUˆ;óè7¡ˆfãÔ®k×ûÓ;í÷ÁA2cîÇÁÖÆ“íü fÝ80p»ÖÿÝ×ÕpZ&|à2A5 cîGÃÖÉ3 „yhÌ<ºÑ áqZØ×õO‚öÞgßIE3‰ÑÚO„%ˆ —‚‡©;7£$÷ªù?*·:ñðþ<¨p†aÌýDØ yó*˜˜ytCÁÿé©|ÜeªÎõÙãiøxØð¡‚І1÷£aëäA#Ì«@cæÑF#ZŒûÔOh< ÔP4Œ¹ ['÷ Œ@¯™G'y²"Ÿáþ¦†ÿOB‹Ž{ßcð¿úôtx¤WA TÞX{…·Upëæ’Ë>sçT=+‰Ç]gï7ò§…ç= ¨8‚`¬½ ØÂ¸A8æòÿ¼ø endstream endobj 574 0 obj << /Type /ObjStm /N 100 /First 879 /Length 2055 /Filter /FlateDecode >> stream xÚ½YQo#¹ ~÷¯Ðãõ¡²HJ”T,¸ë"E8ìîm·ûàÍN²Á¥v;·Ùþú~«ÙÄã\<_lif$’úHQ$ÅU]p‚‹Á¥\±F‡äˆJÿEBt"ŠÏø–rr‘Úêb W]*i&ÄN™œ:UÂ÷â2æ§Â.—âˆA¾ˆ´µŸC®¦~®£ 60ƒXå*Í’‘gµ¹äHÔ&ã“T›UEAK dâWv¤Ó+&tÄQMö©bI#Õè˜If ÁX¦2;Ž˜!\'‰“ÐÉâ4ˆcrœ3¡ƒO5€¨Kü ££ŸÐ¡PAÙh{£öòâ' ìQŒÕþðð¤!£PÕÀVèàSጠ¬ÙÞ0ð¦4S!"ÞD¥Ø'¨"õƒÕEUC oJ0‚¸UI¬@@ºRÏ‚1ÐDÂŒ™Ú'f{S\ÌPÐIÌ©`Œ ¯XE2ÝøÁTÄG*P†2>)­cjÈa¦ÀXƒ²dƒƒm†ŽI k4~벟>˜€1´¢-0âÑÁÛ”ÊL™™áÏÉÆkÓlKÆj5W› ^ˆ*DÍÁ‚q°Œ·™ú70Ó”l:Þjæ™á˜ÍbÍŠs…ù«2vÐR˜`!ª*œÀK“+¢6X]‰°oÕìŠÙ âmÉdÓ+,ŸuöêÕlþÚ½O0¥àÞ¸ù?þù/g°øŠÝ°¼¹¼ü0ûþûÇÆÁô|… >w²ZnÜ«Wn~‚U—íø,§¶®í¾ÿ¿µ ,í €õlû°ÏÌ­o–$[:à0ÿézuú¶Û¸÷nþÓë7×ÝnÜów_¯:|Xœw³ùŸ!H·Ü¬Ílúlþ¦[¯n®O»uï3úWï>],~\ݺ÷/Ì´så`³¸Æ\—t;î>úƒ - qz8ãó^<Ž£<´6 Ωà”0§L§ÎÃ1,ê ÜàSã°E=Œb8 ìùHÉ©BS‘*ü4R;cDÉ3A…«æC÷Þd2YìÚ¶ÒÚÚÚ­àY»#ZOg6{óqÓ?ÿíbùËlþãêúSw½•!|0AO±ÂHêI,èajH ÒB˜z0ߺù_VïVjøîõb³ø¸Xwÿ1¼ýºÜ,nÿ`Mæoš ÅW„ ÌÑ H¡êKŠ/Â^4âðÎŽ { Nlù ËJIöòÿyy±YsÄÚ“‹Ënýl8 _-Êó ÏÕs¢cˆðغÉ+ÔNB=æ¶nŠì™ ÷b»o2üüæ¯Û¿ï>o6WšÏÏ—7_.–Â~kóg«ëóÎ/»Í|¤8}"R¼¥DŒ0É ¨>èñ¥é]ÉQÉΘ²G<ú¢Ñ††¸ëS,Q™æS, ÚúŒôlŸ¡ÛˆWbòðT½ËHÉ#iyÉ=ƒìÌ"zæ"¼Væ‰"@å–1>e»cë:vP?Ù`êÐ`òdƒÑß0”ýjaeŸ-•ªÞ²R)XUùèÁ{yÍüåËõuóyµôØÇU•Tõp PoàSã£ãø9J`1U4T#MV#mcK¶·-·VZÛb‰fzVŒ­v ŒÄY™z}[P‘¬€-ªYFë½»=ý¼Xžw׋M÷ÇÅÕ…?]ýgä‰BœÕ±¦hµx‰„”>%´4Úçg—«ÅÆäYO†Í;ºXÄçˆ _KŸàƽ¦2Ó¾»¹^]-ÐŒ…%FŸà%b$"÷ù$E«C‘¯}Àq¸,g·Ýµ¿Xƒ†-|'A–ª "°ÇÙÊêª[Þ·•õ®«8(‚ËBa`A5ù©s<,þè}Õâô—nsñ_@2Á@ØjCp”Z°‘Ro"¦Bˆ)ÇÑ&òñríÏW¿Î?u¿v—@éz½YÉr| y¿ì´ßûV‘âñ\!óÀr8È*ËNšiÅÔ'O1„ȼʸÃà±Ôò!ç!i2:Å,î^IáAåÙõóƒ•ÖQ+½wr}¦Y>R¬¤Ž ³8Ñç`'Zÿ<&+9[Ÿ™[l@yºæñ䘽º‹ì߯Ï/w¨ Sᩆ(2z™“å.C¹u²ÜùÅäŽC?'ûÁH/'·å>¬ìiww»r§“; ñNaªÜéåðNC¼Ó8¼ï¹ÍXÇ»MÁyY#¬%ò®äí¦V¥ã8-9_ÞôÎótuõõ²;”rì²ð•ð‰(gN9Ô©(§­XvƒÙ·Ú6m ›¶„M[¦-aÓ–°©¶6·¶ÑÓF/7zí>RÛe¡¶ZÛi®¹Ñk÷lš½Üèµ+&-^iôÚÅ‹–F¯4zí’BK£W½Òè•F¯öµ6zídÒVôÖŸ[°â’}!»ó&„Ó8ÍköÑ„$„×±ì-Ez^…êŽ'2­ ƒ»ã³¯eu9Ö#ñÄ&´;„;žvkHû×™â‘xRõv×Ç“‘æ=RÅáH<ƒ¥K÷ÖIÑÇRWl{^õÞ:ƒxáGÖ©GâY’¹ãÉ•=¥úûè´#’ »aø¹;žVn-û¯$Ê‘X’ø¿mfòt/Ë#i“’àXú¦MR°,ûëØôL«MÄ>Ã)J²JG«›+ŽKÚ_´&=¿È^§Õéƒzj}ÿÖRN endstream endobj 795 0 obj << /Length 3930 /Filter /FlateDecode >> stream xÚíI“ÛÆÇïúÌÉ3Uf½\R±'råàÄrr°]1‡„$Ä\Æ\$+ɇO£Ñ~=O#‰š…åƒ9ÔüÉ÷ÿõ¾ ú?:©‹IÅ9©…šÌWO óîöå¤ñ÷??¡6nª§Qä—ÏŸ|ñµ”Zº¨éäù‹øQÏ“.¾_·ûÝå”s~ñt³¾dÕÅëK¦.ší®Õ?N9-TyQV—?=ÿæÉŸž{%Éò#u‘£ÏÄéD‘º,…ýH¥„rѤéôu³½ÚìšéüU3ÿ¥“þâkýBÅI©:þc!‹Íõ¾ÿ¸‚_¼Ølû_9%áR¸ß9˜o=z0ãDò2z0ícT£ŸB~9¥íÿÇŽ~¢7ÿ[ôæ »LUDQîӒϰ‹žFá&ËG_mðHóñ9)×)XU¶Ñ#å‘¿Ú2Feä¯Ákd€Dðêc9[Ýä,eüC;ûÁP°Ä¢ÂabS¸QÀ){Ê#JFX]ZèØ*ʈPå'+ÝŒ–ŸœÛþÄŽM9–³»ÈKœ²gg '²0à JÖcs,;¢¦”¤’n%ëõ›`cSŽå&„ÃàÄ.fÈÁ){tÊ#v¤ Š;vþqfçìØ”cÙ á0;±‹vpÊž²b*ô˜«[2{1QýV¡ß*¥m(ÿ0¶¹ ¢Ô¥’p·“þç2ŒHotâ)‚T…ß‘þY`O¿`°þ­ùfu½lžìâM»•£EEX8±mf‹e»nÆüñšÔüÃms€àuM8COõEá .Æ|n Tv@ä”u]•"¢(?¨ÉûMïäîÕ¦;jó¦ÿi¾Yk÷W³«eÓ‡EuLìÕp %ïJ 2rA×­Œú¼ÝäB=ÂÇþÙW ý9á_#éBWè¥V®HÙï8ÿá§b²Ðÿø.ß%W“7&t¥-T‚éWËÉwOþ–"(óÙ;‚¸$…¬pýëÝ:ì,+ÛfwXîû77/ú÷®·ÍëvsØy¼:Ø^_²ú">}s„–ÐßD}ôªÁ&[5„p¸jˆsLÁ]ÁHeoì@YkŽÛ V =ü±Tþûƒ´ÿÃA°¹¾œš“z³½ë±Äf JJZÝÛŽÆý ’bUM˜dØJ* +)c’® ±ÂÄ¡p²ÓÂtÃ^Ö¶ üâìj;Ûµ}•Ð3õr뺻ö?‰ÎC©?W* ÒbL'¼Do™ˆÂÁJËŘT²d§ìYÉ(ëÖˆQN„pþ/mèXºvèw”ЍB5¡Úü(4ßÅô¥\“A*;ósʺ4S®tŸÀö;¿ÔÍv»{Õ—Úg+×1lûÒÍ/VÍlwØ6)?aÅ}ê%]9—dW. »rG®@W‘ÂÎÕŒpç*«t1µ¸«C»ÜO[Û<ëÖ™êjZWÇó®âNTÉ#”³ÙBC…Ù¦ [˜C8\˜c(mÇ){ÛÊÇ59ׯ%¥ÇwsŠ’Ð:çã®k¨õØ{Þ¾xÛ®_&Êl­ëöP‹¼61XwC8ìnœkV&ÝÅ©w3ŠÞ]. u=þ¤»‡]ÒÓ²&•|LS(Þ#›1¬í!¶=6ɤí8Uc{FÑÛÎ)¤Uœ·Ûù²ù¼·~¶mf~"eäº,u}ñè&c!l±$„p˜„Ø–®Þqª†„Œ¢'A+×îä:¯fë…-ù© ~QZøåÙߥ§ø°ÎÓ®í|¶o\“ß®ô^´ýU}¾êÑo¥W õÀ@¾Ï òѦëc‡}Œ³*hÒGœªñ1£è},(©ém}lÖ‹åf>[&î„Ñ‘EŃ£ã•xR‡'ÝãzÝ&KA‡)ˆ=u’œª¡ £è(uA”(oOÁaÿBèV—ea ø=¸žK&’ˆ($âÈ)RD U;"rŠžˆJwÔª÷ âõl›BWH’fPôÞ÷!.lJ±\„p˜‹Ø¥tMT5\d=z_·å¢]Ï—‡Es®)¬}6™X"B8LDìHö‘ª†ˆŒ¢'Bjïøm‰€º»¦°)ÅrÂa.b—€š§j¸È(z.DI¤Û7ÿÎ\¬šÝnöò\S8ûl2±D„p˜ˆØ€œª!"£è‰à’ˆú¶DìšÔ©=E«³£ŒR=Æé&—k,0!&¶§j€É(z`˜GEߘn6rÙîÔFxYfëVÜÃù*ˆ›F, !f!vF$gœ‘ª†…Œ¢grÂå­YHŽO¯ÅOÖ\=Š%eï«Í2•£Œ]qª•Œ¢G¥ÛÖ¡Ô-QI\Ïí ŒÍ5˜Û´38ULFÑ#jJ}`Ö›ýysÄ…K)’‹(äâÈ¥4HÕŽ‹œ¢çB„Šc.¦æ\Y¿Òu lER5©™|hc— ¬¥!¶4N0O®w U¥EoiY“¢-®»]¢ñŸƒ/-1FduW£IZ^3ÿ•oò­žFá ߎÙŤm8Qvƒ ·M*R¸m¾Ö6»a»[÷[Ç{÷ý6î«Ù.µé³ûeygM³%Ã~ala ápa‹s(“{¹ªÆµŒ¢wM”¤æÁµhuÚ_-%Q’÷ X¿lö°„pØš¶!U EïîN0eÕœé6Õo3Û.ÛfÛ¿ÖL-ësÝ%¯NÓ}‚ ²ß kP‡ ŠÓ„S5e½AzìšC{ÖþóÐÚý=ýv.ó2Õ%®••±N‚÷wtWO¤žeþ€Zò$ÿÑ ölÖË·é 'XwÛ²N|6)ºì‚aCÆerÓJÏø jywõp¹âÎÞÑûnݱ—öµëQÕê}𖡬¼ëý¦>wØn“†{M‘wÀÚÂa㤦çÈ‘ªÆÆŒ¢·±,IéŽn-Ìi浟j[oºÅnþk¶Í^OTwk÷ÿ0KÖÑ;çW°¤£8UãhFÑ;*%‘ pôº[®jæÍ›ÖÖà./½dŒ0öéqÈ5û…±®…pص8‡"Ù¯Bª×2ŠÞ5Ñõ£KÀµm£m37 4éËÁЇ½n9o“†u>„ÃÎÇ>¤@"UóEï<ï.œ·s䮨îì«Ù²Õ­mº"áX£K ÖÙ;ç9½g©jœÍ(zgu½É«¼³»äiõRTçehk›M"–„“û”qœª!!£èI Ýý?7‘p´Í/~ž~–ÜÛõ~§Éï䜧ËÖä›§œ¦»Ò8UcrFÑ›\„¹Ë«­6™7ݼgcí¯ø{Yº³NKù(æ<]¦°v‡pØî8ù4=Æ©»3ŠÎnÚÅÒÛ½jÖÝV‘e³ÛåmînùcS¿îì…\ÉŽÂÁ¥ì£Ü''´¢ìAo¶¶­¨o0Û®mDõ{z÷_-ïøî?÷m‘å3 ËçQÓm.RÕX–Qô–•ÝõÊYöºÝù?2ãjbs)ÿaÕMV]õ—mÓw÷QöУl¹²9ÃÕÕØ†äÒ3R”Ý è}×£íZf}‡.Ù–D©Ç¼m³ ÄBÂabOÒàDÙ ‚=ðVîÏb³šµëÏss𮿶Ó,ëvoû”•ø”Û>ÝWÃVÎ!®œãl‰t{šSý?&’#d endstream endobj 712 0 obj << /Type /ObjStm /N 100 /First 904 /Length 2186 /Filter /FlateDecode >> stream xÚµZ]‹¹}¿¿BÉ‹®êS˜…Ýç%³öCã‡wK–™àõÂæßçTwÍÜY˜!Ûcõí‘ÎQIUG*µ¼·ÒŠw*D„’ ³ ”"b(µ¨v”VÌ&Jßêzï¥F9ʘŠrjÍ/>Z¡Å"3𠉢ÍBjZÈèà ”/ÔGTî…f‹Ê£p#0à-ëÅg‹®Ra‰NMtV£WS  qt…·.0šw´GåÁ^zÎpiDåQ¦Äê,S ÈÖÊ4˜ÛaÉôè‹q™Q±k‡M¦eΦXø*¼±ܮьvð»&Ñ7L65ÎYø´ñ¼t4§æÑ=¸µÀÄ8àiD~ÝfôsFx‰.â=Ñ6Ïp9"¡hRŽà “hr—W¯.×÷ÿþ×]¹~}ÿðår}÷óß¿l¿ÿôÃý?/×o>÷¹|ˆhm/×oï>})Œ¸v¸•UF¯ N Ú*3ª|]^½*×wåúLJ÷åúºüNø÷嫯.ø÷é¸U·±Óñ¬pÀµ|ÔjÀo|4kãù2ŸŸÃÇsVÅtm|mTy™OOâ£ÈjðñìuÈX:žÜGeHùÆ7ze=ð9‰Ï{õÝ]@[¡Nké¬×ÛϽBßÖNŸzUDýÆgVÕ|-ŸXUwãS­ã€ÎN¢c«X1w:ÑÊnkùHk,ªKuŸkÝ¥i¥¶G;“ÔÖuéôÑ”Šç¯qÕ>Öò ®“öh§IuŒµjF«ð®fØT(ÌRµ&§[œ¯ceškÕŒŒ*íîIŽ…i®vÂzn²G;é¬ÖhípbAŸ²«ɨ³ÙZ>,è¢9ž<ª,6ëyl 7:êûï¥|sT²=Ø!2Ö.O¬æf»–M¯Æ²” ‹ùô=Ò‡ÕÉã`{]>t ¸oËõ/ý[Ù”VîþñÇÿ¥Žb% dŽ¿ª÷æáþËF÷›ú±×¹K>"…‘þøHAZ´ÿˆg{l€gßž{}ûùáÓ»;Y®o_¿)×÷w¿|)=Vo¿ûÇÝåú°ßÝù)2Ÿh£óÓÃÏŸ?ÝÅ+Ù_ýùîû¾ûæá—}‘³áO¡Oo¿ûŒ¶ÈÔÆ^oþŸÀê;X‰´t/{–#˹•‘’î%eÉYJ–š¥eéYö,w¼ÈD÷2ëSÖ§¬OYŸë'?'?'?'?'''''''ž$ž$ž$ž$ž$ž$ž$ž$ž$ž$ž&ž&ž&ž&ž&ž&ž&ž&ž&ž&ž%ž%ž%ž%ž%ž%ž%ž%ž%ž%ž'ž'ž'ž'ž'ž'ž'ž'ž'ž'^O¼žx=ñzâ¥ïüÿÃ>r…Aq‚ƒ]Dº WiqÆ3[6—ä,OœXÙ‘Ñß8;–)]¢nO”±º›Ý(=RÏ5ËÓ'Vx’gœ†õ£ñÚ¡Å*ψö'NÅ:u´I<‹“‘vBÙž8Å‘XÈ’Û'y•>nœHlDu-g‹|pÞ8‘Ü(Û’ã#§MÅŽñgCÂÑ|-ç@¢ÆO”6¹ÚѾÿ¤ð4ä±ø=qB•ÜsF®1žÙ UÂB±Ô…Ì ®~S[³YÇÑ ØYÓ)¡®Ï8‰­5“C]ooÒ뜴ÖL u½©­A•Z_«ðYÀ¸©­A•!,åÔêzS[ƒ*ñÑ¡æYœ#ÔõÆ©P%¡µ+¶öP×›Â+TI¦­åôP×›Új#Åœy}F U2ó¥”.{¦| ²·µßʉÕC‘VÈUÛ-T.äGn{’™¡›ð‰ÆÖË”Äç˜ÉCÛn^ˈœ£CÁqŽ™Ìü|¹fiõ`ÿÎí$F’ªz“w¦Yý@jé,Ά0᛼sœý| Г8 ›çøœûÈIñAà`O~Ž6ÏöÌiI!ƒNÛO2+¥ÈMÝ qcþ²ºsÚäî¡zqÚä!ôþòLr?‰3gyŽíy=ÚŒ´“øbÖ,ùl›Ù—í;édÒCêFò…̨9ŸtXèСäƒàð %ŠóÄG_6w>¨ ÓËöéYîÙZ¥ž|P:øªªó>3Ž6>‹0ì«ñI"¬Ú$ù†×Öd­}§Ëû‡C¼Ïƒ•_Oò3ÛNµ6>ÄûðÅö!Þa×·xïs1â½ç%Óøf¦kùb1Ò>‰#|'é™!Þ’ñnCׯâs¸ó!ÞÖŽ§"Þ5ýE襁–¯Çî{ÿ®ª#ŽÎ’šß¬ŸØJLpÄñjß¿Ì!ªrðáñ¤éSƒœµ};¡®È‡_¦³“¶˜®Jsÿ ¯&•Ü—l ŸøD+qò)~§>ány)L 鼘ä.÷9Ò>„û> stream xÚí[w·Çßý)ôV)5‘Åu}ssǭ㸱óÓ+CÑO)R%©Äéé‡/°‹Û.1Ø‘äÖ2©“‡ÈòÿÝù €ÁuéIeþ£'º:©9'Z4'³«'UûÛÍÅI÷Ã÷/žPg71†“Äò÷ïž|ùµ”'´"ºÒôäÝû´¨wç'>ýaµØmÏ&œóÓ¯Ö«3VŸþ|ÆšÓùf»0œpZ5êT5g}÷‡'Ïß%Éò‘¬åÞ35ì„ Â…bö™M$×'ª„rÑ=×s«øå×ì¤!Z)aÍ*"”)ÐþCÍ;«¹yb}úób³^]ÙŸ›ÓyfÁNÏç×góWóÕygÓþž›ßÿ¥¢Â¼³y»m'Ñ$TPR7æÁÛÒw6¡5íþÇz¢ãþƒ'YS“†ò¥4©ñ¦·ž$æ­GSG ‹l_Fè=e]“Ši¬²³.*›èRRÊ䟟Ïd}:Ý,¦?-çO;4ß|÷íó F‰¨éÿ â@ÔÜÛb©Es˜Zê@É@j8å@­ l©‰†ÈJßžÚ«g¯_d¨Ñ†þé©Às/…Íax© ðpÊ^AÙÂãF|´IÌÁûÊ?à¿‚*Õœ0Z›BbÚ~«ùç¿V'çæ/ÿ`š`n~õKkzuÂH­¤ùiyòöÉŸöŸŒjE«û÷Õ»ßdª9—„WìÓ4¼îñ°QÍá(H߸8åe¬&¬®oßþøÃë—ïÞ~ýòU®ý•F]è[‘¾nÍlqáG^×YOó}GŠìz¸j1#ÔäHeg]VÙ*?c )ìc«(Ü/r,¶pÊ!¶ Ê6¶¨©ÊŠÞ>¶Þœ™ôñ™µyñüŒž~ŸëàMÕüÓu:÷ÊXtÑF—z±€§Ð”-ºJ™ |‡|¬möûV™ôÏ$¶\Æ›{ôŒr“ïËþ>ýâÕË·ßìljà¤6ÝÒÂìd±€£9 8}ÉAÀ8帠lK-‰`ú£¶å*3x»?àÞ¾ýñí»çßføV„ªúÍ€Ù‹#1'æ æÞûÀ˜‘ÊsIÙb6£c+~7Ì@ç.˜S’¬Ë¿K4‡±¤*`Á),e‹¥„êúŽX^}÷Õ³W¦6ÐÓgo2xšÊtÊc¹ä`÷`XGsØÁ黌S.([+Nds›Ô#3¯Óh¢4(ÃÑ5~õ®Á"Žæ0âÔÛpŠ‚Tˆ ʱ´Ù¼OQ>Ì,ãËéêbÞÕ”Ít7ß>í8ßtÓzçÓÝbu‘©1#•®?ÐSç ,Óh3MÝ+%ȧ˜”-SÓµpá³’¶õjnšº´Þ®Ý4­a¼Þìó4Mƒ4?}®õö£mzdFƒûÆ`tÖ“Ä|? E¶®'ƒ±Â> ÂÙ‰}i2Jjc•¿.Oì»é;K¿tµž›ênÂf7Í&’rx|¬Ñ¬ÐÂäê ¶YIÌÁfÅÛŒdHeP%eÓ¬»F$Y9½ðA²¾±Ar}ãVzÞ¯7WÓ]& ¤©$d ØÎIXØÑ†ú]Ô lœr€]P¶°k“6pÕ‰:ž-Û­í5šÓùlaÛ‰ÙÔ®æíEAfQ‚ýà’ˆ¡{w,Ãh3LÝY`ˆS Ê–¡2i‚‹›÷›é¬]xu¬Údþæj¾Y̦ËlMº9¬Öèî—½}´;ûÔí H§êAê–³Iyåzï÷7«´«“ï]òÞî5ØOò‘‚d/Unç,låŽæpåNý/ˆ§˜”-tA‰jštW»²-ñbéšìÅ*žAÙQwÂæ0ø”¥ xœr?PÎæõ¢²ËÒn²àT^9_^ç&ºcâ1¿õÂjMd-NŒw ­ÆV;ëIbžYXíÙáк*Rد«…E–×U±Â®•…ûEŽÌ|!•}=*)›”7¦ Ô¾Ù PmGÙMmÆiΰ}-æÌﺡ‚?ð]7þ±ì¢9Ì.ucN9°+([v&oij7­vi!ýz}9_u ¦.õ¹jSÜånq½\tãÔ¼å¦emþ?-"„ɽS4‡1¥£ Ä„S˜ÊÙ®Šsmú37ùõÕU½¼r£LSÝ–Žæ|º½ÙÌ*…-ÏSr& Ó;rIÌÁ¡‹·i] ŽR±Â>H ¶.ðªvá±XÍ–7ç󮢺‰ÈÌÔcCjÊŸî¦Ý/Áè¡B’Zþ¯x‹{,–hcI=”Ù€ç±à”–‚²Á´é˜E°¬¯®M×jS¢â4CÝn€>†Ñ¦kI½Ÿsb6Î=׃sþXa‡»$lq›¡AéÇݦÃóv*±;ªâ¨o3ý²ªˆbÍÑ5ÒP<8Gbã!šÃñ²[e¬°‡‚°“m1*ñ°š¦­ñÕ"7@²NG˜¤y‡a¹Gs˜{ÊÌä±Âž{AØrW”H­‹Üµ¿nγì5;ÆÝ» K?šÃôS0}¤°§_¶ôeEtÃSúmó¿þgHÉ€Ž_ÖD)}ô€Ëؼ‘I`b&=4îpÊ!ÊÙq=£5©µ[Ó|…×·'Öî7Íf2Iùз±Êtvz@bsv6#ÓlHåÀ¹ lê=5mNÝx¹kæßWªµÓÝPî®çÕ*e¢E÷»ójmT„½k·ÆåüSNçù—B†Cb†CÏOp8 •}8””m8Øu7þXÎW»Ë®.»©9·öø|u±\lÝ_Ín¶»õÕtóknÎ m> וº÷AvÎÑì›S]3RÕ#U-‘ÚôÛRŒ!ùᙦ\¦b‡‡÷t4‡I§Ž‡Q#…=ë‚°…mFÔš»Õæåb5ŸnÂú~—w“æëe·Ø±Ÿ†Û%*uØÈ}ûè|…mr£9Üä¦î‡wy •ó‚²en1Î\·¿\· W3»#7×Õ1A×Kù÷ì­Ë±¡ÍáÐI)— •Cè ”9Äפ®”Ùt9ÿûÕôšì>d6hªÆ”uT4žów4‡q§Ž—àÄÓ}ÌnºÌ2wÈÓd1ŠöÑï,ãh3NÝ]`ŒSŒ ʆ±1c"¤”¹rE„TÁÇÜ~켎 žh ÆNŠÞ{Œ“õ‘3íOûÚ ’Òþ]ßæç}mºB´pFýÙˆ—&+¹ò{ð¹Ó'5'ÍQ­IZ®Ù‰ª+BÇúo<‰Ö{A2(0¿ŸË^‰Sde5º¦í½xµ—³ËÀOaÁp¹"õî€X;gaaGs˜vê•Åe#‚¸Ð¦Áh<ðîPÙÖgš²úGº72åœTuH&ûí‡0Ü ¿1ÅPw”Éï µûv]dmo~Úm¦3{î0;ÆÑŠHþÝx´GÛN©Ëà©1Úõ$1ÏÐîÙõU7NµÅ]P ¸yCjÿY~{µ?qÆOí¤ü¢°®ˆÒŸ}óUkç#lµŽæpµNÝž½)ÊFg3äÈÙÕ½dßý>bSÉõg8 Õ^çlíæpíM}Ló5Nµ¥ZP TM85þ rzñä½ä¥4átŸ+*…I:í ¸¼òÛzëIb¾÷ÆÃ"²²²› 8RÙ[•‡EæR…À ‡°* Š†Û°Â©¶a5P̤‘(jà5f@ðzº»Ù$»·mÿíÏ®Þl³× Ù»#´<ÌOšO-)6s0¼Më5¦sñ€TµñPRôÍŒ½pй¬dµ^MfëU{ÄØq“4üP³çdR­Áœ õ2ÏRE)²²Z`*iüôµ… o7p»z<[ǂÍ9&?—ò¡Ý0œì^‹-šÃÜROŠ,8œ( èì-Q<ÖÇtã€KÑ!^¹™AÓ¿±píCø—Eæ‰9˜CôüGk(‡À)‡¢¤<,²œC …CŸQÙÅh6‡@ª¶AZP AÊMï®êR†ûÈÜWDr9‚nÈguc„Ôy‹4šÃHSHqª-Ò‚b@ʨiðézw9ßd/¥µ>”‹C ç,ÜhÃM]Mó9Nµ…[P píWüwRÜUR¶ßøÉÍÐmû'ñŒOi¢¸:ªi~̹ÑŽ”ÈþrP8Õ6 Š!*3®ó[ “ëÄü]pþ:@vúÞ¸ãÔ L­ÏÝ ¨Í˜BÌT‘w –m4‡Ù¦žÙ©"¤j˶ èÙ ÓöêfŸ­²‡Ûäò›LëcZÇñ¾BspÐsvÂ)Ê2‚ù9¡L—îŽ}‡™ÂIoQ1Ûõì×›ùl~>_Íæùçü w~¢&M£Ð!Íáp6…À‰²ÁÐðšÊtûiy‰OH“†&ý‹/öãI·e÷ÖøöÓó“8ö£ƒ¿Ã ©h‡TJ8›5"EÙˆ`)¦àöÃ…Ôlº™ïÊÑ¥ÌñäÊßò ÈõHp5¤bê8#çuläDs8rRùÈÁ‰²Á9vGZÍ‹‘si v9²=*XŒ ›£ÄÍîT%vÚvÚ5Ñv‡õ :p£ —÷éò€Ó»™c&æ`ŽÙóp~9©Ú2-(¦öÓJþDë`ê¶’äIªšè2„×y‹7šÃxSgç÷Š U[¼E—kI¤¿À‹Ü1T³öœù­Ðî×E“ñȃ[]êèz_#&1¦‡/0HUÆÊŠ!`I*U˜l²ÉkB#{íg{§Ë…iÂÒâo2Gaˆ¢ô1Õìzw™0$æ`ÂÐc›½ EÙˆ`&ûõ]Œ¥ëåX»£$áuXëúí]Û{Móa'š®Éè|Žm„‚5Ü%&%Ù ,bF™f‚–ƒf»œvW‡'"nTùò®ÃvhGó ÖÆyÛÚDs¸µIAæ[œ( ‘#9Q~'.9ëåâ|4ÓQ„Ö÷¡õî£ñžÆFK4‡£%…—œ( Ñb/>ñÛy¡h¹žæ¦P•½ „?&*Žœs$6¢9 )›|0àDÙˆ`ÎâYq(v~áìsáñšµ/îÜçH}L+7Þ÷Øø‰æpü¤8óñƒe#‚!~˜þðò4½ÛÒµ[t¸OČŔ¶Y¶‡ÿÜ5ùµGJ>¿/‚œÎ»Ø‰æp„¤Àò‚e#‚!B(%µfÝ·ùËÇ›n‘Á:cƒ$šÃA’2Ë N”† ©(aÚO°ßÄO9ÚÍvó¥ •óîÏ¿,Îw—ÙÅVÇr|Ó NǰÃÝhwS"§Úb/(zìÌnº÷¥Ø¡/xJMš#Ê?öÞmHö‰9ȾG"¿Ç©jÙ—û¦"ÜŸ ɰ÷Ÿà°ŸyÍ^øq0É"DÙ9K9šÃ”SŸ‹ì|¤jK¹ (+Sc›Ê[—¤ßtÍݽ[õ@¡{{,Âh#L Ä©¶ Š¡´»eö Ú½Vö3ù£5ªiǞǷ¹Ö¹ ‹#ç=â”ÃIÊ’ò°ÈòIJ¤pè[Jƒ" Çîªl¤û¾…j“Oøü¹i]FâÍ~ðf7Ëìß½”飨i¹ŽöÂ@`^У@Î &æà¼`n6EвÁN¦¹ÒÔMKø¹ã­ÿæ‹_^äáË‹ ¼cV›²øÁôò®A6‰9Ø\ô¼-²;^ª-ß‚bàk?Ëæ7׋ùlþËbë®rèØÍŸàl"ø¡Ðõ>Á‚æ0ØÔÍ"{íRµ[P `•ý$ã:ºÓI¢äí6º¡ºi†¨ü(6¿9cc&XÃ!“Ìo~ÃI¶Ë…x1£á?+×5ôk;*ýå¬kò³7†7 \'¼g’àüŽM¢9œ$¤(³§s¢lD0ÄŽ`íê_;›ù¬’ô—;ØËÚIËÜù!qŠÒ; ÛZDs¸¹Häg)‘ª-õ‚b Îí׊"u›õ}ÈM`qÖ~Úí±¡¸Û.7ïgl Íá"E—]Â@вÁ+Ì ›z/VºX«s7eýÁu<+7#ºÍŽ!šÏx¤ 1vþÁ2Žæ0ãÔåù^'ÊFc»3v~3Û¹3ÔáîwðÂ/­ÙÐÍ;ï!{ùh vò)ŽlÎ_Rü/²ŽÅ endstream endobj 797 0 obj << /Type /ObjStm /N 100 /First 908 /Length 2345 /Filter /FlateDecode >> stream xÚµZM·½Ï¯à1¹pX,’€`ÀŽ \@°tH"è È‹Àˆ±H+Àù÷yÕ]=³¦7€· Xfoû½®b}’ÝZI%µF‰ˆ0rbŒ’D£&ÕšÚ°TkÃ(©â_ï˜[ ¿×Duà‡f‰É©µ–¨óÀžhø³m$.†zILø½áifÀ´:-˜Ü%qeLîšØÔ'×ÄÍ)»%î Ƚ%Ý'÷$T|òHŒׯ+xŸAI´2.8IµŽ L6À·Éþ¿^0yPÅ%-RN½pRRÃIÊÆ¸€Ü :hT]bH«Vüñ–´±?Þ“v-¸IGÕÔ©¤Z s ÊJ]O8Ua'(N ¤Ð¤€oPM. Ûæ¤ÔRíNJZ8’P;„4vR¦d¢têÌÉúéX.«X·ÎšÌ%í˜gÍgK6ðâ¡ÇB>!¬Î²BŒÕéõ‰ã”®6N/ÅcŽ@kxê‹qSÀÛuY”å?¹ véN Rñ' ¿»j´ù¥ÁNÝ笥«›ô× ö‰5âjÁ2 òß¡š±jOci(ì§×’F…ôJiØÀ;cɇ«¿WIcÄ“TŠ85l´Ðò0Ò˜Ò!0±ê/†«uàªÂ¦º\Aa¸‚_,Õ©c¨ W |¥ø››º×T¿âæ÷ÀAëíR_Ø!‘¹a?Á«Ãïˆ\û}ñ½5}õêt~ÿßÿÜ¥ó÷÷÷§ó»oÿ|\þþËÏ÷ÿ>xøòÓÝ—ôÁ=¶|<¼ûü˜>TjY`îÔG&pVXŠ{Š9ß§W¯Òù]:ÿùáýC:¿N?¦ï¾;á¿ßKÇÙ“še’º®Yø6ÒKùB¦¿UÂÛOÿº;ÿò»ûǯðvöÇ]ì¯ß¾|¾ó[e½õ×»Ÿ~þôÃï«nŒ–è éß~ú‚gåú:oÑëW°¶xݯÚBO9ë8ÖqeXòÍ:rŒ£Æx=ðzàõÀë7oÞ¼óÆ:Ï3Ì:RŒ£Ä¨1Ö-Æc1ð(ð(ð(ð(ð(ðb<£¬càQàQàqàqàqàqàqàqàqàqàqàqàIàIàIàIàIàIàIàIàIàIàiàiàiàiàiàiàiàiàiàiàÕÀ«W¯^ ¼x5ðjàÕÀ«ggggggggggׯ^ ¼x-ðÂî{Ø}»ÿøûã*«ìfdˆ®cxåQUGCø³v;—ż gE¨õRpã4$­J79+Ä©––åÂY5£ü™Ë)†Ø>®œªˆïcgc¬Ê>®¹Âý¸{êB©(’k‘ÛëY’sãÜä|†ó0Ý’æAOì–9÷ÞærT;å‰Ý"‡sÛ±[9†MW¶þÄn e«u.g—ìÝÌÆYå"c.'ìWëÕ†j/YYærìôIª62RñTª¨ñ˜ŸpVïcdžê 9t ®ª%[¹ÚP՞ѳÜä<(Ä£sÕÊRfæš­"äùžÂÆ©£d4þ·C_;ˆ³Qö½‘ gH32‡3–S mB»†>ôîH3mF—r³2"Ÿ^)kGÄ¿mµªqÊȾtáTT*;ÝÑK³gËÅÀ,(â¶ì©0[‘)íô&æ…róÊ£‚ Àë¸!é°Zês9á)„þà O¡Â·—ÓŽñaøúDN¡\ù¶Ùu‰µkFà+uÊÉ…³À„è '•Ì}Ì©ùBµŒš •kàã1 ·Lñ”Néæ…²wü}Û€bDQÂt AÜzV½m?™,£ðvôB‰þ íøÊ0Ö‘Y®æÃhϸÜ69Èd¹ •k4_6S# ßr³ 'Ád MjSb9i)c¯¹š`³2ÚL "¯béê&( 6Í´ ZŠØ«Ñú–-YZPEžä«Qµ\uLݸ *éš«IkÖ¾SÕÔ\ÃJ¯ÎIRëçîÏYnO-±"Öß¶ 9JÌb¾÷}åD-;ª=Šs`õÆÕzL²1¥ÀÜNÌ<ƒ¬g5Ö,ëÎR¶ƒèÊG³•Î*êi›¶Ã C‰^JHçç(;•ƒÄƒ?Y¢ ¾XÊÔ³c„“•NÔ÷¼¦”¯ ƒÒ“Á Ĭá´ú>|ÂxJ]w‘qãtŸá{i‚Üø|ßg3™Š–`´ÛÁã“ñ=Ÿ8Lôힺ³Ý#±¡oöÜ…=s/·›,=Æ`|£§"oã=u'S;h7Nñ>=Ê`¤d$¤•O:ŒUçò*Óº:}å†*uÇéÇQ|h9ôI¾Ž<)#­|::jZù„m§TT;Æ%´ÃÉûº~:,ï´ãæ«ú̺zZýøE¦Ò¡:£ÂùiÎØd½°-uY'’m§x9È2%Ëš”Ÿ’þ.|¨Çš­–©~ogËšJ}2ÖXÖ4sµ©Å‹,§,k*’AÈJmfñ"H´¢A× M„ÎÏ(û9õÂ×Jî:õ³©”µ¬•®˜oüOutQÐÉêzÐj;GrGÑ!é©­qEd€zjÔä<ÿ q¡cHgsÙ ú¯ÕÏÑÚ¢‹—™Žà;•uͯ‚:i'½êQlHw¥­Qei4÷¶( š¾EieusîèWZŸruáCCK²º9£¡¥‚ú0>t´f«Ÿ3:ZÝÙ¨•umFh+Ö3õCY?’µ_9£”1u#„eÛgÇè­OÙϾð¡hiQ~ú¾í|-qT}æûç­Z|x ÇÜIã¨ïœýL2¾sFÁT¸ÿŸ¸ý?"!ð endstream endobj 952 0 obj << /Length 3794 /Filter /FlateDecode >> stream xÚí[sܶÇßý)ö­«N„7ìK'õØi:NêDR;™$3¥Wk™ÓÕ®²—Øžé‡/ ¸ÄÏÄNbi5~,ñ¿<¿Ãƒƒ+é¬Ðÿè¬.fç¤j¶¸}RØŸnofÝ7ß}ù„:»smxYþíòÉçÏ¥œÑ‚ÔEMg—¯ãK]^Ï~˜_­Ûýîìœs>ºYŸ±jþËSóåv×êÿžsZ¨r^Ög?]þãɳˠ$C~$c9úLl¦H]–Â}¢R B¹è>ÑÝvs{·×Ò‚ÏïÎè|»ü± â]÷ƒ·íþM÷ÝÓ//Ì7l~°w ?ßçÏUtYÊQ•ùöª9;§í¾°Áÿèôï>äŽÇTEåá–óÎóÖç‘ùÈÇ—´÷Ë‹‘r]‘‚ÕXeg=RVlFá¢dF[ÕDr}M&‰TNúÛFü "J}Qªô¥êÎêçÃfß.uÄÕs€éæu÷ Z1R³êúþÁˆ#‚ÑYYTD9I¬³>ÌDZrtIëJ† R؇ʑp2T¤PDÕ.T¾Ë‡ŠËQÛf}³ü¬‹µÎ›õª]/›m-Ýw×úw6YèŸèì•J ¼ ¥üBÈRžJ–Ø,™ƒYÀÛØ;B‹Töh•9fp©yÕœ9^ËæÚÃå•v¿òþwH»e—Émr·3¸¼`Dÿ# 9è$Êú“NP 8×ac 7‡c ¦!%8åeúé×Õ‚E«ò3ý¹ç‹fÕ^llº ŒG%‰Òùâa$y Ÿ{O!óydæóó)ìg„5pQK”kC,ëz¾I>›ºáÖÿ7Ü¿iÔ¸‡Ú»™'"s0O R0lÊ>lrÊ&l·M|6‡®lo—]ŽøåLVófÛ6¯VËt ÈÔà %»s{oc PbÇ)ìGÊÉêO˜Ž‚pÕߪúÛ-¶íݾ]ßd‹©ls²HP}ùq_£ S}èZ22‡ÅÙt=Ê œr”Œ²Î¼6}IW¼ì–ûU¨"\Šx}X/öÉâAgIëSÊÞYHè‘9}à # •=ôœ²®“G%ÝÐÀnÕìÜ(Ï…,þ“xÜ™"UÊÄÏljDªOúŸôe¨c¸³Ñ´Ü6ûÍvAB’W'A®rôžG£‘9XŒ`‚ƒ Xa@a@ÕWÊì6«öú°Ë‡/‰S!TýªR¦Ú…‚Æy4½941@8hÂ>h2Â&hÊ‚Pê ¡ÝÝ›å¶fb]u³:ܺ¡‰ÍëdkSÊÓjmœ¿°­Mo·61·68åÀ=£l¸ ¥»•ãþó¡ÙºÒÂX${±’ÅêSíÅBá<‰ˆÞŽˆÜ)E*‡ˆÈ(›ˆ0­AÉ]DìýØ2X~è2A”>þüQËÉNpŠÃûÛ ôæpƒ#…¤°£Œ° #®w»oö.­¼<£óU³vÿ{ê†Ê¶f¾¢]«‹÷»ýòÖ Š_éß]$&0D©#‹ÿ¶1ên‹(XÄ"oK¤ªç«<”éSú§|Û.öÇ#Ó582]*"ëòò?„ß9Ë¿7‡ ægz¤°Œ°‰¢ u퇯öÛ¦Mðu^n ZQBÌ4Ô¤;a›ôÞnÒcŸS¸ÈÃ)Ðe š©šÐÒ"n]w°Y_w¨¯Û ÊuÉ¿^, à%%fX²âŸ ~€Ÿ¿o$¿Èä7p%Ì©ìùå” ¿ª"Ü/QèùM0’ºòªÊSª Ì²˜² îšp¾³>ÌÇØ. aWŒPŰÊÎ:¯|tI·LŠt¤°ô¬ðð’]‹DÁHÇ)‡HÏ(›H/%‘ÌC¶]òÞvû‰U72q•¨ KA”P§Ó5*ïGd…™ƒÊ X£b…}8d„M8HNʺJ‡Ãí²Ñ?Zæ{ ºL‘ì%Aˆ¹s–yo3ý3G {æaÃ\P¢*0oWxêé—„—ôñéw.ÄFBoGBLޤ°„Œ°‰^Bø™°÷Ýòˆæ]j…lWÆ6ûæU³[&ÊUS+~jà/° |o7ð±{e2Å)¦GÊɵúV‰¨ô%j‘ô~yÛü(õxÝ.M¿âêÓ§:erôz†ÞdïLºrD“õäd‡à¹þ^R:\™•&¯/ʼnï#_­ÛEW÷Ù5ÍöÝáîÎî“ÃSfÔãt:>’2R)9+«‚0:5Bè­Ï#óQ _²K"µù©j6¿äM„Ô•ŽY“Jö‹—üƒ~{·ZêðTf±´[ Å穉‰šÆCÊÿëÔ¤v?Ë‘º–þÔa­<¼¦[˜<ÊÍzõÞNw|ŒU ñÎYXàÁæy¼\ÚâFIZÚ°\€-ê~†+Ú¾àö.8Þ‰œ^2tøÉMAŽÂ@÷¦u¦ônœŠƒÎú<2OÂð’]$$'Ê&C(p¶™8…å»»ír´ìºÞ¯êÓííVÎuXü½9Œ?¦¡’øq¢lB0àg*T$iúÔï’±mA»höËëÔÈt­ëOñ‰ŽL‡4ÛÝ-6ok8oGî£éf%iqÁr–UòöªÝí»¾X³juO,õÈR"Kv¬ã刀ޘ KÇNÕAF1DY¾ÌÅd|6lÕuÕ–î£Ý5EQç ,ÑÞ&ûW”I¢8UK4£è‰Êº´_DÏ27+0w3MÑz Þ½È‰ÌÁOÓòHU#9Å#ª$²åþuãWˆv}µô¾U“RÈ{2Wç,×Þæ{9ÝCªZ®ÅÀµ*måmêÒv³o:°&}‡ñw?·Û¬›Õt]v¯6AhW°h{smìhQ$ÑâT-ÚŒb@k¦ÙDë[êæúÚžK Jê^í/ŽwnÀ²ìÍa–±g–8UË2£XJI(­Æ,ÆL"”©‚«Ö5~ýžOç,ÓÞf{X¤›TœªešQ Líjgeº0sošõ PJ벌V÷òu~ÀÂìÍa˜±k˜8U 3£`rAh=N¶~³fºSL%=ùN±÷oãaˆd§©jñg~ÆuOvœŸ‡§<%ÇExù8 Ý ?z'"G4#spDsÀ%9¢‰e‚!('¬'õÝܰs‹ØÌámã^RAjQ>ÌÅÕáÉtîÁ>ì½9ü°ÇgU’1NÕ2Î(Æ#ªˆsýp¬Ëlkég,“['K"ÔÃ^ ð8ga‰÷æ0ñØÿ@ëŽSµÄ3Šž¸¨á¼¶¾Y™BÍï×_vûÍm³}ŸªÐaEuŸ‹ï.§zg Ótd¦é“CžHQ6!€*³MŒºÓ66ÿ=Üù§û7ÝÏ®“[Åýß qv>ÂrîÍaαۓ©)Ê&g³æŒ&Rõ]»\˜•%oÛÝÒwÛ3SŒ+úÐÆ.½_Y92³òÀÕ颩jáfÜÒTL‰¬|·mou ¬ñvk“;8¯No3c€å\‡åß›ÃücéV©jùgYè2*‘Äýn)æw»ñ£Ýn‰æÀ„O3 „îî±{saìPš×DªZ„Å€Pº¥9„©úYêæä±ß°9'b#¡7‡#!æ’ž`DªÚHÈ(†H`5‘2‘̯Ü9ç™ÒZIRÔò¡öœ]éäüƒ­Æzs¸‹]ž®ºq¢lB006Ë´üÙ×Wß|uyáEWãBÉ•µu«ø©˜]ë_þcV®»Ío­éíL‡ª=Ìz5»xòmBUTöLÄê³o¾|ñÕÅß»2sjþK»Ý¬oÝ ÝøÎô)ÚòƒöB²û¤Ø¹7‡äøæ%OBÆ©ZÈŹP¤ä¹k?r¬zñýÅ峯?Œ1+I]„ Bí>/uo£Ž] Æ©ZÔEš×ŠÐ²ŠP?ÿêų|¶jBùï³T@ãï ‰&2Ñ •FƒT5hrŠªì2­Í‹>ýâų¯¿xùa|ª©áÈ«îa½Ú›Ã^ïð*NÕz5£¼ZU„ ŸÛ.üyFk]­š}JîÔ¬—Ûvá¾Z_›Q†wé [V–÷qÂÖ{‹²7‡QÆŽ¥É‰¤ªE™Q (Ë’T•¢ gV±ùË£«”9°jtZUê„*NøïtP*ú[C–Š‘9X*¼•,‘¢lB0à‘%á~ šÇ“<ÂW˜žYeDGÏ9½91Ÿt@àDÙ„`a/§ù€p§C$&Üt‹YŸÄY¥ó–yo3¤™ãDÙ„``Î¥î ¨ æmªN1[¹xLŽœs$6zs8b6é`À‰² Á Lõ›Ó®.ŸŸ«Ä[¥³¾|Ü›ð+½‹±…]ov1µôVr¤ª“#ÅôqÌìgð¯ÏøWö¸—̆o]éfv»öf½tÓë™÷µØ_Û7¶$_ºÈÕ_w|™â¤À/›ÌA¾Þ&³©jøæ}0§³I¿¶Óòª«ýTîæ°¿;¤‹Âò”V\æïHd£™ƒÂ€ KN”M†`0í|MÁ°7ë¯ÂK×^Me-uÓÓŸó¿÷IÊû¹µÑ±t®Å†Go‡GL+ÙÉGв ÁR?ñ~ù§§ÿ¶­ø49Ö-æÂ¬äæð›ßõ êàAwCX(½9 %öQ²Cв„ Ð@3jÏ·’ÿÆ4Ðoß´~àew×,M¯0û\Ï)ÌËBu³\T¤b“¶8ëóÈ|'G—^ó®DÉÑÂõ„ðð’éÃPC!‚µMNøè’]m“_FªÚG#£èó5(KwÖÛÖxvÓn–é·%ì±·“©x½C‘Q™ƒQ1`D“o†Gªš¨8VL'LZj+¿áð{LÂ|o»Æ¾bÁ­£hí„ÏÞÎS¬h£§9?©2Ôyw¡EͳwtA¸=Í)þ+}î endstream endobj 973 0 obj << /Length1 2419 /Length2 17768 /Length3 0 /Length 19181 /Filter /FlateDecode >> stream xÚŒ÷P\ÛÖ ã®Á-4Ü݃»»kã4î.Á-¸;‡à®ÁÝ!HHpwysî=9÷ûÿª÷ª«º÷˜>Çšsíj*2e5FsS ¤È•‘•‰… ¦ ªÍÊ`aagbaaC¢¢R·vµþWŽD¥ tv±vñýËBÌhâ –‰›¸‚ @Y7;+;€•‹•›…ÀÆÂÂû_Cg>€¸‰»µ9@ ëº Q‰98z9[[Z¹‚óü÷@cF `åååføË bt¶63L\­€öàŒf&v53k «×ÿ„ °ruuäcföðð`2±warp¶¢exX»ZT.@gw 9àwËE{àZcB¢¨[Y»ü­Ps°põ0qÀ;k3 Èìâ2:ÀÙj2ò%G èocù¿ ÿ!ÀÊÄúO¸ÿxÿd úËÙÄÌÌÁÞÑäe ²XXÛJ’òL®ž® ùoC;°¿‰»‰µ‰)Øà¯ÒM’"*p‡ÿéÏÅÌÙÚÑÕ…ÉÅÚîw̿Ài–™‹9ØÛA®.H¿ë·všy÷bþÏáÚ‚<@>ÿEÖ s‹ßm˜»92k€¬Ü€2âÿ±‹þÈ,®Nn.^Ð ô4³bþ@ÝËø—’õ·܃Ÿ£ƒ#ÀÜÐÏÚþAòq1q\Ý€~>ÿVü/Bbe˜[›¹L–Ö ¤?ÑÁb Åß|þÎÖž=ðø±X~þy2O˜¹ÈÎëù_GÌ,§¬¡©¦JÿŸ–ÿQŠŠ:x|9ÙŒlœ¬VVv^7' Àïã(›Xÿ§–?¾2 ïßå‚yúoÉîÿ™šÿ,-àc):€' ù3èú,œ,fà/ÖÿÏãþ—Ëÿ¿)ÿåÿuÐÿoE’nvvéiþ6øÿÑ›Ø[ÛyýÇ<¹n®à-Ppïèÿšjÿ^]Q;óÿ«“q5ï‚ÈÒî­]$­=æÊÖ®fVËßrß‹fg *;¸Xÿ¾ZŒ¬,,ÿGÞ.3[ðõážÉ¿T@ðòüoJ ™ƒùï-cãä˜8;›x!±€G‰“àà ^Gs ç_S `f9¸‚]àæüÎH¿O”‹À,ò[ô7â0‹þAÜf±?ˆÀ,þñ˜%þAÜ,fÉ?ˆÀ,õ±˜¥ÿ v³ÌÎ'ÿó)üAà|Š8ŸÒ?ˆœOùçSùƒÀùTÿ p>µ?ˆÀ¬þ{×øƒÀµhþAàZ´þ pv/Xgòâç3qÏ‹µ‹ípñ¦ØÝìÄ Ö™9ØOü¿’ßÏlþ/nøÇ\Øß3÷¸+ð(˜¸Xý#cÿ-ò4³3±ÿWpi 8ªÅ¿ào¥õŸ,ì¿¡û¿ÒþÖ;¸9ÿ+ØÄò_LæŸü`2­¼­€ÿn ,³þófû/æÁî_LÒ¿jgSò''Ø^ˆéÁÝ8üÉvvø5¸zÇ?j0…ŽàrøC2¸G;7—? €ß.íâ?'Çõ[èà ´Züá|ƒþ-uþßca3ò/¾XÁíÿ‰ÏùÝÿÅ'ØÜ|Íÿqgû|Y2»Z9ÿu$`N\=þå¦Åí_̨û¿ ¸L7Øû_ÉØÀá½þÁ„yÿaÉèüwªÿ¹pÌÜœÁ¯Ý¿^ àü/þëzÍV—ÌøCmêC;ïêDˆ<w§ç©vµÒi}V»ÜÐàShk³ƒ¿9߈¤Œöc¬ïHÐ\¿ÿJúìsØÖÞž¤ÒñèûdôQuv·iewhºøP¤a‘˜Qýýžï³“¯f-td,U¾“šr!ÖÇ)φÁе‰°¥]•½Z.9ä§Š9ÆXý O T¦9‹øäp®Œ$toÎ<Ñ®oæßäM¿’Ê~¤Gò;Še/ñÑÝb‹»_ôÞ¨Rgsé% $ÐÅ'¾~31ûÎGôgª,Þ²OYi¼lXt©‰áR‹Pº‰Çg²žUŠñéïãø¿Œ‚Ä*ÐwfÃâÍT¶©DGÙ©åuã¿Éoàþ4÷ÌjT„ä¢Ò½ÿŒë]½í"“íñF{PÌ=4 þj(°wÿjkÙI}×-tżB8—iÃ'Û‚—{Œ¢`S+¬ÓK>Ì5}# A•bð0Nn*ÊvE–P‹®MßUáh}ºÆ‹GíëùÒS#e™mýïZŠLb%4šsú§Š{{Äù]ý­ì˜h° "ÂvF.}å aÊ-·ÈÝq^j^eß—zL·0'ŒyÝHã†n”·GêÝœ—håݬÊãƒçFħV Úû”¢ ?ùá·´’Âöö. ý`,›òÖ ›\{Ë^µï³#]â⽫µ8 ßAжô}’)yÇ̳½·È?­‚&3ø€®@×J&§ÜÚBfä<½÷¦TW $mo€³NURßr-ö¨Y!$®(jy·ŒæbÐ3ìÒn¾Ök[–ªjS6ïX]Ý,{_3<‡ÐðÏ A£Á2úöaŠaþ ŒäƒÝc”›|}‚g y”,g˜•%˜”Î ¥/¯þ_7&㲪{Ñ!¡ù!Ciƨ¿î‘¥õY|A}b.1ÓJ O~&(ã {P¢ÑG/ mŸÂ*„ù²:דùDéx†•D6CN²~ÉÛ£ äÖ½ð+Ï^O0 ?ô~Àׄ×ËC$„³obì¦û¶Ó»ÅQŠM¹š¬)®ËX›ÚW“± õU.Õ±©夰µ¹À_Ýí¶älIé°çcÙ}±¿IÖ;nŽâ}ؘ_ës=ƒð ‚íôãš’xf{ìƒìuãÃ<¶ƒÈVGF°Çpv8û" „„o&™»MÁ-7Š½Ã¨ =|gŸô2('óÌùf¬Íp–2lžÅØ~Op:×ÈÇ_òáÿh(yتîžôßz1˳¬`ŒX¶‰EfÁk$¤|Pë‡ Y\~S-»²—Ž•Òœ¿‹À‘ÔIÂã „Ò@ —Å?†½'°Å$@bö¯1¬ÔªõÇ|³éO Ë—*•LjmJ?½—Æv×™`Ÿi½w?•à áü9¥üèjPH·òdbSx:n’g[YÒþg…=P\ùj6³,‚«ècò=o©» •D¯‘6ÍWB˜â]:< /á§}|qôVeÖºÿ…ƈØTfb$»×”do•T´¸ îl Ü×sÊjù„À”³$ÆâF¬QxKrÔõ®bwAdу‘œž£r³Dh®­8]¢ø^ŽN ªS"²ÖÆh”Q¶+yÙ”dª(¼èR×<þ¬Ü*<5¡>:þ‹§âqyá¦ãN¼ tiN›”|àªR‰•ÐeÞ¼CìÕüa~Ya/ÄWYþ3Yz}{¤)RbY‚G.ü±~[¬¸%û ^r8E€±ø\Ÿ^×à§—‡º™€àf»_Öº2„XÉ7„9º(_‘å´# ¹!ú«jV² êØOIj ûâÁŠØ#Lº0’Ü&}ë32œ{ÙIëì1§ñt{Y€\À¢+?‹NíÍï&ÒZJ“Ëäï;¥}}˜»†·® ‘¡üâ>‹âªSæ Ù÷¨›¼Rç” iÀ¤ÿɓц,â³X°Œ°çy ,²:Š·Ë§Æc?7yãT…•ÀŠnrî\¹îydè“ÛýŽ‹a<^J€hŸ‹‹„bß|wcÚ·ýLâaÄÄì«{)r”)ØE?3: ìõ™©s.9âx[󪯑I%ýê¨ÍfŸá+ÙŽ>†P=y‰ë+4bªñJ¯œ©Äv.æ8[\I}2|Òçä O¡ØYuÇÑû 3ÝH‹³+÷C­Ä¸ÑÔ–Q­@¨ýÈÀó®ˆÛuÈœò%m#ÙЕYëMЊ×tO@ÏüO—U­*r>´«‚“´Ä;Í…:_u³WS­Cèï•å_Mã}«n(aɹzäbÑäI•µÇ¿y›¢•æé†™ÍÝú½ÓRáɯÈY(±¡oÔmoh5j¯]Îy1n(ª•m^1ê¶v¸BíÔ[õÒÇó(›¼³ÁŒÉ´÷=nŸ‘zÝè±íͯp4ýjõ.7“w O½S—…ÓロrŸ"|ú°#¬©x­€C׎Z§k}z"oqi!¹ÀüI¹b"ÙcjÂÈd’,u[ôÀÕàÚ;X¿ / ¶j3Y•9Ù£øðç!®ÂCY*î"DÖ²¤GÀÈ)“:Îà" Q·Wyò­ãdÜòrs©s­ðˆr‚Iè(ú”|5#4Ñ Ò´fEôú-»”_‰:$Á>uæ×‚xP/ň¡Tü\þu>cV+Làfàºä]·‡‚’zB­¸‹lú¸ Q{ãC_ˆ<âcP—úfwË[&ÁÇE—osqèÝT¢!_­b.Ö(‰—¾_ åí…^:ü’KûJ.3]‹¶€žh­d›Å(Ә䦖ýLÓ|ÚA2œ5{Qmƪ,³‘ðý–É._eÒfT’Ê&¯L¹‰õ¤ÃÛ”m´æ³Vঽ½\KhÛаù:3»Ñ—ZþÇ›TîBfî¾jÁqÆ}UªÀ¨½-P*±¬h3ñ{Ðä+—˯~«^lUIÞº<õ%ŸšÂwég”ß>$ð_YõÞ¾^Ç+¼Úôî×塬Q%HBái†¾~Úqo †6VãÛ:ä“:ªM4¢ßlófUBÄäoèÜêFÒš«¯†7¡â°ç·º¿/…ðP>ôPfß,Ú’ “œ[lZ„¤ÆÇä#×¼)nDQö ’hâýt=M©ØúU ð¹ì5‚ÜF¶CÛúYÁ™på@¢¶ñ(gQþ‰ü'Ù>}¤†HäÇé1(aö7½;žÜ©ç\D=¯&d—Q‚;#XÏÈ£)£n%xѦ…­ÌIߤzÖ)ÒÊ·úåúƦßw)oœ»i'…˜K oyã²°D50W¹k˜ò9ËwðE›wTe %¼&äøšdX;ïH<1Y-÷>V9¥Û¦¦†Å0tY;Ãbk;7¤õNk2Hš@·«¹¿Ÿ+²þÕì±?çEñlžù Õ?~†Aå2öÍ?Kxy7o@wú‰o÷„­½Xxk}ÝçCþîŽTÞR.Âûz¾¡»ª‡A“=žŸ«ÝRísšQW²˜ë݇%2Æm'qŒÂ'×üŒ—‡¸pR~j”oM|Qn¿; ,7ÛºQŸzda<צyAH¤‡n:4²½ÅnKúâ'C·Ùˆ'*6-ä%œ©d4 ÛÉ‘öæ‰o;峩Ä~¾¦A(kóœæÙ½)Cy¸œƒ$‹¹i‚ aûÁëDÞ¦‡”áD•m"ÏþÀ$ß:BFÓ˦#P¶eÅ”0eÜ,hQçsÞÓ„Õè­ ý›©Â€¨‡!£&—¬Ü!µz¼œŸ$ &®e^ÖŸÏg'œ_Ú¨/$Ù ž,1JòJ6£ß*ø­¬•°ç‰ÛŽXÇêç9»™ };翵n!2ê>‰ÄAr4šÍ0³½VÌZˆ¾#>¸/ã,Ò²e¦¬e$þ ¤8F废õy9ExªÜß®iÖ—t¿Ö8Ò"Aî ´;A¢ò„Õ³l\À8þ`Ãå_òF yg<1ÑÐÖN¬þÔ ½}Šø…”v† Ô¬µ(™­Ä ­€‘áU0н°ï©ëÔu\þ•ÔZ¦ðCeižØ¸zgHÅ ÁcÅ~*í©u$¤+‡nVª&Ä‚ýndæ<ÄǯJIA5×´–Ö/mHTŒP²CùzuêÚÜ ÌL„ÌÂq£ƒ4`"n­¸Oy 9¦ˆ½òòíL4|·y±wv¿ÎR¾Š£@JÌG0 ô¼èØ1ºí(—hý’‡ìUV‘Rw5͉>«úžÙÇâPEìܯÒ|¬adùÆeǹáY-4GÇsÞlÂuGŒ…r‘CËq`Â<½!5C:Ú —óš–ÕÊäèé(sälæÁ„Í~ƒšßÜ˱l¸7ò¬KXÔbó¨ïK6xˆe› þÞYò>N"úªsV”´Ñ|ÞŠj²ò^Ä6†¹_’‡Iš †ˆßÒÎ©ÏøÏÈéB‹à<(³ÀÆÃÉ*ãúÓùón¿(ÙtïÛ6|%Gí¦í ׿Ü'´‚Vœ 6QÄX©/§Še…Ý^r‡c]·tÞäàjà’¾ùˆ{HörÙ¤xõÜgS¸­ÄARÖ…½Úmºñº[Ü éZ yáu±×°{}þîÔçÒCE^7J6±Ð©‰¾íû{äÓ{Ã7„… Š=r™ªI­Lu£Z-Oæâ¼²¢×9Œ(>"ƒ/Å¢dƒxŠÂ²8Q§ûÔË"L7¶½>Ê#ýi»”̦…;TfªAaßAd0t!;™¼ØØ¹Éø^߇ҿ.±”7‘#ó!C&˜ã©ÁŸUWösÕhx\+‘K,?Ìœ] JÆ ‘æ£Ïê‘ðdÁ†ÀÜyFθÖõñ ޏÚ$e ÅG9æ¦nÖElì›42¡²4GõïH0Ýù)§µPy¨‘ïvyS=¦˜Vxà ˜žX#îCÙ 5?íW7Û) ë…¥g¶ÍŸõdžöþp˸—Ü­›­…ƒ¥eÖá?ƒõëC$^Œp@¿&ƒy ¤>%i•+±ºj/¶OŸøQ@ëŒ|ž‹ŽO¤x#ò]ˆ¸I¹¾  %¨Ã|,zrRN%•Ú1iÅdþíͺ‘&$ë’9ÚÓØ“‰„Ú:yO©€ÞÁh•,w 7ÕJ{Æ~ -3›L³m$uõ'hS Ñ”77¾Ãü:Û‘kzìz%}V*pn²÷Jx‘°¨„B쉋tœÞ×ãFâc‹E×0 q|õ½Ð øY¯Ç6\îs×:±»çseÔ@n»œN½^šëôu‰ª ÙïåȘX\ÑV•$`Xœ]/.\r§ÀÅÙÍ‚2Îg\"Â-ï¯Mo´—Þ­J!õCDó‹«A”ø¦9jw#âKà6]Û7Ø5ï+ÓxuÁéuD‡•Î:³Ç¥õŠQuyÍT—³–#„Úï¬&#¸V”º÷/¶´¦Ø>~Å¿K€Dó–ª=~X+æÏMU>?{Yt©½’¯ =2YߊrIí#=Ц¼}1×>Ih¾ŽkÓ–ðƒøœ}üáÃPëM‡ÑÏ<;;•r,®g8k‡²Ð DI†Bö…Œ']è—mE*ÜM8C)ü蟬wÕ1|…¶‚ôÈ_Dç™Ä¢eŸ[d|KRòü¿fÕZÈ•[Ûz–âO¼ûì›ZÈóì« þöǶHªEŒ%-;ÎÒŸ]R¿F~}Òý´[UÁcðÒg€W(@ÖŒcE;ðͲГƩ°[c_ Óûî=„6È €ût¢óü©#•á§ùl¸þe—ClúqíÂJïÏ6B‰~©E=Œ9,4‹ÆO^ï¹µõòQ0¢!ᙿѢæê){”º–e>E¦ô#‰#kÜöËGÝ „Qk@iÑå»É'èîCýøÑÁ{¢FR¥`“/Z-7©EÙJ wjï«{Ûs¦F‘u$O%þ×ÓF.ÃÛä3™‰Îª¤7ôt™ª}ß.¶›ÉOù˜ ý§2îÞU?†­6©#&CÈ)ò6Hù Ò›Lu™0?,‡uÐ4"½"õ@Í¿:óVXµNì‘lºæ¨åüÖÇ=ӷݼL)ÎUÌðxf@÷”©zF¥ÁýÕí/a‘z} æûLJ*Ý/›‘ð3M|ãhï ~*´ógѵp}¼~Ú6TèŸóz”2o»–'þÄEVOõVnÓqë#Cæȱ÷­¼¿–8½¯Ë˜¹–WM½+¼i%6¼6¬œTI=Å—îÙ}öEFg\ Œä Ô)‘TÙËÕ7Dp)ßIqø™ü!ãÅå!ÇׂuKgø‹1a‡—~n ' ÑîÛìai™K–Ùk-‚•z¼G¨±eaþ<A°•»ÎKhª“ã1v¨Ð—øÀD?±áz°±bwoôÜSìSèo[Ò¹(=Ë@fL›6vQ•<}/ Ó1eÃ/,Ç—o$’|#Ö=Ùã Ÿ©„51,ì-˜ûmmøè«—°šw3.e´öÉVY¾´ýõ³™©¬»úÈó@ û%‘ vg £PBªÜ› =\Íuÿ\ ;ïý·èì÷OÂ¥‡Þú¬´ª_çJñ‡Æá»&=ü?ï $W³§¶”C]—ÕCq,½ÖÐÜ *cg˜ ;’,«h‰4ÔMÆ„ëE!nÖ%n¿J{#˜ñ©5Ó»£^G>ÒÚT\tvœ¿Ñtøµ®yËLñ–Zàüψòf8Ð+?{ææÍ1ºY# §ÂÈõ•Þù'’EðêÆ ,xbܯ/‰l´?Ä:èÆTŸ¾%ŠøB;æÔÀçç‰þ?“- õé2ŽîòÆ€A©]´ßÕAfÁ@¥.S·¼ti:—½wzCÑÓõË+åFÆ©>ç²Á.Í.Õf™ Tëy*×ÂvÇÕgJ;µXIrY“:‚±¬,}å8ú‰–çNûN$ËÊe#­Yã­­á0úü·Ày6 Ï|ñ_AõÉ/3 £Èl O6 _½%bŸÝÆå¦íÚëyÓ¯ŠÇ1è;´ué“WñíG& ê†_Ò–æ ø¸ícük²£wÎÖËìœVèǾ3‰Bö˜Y˜"°|| ×”†Ô•ÎØ³í!µª\Ç+)†˜ƒ®é­U›ö–ìR/¯š~iwézV)“ûeƒ…yä çð@…e<+œp)XÖ¹?qP^§›ê›ào9Þß'*#Ý-ý$+ s|ÆÀ>â ž)l‰ñ†Žìå*ªPǽËÿj`CºA÷€D^¡S;x*"GäH3_ùÃýˆ††(&ªíkà©&ÇèëN6f‚ÑãªÇGø’ÎÛs%N­½$E~ÙöàP\u–Ä6+C¦Ÿ± øÞðÌÙ4‰rþˆ"ã,”ìî™,„}-‰ ;×6Ú ©\C©Næ ûT¤÷ÞKø«· ¬Þ’¡õ–'iLk@+¬†t–&`ìLh<«H°V 3‘Ê4 8IH1ÑA í±ß!"»hS)Nár¨Mi‹m†óáM˜¿!¶€žC´³B£îQe[î„F,I(‡çñe/O;öñ=·EÓQ@â­pšÈµÞ£‡Â¨WÄ›}‹…=ã_ª›;s’QIå²¹ŽÎ¶ß”©ØMÓqJ7Öè|÷2“Û[Ö4ù_ÞvŽ E5ë_ï0^öÂÓïʾ{0­ÜG02‹P$I_k5•Ÿ¯¶¢îu¯@hvðM±³ÆòQŒNâþ¤\ÃÏç Xg(14~âi%”|Âh²ãpÅ—‚¹c à;/„Z×î„“—%¤Àx_Ì;dêz6A5ªÛº«¼ë*«RD¯îY2Ú‹çí±™}/IˆëQ$²¸&ÓHÏÛõßD§*{+ âc.?ø<Ôù=Ú˜Râó¾­¦*pNÁëqwÙ‚¿ x¯Zïîé×ÊõSÌv†ª)÷¥‘%Ù>22€1žoøáu²‰jKøƒ"Ý“wq~$Éç _98ΊÃt*¾¢bl=øÂ6äœX°*%›ÄT.àö›´ÔÅn ÈÃbÅ'œ' Ì™úÒvyLÈÛ¹r‡çw[ÅžCœ½ÐÙ%õ—[ÎáÐO\©°ä³i}C>Ù°ëè]£¨¨:oßHP¸^#ôeRç£ÿ.2Š¶× £Íu²Z­–ý$Cp!-”nEŽ ·tÓ;”cõÅ„Œ£®'<Àåz]s´/à¶ùepºa—E7”‡…€ê ÏÔÄ÷¨œvÀ®øCÚi/kº7ß‚ÇÐÁžx6®]u¡ÛaòìÑz„-hö×®2q³UQcËr9V`e‰úDP*qøiïŒÂòVƒ>ÊÓrªø¤ý4ÑwRF¹Q¨ðªdÕºÛwþ_6M#e«ÄG3nIzGoòó‡²à©¨{ƒ­¦i•_Š Ísä±W;VyÙ¤81K 9äZ±©îM<€ ªý ÄCÏÌèðFNä©Ë»fÙVëm‹"~ÆÕÓˆ{¢r Üûµ¯´È)«~”‘=[ßZ:ЪOjÝTÆË.In ‘©ªÒ£Ä IBÊà°8• “TE¿ÕžËd:çvš÷?}…ßæ5 ¤&ÑFC“e%Ô´(„^i*ÓÖ* 3ˆMØQZh˜Át"©òêè›7çJ‡Ÿ<âÏ¢1Jn;¼@\˜U¤lŸ£ŽPt­¢-"f¢Eø2÷:¼¥@þ²0@ÞðÖ=Å ºåmÿ…&UWêåŒõ}¾½(ú MâDá²[õ3R„"5?Y“/D«)Žkÿ¤‚Öä<Ñ–`E]šZt EhI¾o04~Œ÷Íà¡Úý.ÚCòègEЈLxÿsWC½ õH±,uîk–*/OçawÝa}¤½‰«B×Ù!dž)âåî*ÅèѪÝ÷ý™Ä,›õ”^UׯÕ¹Šèô.\Tñ(ÑTÇ{8ÉCs½÷œXâ2ŸÎZP‚¨Α߹ýÚËô„Äþè Ù!¹t‰-Ô}õí5gIÿ6êcç¶NvmÊ[—HžoC?éwJíöÃØÌ«+%~ý’ç»(¢•©¯:%¯*g÷|Í_éÜâÑœ­]¹ôsäT@ˆob([ÓäbÆš¬<Æ}ÏÀöÅÐûÕ~I\ð Ëìd¿2`üóòÔ ëG5ˆ’Dθ¿%º$&Îóê ½,‹lné‡ÐÚë‘̈)î0ïSNB-pb·¥–ŠDôo¯ª<Ó,]ØÛ¿ÜúdI;QjÁ%/ÃÀßkžÜª$¿n±ß¾õ¿KÛP)RŠ+@—®~Ëj>zÒ”ÕßE5ÉÞg„›§L¥Ù3röK”{£þÛD‘¥† kZ®åÛÍ)xò*=×áÉÏ &1*14Ȉ |ïÓü²@¥( aö]Ûaµž’„-–ú?Ó‘~Ð’‹•p¸óåô³)qZîy§Íž° «†S;ï/ Wb»†…a6JÄB€3Ÿ¾;åOnû®¤/+ÖÐÔ8jï©Õ“Þó=úf >\ým‘{PþåÌ–—낊$(Ø?b I'Ä;—-¹¨Ø„BçÈÑÖ•dZø–Á¡%†7ñ˜”ƒ?f‡v¯[–W N 6 XÆÂ£¦Y«…®!ÃXjö[™Ñ’ ?Ö‰AB¯õkH”äÃbcÑåGþë#uÅ>1J<7¾C…8q5¦,¾•OX»j_„ûOð¾\HjÄ"m`¤ðÜðä^d«â6O†&¹¸AŽ)Ë_ðÍŒG–è(æ:¿œÓet‰ëÓ¥°9#§Km”ã¼@îÛ¾Võ1µ™„FûÕ=2ÑÜ^,ÿtqv54ŽÊå=P®f‰AÉœ:|Å kìf'•¿èÃLO¢/k 'L"‹ƒÄ†-†ur7JÄÙH!‰Ïºwvq»ÿ‚I‚np©¡ÏNçüÛ'¥¾i#®„Fzõ·M:Ÿªc )ÕA§áŒÝXvs»ß&&„ûàÉkBôÜŸ¼Ð…á¡ ~ðHð’$ÞYÇ‘˜#ªîmÒå9}|Œ©"qSÊ"‘è½ þ,Rc*eó ñV¼o.ür½+Ÿ\3Ò…âmÓt›!)’@áû®g!þä­ %Ì›%4l¼Š‘B|Ä…(lj£j¡3Ô0_CÓ–auhU¿HjÃÃoZPW^kåÛ?©;¦yhi‹ßÊãpÀß<~îÉiЗ¦æ®]GÀuñÍïEQSOó=¿J0ú˜CM÷B57$¤»Ø §ëŽóið…B ßݱ½‘³B£¤­Ìƒß ÓôCgd\§°äo¡Ôêùp‡¬:ö 8*VNT÷C’Þâäbá×!ÕƒÙ\óÏ—BS‚©BKå.6^an¤½.’çý¬Ž3{&Ây\nÉé;üáÆçL³&ùT8%ƒsô›²5'ccjõuŠ°á¸ª:åfeI «2!5(“ .3„mg‡åÉdxœ/©åΞlzãe Æ)r!~lÚ‰GY°úã4ÙüÜ7ßâó×)£Š¦ƒb6ôXSÚŒ³Ó ÎÿÔCÒÐ)eFSð“ý2²Jºú¸ª¿s¿¤¸ë•²NNÞ\šÞ- oàÓ‚Æn…Zt{ƒø•ݳgÙ²dõ ˜î|²"îÐ…^dºÌŽ2+§EÆt¹sSwPÂdÇ*âÌCÅÔ¸ß_ï¾êªD_)µÒ(ÜvˆÐïe‰) j&}ï!™sçúNó]ZD—µƒt‰W”O^_r u³_f‰â¢QÉyb BȈó¢TDî’> þ™Ì¬·’[2‚63²…½Oƒ„cí“^W•ÞHȽ©»ôñ û6þ¸“ª¿ù#0LL=™-–$A1ù SoÒœ‹j˜zÂïórëÔÌV<ñ7ÝmÌuª 5…¸p®áuFL¯Ðd%™øä{Å3õO/Uë9­ºé ¤(-tië¬gO!b˜’Ûtæ³I~ˆ©ÍÃF?Ÿ…°Ü(cÑ-ödˆ4Bî¨.¢õóBlû‹§­4VÎ=yD?ÍÖi{3D«Ë?ò¹UÛh J•-  HyÊh;Ÿ¶ÐŸCr>#93¡éùGvæoßS•®N";Ø_¹­ãjìÉKذJ&¯aùr T„¼ñêñaX̬’ºöÅqŸ¨œ˜é7æRr±*5FÑϽ§§/Lìh›{¯·£Á̆Ú1úÊšpv <¦/óìÌ@&$Ü}8@©SÉ=ÕЋќH;öwyzSï{Qö¾ûM7vŒU5e_F†³Ù˜'ïó–}ÎY•öfÌ÷ÓáêÅè2ƒX1ûòÐñá÷Áª­$laõ‰sÅä#ª6T÷^RèP/*|ÉV¦åsPz>\ì \Qƒ©w†›¢M¶&¾]  8ÖS £±êFÃò$WÄѲ¾rÇ«L6/ãÖjóm&½µøMªIdË(O~ê¢j÷ÏsÎŒýJÜ®¸%riÔ¤é´Õ¯¦6¬¼9OU {gg¶„0€?Îí×κÆ]ßSù±FØx,-=Ù‹'ÛH-,… ƒ¾ËLÖð]óF«Qô—ê²ÚZí1ê¦Ø%ÙЋLŸ¨o¡­´³‰£Š¹%¦ø*bTAEUp2œñŠi½£øÓÅ•¤è³hV¢@\/jµ¶BtdÉó<†t¾bÄŠÙ@Ú”|È;ÏÈ¥©X“¿<”`-lUŸæ°$û’»7~‘$ )y ŽkK¾Ò5äG~:JRAä(Ì ÿ€¶Šže|e¹a?Œ¬«oò( ¯°(ˆþÏmÙÓ &‘¡èºoÈ S ‘aµòÝwzC°fʸm^®Õ»n\£†¦å¢„ùGšVÇìbÑ,h(ïê9KØŒ}b¢´ÞaFµ6Xú)¨h}ÃWõÏ7ŸO®ÜŸŠ 3ý¡ÂÃG‚ØDvþX±wŸÏ;ÇÓEZC‡îôütÐN]£ t$àlêY‹H¯Ç&0œ,áÚéc8ÅŠ¯vWrß(„Þ"NE$v{7·ˆ¹YßþC²—„LÃ-p¾]¿Öèpµ6½Á¢ž+?¾È?ùÝòRÐëNè‘ane6Õ}ÅmEÑõ-+ÚÖ[¶@ö¤È­ÜЖâI¸”›ÝÉ !ÇBæ!ºBäáçqáI=ŸÀÀ)/áLìi”-ÃÂhP¢Î‰ÏuŸ¡­Ý+&[<ÍAüË6 ú{ß.‚_‰›óÇ‚†tá ÅïÔUði7»8{Ìiu~¼ºõÙWk{Èn….0UMÀ»!u[¼EÈž#¢¹‰ù̼D'xeÈì–9ˆÛ9;xªœ&à‡Èà!~y·¥1hb±ëuGræmG»­{pü.ñ! ~Rݵµ]z¿.RH)U qoÏ0ž/ËAG½!¸rn0åì5K«¦I¾ÙEûLöèe,‡ŽŽ™"ÔŽ!%°¾¦~˜#ôÂ,×k¥› =mîæ£T¿ ·p!¡-+‘ÞY”„ôÁšh1¥ÈÒ°—µƒ¾Qu égä(OÙ†Xæ㮳£ÿÃt2¾Ý·›ª(÷Àµ˨ŠðŽfǤ€ŽçlPm^åÚÖFê+æže"þª„¯ÂúƒÞã¤ØÖæÑˆ?ÿ-@Hõ ¤¤ñ}ätˆùbÏÚÑ$$ý¢a&n®œÆòÁRLkdÌšVÌÝ5"]‡¢ æâw¥&©BXAC^ÅÂÏ…5;çÁY¦ÁB µ@Ñ .êÇ J>™êqëQœç§íø6JfëÜVrâÕŽÒ—JMs‚±ÏÌC”û[ ùñSÁ·F:3í”ÌFtG¾Ãëmo»øî¤KH¤k5‰1ÕÍ ÊÐW¤ûÛà¥ýÛY"Â:V!rSÉñ‰ŒUSLZÙ22ÖÒ Žƒ˜•Ò߆:çlÞU8¼I*ÑÔÜð×çËìŸ2™PÌfÚªÉhXÓ.(6Hwº.ü\K—Ø…GDvs¾ûœYúÎU)Ç…†£c¨øÒ1µåI,FìîÊMM‘É%Äûã”.%ÃÁˆœÞÙIªéakTÑ¿ åÃꮲ} üŸït!;ÉGä’mªlYü”Û%?šÎ=là·Ò渔¼Ú”„¡47RIªñ,KôÄfÜÄ%í_D„™uF!¾~„²•´ÑÕ–²†»>ßÉõMÈáy" 6í-ùÙOË+5ë á 6Ùz™%YøTÔÊðîÆ¶a—+ZSc˜)©±@cˆcßA—7„öÔ~­Ýñýªr— èí¶éÚ:âÃ!K'`¼]ŒÊaŽõ›®YN¸0”novÞŸµv¯%Vápìpæ h¾„‰íÂXõ"m:îqpŒjì¬oJIŠ ´~ÕŸ§ K½ûįZ§6÷ýޱ¤ QTçîDxÁáÓqD‰`â„Q†ó¹ø3i¸õ‡êÜ;Ñ24®b±Sͱ&¶ÚWz#÷år’ãkûP®Ñ`BŽþ‡N9úA½i…òst…b +>ÞÂYÇ÷±˜mßï¯Är˜Ä–ÕrÀœu tÎ 7H9ˆfÚ.Àx4]¶cƒì(|oê?ê‹¥÷Mü"†ì Ð’ê£4=ŽŽc!.*™$ÎAjÂF›#ãÆ¨:¤m"uvrñlnÎjªáI! ¢Mä<õÅÛÙž ÍPÒ\¾{n®ÆpÍdz&ýÔ>,ÿÔ‹á€|y‘4•L rõ'P#©¡¶!RŸªHc垣ϵ°êc{W/å~;Õ­@†bMe+~̺ŒÎ¾¿=áEYT žsç)5Ê È\S:žIAÍóÀM1t»·ÈØ,wD,e4¸RÊ,5”3Å®°_1¯mîÛÙ(7\ì¶n%D;3³–²÷SŨè`x`¤â„µ—Ó^†-×# â€gºX>¸¯¨iç!*þïnIfñí£b^¸»L>ç P»ºé;ÉÍ®ßÏiô熵¹ëÐZ­qê¤Ó?.2»x\íÕ(®w©RÏ´é)IiRðÒ3û”ͳÞÿ¶¬w ÖûA.o±´¦D©9 öŒËhpÔÀŽ5 ÚÓé†õöèÓ÷×Ñ=N¥C4„‰Êܶš—²ÑŠì oð3(4'€n)ÐÉõ[=w—%ëì©¡rîiHei<(m6íY’Ü xúá·1‘Ñ©;l%4U옽ƒ‚¬Ã-ûþƒƒ•|Õò.Qv<"¤½ÎQòkf0áF…ŒôÀ qfÇid†š}Ë:}”—Ð%æ¼ ¥‡Ôû¥Ž‘@¯Ö­Oœ§ÇÊ•6æY¾+kÇ]Ó·å0YÝ1/ˆ9«a©ÏÚ¨~R|Àá´¹Œ‡êù1ák`-½WªøL½G‹(×”qÁ‹·0'7b¬Omßm62>I[M^|<ñTSÆ])žIÖ,oÅ?eÜÌç¸IF'> Ê_–cNR?Â-€!õÆ–—@xS­¿ÓÉ&/f½mTXï÷VmÃcõ ]òîÇE‰»ëÜ5þÓÖÃàN@«*”Ú©5ðÂ{Ç4ûÑĵ·R!…_î.·þF¼),é®5æ”eÙ¼q‡TJÜ? Ó%EφU ëö?úáÏSZxÎB 윋ã%jwãPoŒAÃÉÙl]VgÈÊåð6Üä˽º[.¾a°ÌœÎጕ,5Ï\0íãI³0—3r=oï‰[Ázÿ¼ 0¯P“¥»~c‹ñCÍôæùùÇÛÕ66*+Þðšè4KÁ𦪦ŒRiÜ®ýyb·Û1Øw$¼¬g‰@Þ]-ïåÂ/Ë¤ì Œ”Ùˆe%ÒÎÙçRS…É……ÜMe²L)¶ÌfŠxÌú,d‚CßG¾B;?î¶~ \¢ ¾'Ÿ²¾&{ÓÞ±úe;øÀ‘Q<6´C7ÖþØó̹Œ¼?5‘|'É}ÅJòf³í}^áLø¸ôP° Ûõ¢©šùΨçjUþa¼Ë¹TU·H¬æO8nqÖäuˈ{h’:’Ч0”Þ@Yþ"}àõü…ÆØ"±Ìí)::ï¨$Eã•X¨îOi­Ï(ÊŠ•5ûêó‚ýíLÒÌhwÌât¬ü¤û€nC ¸ÙþöWqßvø‡ŒÄ—ü 9¿PÚ`ÅŽÆO)Ñ -f.¢&3¿¼^&Ý 0g‹0¢\€PG„+UnÍÒÇTÿé¢óPrBrT9[Qf€`‡n$2é$=>®XÊ-CºóŠEpÂèÊŽN+Qîh.]¾¸µ¶ñhú@gb|euL¸)×|õÙR‘Oô’B”è4÷j€#ÁU“HúGâw¸Ü®’Y]{œÑ‚ÖËMd·’¦Þ°:½°c9‘\Ù_¨HߎòLj¢/BDxhF-ÀÀ"í8-s…ûÅë’M¾,†Â \þ<Ëgvÿ:í=À¼rQ‘¼‘°)sÚùæû ߇TˆÝççÓòiÙ Á~-}ý¨bù„ ÅÛ1CÁF}hTB‘t€?ÿÊ0ñÀÅ Šuwb§ÎÏ›)E:V›.)RÞ‰W èþV‰e¨ïaÝ=3þä–Χö™ïBˆµ”JÐYU3û q;ǘ~¼xÊhÌ„~ÝuŽaRR»åö.‰‰“-£Y—åJC¨åZÞŸ!J×qÞ{å{†‡póŽÉñò|OC+šÜýBCì>/©üPÎg$£Ük¡²syÚ‹ÃÝ¡X6ÆÕðÈz‡EÝüÁó®ÆZ+7ç×gȃš-+I5˜ùuYsöÃOAT2“ž¿<›d XNJ’ß¿GùØ‹ZZ ¢¹e%`ÖóšÇžþ~̹Í\G¼ÀÇpY…‚¾A­CŒÉɈRÊÀ…§W£ÓŸb@ÔzeOvÂâÁ\ÑT§ÿ¦?ÿÌhsð®H€VC•ÀCp`b˜³0x÷âÕ´ƒø%=ìw¹¢¨„\[B¸oô÷9ñ˜m¬<ìmëZUÓG¥(G)ýåi¥Å|ß#‡Ìˆ†œB‡ž\—ûb+Ë!®ÄP ´L’/;-…w†ÓqÂJ£{°ZÏ–Z †¾ï=ãvÕPUšy4£Ò0³Ò°¤ §ñUŸºÓý “yêã Z#Ùvv¬Ù^ßÑûóã½K¨éöZ¹@N´ @r´ 4J²¨¼ï;ÛD£ÃñÂQD‡a‹ø˜#dlÏ@yuñ¿¡Ò»²ä‚@„*ºK/;!ûIÛ}y€½õ1!ÄêÛ4TÝè¨&ý©¡Çžr Ãr“‚{Ý*^ÌNo¥H6B ɦv<®©l$Kuàè0ã‚zøˆûI­¦ 4Ê ²oÄéà[Ó–J·]g'~C«ß@¤¢±ð¨‰÷—PýÊÞÃ’~o@òѪö뇢_ðclÁø a;j8<öh-î¥y˜¤íªiJïQm{i‡Í¾Èâ^ã*±+nugsáE<Ë8!‚¯>ˆ;ôY?<{›(v¼_×È[0ó+ Ö"†Ë€Øè ¥D&s Š˜(”Ðy1H¡kÙAR˜/ ¥v!lî½èë/§K¶0Ɔ¼4ûáëf²ÊD?p”U¨+F¹K÷~˜ps¼M“t|&oœ†(D*coXÚVZ#[u¶`š¼C­Õ½Ó°é$œ¹…¯¾(WϨNŒ†îâö¨w!˪óþ)]ÌþJè2€pRfxȆôÔÿµÅÌ&ÏF¬h„*E…è#OÐ]ç12Ëà×ûlIé‘ú£~ Á¬$çï|ÓÞs¿|NP•cN¦ý¢P`|Òo4Kb W¼ßœÏV#C@îCYgɤR•ØþZ giÖ¥‹Vð¡'›D¯«HÙLåÍÄ\¼a³±:ýãJc½:ÂîwOôSÝfÒÍe¼œ¯ Ęlg¥šl[çøN>¤;FúÜêëųv¡[ÂävßNrˆ'sØ ·÷©„é‘b06Xãù4ëN;.LB\DgØàÆ—&JL:Q+’Ù˜§–‘<õ)‚V…—¥ KJÎoï¸sEÚÞ¥%SÓ¢ž"òOgÀÕMÜŽc„5š¸ŸD_`$°gw¨ÉÍjAaŽÅx•¿–>B£C¨”4Ãö©§îžˆ Vˆc ‘¬¥ã2 ïËoõäÀÔäl)-óê¬x™l÷ÞÓ’¢AËÛ«… co›Ñ Ý!‡tóÒèwôœÔƦEÕ1c4««iÓ&/ówššß¿L ‹†ö\·a-ç9a^>~ÿfB\ñÌ]D¸àíìôš>o×þ¥à²Í±f_§;–» ”Žî(¿³¿F]ú¤\Äšˆ)ˆòµ!p°JQ¶`³KÉ vVLñÝ•|FW*—ì¸v#l™Ö·š^R;xTÏ|c¸}-w¤M'™s%q5Ô–_~§ð\§VœwXL/Ì/òZYɯ1“6 /ÛL­W"J N ›õ¤¹,a-dCC¿îÑe»Î;šÌ±„œ²©¶ÕÒwŒØØ` >XNBÍÝçWT,ËUë5I(¼¥è·Ã-XL¼Jë7˜àr]èk|ø½˜ü¬ßv£ˆÂqËѳ9 xÛv²„@q ñVƒ#!éÃc¿áÜj6©w‡ì¾SC=4N-ûºóIÛ ýùäpM'÷-…´¡§P-Șìÿ ; ÄöI\‡3ÕIÚ€ÍFh·ð1rœ'çj%²¼ÌŠ0g´3q0ÉÂkZ`“{ø6à[é<¥û”usÉ™:àâkú0©I¶cýÎârÙ¼ƒc[Ó`%AÁ6fUG”ž»Ü`J"–²aû-_•´=fæbI’©²j8 ‰ý°¢N±áÏŸy7¯ aâ¤.‚ž‹ô™Ÿ<¬LcM"o‰Úï«Îì¥ô©Úi?å½(Á¼¬ Z9(oyÅÅ++^í€é^Å«¡,ZÙeQÂHNÌ'iôáš žÑ§Óϸúà 2™ ‡r³˜´„C§K[Œœ•Ïò ¦Ðmö"GÕ¿»&`/™”£¤¢dN•oø7¦§ Éž÷žûdÙ™,I‹±ÃÉÂH¥/ŠG@ýÕåRêœMéGšM2GÍ;‰¬céÖ/ÙëS¨H60V)ÍcÇNNu£HKØFŸ-†Â{-g,O¦]¤·vù¯ ÚC Þ´{—lA  *ô¨Ð¼œ}MßH+”n}v-·tnŠÔs)pðt*P`érL—€/#T$-eøóß}…îèL”újÜ0›gÌž£.‘öXít~Õ‰jŸCÎBdÞ?ž­¢LÙGòO3=ΔºÍ&,û»)»n•¶Ñ[3¯Y>×WK‡ wÓ€1¢#»ù:Ï'›[wV̫аC8Ÿ¥-_‹p³ŸºêÔLíS~eô¶\ÒSÔ Ë9;:Ò+YÍ@ÅNÞâÿ!ôÞñâr’À¨ë?,ñ‡ÇŒYø{S¿Å tŠ$"lÉÁÊ•6ÁMÎ/{¥m®bõiÛa‹Ùn„>×ø'J T‹'\ÑÓÚt L‘Ë›ŒÛã3öö±¯ÊùÖ#˜Ì©Ð×(ÇíuVDˆãÍÚœJÎ#÷N dD}LLü3PdP§tëy9Ï€›¥R¬ÂÓ¥|^,@˜¹|„MôÔZb³NceM;£èÀøXï÷¤Pæ–LŠ$Òæ¸<º ¬Aüä ü=!o5”õj•R¥”_ÆÆ5Šz{1OÑ aÖì,ë¶„6åT™ i—Ò¦»'¸ &ì_”ÓF²²,c]ºú.↉˜[ qUÊ/¹&>G)Æváɇ#„>u€Š–ÿå°ƒ|àœ.„?ÍøÏ#ùëS4}¼‰ЈAÞsaëëÔ|È«Ò3j“ãŒÏð–Š8߃´¬ ñ#@ ²`ëy?(Á3QXÎ2ÉÍd}4''dâJŒtÏd—‰!¿k%s¹ø©@p™Î‰^¬÷ZÆ;gŽ[Ô†á Fgs#é ^Ш¶OZÀ®D'*¬×¬]ÇÀ/´_ZÚ@°£âs>å¬m©:V:ÿWVÖâ}ß×¥vSÐCªÐê’ýæKwõ¹i(?9pt8˜Ü’¬sVi§ÍÇû6é¿ 2¦o;êW±`´¤˜ÙD´ï$8¦lPý”ÞŠš(¤Þ2.¼AÍ Šêy­ßÂvCD§1"e\…9ÚÎC˜nR¶= I°z0D›{²‰ZBÛÌ8®f µØƒ45Œ4M«»OSÀn8®ttÙˆ¢}øN¶Ixû ?A:Ô˜°íý×A«äïjØ%ý |Ç"7¤úccŽöoFUÞIdÒ‚v ÷È5^úqcÆÍ<®Àf:NÒ¬$êɃ,€©Øìá£Oêzú[ÄT5S©¢Èiä¹õ¥#ós\wƒ‘nt„cå.2ç§œ’b½rpMû† ¬•gÒPÀ KÞ‘a\½Út¨<ýç+õŠ:Å¡XtL?Á®ñªKmèE×ø6:È"`3}Û`øˆÂ7ABÇ3ˆ×ŠÿÆcY)ÖXôö]Å‚6]_þ. «±É .À¼'©¿‹$z½û0ɆJXöå¤þ8“Û›¨>¯gš/á; I·Ïƶò&Òÿ—oÙfƼбç¾2²ÂšÑÙ•Ä[Ò¡Y¬9—pqZ%|±€™\æDíEµÒK ’G%dFK¡óô¶`ÄXàX-‰ €W4³þÙä”Ý5ˆO°9zƒ*ßExgóáåÍjÜÁLÈÕRä‰ê{2CPÕ’keÒ÷â€ök°¾¼«ü4$ÅFèþÆb¥Ÿð‚ìÕP¿`+vdçÆ›΀=,ØF—5«kÊè0]™NnÃþ±D¨gf\MŽ%p#(øð’…)šÙTh—Øx¡ÔQ&qÿ'~…«yj4ÂpãPœ²ÇVè=žÃH2ÑbûÆIíÆÚqΫø–xîõèºôUëësÃ:¸ÊîÆÅ練“P%Æó"£j,8¹«sæètQ\:!í<$(즲†ËeJ;zâž:ô% Ýj”®BK>þ©ˆª/‡†˸ZýFíFÌ­.½äHºg“qüÌeål™h•sZðU6éh>,O"þZ* dûÉ›v}a›Ñ© æ“1Ï€ý…vó0·j“ÙãaHß6Zº‚º)@ƒS…§UèçØ©ÌñzᤖªÎHÐú<°Êkwê4ÖùKD"†ÈÊu÷‚ˆ‚Q1ÕßGËŒžQÔ öŠE ž|Ctf6À:|•ý[=×ËãPØ@è端nY‰ýfa4j³!õcÆ0 læÛ‘BÓhÕ!¥k³$Ô²îLõ‘Ï“;y—„¿ê~`MÁ]ʺÐ{ãÓC¬CÐÈÀðÿGuýVlµi€ X…鿆Á¤>Ì8ÈsR}ˆ|¾ùfHg˜›T²1Å‹µ:óAÜmJ„uý_:þ`t›Jâ~³Ê_Íã¦êô7-·Oýå{ë½fžV%FCÓ¬ËBo ©„¤PZ…Á01^otré‘P%zwh.7Éuõ×eÀ?Vð >"ŽžßJ9cM*¿Æs}:D¾ñ&Ëãåbd™ø0/ºÅôAGNXO“ñZ—Ä®àÞµä ‡NnÍ endstream endobj 975 0 obj << /Length1 1411 /Length2 6115 /Length3 0 /Length 7074 /Filter /FlateDecode >> stream xÚt4œíÖ¶.jô’ƒˆ>ŒÞ{ï½ c F™aŒ:zïD´DtÑ{¢A‚èQ£D‚D´Oòæ=ç¼çÿ×ú¾5k=óÜûºv»÷µ6f=C^y{„TGñ‚€üEme3?€Ÿ_ÈÏ/@ÈÆfC¹Bÿ¶²™@‘ž0\â?ŠH(ucS£nˆÚ8@ÃË€D$@¢üü~~ñ¿‰¤@ ì ³h8Ô“Má9:¡nòüý à€p@ââ¢<¿ÝònP$ †´Á('¨ÛMFØ`ˆ€À (¿„àrB¡Ü%øø|||€`7O é(ÃÉð¡œPO(ÒjøÕ2@ìýÓ `äóü 0D8 |ÀH(àÆà ƒ@áž7.^p{(p“`¨®Ðu‡Âÿ"kýEàü¹úW¸?Þ¿Áà¿ÁÂÍ ÷ƒÁ0W(@WE ˆòEñÀpû_D°«'âÆì †¹‚ín¿KTäõà›ÿôç AÂÜQž@O˜ë¯ù~…¹¹fe¸½"ÂÍ GyþªO †„BnîÝïÏp]à8úï“ nïð« {/w>c8Ìà ª®ô‡sc"ü·ÍŠó‹ ˆŠˆ ¨/ĉïW#?wèoôË|ÓC Úáp¸is€Þü¢=ÁÞP é Dÿ'ðÏ!°‡AP;¨# Nøïè7f¨Ã_ç›ù#a¾Kþùü¿~ÿz³¾Q˜=îê÷oúïóY詚(ªqÿiù_ ‚€æ𠈋ð@BÂBQQ@à?éa ùgu¸ þW½7õwÍÞDÀñgC8ÿŒ¥ƒ¸‘.Àño¥[ñ óCn ÿ³Þ»üÿdþ+Êÿªôÿ®HÅËÕõ7ÎñáÿÁÁn0W¿?Œéz¡nÖ@q³ ðÿ¦šBÿÚ]m¨=ÌËí¿QuøfäᎮÿºH˜§ Ìj¯CAœþRÌ_vã_»æ ƒCõž°__/ˆŸÿ¿°›ƒ¸Ü|A\3i<â& ÜM,A[, $Mú/T xvÑß§· cÀ>¡x?ö­°™¡A;.-Y,š`Nrp¿V•µ<5 E¹x=c¦Ñ%րކ-U  é» þ´a’÷&ˆ[ª’¡EG>y;wO*µí5ñïaG=°27B³zW¸ Úð”…E[Tƒ– ˆ¹Ã-{K"ŸŠ&öæÐH<ðÒ)°VX#Ѐ’\yŸ¿á øƒ%ª¡Nª¢Ë‡ëbÁ©ˆõÜ%ô±ù.Ñ3/oŸ§oI^ÌFýp|0_a|±OÅ­Ti*_Ò»¼4QϸǰÖ?©—ã+YÄfÌ!—+^ÆÄ¿NÊ#/PÅO¯ZÙ[rø©!±#6s†öNSÑ>.üüãó+–ì Š/¸©Û>O½+>÷OD_Qƒw®Þî¨c`»i˜¹Ü!pÁI¢šÜêQ+å&Æ,ÒõY™"Ü]Wrì}•¤÷ [‘2½Ô5›'#(¥q1 ˆÀûDãSÐ?½"÷’ù’]zl/íg'E¡ß«ÐÚ^ÎE[/õ"rùô1|GÄ.þ Èä,/Cj¥‚7u<¤îÿ]-òeßýÌÂûH\↻³@¾Z_ça1Ál2ü“Oû+2áþ2w6Úo‹×{æÍ;wä]´ÌyadT¤ÄÅЪ®˜×äq¯æsé';ßi™ï§ ^¤í)U¶$Fv¤]­'wŸŒ!$^½jˆÞ.V~_ ûôbÏ2YþaƇËS’˜~ËL¾ÛëÊÃ’ï ¶%ÓHYúD8z_ÖkÞ•Ud–‘ttâì˜$V7%‡ë¿dZè’ “£Ý8ˆÊá d’šÃŒI̾ÀÅ8©×7M%ðàe­=c†‡äb‰uUÔ©®i³g]åª~ÎcXÃ;KÁ_ûò>]aŠqðóNâ¯:³cí­-{¸oAñ!vP‡U}¿ŠÓJ|Þgà¼'R¯ Û=ùÛn‹ív;¬r‡cM`H—Óß¡¤ð¨:A¾mð‘¥ì£à³ÁëÀÌà¢:Ÿ8{yQ'œÅË•Õ9Χj[Þ^Œ·¿Þ1r(µìØé¼;ä¿°…Ο'B’)N Tušƒ|Vì-îÇ-é­`¬Ä:sX¿¤=ó‚Wí;)8Î>th‰Ð¥*6­ Š$ëÔ\püRó:Øœy •¹{z¦Ó™2þƒ¢â9ÓwRÐŒ!phª;¹ÿ]l°ÔÊ÷ÖMï½s«¦Üð-¾ï—ägW3K·›š8™ß~`p…®dþ4߶ɾ£ƒa¨M¶KÌw)¶ §›{9¶zk«æŠ&¶ëåá•ö.¹zPõŠ`#šô@[s!%ÄæôÜfö­*xÁ¨SÛs0n˜ß¢T½V\@b?µÞŽ' qšQµ&s5øx+vD³B4a'k:9åÖØ m·™ä»šÍÝJnK¡…o\÷Ò;oyIŠæ×+„±#Me± ¿·>˜L/[<´ÔZß;+?=xÈŽN¸Ðã4yßT À“ â·°f0:OœT ‚JJË}]„ÿ¬!  Ï;™dœçQ&ÍoüÆ=ØÊVý͆Td¤E”ƒ“(ê<Ò—ZSäIÚ…Ç›ýËJ× Ú*‚ç¶{~_ayßlt‹:pD·¨>kk2w ×pxnÓ9H *óßjUóY´Ø‘qlxñvX ¯„FĤ/μ.)F$7·ôD"äCŃmÞd¥p~þW¥.Š øT–¡yUó¾ô ìÒ¾QݦÁjG/‰`A„ž¤/â(¨/+|¢Ï‹êu‹ÛCL¶«b"aÙQZËt²¥¦Ó£'ý²°T0è/X$«f@–óW=_sn[’À§<#¡¹+Ö¼JëÀŒ£¬gÔ› ÅÞû¹«9êÖJ3Y}åeì…ÉF¾ž*©Fâ½Õ¿?âŽy·l2¢_DêúËš ü¥­NÇÉ\Õ2 b‡[ì[UèŠÌ¼yN{Ö³gÜUF·k*OÇ#;b;º%hËÍȵ»çwI Â8(^¡ð‚|ÞnCJ¹ËlÕ Ö¼©Xžqb3o8®&a3¸’ÑI²¹lŽ4“°†%<õÞe!{ÍöIûåùT‘©(tpä;¶–tëD:¥ó:[É õ¶ú¢¾uÇ&ægІ°Í™ž,„Ãh¿#mœ+—B0ß/ƒÁø`¡púÀ œ‡KÓ-‰»Ëþx9Ö¡\n%û‰÷Ì犸+‹Ëjg"…:ëðª ßk؉©`Ï90:&áÝ} JÉ»[ÓæÖåI¶ùÌ0Ð!ú¢®Ö"¢~;àFE„‰!wµÈ|ïg`?Øí~À*Õ¬ÌØøç=N£`ÅÎ/.,E™¨Vur\ÆÓTÙ,ô™A pö20Å2Nñ­ñ®bëz× c÷’wËù¿ŒX·°Ž^cN½;û†é…ÆøÊL0Tä? eq‚H¢ìúZîè7-å¾)¬a¯0ˆ °"V€iré°í0–£mÆØÍæ: ¥î­!±Âîß;¤<îû³nŽ0¯ ·S@HÄÊ”ôºù9êjºBÓÖbÊO{)Rsž[/«–¨Cû ½Ü¿·ít7¯O=sžÕÖðuÓ¯þ1íì­û×HÊ%©}vÌ Ü“¿÷ O Oê²>#ÚÿéiXÈpl²úZäÉËåiê„„uk<†9ºšnl•oß%jÔ fR§\ÍIT2Ô ƒ÷©a÷Þ=º×E/‘®Je¾z|Ñr¤Z鿇‹6µÀ0Y®½m"0c)%0š¤nü)aßùº–Ú¬6½W=Xí­…cDôœž"½ÓŠ|-$…ÞckþÛ¶‰ÇÂÔßò9H8yó‰MKs½N#Á-åÔ²¤I"÷');#nߎy×V†òÓ£ï®Ñ*G7L$TЧLÒÔêó¯&1Ròð²¤ÕšÎºÚµçQ8Ð‹å ŠÑ›$ÈRi[IÛt¯ke÷î9[#f# ß"ñö?Œsüèls&xê˜F*™ãæðsX¦Üw²P Æ8°mÎhá?`ÙÛh%ö*ʱçyä©7WêÀé¸/†¥ª«é’N²¶ÑÕL`Xøð íd<•‡É`Ò!e·éJùUvÕu ³†Åû¥qæ¤ÄúWKýCƒëâ3÷\0ì;¢Î|ºÒ­¿À|(§è?‹Þéµ_Ö²ÚgéØÏ5uÉVˆ†Õ(d^lg|ói“÷òz'ƒ6êU²m¹Þ8°_ÙE?>«¼5N¿jŠ¢> ×v§ŒÊ‡Í…rP|ç¶â¡%q·°{ÕÙSØ\éqµQ¾³;sÑõz$D‹õîÙôÄÇÚî7MÛ•O¥­ÍE)¸ž%M!Ãõ¯Ì¦úó#½'e§Ž˜ËöÚâŒ]áw¸Zõê ÷’°ž-ÇÙ- F”o)´øâ܆’ŸÊ œtqDÒÜŠ<³úž5¬àñ!Íò§É!ítA?~T›–MéÝ¢h H7N¿Då¾õ^9ìÞí͵çÔÀ —à~õÇUË!G©©­VÚµO Û-g;VX ÔŒå‘ÂNa9Ȧ¨ÛôÊEùÔö){}ÊÞÄaÍÂ_¹ %ñOˆéXd{· ­mmji^ZèðÅô1­¶FŽ}²žq†Þ gÏ'§ý–ma(¢|ïÒóuiNé¸_W£Ô`Ðÿ™/ž”b»›ðØÆl`fd­µcéÅ.¿äî¥äºckŽ/ã0=2Sm±ÿó½Ã‚,•¤ó¦œJòl2úúVXÚÉáÏgFÍ? ö¾ÚDG¾q~Ï»1Æn /†ûQëZIè®]MÈ'¥•¿Héô—TA‚WÊÈp^¦ðÙdó.*å±#ê˜ïé®é³ÇÖjœÊe¿œ2ûŽ݆8KK”(ylÔj>_J}ë%¾uŽ3ì‘=¢$%±h¬Ž'_Ѳk ¶^G@Ö®pÙæ|­Ë§c%qª*»ßbж¯ƒ÷š² ü¢òH>YÌIL&ö¸>Jê8}zŸö'#eâC^'<Çš|¾/ÄÙë¤û*U_Ûþí0YóFjðÕñHè¤Ïì<ö•'¸†ŽŸeG¾|§¢±ÿŠ|²Ò”êš„­ s;.™'–3¶Pcþ%é'ïß+» qšÍÍ`þÁ!¤2Çù’©›@Öþé'¤˜âd>Ðãv‡0n^f†UÓÏ Ž¿IfšäËç?Ïî`sh½h" Î:{Gû;Åß›Üßz•V·‘yWtŠÒâDÑüs=±>¤ù½n÷r™ó«ÔKcªHÅû\sN–ª¡oØ0…7u£Ž;X¹‹ýgˆ°ŒÊð’K°˜i±ušçR¦ (ÅÚ—WòX.â]TTUE«mç‡Æ8™AÂFk;Û%ŠéâýÑéVèýˆÊƒë6'6oñv þ‚1£UIC‰~oúƒðŸ*×î½%Ÿ&xÄLã×w2›NwTš?¨ä…f=îâÕ/V6mUR®óöÌeá)È ø#â*j%Îï/r‡#¹¶*MÓ‚s³OqC«Œí:ŸYY+—z{âôÈj¹ ꊓt«Š'®`ý*‰±q¾éÃb±þ •3jûðžŸb>øÀœ;v!,ÏjØ4o=„ Göˆw+|·fÐø²†E+TàŽrîëy¤˜–õ.:-4~˜ðmå U&èfì: €'”õˆŠ`IŽL­Íew¤\ËXÙ5Žo,[mX±3/þؾý]=¼Øm0óHÑoëKÄ=CöXÀÃBÇyµöùÊT›®½F³L²O¬ºï¹ü3bÏÝVÒ–$g\}¬JÐ%4ã>üäÛ ;Ut‚2+W¡©‰ q{¾ú²ž¾Ø]Èñê%¶ÌÄr0ŒxRˆÎÎà y±ìS3WÝ­dÒ*ënt©s aW­CfzŒM¬{@Úú¶´…nv?ÇWî²KÛ5Âa’ §ÏÆ£Eín½Ãêœ*·6ùj˜œˆØ}&PH>ªÄ1bjÙÃG…R%4¤q4’ìúççiþÀ©žJÜì&/´`Žg9NÒz¿d: &Uy!YæSÈ¿¸é¬ßdϨI›Ûž×"‡„¶*ƒ%Wkˆ¥3†qHŸà¼$œŸóØÖ§`ž%ÏŠ/¶ÚmzSF¹‘}g+¿9^Ú;x„÷ˆ}KI…ÌÑNÚ•þÝ¹î½ ŸAÉd)ͽçf GƒH??H6W;ãë¿ÇXÎ|wÕç¥òa·lõ æ·ÛuÁ–LýœDꉒy±äØ%¡<»€[¸ó‹¦Ñ=oÐj9‹~Adm“û/*?tϧÎÜS:š®1O?ð=~û&K€fà Rï¸d¤¾Z“¼»½æÉQ™Èª§0ÛpBè¢Øâ4’[{zè¼Æ0NI‡Ç1ŸÂÃI®@W×==«•‹ûÖÁïÓ¹ž\émg{§q•¸Xß>ÅP:ÙH”­ðÝ\Fb{5Z­ü­´frÝ•íÜ÷±´ºùEš^Q8£Ž¯åÓS¢¯£/áÇÁäzÓs VSüQï’ly±ÅN‘{ÿǯs´öQªûvÂz9><ÀœödVÇV¼òÈ„«Q‰Ù®}ì¡K /J“ïrà{ºëé%þOáÌÝD¶î­ŽF>àÕyÑ«´i»-ÿmωÑâöâ s¹òĦ@lþ8´ø…¾ÈýÁ̉RÌqI{M«ËýÒi’Ëát†Aœ]ùµ³¥ÊsUÝ®Ãá¬@œ-Òä.Þ2£ñ2åƒ4p!iÖ€R§Ë ³Åt¡#<éêñõ÷t‰Ì¸+¸y5V†÷¾FëlÿÌmkÚÕ[|x€_à›Õ™ôèaÃyßtmIy¹º‡èV‰=tní5SÓÃŽ‘‚ëÐÂôa9¢Ln¼y"súUÇSR•âŒKñjÂ]*xØŸ&+ºrËlÝ·Ü"âzG¸R}1ŸÎì Únw5«Å î)¹ìäàÎGeÌÄ¥@ËoðIûÌ–8 Œ»oF¼·¦2³©áÓ®«ÆÞEï[Ó-‡UbI7Û÷ekhk~tšHŒ~úèÃûÄ—Yÿ‹©CˆÆ\ÕgÃëjBõ2¬£ü–¯^²Ç´×Å=m_¼úܨûTG¶™+”R O7ø•×ÜÜÌågÁ/klG iá¦ýÂIþB[ÊåµÅ\8NO;ždcŸÅøFµ³unÍwJÃî®;h¢öóô8êã ºÍí±xlñ?á…`°-¿Šß¶Z:Rÿœæ¹K°Â=?¹ ¥}4•èÄh¸®Z ¢çÊʘ2ßWvŠ˜ãºP™e+EênŸ`bL$Ëk¯ÖŽo_–χ¼jèvÅü?_\*4aTEt^ÐdQÁ'@•°oŸë–ÿÍŒªý endstream endobj 977 0 obj << /Length1 1731 /Length2 10531 /Length3 0 /Length 11656 /Filter /FlateDecode >> stream xÚ·T›é.Lq)N)NZ¤HàVÜÝ¥EHpw§xq(Nqww/R\‹-+RàÒ™93sÎÿ¯uïÊZÉ÷lßï~ö»¾Ð½PÕ`3³7KÛÛÁYØY %%9v äd90éè4!pðä˜tÚ`GÄÞNà_Ž`üQ& ‚?*ÙÛälìœvv^ ÀòÿÇÐÞQ r†˜”Xòöv`&„=ÔÍba ÌóŸGƒ)#€ŸŸ÷õî1[°#ÄdPÁ-Á¶MA6 {Sîö_!ÞXÂáP66V-ŒÕÞÑB˜ñ5À·¨ƒa`Gg°àwËe-ø¯ÖX1éš–ØŸ {s¸ È xØ@LÁv°G';3°#à1;@CN Ûýi¬ø§ÁkÀ_‡`geÿ;Ü_Þ¿Aìþp™šÚÛBAvn; €9Ä P‘Vd…»Â_@vf¿ A60ûG3b2y4ø£t@ZL zìð¯þ`¦Ž(Æ ƒØüî‘íw˜Çc–²3“°·µÛÁa˜¿ë“„8‚MÏÝí¯áZÛÙ»Øyü™CìÌÌ·aæeÓ²ƒ88å$ÿ²yaþ#³ÃÜ@>^N>nØv5µdû@Ó þCÉþ[ü؃—Ô 0lì1?þ`zÀ@Î`ÜÑ ìåñoÅ#Lvv€Ä0[@ì0ÿ‰þ(›ÿ‰çïqèéÇþþüýdðÈ03{;·Ìÿ1›‚´Ž¦„<ó_-ÿ­·wx°prX8¸v €÷ñÁë¿ã¨‚ Õñ/_9;s{Àï`¿ë}<¨ÿÔìü þÚFÀS¶¤.ÀðÓõÜ@ÓÇ/öÿg¾ÿáòÿGóßQþ¯Lÿߊ¤llþÐ3üiðÿуl!6nY6³ ×#ÛÀAÿ2à°™ÿ >ZXþ òجÿ‰ýX…ÍŸ×Êß2n>ô‘‹öÿdá|Ì µ„ü9úd¼ûÙþS:þcü˜ÃÑÒþŸ{ìf‚ýYÔ ÊÔÉÑñq’lØãÿƒÿ¸3Á`W°)æÂ¬½©` Uu`ëU¥¹ Ëöø”ãä+]–ñ''¶3$¹\ ‡­îÛZþÛKw®ûœ³övqúE‡Š»(‚H÷õšeÏÔ¼7ÇìlCµ¦)U‘î.¶—ž®Š¶öù^eî­¶ÜGësøÑ‘öêÌâýŽðÀ(Öæ°—eK›½¡T¥ˆ1fEÊÙ%7ç~Äcýö­œ˜ÎE~‘7îwˆ©eLh­;Ê'Õg‚ÚS<9}XˆÂ ¯~7Pñ•粎ީsÖÏ61 z´3ç7oðãoAœ¶'”¶TDq-½X—¢±ý‰ÔöâÞG¶Š­Ÿ7eE0NW‘Ï=m-òCgå/þ–~pÎiANv–.„C­×nDý`ò`oôìDœB;oí¦ß­þTç%õ)âV}FZ÷:ètÏþ4L%–10!îØŒã´É%R¹¥lZVøBÒëâ})#¶ïm"NëQm»Õ»ò‹"Ôv“ö¦tùO Oãv˨BÆ.—·Ǧzô@«„“j]^·+ LÂdKR† z/è=ËÔ¾ù¬!t;k„ÙGnÃ宽w¶k§~¶ÞAi­¨aBt÷LŠMÔ°6ð2F¤¤‰kD¯Á8'Þ¿·Î~mi—zâ>Ò„Â â2GÝÜ'D!X¾í¿a?fž\ÄŸ~‚{¨SWÍ1 µO—¼M/ Cjw6Ÿ“­¹Ñ£6Дºì²JU ÷fc¾ÅÚÚ"Þ¤&ã­Øðm¹ë.ÇA«Ï³Ò2d_hÿ\ö3«Qï+hÆ•“«™»À-ðzóÆ™ˆÆTá=Óò¬ ³ûÄ34ÝÈ wlkÀó<µé5—>aC¿ Ï6{”ÜMÓ¸}øó—Ÿ±B¡ûæMõoN¬~EOÓZ7Ú\®ÒÛÒà¥ðo²ôdo?·)Žø-_'kN¨²{|ö#$#²Ë‹þ’)½èa¢Ù6ÚjŽüõ(»Ì#Lqê€>´³sX7ƒs¸`ýæç÷º5a?ÂÅ­ZÍìùAûïê.©Ó˜!Tià¦cL¶SŒ°æ]JŠ.b·Û£F¯ÀìøÎ¢nN@óK^ßSxàºùW'ÁÎdce0²†ú´n¢Ûs‚7é°Z«DÃÖ€f<ºÎ§ïµ2šƒÖ=„g¢Ø²K+Š%lí×¶ãt¥^¡KÏ;yXs ‡„£ºHœˆ‚ÕÎÍpz‘öA³·“†ë¢u"èЧNAŠj?ñ¾&1Jðí-ÕÀùÅS¤É—e ¦{;F˜˜ç¿†~iÚO å1Q6ܸåù.Ð@ QiS´Æ)@¾Õ¾Üjï8H2Èß¼•™ô`¿z0Õ–#­Dâa0rTzy2óõ Xù¤|Ìa` m\r=SŽ9¦´8»-UX2uÉ*,TyêŸÏ¿ s!¬#S:Èå|ÍT×îÌíÅú)Ÿ¿àyeÖKPk->øí^ªW O1‡—Bð»‘v%ñxK$ÚÒ([!O§÷HðÔZ<.´ÿÞæ»°Kܪîþ›¯²o£*û‘] Ú½|·¤YhÓ^¦™½`¨s·–TS7 Ö àìYå5öfXcm)“^r•M£r]§œ¯Õ,?X‰1¥[L…¨}ªªÆ`(ø&8âW©†­E(5Ù¼ê‘@àïÑKë1D`æü ºŽ¹.'‰rD?Jnm6:/Bß2WA×YýŒ¸Y”Uät \ùeÍWN_Á}ñthªèºîË<†_Ëšâ[íwŸL¹t3õFN£VÄÂR3ÖÕ¾Õ/tû:cÚë¯>Äj}¨¼LÛ(…ØÜhÊR ÚMÝ»¥õ‚µúû~Á‚Ä—ÓÃíƒ8©Ç= ¨)[;äîM~+Êåô‰d 2_´ØEë‚YÙø&åžìOH»'дûjͳ) "ÙÌ™ó¸:¬gSb¸aV»xUùËʲÕ0ÑÝ,™$ZÇWüz[åfïú¹Þªüû×Üj¶d$}·:F»ç"͙ڻþòõ¤TרÌÔƒäÖ  l=b÷åQóä*_‚særL+zæ¤BˆJĜӌt­?ŠËñâ>•׫0 tè³¼{IJ•y ߃)ËHá¨vSG©Æ}™ë£Ib¢èÅ&<ÎmMpHòSHÍ%Gåž—˜ûW( ¹@âÜë-#bEU‘غáçÊå;J—_ Ç_°…qðû'~†n?ÝþÁÉ4gE£Ó“!¹Ï·A{:íyšù¢A:|mx4¼ñžloQ1^ÐÈÓL-I^޶¾9©çí Ã< ±­ºÃ.áÏ\y=’8oóY<$þ×I%<5_Ÿ±ßäN{»°ZŠ)4^£ˆ°¿ @Ç:››é[s³aðßT|Ò4oɦF:ÖŠ!ø~¸‹ÑIZb+:ÅD|£Iij$Õ„˜¯£bÁ²˜4Û‰[)»Ý!ÁÉ¢R½D×wÏ»ëÆc›š¦ ”²ÒFñÈ`;c ЬJÔV¼›âvÓQðt÷:Ûüpâ¹XG˳7Û Ò*w_à\ìÔœ•÷nÝÑ«n¯»ÿÂi|çœ}µs Ðzª¤­ó)í’õá[ønJò^eY5‡{Æ—±ù!˜o4xàìu6½+Æ-&©;áYÍrÄ“”FŒïRÎfŒÀxR8pì|-SîÃ1‰ Ñû>n¼WEɱ±äðzŸ»>åÊÏêèň£tó~×I†$ÿQ»ìêÅÙô%ÈrÔ§‰ÉâHvÏBkTÀ×VÇUôJ$ª3)½b¤Ò»†Ã œÝ€"?÷¶¤í÷Žå(¸ûëS´ù⟰ÙÂc¾ 4Š_fWçè}eÈ3§ÆÙx€0c?̸óDÏÔæx†*b®¬µB†½ñê;|ëÖ–¦Ìþ$ëüóÛªrÛˆÑU£<±W;sïš§; Ð_Óªƒ1lg$õÊ¢:£ Þ#'å'aX¨ºËñbw|¶bî ßÒ‘ÍÚ•_n¥x“ NƵC×Z/?MA*}󱂼}âγ›ÕãƒieˆÍ0:7”¡xÑG=™ùûE#Å»Æ{(-€þ¨·–VêSœ´l”-ãÚóÕÖ"3ïŸ2÷@©äq „¼UQö­úü(WHe¸ö'‡§±£% ex³ÐoyÊO\Ü ÖfõÓ—a¶ßïE2Yçóêo.=..4›¸üñ‚;³ºß*çÏà­£¶[¬÷š­»vÉYJ †æÄ84ã:½°›¿Ëùߥq¬–Ó`ç‡ §Üï÷éaT~ÀügêtçÖ¤¥îg½ŽóøFR7F^2æ×èÙª«:“­ÝÖǰç¾:¹oëáÜÝ£ gÊý‘jЇ ™R5J‡e$·žYeIËØç¢¤+,¬G‘.º>N!}zµrTMöIL%‹¡<6d^Eǰ| —\’}ÉA’Ì ÇR8ö® 3Ù<ç|!ä$u¦¶—ðá@ò`UeïpÃÍÚ‚Üö5Œˆ2§~íV¬Ö"X&~LYc Ü´ŸcæWóœ#kðÊ&ï‰hC ñìˆÝJ"¡ǘIã¤S¢t‡2ƒ•Že0y†Ân°†òP¤p Êžôó–aTò)Ñ3|cUoj!…•©ëò´4úæ³°\G}Z Z½¹H6×Y(g;ÂÁ×·ZKP꘳Å?ŰÊâµøúúìc˜ °§רRù—6Ö…&¢vjÌg£‚걑v™qanÁÄ õ^T-» {ó Úš4%|d‘™‰P)v—áŒÌIb)S¬ø¬žÒ!¹‹½°Bùã“¡]Fu×ãÕ¸½¤^W îIÖEË"ôfIYÒý¬à ¢iwW±|þÓÍàÆc¿|dâþAK7…•Ú{iÁ7o²>ýòîñ<-iXØÁ'<×dsì¸+ ®8ë5ÙoÈ­½Ý²)¥³q?¦‚¼aßâ%U%”¹ôëWNwD¤h~¨ÛMýL|¹¿aM³’u'ª‘}ã)Åøp.«LŽJäõ:aÊYKDò £ïHÒ±A^Ú]Þ÷Ä–“¸Ò¯«{2Ÿð»âQR5iwå”.7Ü"Rùˆ¹Ø”(=+:h²„ŒyÈúQQbáØ„ã|ÖÃTœ]Ô7&׉éYMO07³HB™©…°Óe–||Üùðx5¡ôÁÕ´aÖ[c¢›èuÉ %ßÐî¤çD4ÃÕ`ÏÛäs“НT)XOáŠ!|“UÀážÓûí*TŒkŸ·ñ¤áI*Yˆ¹B®ÕùÍ}(‹ØóF;}BñxwÌ*¦Tø·ƒÅ¼FI>êcm¸â¾r5Šì*ÑBiyß¹ö‘G=ÄJ|q“O$H$ðÛ¶$JKB,…^ô¹›dÂBš­NMœIè!ÉÓ…_Îx·¬y‚úam,¬òšÐ—œƒb¢ô;n¢mGÄ_§ýÙPQƒ;“ìÙ.ßÃ'ɰ\±Ï.˜G‰™xëe'Œ®ÔÞœ“°;ÃT|›4ŸÔ,Yáþ`¦ »I’® 0³Öòn;¸©O½ ÚpÅ:gIwEþ%3AäUù¶é»»iÊÌyÅ #ñ‡­öìC©bjÒ¦ŽEDñ“{Çq!¶*ÜzviM/)ƒ­œ× 5è(è•Ý¢rßJä%`˜\o6D1cˆ¹!14ÉSëý6‰Ý|ÔÏê©«ûÚ-åo º²)r¬¢L¶™ˆ…<á‘ä¯M§â}@›†ãÊÚ1Øíf„Òö©„Ÿ©™¨ßK“œ~`)êYª¹Æ÷q·çÌ_.©1+E“ò‰¿¦ï!òŸGí/Ì»òQlbÖ®°|Ù\Ô0–xŠàÏëÖLÍ#.|c’…«V§*áš:*ÆÁS'\¬*®´®q®ßðD_é6’f—ŽXð)È}Ö¼ð›µ?w/Ð 8  ê´2Ÿ"P¨iíø5«‰ìò­æ¢YÚnéÏ㸸ªO/ ó6¼·5%°iñ)¯NÑL82,Q- [ô–ó‹þw e¾¹Ä¯,÷ ÖеDV·fÔMè&oí#|“w…Ãy°7{¼“1Tâ0KŠt]¸ÇØ^ŽlxZ§1€IiÙHVåKÚe°×ã©.º2)€Jö4–ÐIÍ=ºÞÓí',êÙ ÂùLã7SE‡ƒÜ¡–­»ÇÍžr¬ÜN]Æjª¹?gýPS¨ßcø…ö“+ž›$±Æ°0`5ПHi­Â>”[†ÉXdL]Z©{½Ç÷þ˨Åfô>´Ó|q Ñé¡»Ÿ׬4¯)öH¡÷€@OÓ­Ñ£V¼³ž¶Gôiè0ÏÞ ƒuÌñ˜©gõýrMÇJ÷¬4uã©äíÑÒ †£¿(BˆÀG¢cDD#‘l¦)¹Æß ¼4Rüp#BÑmFÀt#2 <æ0àue8læ‚b•«òµ2Q°";sSfÂFLÞ\D×(ª™®êŽç˜D…Á¬,‹öŸ¦ßïÞK–“â"'}ì÷µÆ;îŸÔ÷&Ug~FëÜcŸ$™Ÿ²h¼†~ïæw½Ÿ½ ¢ ä…U÷3›ž|f͎Ü›ÇÚu÷ƒj°­8í*Іx@”Ø4W±ä)„ܪSP¹2`w]BÜ“!§s¨âkƒ\ã´"WYpি•~™ü}î=‘ÉΙdWk >A„ϱf&gG]#Ù/‰½\„7BO%k-:¼~ˆ¶‰”ÈÌt=ÐìL×Nœ‰ŒÈ¢¶(`¼Óg±·˜¢~q­*[‡²¢;aœÉ–‘ ¼„xÙôv­±8XZcs®æ—÷NQ¸ŠÚ»²œ‘k÷þ£WÌ­7­)*Û/ßÐ$WW øظXà¶)Ì©[ÒE"yîÁU©2õ+ŠT•ó{µŸ,4ã³óÎ|j?bj-Dí ÙÅhf=àie…¤âÛŒP½É@Ý("lSh€ “tÈökh]L|îšËùžÓÒJCÖ]’†²¸ß½¦*ÝA/Û‘¿¤øQ·³µö µé`‡*I=HX±9Š¡;º>GD²¬Ë}·¯ïkZ^ÔÛr‡½ÂwòQõç©´§RùËK‰êʶ¶áî̼ uŒµÕØ4±vQCiˆñ3Øù!à²6:æà[…f¥éoöéDOo‰-¬‹¨G^7}ìBÕLÏëÃÉŒw†hI“Ìì‘e T²;'X/-Gቫ.2F-¥%ûSŸ àp}É·E¼„´j7Âv S[ç|ñY“åu^3ú¶îÌ âT‡t»Åî)îP]¹WÖ©Æ¥S~n¯ÈúŒº«×ù3Rˆ/ÇÍÔPq®üó‡Ë\ùtÄâ°tLM^ÂÔe«àQ†HñþÖ·€ Ĺl’¾]ã{^G³0¹mAÓ;ë—ã§Ëùs›ô|+?·ž«Ê•E××ô1@Û©¶G‘lΣõŠ(šN›sn‡Vœ_qÒ=9PH7TËÖÊÆÄ¿æ_Õ/ÙRÞ/áÓôSé,»ü¤¸{ÎÃÛ0”¸Ëý¦`¥”³wo}Û"ÖÐ_ñøíçXñe¾Ø×:­ÿaœÃiKIIy”›…0í”U° ÃÆ9‰ ùp1؈jŒç(§…'ZáÝË(bmMhN‡5ßÑ?“ÃòwáÒøxñÖcCw8oºø–`X=5öÐâmgˆ'¯ììâð•­Èò¨ Ê×]²#Ôx|zÄÌRªz‰|¥ÔàLªþ&&è«CÉÆLC/šR $|Æmö¶@p€p§Å€áí¾¾×FabÕ\ˆÉ–ðÐÌBPÉpþ{kf73N רgü¶wè>‹×N±Æ´°ŠïÔ_ô˜_TWS(¥ôËeÏ÷k–ëxøØ|û,0;G'^Tµ}s© <Ð4ìÓ;û®+ÕU¸vÇȹº‹{£`¶ëÙÀ^±ÆÎL²G”cPM£#6¾ÏMÛØÿÊØÅŒ¡wø|Óí_¥ýTgMrã^QŽ2¡fšpAº´ñ´më;7 m$f’(%JÍÚ§\}Vm$]ûqÇê‡ÂÕWîO?›C-lÝÅk#ÆcRcç ýq%i3ªÒŠv8ذU…êñ jœpèm ;ós·ë?ËŒ#­=ᣧÞeåà'ûAUð†×äÕ£3¼³Ø|¿K÷LKS½g˜LÇúRÅÝggÏ_ðmÏkxC6 §KuÇø ›ùÀG·½–ÃC›BæÎ(eNqBÉÇø@"6fâî•×µ˜J!ñ+Š™ûEøªæÍmnÇÙ &r}½cÝÀ¢„©3äîqj§u„~»º€F⤜Žâ|ÛØuâÓùÝ\Zû„O‰µœƒ×)¨Ïë e.·m›ž¬[fï/s|Ö~fë‹ ù±õ¥_F›šø}ô³†š‰`Ï‘håµ~ QZXX„ÉŠP´ÔS«æÈ×–~Ñ)ÂÑþÁŸíœ}›ý -c~à;s›r‰«$é/³„ fàf òySÐë UVŠ²Æ„`2 Í9•BQ’…xà+q»mˆnéAÑ'·Ñ{ÔJÖB'(Ü6$•Õ>{_÷|?²Ðí´ßd_*:znÔØÆ?ÕŸNÿd2ùó±X•ñ P”·†Çr¤ü€eö¶1£T¯‰^±-ºOkëTÍZ« +¢xiœ_3üÅà{ÝO¦2-Šd9xc_ñ)ÑLyÈ–Ø»ò+ÏV¾;ÄO IÃ^L½à79Áðd‘3Ž_éÕåE>J5f`I1‘~^–GÿegŠ|D¨ø‹3¿W˜à`æÎBe—)#"ñÕË‘ò)ðèÙ—xÉMvÒ²h…)oG†_uºNŠMÈuÏÊ‹ M.Ñ7»’oW½í©°xpÖã(.¢eu<óœø2V6Âw2Y’ÕwZÇpˆþ•ìù˜O¢R!7‡}æ©+"ÈÌõ„ÔB¹rÌÉÄŽúPiB“yJZçŒÞùð6Öx¢×¯Ÿ²¤,Æ©›Í/§gë9í©¡ÐïL#$ªh?­vÜË']?ÃÑžô-C-—уõ˜õ–&)ÜÚ}R\ߺ{·A¿„Gt>Soãð½MCh’³/‡Ÿö ÅÿyÏ›·ú`}ægÚ³j 5ꈕœØàÞÏópF®b½¾Úcöõ°»UMáìó©zß„€#‘§Hb÷+O™æ5F7ÞÎõR–†øø1+9Ú7]\Y¾?Ènšzíu†Ûƒ®(^ÊÌëk.»ÙáìSÃðÒ,×®øù I¢]öÍg9öWu±ñÈ Ã…lè[Aõ†GÜ‚®¶¨#øt!l¢µ&µJãîè9¶LGçšËèÊ!(aÄklRÉ›„ÿ=wš™T,w_?6`oS9šÏtÝn¥0PÀPÎ9ˆ²Çz*Í’;-÷+ ƒ;1¡bcÁŠláZá?=»Ã+¯ s‚žs|huç_KÍÉ+Z +#ùyÙ[ Éoõ†Âùž½®GÃO»vYnꄪB±ÒÔ×*%…ôƒ¹*àKÜ,ŽQ^ö y Äò¯â?$ßv¨éà"£#{…1¸ÎpIeá¢]ç#|™ŸwGVÀ…>Á*×Þ™>ñy–¶…¼&',¡ˆÀJ=À÷î;ÔCJ ôÜñÜx­ä;ã§vàrÞZ¶‡Ø¦ U‹qÞ³ ŸÏèQ™8ZPþL†0æÍ§6Œâ™Y½EÊÌ+N²®8 R¤pÝàI È‘åÀõË:Àæ{Ѧ䗬ìW—]iHî¹ãÔ€ À ZctË÷8â¶3QuJ˜»2Ŭ,”$÷Þʈ#{×"˜Ö%Ê Ÿ’âŸ^1`Ñ· fLÔÀe²^{•fðK6_ƒ3Ðq¬C<ÌnFÃ&K¸LðF[H÷뎫Ø;žç‘Øë¼®§dÏ¿‰øË"HwnÿŠXs ð9‚ï ½hPiƬ¸XZ@my’»¿E LTK|àãtgÃ(K¿ÄXy3ñÚ´š¡'A®eûú Îñ‹> A¥ð‚Œ˜ðÙ¸é+®Xnq½é§\ŽF%îµðÞˆ šNu?¢1Öô4ŠcœWVÏî¢ì΋W­>ù Y­á ÔOp0§µYîu® ²N"ߎò%úHH±¤¨õ¹ÞM>Íõ; á«Y0^n¥(™Gà´*W7ÀVïoAÉ%õkê”ìØTÙ/X^™tµ› ¼‹‘ÈÄiâ^\ +l¹Y–±ÑZÿ%D˜Ü8J]±)’Å\¼¿RË¿ªƒ‰ž7;âÙ}ؽø£°ßò§»DˆA–øq¤øÈN¾Ð·ª£' ¨[=ò HO›°[Ž<öŒŽB÷w4sÖ·µuW \³„)ÛÊÕ§UŠHt}C%G\—¨Êk9)¿¬zkäËùŒ{®ÞeOϱ6Rt1 ጮë& Š%¥kLˆª>Á°È Æ/Ä1ÞÁªžï“QéLJf?¥ëàš^ÔóœåU$ê*ž«/oH ×›Z×,+jåì»Qš™wa­uÄ2Ó´ee*'ÍSú؜yÃ* uÎÄWmÉ©AïVñœœ"ŽÀ—l™GƶŸ®¼'®Ö¢™‹cÜkæŽ])š"¿è©>«k ¬„y¬àoF晬ѹõ¼b‹µõ:¼±=Aùv×7ŒÝ”ì8¢h9½5yO€†¸H¡N·iZ'l_±’™éî¸áê¾)•GãÄNp–ã ŸµÁw£ô|äYãpeÈuM5“GãU>ˆ@]eWÑ/ƒ2evT"€ÐMˆP¼æ§»fA"Ø€m>²•²¥:5ÿ2† m®Šxï)¼÷q)ë„YÌž‡÷äËʺž÷}¤3¦òíNb]ßÎDU0·üþCé8Àý¦DJßûëdUMü,µÏŽmn—LÆ7SŒ™q¿)“—élä!Ï ŽŽŸâµÀæ æjPaîÔi\¾ äzïJ¯â/ŠæÎa×ULìRn9„f)Ñ)bbÂò gvÏžxðpÈâž‘eµRË4cfVQ¿„!OSmsä`…Àž=PŽ9V’¿Ê í5«):Ç›mŸ?ìu<8¶±Ë†RÄì¿Õ¨L×͵•d~?¡P<’ôîµÅðç´|ûâ»ÚÉçc†ž9á™yØV"Q¤Äj5ËzÓ¶FóË„ûm FvêÞc|6$²ÌyåS¸z«×‚]5údi?1{ÉÖïÝ •»ùßÜ/4±àÚsCc—ºÃD¹®Œ2š¨4b}Ñ‚‡ ¦îÊq”îÅâKªâC¬?f²Á‚ðõ—5nLГäy†ñ’=š€¢D¿_¦/¨d5€œ+jfÒ–š‹÷DÓÌß»Ãc/1©ã>?"or„|éFi¹¥Xúæ…TBÞ\žêã[@~k“¹‰¿ƒ”Ià›³ Úò#`]²”:tÓ”øZ¥œ¬Aˆ+œ*!˜JÓ¦²Ð¨V,~ ÿøÍ:Ä72ñY‹À™?«øfò …² Ò<öa¥xH¤¡Üg7øÿtKÌ endstream endobj 979 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J ººº €°h \Ž›èŠÄ!€0, ノ Ô;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj àÜp|@0 ú¶Ç¢ññ`0Òlƒüj TUÔ‚ñþ™ Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:; £NÎ0uå?¼ ð ÃÅ„$%D$Å0' Ì ‚üYÀÈÝöË úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷ ¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü" ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã© rýÃt !1!þ ôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬ Gë_í + €Æ¦êmý1ð–Çg‹êjà 0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒýd¶³ ·®UyôãŸ6÷·÷Fš¯O–l 2:T µ-_ò£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q© Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š 7 4U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘ ‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâ JŽ,j‹ Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð øÞgëa‚•ýI¹´òÖ ÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô ‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ² ┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±w õf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ $ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9 ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔ ñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶ 8>öòSö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê 9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvè ÕMNŸ êa€úèá¿À ny@‘ŠçÂêØ ±í>—=³{¸ð†râžÃ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšê ñ–&Õ°.šÃÌB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9 ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏ ì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9 l핯ô¿ÞH&n&Hó }ó âMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}" Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJ AȸJ(ì/BOrg h ³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊ ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7  ªÙ “xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc* Ÿ&|T²-Hyt(uý³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì +˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â ¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛÝ#È\®W› Á”Ï{îôb™ê¸ ‡‡.Ž4+ &±›ï6wójóë> stream xÚí\ë7ÿ>…?^t¢ý¨òKB‘x’KÈq@ âÃfØU6;›Ýل䯿_•=3½0CxLßéNH¬Ûã¶«\ï*w7%ãLÉd¼÷¸² !à ãš sÄ5›ñ»I óŠ3©fS£7¹Ü/Æ3ûYÉÕø3fD〗’ŒÏsJ6¾:RLp¾¢SMððÕ-`•êM „å5˜ÀÀV*™k™•Š­e€5šPÖdBeÄNÈEÄVÈg©†ÀWç ±‹èxC1xt‚¡DØ»#C9ÒLöD%Œ€ê ¤ÕlWeU6¼¬*†)$t*8Bèxg82Vá6'`¯Øç$2\ŠŸUφ+(¨>šèt’Á.Ùƒ£° _LdÙ8cyp& —+¶3xX!’X £C&Ög5°I»«!š¼¬J&9t²I:Ť4TH-)n§ YVò& û+“˜T‰Lö>Ì*ÄžÀW&“PŠ¿ÌB)v™c’ÉÅ䔂ªÉ¹`‡ìLYU .­ Qy[R ¡ÌTT„¥U4Š…RN¦(@†È”®²*vȪ˜#80»Fü9¬¨QØÇ¢}I¨7¢0B‹P+·°2AŒhŒwB¯à¨wQØ™zº:‰Þ'pbôd÷Œò!ÊfT7¤’g*é)°ŒéE™U§ }¨8j†p°XDYx}ôMV°&Ÿ"øZÅ^Rö KòÙQš]¿>³þ8›{ãôt±œÙ‡—?-õ÷7ǧ?ÏìÍÅùóù¹yê`¯îÙÌ>˜.ÍÓèó@0êP nª‚] ¹0æÜ0ׯûÐØ»‹G co›¿åÏÌçŸÏðï#Ñù:«èÆP)åµâ <øö…O²Ö®+’°n7NûÁ+ʪÜN¨’CªQó$^{¯ðS;^Œðq™x"Sèø2íD Y9<ÙvçÉnOØ“ 5]AüC柧ÅQ,æÎÍäÚáÈöuœ9FS–‘$?-:˜·_áC d¿ƒ¼Gâ{éì uÈ!OéÉ¢GÝ:yr^wdL{ zZçÇ®®"ÖæIˆuh¬\ËÓ$©Ò]‘T©±“ ò$ç§yrѸÉR§ÆMÎy@œH9;>dEÁun"‰¨œ'5>Fª™¹³3¦!ûijˆ5>*ðÏŸ(¼O‰ºº„¼~ÐÅ„˜[&ÒÎN Ü­Œ!  ÛÙiOø\Jvñyde1OŠ`à~eA·ò´øP<änTi¨4-? &º9fîH;Ë~Ô“Ruú2 ÎMê<åh+ö9r ;Ò@¿§<)dä~MWBF”Ø‘†=a“SnQH»Ï ÷dxÅséI`@á^â4ºâÄÈ ;”{µHB–/gK¨ùj Sæk”Bá[Ðù=¹N/ÏD| j̰ãi¥¯{z§¤Ÿ'é[Pž]'éµ—ä%´÷9a× £—Þùå„§òô¯Jé¨)Wé=DC’ª¬ï†–¶1”dܬ‰z3³Ýgôq#V¢®ÝÉh©õŸ?à®™Òà¶øUP¨Ëc”(¦õuÞ–þ»´Þ#Ó[-{ßÅïº_vßã¾zçÊÒ«cõö-‹…£²2"§4­-ˆ?Ô[ä¸,9½ëÜE7dÀ áÈï /ÛÈ*ù]á8ŠAq#nÃaÔ*E´égQ‘­¶VÁï6¸mk»þ»hP9ËÖ[ÛFrt+>6²’P‘P¹%“¢–å€HçQòÃJ“Ûêä…½Ôï÷1]Û¡«Ö6–wø2/ê›{kôQÞàÐB_ïX Àº4Fý‘ütôŠTÃFE¼:»Í@½R( ¼&ÑÝF@ëk+:|úûýãͱ¶6Ãu®œð¸™D%‘eUÄ,¯»ŠÕs–UpÊåFE Ûfщè }ÌâN£<Æ6kÙ$…Y›× ^”Xžá­Öú•¢ÃTšV`~ÒU^û,/Jd©J({¡»üqÛÍ¡_8¨vC¯¥ê—ˆŽË+7AFš)£¼+z¢ãõܶ¥íòR³Ž ~FŒsbšÕ ¯b'W¡?zdíô°<³DEYÍ6 ï6‹±Â|“žÓŠ­€fÑxÜé! -Àµv›v´M.=œ¶ yc ÖÎ}x,ö6¥ÇÖQäáA>FpîõæÔ÷+€M©²éEr¢9š~‰8^²üÒ"“ü#ÚèyÑT§Ù7U- ¸¥4ÂÍõ%É‘oƒHà4š4nkzk×Ê šY_—.³U%!‘ÑZsh²1®‰Z»á k½!q©Ð$†bpÊi- äeVI”º©¥RÐÐ6O^§)ª1Ø«sC«œ(Üõa‡„¯ OÈšö€?É|jÿÇ[9Iù ËÈ£;ooUW÷îËÞ¨6ÛGWø^ó¯Okuk·N 9ö™-æh[ÔÖZ+Gyã#“6ct2:é•‹Œò`YK$±µ–ÍŠßëE´Wÿ\¥œ)j•­ÌI N‚ß)Zy;®Ái:-Ç©¶À£ÕJ.µêžY+0u½¾¥ •:ïÔ7xMäÎvIJ"ÞhWÜ»¦«º­ß¸`=oø”¨þ%Êã#¼¤‰rÓ ¦c£x£ß‚Þ‡žC üO§ŸN!_;…鄸s(hj\úý¸|.®²µò–Ô/²æîqg+ù]l[ˬ™ŽæÕ}(š¸yï™úø ¶ß1¶Ù­¿™Õ³îÑŒ„uïí;|—¶CíL)Ðl¶µò»Ñ*'(eEgÒÓ’1;­Ò ëlÍ+åÑYÑÿ+A4-GÍOS6é„¢§uRäÅÞ/$e­ˆCN‘x&ÖyUyˆ¨×º­Me#+Á3æÆ˜¢ˆ<µ*P <¡ÓÐùÊè©WiÛH“Š®[Ïm÷åpPŽIÔk3Kï5µ~oEK³ÑsBy4w{~qx~|¶\œ·Gußü‚;_ßÿîñÿuïæpãäàå…á6ã¦~Ó{-’¹&_â{OZ¤ÈÓ‹Cù²wfoœ}9?~y„Ÿ%ͬ ‘{×¼Üüjypr|xãôåÉܸ™}¸œÿòXþS€™}ÒÁ`ãèà\žùýÍÞ°7í-{Û~aïØ»öKû•ýÆÞ³ßÚÚûö_ö}hÙïìcû½ýÁ؃‹åüüøâgû“=´‡‹“Å©}nçV!Ûùéóƒ‹#;uxrð‹}a_àß1þý6·/—çö¥=²GœÍOí±ýÙžØ_ì©==>Û…] =³g¾xnÏN./쯗ó‹å1üz¹XÎOæ/–­w®¸Îí…½˜ÿPǯìÒ.Îçs»ü}a/íoöwûÊþaÿ´ÎÏŸ5ÞÞ9GjÖïd¯>ÓÝ-«ïß}|ëKÈê‹'Þm—U`ÈJÿ3ŽrÂ6Âb7–•I E×Iq ŠüXPgòq·°á§ã—/Û/e…ü¼Jc|¿¾óý£[ÿ÷¾ÚE#ÑGq°\þBémúxÍóŠÎvÒ) Ù”QTQ”ð:ö|~²<€N‰â4:ÖÚrtlÏŽí¯Ð‰ó£…½8^eH~†Ü½ãÛGOCv(ùCBÚCRÜ-x%ó*EuEÑ¿57Ñ; endstream endobj 981 0 obj << /Length1 1388 /Length2 5918 /Length3 0 /Length 6875 /Filter /FlateDecode >> stream xÚtT”ïö.)ˆ„H÷CÇ Ý Ò‚À0 0Ä 0Cƒ(‚”„ % ‚t§„„”4"­„„”¤Hóãœóÿ{׺wÍZß|{ïgïwïw?Ïd50Pr@ÚÃÔ‘´X$ PÑÕÕ”€@"‚ 0hG»Áþº‰€f0/‰þ_/ñ©BМ.Ðòv€E`qi°„4¤þDzIT!>p€® @ ‰€¡ˆ€*H/¸“3sÌ¿^ÜPXJJ‚ÿw:@Éæ‡B]ÚæŽ9 q#¡pÚÿ%¸eÑhi!!___Aˆ;Jéå$ÏÃð…£F0ÌËæø50@âû3™ `â Gýñ#Ѿ/ãpƒCa&Ãáó`kêô=`ˆ?`?~Àß»€Áÿ.÷7ûW!8âw2 Eº{@þp„Àîè«ë¢ýÐüÂáâ†Bbò!>¸ÄøÝ9 ®d€`ü; ê÷@£Qp·_# ý*ƒ¹e5„ƒ Ò݆@£ˆ~õ§ ÷‚A1×î/ôg³®¤/"ð¯áG88þÂÁÛCÈ÷ô†iªþ…`\Dÿñ9ÁÐ1¤„ˆ¤0æ €ùA…~•7ñ÷€ý‚¹1z =Ž˜!`ÁpGæ(ñÐ^Þ°àÀÿø§EàP4ÀæGý§:Æ sücc–ï÷X0Ü@¿~ÿ~»¡—áæÿøïý i™Xš¨óý™øß1ee¤ P À` 0@óüÏ*øß.@ÿIÕD8"`Пn1×ô¯Ž}þ€û¯8xÿ,¦‡Ä°àþÉ­Ab (æþÿ¦úï”ÿÃUù‘ü¿R÷vsûæþÿ?Âw¸›ÿ_†´ÞhŒt‘ þjû#Z]˜ÜÛý¿£šhFJ' ™À¢‚ Ñ?~8Jîs0€£¡Î(óÇoúKjnp̉‚ÿú¶`²@ ÿŠaôuÅ|?P^þ AP±¡¯ñ— ÃÈéŸ}¨! H‡_º@¼¼ þD˜Õc,1@ #P˜ßof„H4&€™9àˆô"úµfq0@åA9ÿrý£4ÔÛË söoF`Îý—ý[ß0˜ J43‰„Ê„¹Ô„µœT)1ø ¬ŽÈâï¦X ŒäÙ¢{ÔÆm—³2gµKÔgºÁê6.ízÊž'/¿L®Ô²Ôù‹ °¨sb±O˜¼>ÆžH üÉÈ6IÖˆ•cž¢Ì,]èÕƒeÀsûÝM§c YWM×t’/'e‘º„Vx‹^Û»ª¢LjF)³íe#t“}ŸÉªØ-Wö²{üã¯O­£Rõ^°i˶%úVÞ^ìè›'ïfêˆy¤åººÇñM®&ÓǨ*JPi6ŸKz‘]è³õâN ý] e «qž¤¢„ÕŒó-¼ˆÊ÷µØ5ï×2]¶J.2•>‡Õ1‰“ydÚ½_ý^[}øh^ëˆåz€÷Ñ–ø ‘=Å—ÌÛy- ÆJ·îRR€é2£œñ,}ôâæK€©pkÙÔ@%ÑêPS/vþ6¹øü.玫Ãs«’1]NIŸ«ÆOó£S¶î]™8Ð(ÔóÒF)_¸~,êÊ?S„† D*åêêN7çIÞ°¥l’’2ÀÏ2j`¹å¶ïøºZàÈá~(éͲ˅r5Ó†ËnÛ1šŽŸY²¶xÏ\~R–Ÿ>#yõÀ®™ÛõJñ7á‹K7ߊë#Û7Šåß¡&¦‹ò²¥j¿üM5äzì̳yzk´¸>Š«üÎ*®çKª›:?”Ÿë"áûænT»­2üïótd» lÔrdÑÌ•O†O_‚¤àA=Åß:,$X Œò¤¹>vSlSÉ.tF%Ê¥´“ªÛï“.•‰ffèõjžcAfVÔ߬‰Ei,ŸVhÎÇðUS‘,¸ÁÊ1†FœÈ²Æ°‡²ëôÇõ ª¨öë\’/ÐÜ›Ä?ô[õrZ¸óB_J®á^ðØ›°¡.îJUöI$pþ4$xCEωsµ6êÃxr!d›$ŒxÎ(2û°xgðsCÔrA®.»D¤dÄ0ÉãökkÙý¥;ÑA%"ªxÒ¢ËfçU]¾sžYÙ(hCçÆFVDa6P­¨Ô‰Q?è{€°×g&ÃÉ•Ê]Ð3§´q¹—‰×tŠ_­ïÄ9Ù®GÕD±îJÑ® ¿˜Å^`Uú8{\ÓLÁ’0Åösfä3µÓ[ ?/ÞOeö œ^yúð 0îÑŽPJ$ã*¼„0ÊdíóË-ÉnÿÍi¶Ù÷¦9W7ù2z“g¥Ë[ÃBr­(°.È3ƒúÝedt…f' ϶wIΙDéÒæ>Cuýól×e5d<.i9ã†-±Å¾õ/rXaMQ12µÓê”â5º±îwïY\Kúà8x^­K¨X‹öe¾4¿Ï–kŸŽÎ„ê]Dk^ ¾¿d\À:—'­mÊà<~ÓÒœi5œtŽ«Sx‚[g9Üÿ޵LG°Tm f›«ò²Ï z¨É6Ë.æáö„ƒ´e¥#‚Ýü¢‹:bëòhª§"׌—‚>ÓFàž†óý„ÓËHÝ.‡QÎ*_Gäã•ú{µ¶~éoôsë?žÜEš%-áS’v/)e{Ÿ´<¡0^¤éÝ ävÔ6²|ú£ý‚ŠÝûÉ÷ä¦Î¯Ï RF#Ÿ&ŸGvëÀÞømµZϾ" ˹mÎÂÐ*¬×yk¾Ñú¸üØRØksÈCÝø]¥c!1ÎÏÜ nÒÂÊ"1{Ñpáæ`Ž}FÚNr"\*Oj*›vXŸðÍêülæCñR=¬{fó¯cãÎÂ?ì9Š÷}rmÄ#û¨Vk¾4»…SØ ñÛ>Bœ"Ò÷q-z_»D‘+TA•çÊ–^¥ýhÞÅ¥ÝÕó£mY’@‹ ø=×פïÔÒH§‹ ºü ×€ã•\îåÈ»9}缚ñ­*Ø Ÿz"¦bÎÀ“û454ÿÑÙAäð”xºOðe¨°r¤<)NOÑøÐ¡gpÿÁWÙòr¿aQ»%d×HŽ[e{²Ñ´Þ©,ºoõ]—|Ô@‚¤'©oͲƽHcŠsÌyðÅèÌOåKkô´ª.áàE&ÜŒÖ-¯+Ú¹"9Iuy:⃠y±ns 6ar%Gœ–qzq‚žsîÒE%É{‡™Þ8©Ç}*üQBñ,,{®´­Ä£Rêb#Ý@¥Õw‹¡_"ÚC$ ›û'ª=HWs–J#Ð×·ø&â ã¢J´’~µ%yËO“6ÂÆž†`­oý‘?hâ©Ù¦ÂÁ[-I*qéuÂ2ØDß@-Nn–§Ø¬{á’ÝbÚÔhÃV¹ áåÁ1»ôZL"ú)ú/•ETYï7Íí=¯ùÄHý>ãø›RÏ ä•(ôqìß4F)³:èRuµjkOáæ°ÖMžZçÞ8–Ú¢Îa /Æî5$"óm ÔºTÊ.9⎻£éùÓ¦d÷”C ä îMˆ*¾G‰hÞK7¥Àýt¢°}wÞÆw–û£ý„WÄÚ³:›XŠh©“FX¨î6O$ûÕb|ùΕ‰ƒM¾RwÔštÉZè…©) nko8£`SbtМ’M3‚:[ Qûl°¦Y°|Ÿ@äÚÅÕÎïÙæÔÆBP Ú6 \VÏÆ­´Ð„2u6Èít»³èÍ—H7šãËvMHG“I#ÏÁ7$£'uÓ^ù”ˆ´Š£ßæÄ|´[l¸påU°1¶—kÄI¤Î]ÎÿFÎÿöÊ•ŸG2÷ËÇÞqâõ:_[•|:½xéñ5ËQ@—ò1Ùñí'³«™àÚÇ⻇'RCFU2·?ùxzߢ Rj˜j hîÕ[S­¢£b°¡,:?Öl ŹûêÅú,¬Ÿ–°«nñ±]JåTÚ(mÖ{øut¨t>ÓQë\€8n´Xûóµ§Å„Ã%dq\I²§ŒÈúö¤wÞ&}ƒh¹È5„dM«»18d iN¼q‡>.0ûyiøu?TŽ]wæïöºÎl™[5‘äÙN)Å®'¼ÁÚÁ™jÞ(÷¥`îDSÒ„m£–ÝÏLmÆû剸Þåk1«;$ÑŽÛj£K™†Ö¥åú¾9©éƬ`U{_&z˜=¢öà”°’òœ#7Dj~¿¼¨7KÁ‹×¾éŽ?tpc±”_,=¼ ªvœZV÷*9%|NfdæsñÌæèo¯â&öñPPw±Àsi¿»;—»¸¥d±Y! \ë1NíÓÔn5EI'{›ü¯VFjÙ ^4)½QQ/OO±tnsk[ñ© EÁ4j²9aWžÁ‘õ>ãô”ù«ñ*·ï^VyÓ6o|2¤Ž÷W‰o©0GÍP%éªZ挪y¤iÂ@®>üPk§ 6xHö-–S ÆaöjÔHSs³{žz'ÅÇý˜K|?ãVL­äIR ‰ÆB›Rè´DÆëûUð©Hr˜%á¬ßàÐÊj¤?ãý=¢MùlO›U»ÄƒGg5Xäk¸j³‚qíE®ð:6&¸×VÀ¥“s,:7&Œ\”|O¼+ ’ìh½*Ïœ]ü1ÒÂÐ<ŽÛØ_’S>3ÖÏü O•»©ø¬¼=¦þ-Ê?9S xG½§tˆ ¥ë1O´ºö£‡ÁZ‚'™DÈfÁmÏ¿ªŠpà¸Òñ?íPudÔkB&%ñrJé¢O+Ÿ=ñ0ølèU¯Ò /Kï›v½ï©ü€…3ÿ1edÅåËçÖ &æÖÁ\Íb¤ï7ozgU²²âa²»ÜMŸ©Þá3¢\só¾!÷ ê¤XÃN¦(ýÂÆR—ÕêŸ×ß.·jÇîZN|yܨ%ϹÈ¥º“Öúb*úˆŽy 8DLõѪ»ªiJ‹óĆvX—ÇõýÞ4!Á1!P@È<½…ߘvm=§ IZ2!¶u~·à\½ëzÑÞ2ÿŒéMD¿J}µàhÇãtåµî¦Õ§nÇïVùXF"]¥8¦EŽk)+Ä„§-z%½.†C6ƒyÕhpRp_GX¸†?›ëu¸a'€2ÿZ÷ÌnÏz<†ëýÕÆàN+ë²zݧ±tÇjIåÆIÇ™ðîùBn¬ÚÊt6ÃØE ý˜"m'_¢Aƒ¸Ò‡o–’îàE¼0é»Üxø.g5xµ‚!lvF³¶ÙõhÒþžæ»XGŒ™„[º ’,ª¼5Fü'+@Ò« r£É/“!¶£¹=†C®« xž7&tyÌÐ’€6›uêÍŸ$5ÖnÚñÙ±8å¡h öû+[¹%wüô’•ÌT \ІõJUñä&3’½È#„$%Ê´j“Má«¶Ð |£¸ÛÂ>zwÞ»©É0eáj\ñZPÃz}L1#ÂpÁTm©Ž|e×yßEM• l9ê_ ˜S%iÇŽÈûXÖŸ¶½øüÎ;ëÀšæ-Uý~Ù¸±æððÏÁé´¯û 9M‰óVúú¨o7}’ñÏK~}Ù=£P×Ió>?Zª³{êT¡7›õ6ŸæOK…WЪM{̾ÙVzz4iÛ.MIzצšÙ˜üŽd_ËÀ=öâ:%gžêMYú ëIšº5ëל‰³)Æ>ÍÇW@íTÃÍèe.ÀÚëj‚KzQ©XŽÖO±T„ªý Kgîu™}+™”¢´¦ª±‹ òu~µÅýÓÅOfç=ú´B¢H‡öœ­è ÌóÁ9Ýn ™áèxŽéš‘«ð› ´9Ôü‘Ákû5²‹gV£+þL½Ù³Å|1<܉ø~ž í+6º/çǦZÑåQ¯ÐI -l·…ÐaBº’Ê'ï ú¾ýqJëg’àsÀc4gyûÞ[|´7Raj;â’{Ft®Õ쓳œ@n(÷…m¯MÉSi»Àa…‚kåvÓs‚)Μfì«óGÇW7g¤4º=M…N6°À©Ð‚‡-{ªonåÑ©¬¾3:óÑ^S;ƒ›}a=k\?mª«–ñL&Kd&#\C'\è%Ì’Sw\Twîš:Yz¶„­î¬ÇÇw0¦Ô-ì™SÊ:~Z‡ë· íÈç[hÇéì ³õÈKUrDe1IÞ+—ùr#`—àJ¤&F¢^ÕÍH«ìâ–A¤úhêL¶Ä»®M{–a—n›Mî[R’OP„æòm³Í4¹à–臟4v™tkÏUŒE-ß ž8)›éÄ äè§0m~p^”_ý$(Ê>üd·wä §½{ÂÍQ“šŸsüøë{OÇä†;‹J_ÜQÉ¢¶É]v!9_[T_vªÙo ´8u«‡Múù.xô< ü±7²e7ú6ømFš¨H=‹zGM—÷?ô0‰A“m¤T!ûµdOqþIÃû5ÆàŒXƒ(C^#^Ž© hÙEÇì y§fÄ4±@BwÆÃCƒ±!6|4[‡ìTv²V“òú{AÝ4¢S»¹Ê£ Åø/|pû¼ZzÏ·1Ž®þhŠm{”E5Y(Ü6Oƒj¿/Ž9–8½¨¬H¥ó%èŒÙÓÍ7?ûɵ õ·?pøC6>µ›!’çÝñ;Ö²²üﯱ2çn’_j¼ˆl:4”~Ýÿ’‰’øhò{ƒêðò²¶tŸÜ÷Ñtäf˜ÅÏÛ$¥uÕ"_§¬áblnUÝ©ü§p®ÝÎ …ÂS×kJ÷NÂ7ffpBMAá¤^20>ƒ÷sxW´IMVeêó5zp(ÿ‚VçAq¤þ™Q]ÙalC~K¨€üƒô#)í4iÛ+€]ÞÆ l3‘¯9o,Ý÷Ù½Ù›¢uìæô± •Jä`ÒDLÃJ®×z¢4;oŠõ†©÷h›]¡úž'OÙ¢C% 9y4g7Ë^=Í'rç–+²õlñ¼Çì=° 2°z6S¸¥0ËæÔ´þ¦5OFñi räÓôZvtJ›½8·^Üu°ƒ'ü˜a‰È +¥|Í/¸ºS4h–ˆt<‡ Êäu|øÞ}‹r*Séì[q+zu=w“×›VwÈùT<墀!ŠR¼çK¾¡¼‹ã‘yáz“Žï:ë;=…³¤u„(R–œB—x,âÒ$š7ÂÀ]PO¨ Ý3;dm ^(Ï1lÏÛ‰âÍ7êø$e®eš3{Ö0Ù”°VÅ>^)ÀYÞ *™€Ø™,Ae`X€×»äu[Ú0nÎ>g쇾Ã`|Ù%'¥ùï½åýs’omÍ$’ʨ`¼›ìGû? ö<Êí4’lŸ>ò;¬k»¢” Üãgϰ>¸[14 #ŠX—c ]¯íâž¹Û¿ÑHb«>~ýsXÖv.€>Ú€ZŽH~qÅÖ5VP-#CµzL‘$rUb&èò°ní'8ðû…æKùqœ;cTn0§g©“BnãQ«È+»±®ì7^§èÏ/:‚ÅÎËÛb`)|³d9+½¢ïáȱÿ²Ó´‰|éÑ Ç‰UyÊ‹¤@UðšjOA»ÂçP=x•;Õ<îò%3ýjƒ*‚­_¨²ˆsèÔSb@ÛŸ”¹c’£Ëf+‹#¨¡gªž6±?ÙÝ™<ÒK×árkºóÕpp»Ü³Í‚rЍf7Ã÷hlØÆ|Ë·ûb¯ÄPõ>mF×EÉÜÏÙ®î_šfQ‰u¼ÐfÃS5¹:$‚§¦yÓ{±>qSçwÙ“­ ± 5tôSùÚ’l!}ë0øÑíarÿ[ÏÁÆ™«±mDÎí$"†Í¶ÆvȬC{·Íè¶'Ys£3UO\ZšDráucÐ2÷ÛÌÃ¥ü-âCý‹Þ‡f8#¡öã¥àÜûRÁ¯Ï#ð÷Cn=>¦ž(M0Q¢(ß22pJÌœ‡PÐI!0”B|ïqä;cÝåvÈ÷“SÉÆ6×t'‰x¢ÓçlE£I¯â™GÝ(Ù37s ¤¨“”꺴Z[Õw¼…P£k±3ÙBYÕ¿¡žÍþÀHX£W¹ð)æ²,¨úmðŽw!É-a}ð]ö‘ Ô8ͽ¨îiu‡­co+8±þQ×3|é­ð]ÞjÊzÉV{ð÷´­WŪ÷ù1™-_SmÔ¤wtÝ-Œ%{±°L9+)Vfàn‹×;¯œt:>Nˆ:m¥Wtï©õ†YUu‘FC-*V#÷^­+r5Ô×£0kÙ6> stream xÚtT”íÖ6ÒÄ€¤ ÒÝ "!ÃCÌ3t— J§€Ò Ý)©4H7ˆ”JLJúžóž÷üÿZß·f­gžëÚñì}ïk߬L:úܲVpKˆ†äæãŠä55UÅ@ ÈÇÊjE:@þ¢ñX .(&þò.òŽS!ïü4á0€š«€OÀ',Î'"ø@±9Â]Ä 7¨@“ ‡Ax¬òp'O¨-òî3ÿzp€9|bb"~‡d!.P0Ð!m!Žw_ƒúp0‚ôüG  [$ÒIœ—×ÝÝäˆà»ØHq>¸C‘¶=ââ±üj r„üéŒ`` EüáõáÖHw pG8@Áâ.ÂfqÜ} ¯ªÐv‚Àþ8küqxøël|<|ÿN÷Wô¯DPØï` wtÁ<¡0€5ÔÐVÒàAz @0«_Ž ü.ä‚:€,ï~W(Éê@w þÕìuB"xP‡_-òþJswÊŠ0+y¸£#†DàýªOêß»'ïŸÉÚÃàî0ï¿€5feý« +W'^CÔÙ¢ªð—Ë…÷7gA„€¢"¢‚ˆ3â¶åý•ÞÀÓ òÛÈ÷‹¾ëÀ×Û î°¾kâ µ†Üýáy#@nÒÅâëýŸ†"<>>€ŒXBl 0¼¿³ßÑë?ønø.P€)ðN{|à¯ß¿ßÌïäe‡9xþíþ{¾¼Fº²²ºO¸þtüo›œÜàÍÍ/àæø€"B‘»ß¦ÑAÿ*øw¬*Ì~ñ§Ü»súWÉn)€ã¯íàü3™üN¶Çß*7 Áw¾ÿ³Ö‡üÿ$þ+Ëÿ¦òÿ.HÉÕÁá·™ã·ýÿ1ƒ¡ž9Ü©Öy·šð»=€ý·ëÈŸ­Õ„XA]ÿÛªŠÝm‚,ÌæNÍÜ|‚<@Á?<¡õ€Xé@‘`Û?šùÃþÚ5( ¢G@].wQ@àÙî lw î„ùÇBÜmò÷aÈÝ>ý³Enõkñø…„ 'ÞÝèïÀ›ïnC­ ¿¥ àåÁ‘w!€»ž}Öp¼_c¾Ó>¯Á/ê7ð‚þF¢^Ë#¡;ät7E¸Õ¿)>~ €×ã? €×ó7üG`W—»&~Kë®áß7âãÍNÁÁCìªBšÏ*dï»soŒH`¤œósä?ÃAö(ŽY¬$ègfÌ©+Ívó)=³kÓ’s>ËZœþî½^ÍXã)xÂͨ´mÃh7u{‚:‘è}JÇ+‘{U×L¢;y¡’ˆZh³Vk{Ea†%˜ÑÞª²Á²ß`Cè5{öªclðZ”ÙËd­4fu‰Ös¼÷râå¾þy’núŽÈ@5· C–HÅÇýt ‚ØåFóo¯²ß¹}M#õ¶T&“ùjÕS²Ä™tV¥ul»~üÕœé¡swVu7Î^†r‚_ZnÌ@‚Ìp|Å÷x³©÷a°Er¾‘6iûÜrš!ƒˆ˜ó¡rê|ÍëÀË J–¯+³eû¡ôwlüÇ=½ÁïÛŒm„mSŽzmôÍ8•f|ØúžÝ =Ó×ää|”4&‰«š¬#´P6¹¸£›…‚E§#»‹çoùÞk¢ˆJEûøx=ùaÑò‡é KLA.+Dø·ôš”ðS—/QÇÞƒ›+;?ü >=U×åX Þ>FêrÒO{ ZéÒþZíD®ó¨ ‚`BDõ“.,£9Ú¸gÀ%4i{Éóa#ÒqÝ hò‡`&øÕo›ŽƒD»Î2>Ê}8µ=ž2édNm,_p]¬˜ÅgpŠYüE<â‹ £ÒIîc—î,~Ý:'{®ÂƒÉÅž°âŠX¢¸%ÈGl³,9ÿ¸ð[ÈØ‚ƒJI¥ûÿa½Ÿl|ºÄy¤Gôzb”qíÏ¢põr4†ˆ×˲ïïïÈlw–z±ŸÐ"–aÕ4iÈLͤ¸¿8dÎÛL0W€ÒÂæ¯Je­TÎûtB'm\ŒÓë }KSz›Æòt}‘ǯh7*‹|à EVÝNíe»²éC<¡cÇÅ;8ÞQ*¦C¶Z,¬êTÉIã|V‘)Ù{Ó½%~Në쫃1ŸúE8Öë¸mÅ©ß <­>¿ná¶¹Ÿ<^Hv Úv#£ "ß¼MëQ]»Ÿm8^½ŽÒ±º°ýÄżŠNƤõr"˜¸P_õá›ÌT”þPåqz¬@²¤Åä£Ú‘Ê57Æ–[Zy€ºÅ#ñlúü’epôòæ~¾¾ßefS‰@õg.mVéãVÓgÛ‹Ž#òT$ò<{ã—J£È¥VawÁ‡ïY,3Ü ‡´UŸ&‰Û$J…RtaëΦ×5zŽw\Ú"”Å^¾ßºoü ÿG˜Y¬tc_Yiš ]'ΑŸáCÓ•¦œ˜'^f#+EÜÕëB®ö¥€èo‚æƒÔ¾[ÅÏŽ_Ô| [Mé3`ª™ä¹ýçX= H™’Y9Tõ5yÌÁzáT¬Þž] ,ïy~&æ9«{àTy.~I¹õ°’z#ÚöÑ®Èç{[fâ£Ä¯®®-l)„ xjžÉ¤ˆk*߽؋1‡—™“??.yŽÓ`*6r(ö”Ü.:¾2¼håÚ͈kë`ò u¸ÁyPÛkÊ4׎T#ÕÕ7hÞ àX®:ÌbÊç•ÙÐì2×êåæq±G‡ÒZI¾Xp§¬†‘>Ñ)$‘2ÉA~!¯,š†˜¬¦2¡ŠQ©ÇŒ~ì([ë¹ –Äò¬ó ZŒÇ£¶ð²[ÖÏ´eîßQ³ÎFœëÛˆºöÚ1ØíÛÌ/(Ù/JeåºÊ¸JÇÄ£šE¾÷‚¯¡q·«÷ÞÔÆü„M–ó+u«ê'ÜÃØŸŽ)5Éyïb± $º9v]fí–ŽK)³M5?ëïyÄ–‡ Ýó\=%¡8z*Ã!(¹yj~O Ó“'^B¹ Û¬¾õoêÛ =½ä‘´ ¸ðóÍWW½y—í”ÍÄÙ¡ˆÝoeÒÁ ûq ³€ù;ÈÕIC©Þîi ÉÒaZ~Ì3œ¨ÉM —І+x Ù' eQH¡p}N.TÝæw1ZÉdRæzG—¥ƒ½,wîýçl S¶S OŠÏù.ø™üèjõ =Ñî}ÏEc¥ÞÕbÝÞ I‘L½Û÷|-Qúç9'7/¦ü¼,¿»ÂSç§eâ<]1‹ÄUß©w}B”æ,¹Ÿûø–vÇ-šÊ±5~þø°>©N¨F™~%ZɶÆ["À ··,˜gИ:³h³VUM4^œ§â%Á®1Í}T¿hìQgãÞVAçwcÌ_3ÉÈË’J)ÇM„¯Ç­kCyºÿ¥Ëm7(Ì5üÑæ°S/:Îi<àV+zRhõ>ôe±®Š6Ø.~íÇÙý¬é–òŸØ…x¡§2TübhÁÁ. ¾êñtFJƒ ¬¯š—ßžù³e´øèœ¤|:;âà»ò Œã: vÍûîýAŽm‰é‰sYpuÑÆec‹¯x#Õ%‹o&Ö"ËpÙžë˜ÏIÈS*ììòWF´XX£2×® à¤xtÜKÍå‚ò®JûËÇ,È®ð®Y¸æ"ŸkïÝÕF»áªQ-5mðºŸ:ÉɰÔ/ê¦?æ#ÑDÈ ±8нo@ó–¦}Ä‚WÃ'õãó|g"lÛEÒñtçUù½Ûx®•ŽH]L¼kœ‘8ÉËolœ] ³Â\Óß¾7þ|®ž½G`-‘cŸ/´L¨òû(9lÊ#L.úÌ¿[·ÿN]\žbQxoCب0”êù?· à¦¸Fœpðbõ©D_VòPn%zcäg\1è½Ôű·¨[JØsìÐŒú Öë,1Íà'} ±6ÆàÒYõ½'µ…ÓŒBM¢ ú¤kŸ=ç^ÛÑ´öÚdå«äGâÿ`dAð¶iiMŽK¿åLO—)¢¡(_$9wV¾ ÓX§Ö§Ñ,ŸÙ5ÔŽ‘~“‰³'ˆy µš½õ8ËÂj’w~jë7!³&~ázô#Z-Üy$Vœ“K%ñ'É7¥!ÖpÛ‚ú(á¥f“¾ê‡æ¸ÃöRW)­,ÖÊ'.ê,ØÍ¥íä1e‚…JˆÏ\h É6^Q}q§ «Hª;QžXïÐýªÕ®sŽ•›‰o*޼ò74 ºî‰°ö¾ài0S ~SÍÃŽˆÅèÎ%.AáÁ- a’ÀßÇ uS¤˜÷ µeÃüžýüPû”KŒqL¦áh˜êXnR¸%Çq]]Fœþqsq·â–|u"ÝŸ»nÉ ]¢®#ç×àóE×¹iI_T(2’f@ù:0Ÿ´9±ózjL,3¹¼ZHfï@"ÔMu5Yï!\èÆý¥`È›£2†Ô)”ë43’Ix2Uü‰ª9 #•WÛ ’ mO!ã -j‹H¦wÑÌ&€2¤u…çs”XŒ‘À/˸׎½ [(àëûއ ÁÕWµ6…Žr=ü¶Û©´ò‰Ï9‰‚tÚo©&ûî:÷.Íí¾—¦±Ïuµ¦˜R&šý¨,Pª†Õ’â®3U>!ÅÌb˜TM C‡_IÿÔ÷ƒJä­Ÿu£643ë¨q%ÊœYÆ^0 ú ”õ§'qÌNÕøŽŒ5·Iµ¹©Ø·ÔD4‘öTf»®§7„Râ)…ꬊç8ÐÕý—Ä_TŽÒKgÕFÞŒ™œ®ï ¢Ožå<€<ËúÑÞ*ÝëøÀ¼NlàÉxcÿˆ¤l³¡þëL)ì{híÖ` *ßZÙ2¶šH1¹òz½SRÅy±Ãá gÔë²­¯$Ü{®×OB£e+en4% 5h“0ñI¾có2½K¾¶¥ëa¨pPò[bŸ Äá:.öH!|tþVp*7hÑdœ›"&t¦ à÷?~óñ…•ìž Vkù%å›WÓ.”}ÅS+t.³ täåYù°§¾"¼ L&ÄØ…áÎßÓ\—[h`Õ{û[â5_Mbß~4YÆ'—šñWÍxô>”àá:S­§K4¿Œ¶#þF¤ºÁN8O‚  ¹¦§0ìÌCc¦wóËå§#oõ4€"™1ñ„2–ywªÉóýÙ‘|òKQŒ#»̾°Ï»þFã8ŠÊ>®*޲5IY/² \<ÎLî*`ÂWÒ®S] ”Ú½G5¦áôbuvMÏéú<ÐðÉ!. x‰7ŒÎt%$¶fÛyN°º¦‹‡™Ê-u>â1¦Æb Q»p\^ŸÞ‰ÖP”7 u*ÏzÙ‘ÝkÚíØº)\ªF£4;B¦òÉTIÎyn‚÷äê|ýd*¦¢c}_”Ï·•!ó^Ùڭć"þÛRtÕÎ •ugd¦yÔ«·Šo¨YÍR‚¬²XÛ’3XyXƒ\‹ô¡Ä4%Œ÷õQ‡~fN‡%À*hùq7DpÙkoDHü©‹¾¯^Ö6U1Ò:!ŸCigÚÔ)a<²™5Åaœ»^K€ MUÇ@ÏË*áž³L7—5ݨÛSc6{zÙ‘v]Piå_ùŠN¯îƒy=6Ü<ÿŸ°Ñže¨ C"Õ?JW`]ü Ê]B´8Hó›6G›´Ë@·:¾ƒÜB@…œ…~ºÞKC¿úB‡÷ÑÀß«|ýR{¹p»Rïs‚&ñ-ž„|#lñªööÕ׃¡—èiDmøO‘ïÆ4§™MP>¯¿x ‹_þÄärðrki4ÆCÎ(¿ÉÔÀ›5àíöaÈ/”4µ‚™²(IÑZ±èÔ¼þmM¹Ú–äçLgV𔫍úÞèÛ‘Ûý: Ö]Î QC™•ÉN…m’Y¬µ¹Á7‹“£¶be…&Ï®‚þù«Éž÷èÜ…zuã‚AËlé_©ˆàãK^ uO0ƒ­Ò9ªüúì•ÍãÄz™åm·ccíâDk¼tÝ =¶å—VŽŸ̺ØT2dÔf­;µÜýÆ: ¨GaßæçÚÙ~Ê”ÁÚæX‚?MÕ”ÝàqÜûιRëqÁî°]´ðPêãdR•´æWÜ7¯š‚$êfÄlK'tB‰bG3ëEøËù?²jôäÃq:`Iº\Ç ²= a=M¡¥ŽÜ¾…¬Æ{ùÒ:XŠ íZÈUo%hL¾ÈŒ·IÖ`h£‹˜Ã“ü°oo n+A 2Ø™iÄ2$šZ;cŒ4“éŸð?€œYr¥^y’gÛq}}5±VâLFìM¤ÁVª7}¸U·‡Ãâ²Óù:›],¼Lîõç¹"·2~Ì™¯ö¦Å#ïí-´`åj¯Ž’³(µù„.¥ b” c ´ÇØôþàŒUGÁŠOû\ouq³λڡšãÞöÒ•¢ôñT:ö¦s;-±'hì:GìÒŸ+¯zaÉ6ô•é“k]¹Ui¨áJsR±«ß´fi™}‰ö7fu¨}³¹~Vw÷wj»Ç¿ ¾úxØŸÆý¥+ïÓÀþAçR*^È·J,¯I—ðQF°hcŽ--«÷]81hóÐÅ.@|ÕäØ3(;Z¹ Ç®&ŽLb‡]Š%aøÕ³ÐÏÊfâž"l°ózø\‹5<òE6p´…M¦ítGCƒÞ³õ”ÁH…k‡¥[áæðXÙ&ϧš÷‚Ø0·Q¿ýƒÓuqÿp Nt㊵Ù6¢ùÆïeÈNðÆži«»³:ƒ¦ÙBà`Åž¥Ä“r í»FU –JuDrÿy!OA´†Åô‹>"ƒ¬JõÅ:¸®ª&§m«É¹Ø/ß-Ó‡GÄGv‘Û™µÒBöa²h(6Ã.Ìq&\§‡*#Øg¼z&B0 qW÷~pÙíäÉg#¬v½W4á-39‡SÂmà¡Ùå$Ó:[ÊÀÏèÒÃ7Eñ4Õ€™Ó'³[þÍ4 ‚”£ Dmï¹bfîY8ú˜Œ ´at:j $‡´ï¸ ]M1ö=_­{±­¥q6íÄAß6ÈX½Òv²R‡†å_{š¨ŒCžŽ/LgÉä£âY¦|š;üílÍ6ÖïyÞÍxL€Sù圮5)ƒ½ŸxZÚR³Éý½lWÜö0=Èœ—•‚°ñ½ÂPFêZ'€a@vyÆë÷¯n¨>IFwCK$~vO¦_8>—Ÿ†|×év¢¯#ݜՉ~ŸÇ¨Y:RË\H†º=(=Øÿ`;‘CN Ûü,åäoÏm~°²úRQ·YÿH×,“\ØÂïÕÙÔ\]ˆò6µ&ÄÓ§(ÎÁ—h{pÚ $¸aˆ¦^À÷x,j—LÈa¼µz”x¤Îôy2ýÈ0ð *ŇȶÝÍ–íæùÜ&¦­Šat{u›§³÷?̆øÿ|¹K³é×”˜âIYE‚oùj+5ø4oš»5pµJ™o$GÑ÷å¤ÉkÙDå|üžTBï~$ÀÅ?o»ãtºNwàÖ`=¯YïÕF“Î3¬ÞÁ¤T¾Ü’÷Ïô}® ÃʆN\2T%ƒ£•ºr-ž—SjÌÙ¦ 8j¤`ð¤@S=Ózb”§Fn"\‘HPèÄUeÀ`Ó@[ˆXúÄâ}-óýÀü˜8Î_úÔo6 Í$¶¬2žÑ^“oTJ÷بáðƒD·XWy¶=¿äØò„ÚœmŽÍeÆd4£â!Wœèã£;éñ‘S@tËŠ.H6(òzÇøœ×k&}l—es,/f#%Ò9 fx+9ݢѕÒfb`c’ðÉɨÔïctèV{óÕ2âÑK§ì€H¢RÜ–›ÙUÃ7Â%3;Î#˜dì]¼º@“f€},!‰r?ÃGS6]ÃéÌ3ž×a’†M¡¥y%… €R!m#{Ûú@©L•Ùïöjžöu-¨xUÏÃéíÌò££×µ š3íC^LPHåœçk‰!åx•~¾|¼áó¶ÒyÃ!*½ 4É” Þ÷‰t)•j©ƒFg(×›¬R<±ÄÆL®¶K*½»7ì³ /dÎr½«—ü´T+”ž3_YÌ7z^³LJ€ I=´©vžǮ› ûq‘8•2ef.»RJj:éûT´OìYO2*Ä­rælõÄØb²Û8%j˜ìÂÖY,Ü¿Mè.µ¼E®—©§·º¿¹vùq2rTq!š®27µÑ›@n;¹ïJ;·> stream xÚŒ¶P\iÔ-Š…Ü]‚wwîîNãîî܃w ,¸[Ðàîîîp;3óO2ÿ{U÷UM¯½÷·¾µíœ&#–W¢4¶5ŠÚÚ8Ñ2Ò1p„e Ìt L°ddÊæNVÀ̰dª@Gs[®?„€N ÛG'PœŒ­ @ÒÙ ÀÈ `dãbdçb`010pþO ­࣋¹1@† ikt„%¶µsw075s]ó?_Œ(Œœœì4ZÌ l2Nf@kÐFV%[#s “û(>ð˜99ÙqÑÓ»ººÒX;ÒÙ:˜òQÒ\ÍÌŠ@G ƒ Ðð+a€¬5ðïÌè`ÉÊfæŽÛ•lMœ\ €ÁÊÜhã:álc t€.(IHäì€6Kÿ@ø§6F:Æéþ9ý‹ÈÜæ¯ÃFF¶Öv6îæ6¦s+ @NTšÎÉ͉``cü+ÐÀÊÑtÞÀÅÀÜÊÀð—r€¨ À”à?é99˜Û99Ò9š[ýJ‘þ ¨Ê"6ÆÂ¶ÖÖ@'GØ_ú>š;@ew§ÿ»³–6¶®6žÿsc“_I;ÛѫؘÛ;%>þ2Áþ¶™¬ ìœÌ =èfdFÿ‹^ÙÝø—“ñ—”·§­À”ÐÛÜúëéhà898½=ÿtüÁ22ŒÍœ†@SsØßì 3Ðäo j¾ƒ¹@‹4{Œ†_ÿ~Ó—±­•ûïð¿úK/§,&¥¡JýwÆÿú„„lÝž´, Z&Vã¯!c}ñþ/¼ù?2þ8+acb àü[-¨Lÿ£ØåŸøðÏrPþË%k šZ àÃï!×f`e0}0þ?ú_Gþÿ&üËÿmÈÿ· Qg+«¿ÜþòÿÜÖæVîÿ€†ÖÙ ´2¶ 5°ùß¡jÀ¿—Vhlîlý¿½N E´1µú·ŒæŽ¢æn@cys'#³¿§åo»Ê¯-³2·ÊÛ:šÿz¬hA­ù_>ÐjY‚Ž ‘üËmί±1²5þµbL¬lwXP“AˆàÉÚEc Û_C  §³±u€Òó˜Ø:Àþê(+€^ð—éoÄ úØô¿€þ㿈€VN¿Ýœz‘;€^ô7E‹ýFLzñ߈@/ñ±è%#8©ß$Nú7‰“ù@âd#¹H‹üoÒ¢ð´(þF -J¿H‹òoÒ¢ò´¨þF -j¿H‹úoÒ¢ñ/âiÑü@ç~WtÎð7é4t00²‚^K&N¿íÌÿÚÿ^­ ‹ŒþE¬ 2#[+ÐXý……å—ÅÚú÷…¿æÞø_È ÊÉØÖÊÊÀá àoRPð?—22XÖÆŽfØ@Aƒú§í½3h½SƒJoò‚Lþ€,¿ ùœ ü²2ÿ‚.¿•1þ2ü&gýnëüg" Ó? ˆÿ·:PoÍÜíÌ€6D€lÜÏJÝâêœåTí?SµÂú_Ècm`äðG/AhúßÄfZ÷?ü rØþÖâ³ýDi÷Û "³½Åmþ3(,ŒÿXÿ;&, Dì@Ï][ã?è@űÿÝ«_Èèø×Céßébúe´uZýçf–ߎÿ5lÿxþÏùõ¿ÁŒ¿:þG¿Aåwü] Ð!G µù'šõW Ðå®±‚HAïÍ“ÖÑê?ÃÉRõûZÐ ‰ÞÉÌøÇŒƒŠéäjûLJóÔj—? H™ëc :íöÑ»ÿAEôø-Äätøûªÿ<Ôœ@}súëµ Z¤ÿÁýˆÝ€F°ó3¶FÜA5A-wU‚x®´Û£¼“dÛj)”´žó­Îˆo?SV¦¬:Ü~ìB^Úùp-°@ôìyø½öí§¦…æG¯'½8ʼnífعq̾±üCÁo½ïði•v¼ží½Tý-!¿ƒ·K’eÛ;s Êç¢Ý¹öˆ¹}ë-]™ÙVØ©d“‚{*ýI¥©í_4E–c˜1MíDKC…zæ†4u}3‰š5öJ$G ë}Å\੹Æ}?í±üU™É±‡G›òux‚ÜSh/IkÖ³¸`©oÎí;OQMò-2ÝSZ¥¹b„MCwµËð|ãVög@^ÚVBuIºž‰Fe³^šS5³%`¯ÍDh¹åFµÓÄ"óç·WÀ‚†Ù¡_c§çc­ýòàPímHrÓÝ`ÃÐf§·Z/?¾©+#•ˆ™VøÒ"WAò›R§ˆ5 :2Í‚Ëgާ7Á<žçB¸Œù šoºÁ‡ñOX³½Î£½ËëÎdÛÖ¦Pf­\Qu_Ùd_ Û“ÏÎòq̘EôÓC>䤉t†å¬ÄP(p×ë¦KéÏÖÊ1é>–¸IÇo°Î÷“°HˆuoÏV †k¸[ÜsæÑ¨–«4Dzæ)oEÐŽìÕù÷pÞïmÜ”• ébìÛªÞŸ•»† F¯+³儵)úeu8Ê¥Š F@ÞnNw¿3|¬,äBl݃¤¦Ìû°9ÒQøäJS*ñ‘Œ¢`^¦WjŸç“×¼ÎÜÇ‚nœ*?̰ë?¦šV¹»`ðéÈËÑdé;‹ïõZTÏ_p…ð””ïrß{¬uÏþÙ$þ1±IêiU®]ÄÒÓàfL…´Š#'žÝôûr¹Êû!2üÅ$¼qEÅU°v¿:mª¸z40 %ôþm+3:ßè‘8 ¿„"}Eº€ýu&!ÓbÃ#Cà(¦‘·ÂQ»fýš'¸ŒW»Cœtõ#¨ÊÁ»ñ'¶ÏY?ÝÄrlúËð¾„ãl™W’Í$fÏNÀJ3aUke~A¹Ú,ð¥$Ž4 V€1ÚC‰€Û䙦@¨‰I:WD“gÉ!¢åªF¡@Y{D”Dª¤{3ßS#,9 &éT FÞíÉËV ûÞ_u¼{¼ãpzF|/á2‚¾dQtÖÔ•D”51Æõ\)”Ô«òÕßVgtw4nBß§ž'ƒ‘¡Ä &õ•§yßú´¶á~.}eÐìl%;hµ|ߦ®®ª*GŸÿ’=éNo8ûÖç¶K7yÆi‚K^§±;q°$n¶ÔïÞRÎŒûÌ_T„ÁÞ˜Á¬w*¯™˜ô¾qÇ&œyñ1"$Ó^µ?õÓnjÚa‘cq!ÖJÓ»•hÊ­:ýVù„Ñ·c˰JPv!#y/“¥Áðu8ÆÅ“m;qFû®áe?ø…„‡÷21Cù§†Ý’öÁ e' –Ø”§A¨°¦Xf+,!ûâÄp)Šn&9†IÕä 6 yRR«Çý‡¯´ XkZ؇SÀ‘Áˆ»~\©áYr&2ÓDÃJO·’Ã8©4ζ>2_™z°=VœãS³?M±Q}i¦*DèíB(›xål-^åïÉ“JÄ4¢Äþ1v»®}fšåTNÎ_²=Ösõh­|èÚš°ÓBšm,«-ܘ–?º w33&P ÆäF´ÇaO,mü³bÏöÐg‹Q•>r@ˆW úêᘘ!¾S#ÇÖãžôø~ü¶ß¬§¼}bÃu}eIǶ´{P¡÷Ì/aöÉy/GÈúD‹«Žf.ɦdÀí6 ca@ ŠP„-mêtáJ^B{8YU™)æqWÌy€Í;@¿õaø¹EâÉLö¡vÆsK€˜Â)íb4mñƼ®°ƒ|€DæèÀºG Am:¤;¿ÜzÉŒa>å Õƒþ—÷=9 « ô&×ÝV­dò"L9\„ª‚”JBÒô;<¥˜'¬h¥Â™‚y«·VÜž?:à>¼ošSc# O–Äá©8gÒÙ£ŒõaKOí ÂPðÅWÊËVNmf2Y eõ?®Á}Kfï•ͯ,»Z·õÖÀ)“F@Žñ0‡>Lôœ(±žÙð}ꦒŒÌì¸X¯æó²¤õ××&±HQ_èw¨V¥÷e$]’|@¨9U¡5!|ï]UÊX¨%¥EsšœSÿ•¢SETÌFÌ‚ÖfѨ~ÈÒVù º½Vi¨ ?·;¨Bl=­QuÕP¬þË+…ìJeù×k—Àì{XàM¼ÝËn ƒ¯YÂCc‚3æylP¤>µ•'.Ì-Páv&VOÀ‹W|UÞÀeÂGeC¯*k½O³Œ‘ªt«? µ2F†ºßÐÎ/„Ûs¹tø¹3枪*÷\NËHè$"j…\æš9M GÙ aàQwH°i¯6èÚƒ”èrŽácJ\›ª´Õ+ÓŠÎŒßåQËÄ{¥ÓIÓ?´×Ÿï X±ª†}eœöªEÀxG]Ëã\Gãè4D¸N˜·åy»ù\3øÒ™8:Ñ(g¥pá¹¥.²Û"dÄØ9I%¤Í_ÈçLñÖm¬ØÜÁ?I¾‹•«»à‘z·}(?’/-(ˆ=ä’à»òÓ*—|·îNc{¶–b~Lma|;¼#—Á_ ð‚ƒñ…ÞüùüOçw†™¸]°ý=‚âÓYÌà°îtZÙnß7–ËK3àíÇè´Xò”æ˜ ]©N%ù'²@\l3üÃ5Ëp½$©Ä„>[eÜÔìvÚù®n8¨b°ºË¬"#K{ ¨øYzKß“Äên×Ïöý> Â[5 Mœ0ê/q8Ó]:SŸlΓ<\òqŸÑøz ÖNÁÚ6W®f»A0¤8 Ì à ª1ŠºLí%¯L_¬ã¢êÜTݯëP&2HtÞ{ø`'Ù¹\t"d„Ä¥ÞÌõÓ9q†‘bØ4j— 3>ô8• ¼¿-æ·”ý4!Už=É×q0•`å/úðn.Rö2¼œ{m½Àøåk×ã1x|9òÓ*UK8O_aÎçÍ^´ ´RHÇŽBNž:±aý`Õý\³µÖÁ2 …„QÑ[ùÖž ”@_ÒÒØV’ fæ–[yÎYÎ#Í(GÎOàú›å„G j÷\²‰GŽ“×ý‰ DÐ&ðéºjËÁäL,®¨%Vp;¤SLj§h5®ËÁ}Grœ†¯yÛ$r…YhC#jÝT¢¨:Ëô…ú ÕïBµ>wá‰R•.™+cžGíéÊnŒõòdôóC”È”¿É6I±ÇTÂP+¦Îi9¤= h\÷¢kؽ[ªçðá "nç4>É?\ÁŽŠ‚«ˆä]¾DžMJvL#‰GRÔÔñk*Œ"I̯9‘åm½&¥whS²÷·=e›ÚdÀWãìkPL-tÕ+wŸS¨;øN­¦ÒÛèÙ|†””ÎÁ„ƒù$[³›ýcü ly,§”hÝêâ™®ešáJ—Íæ±¾težÌ¢A¾Jø÷^ϧPT—SéÕ¥¦\–„+ÆR_4kÁ×ÇÏè]}—6š«T©Í¼%·CŽ×g¶i膞qî3p0ÄÂÂDžXF0tj¾šõG§„; X6pk†vÁ¦Žò)Ƥ´Ú7•£SiäÒe…\1ñ»LµÀ@C\¶\Ï~êV7È#æÀ™Î·†MZü„mê:OüæŽ}[ô†€»’ŽÏypDjù½•­ÐÌþׄwDI.Ä ÷{ ᢉðË«'%"«Z¡&wòn,~âÁÙ^oÕžj¹ÅgБ5ÐH˜…®Xç/ŸvîÖŵI&Ë´ ï“FSXeï8Kíø˜Ø%›…ž/ëé!OÂëM?\•¸a(Ð :ñiUlpŒ$ˆ9ö6ús)’rê°¡“‡>X»WPš×á„» î[tݨGH÷( é( Xµº}ÓËžÕÈàªa•)ª„ZÝ9YD? ‹Ý\ŽT‡ç[üHo‘¼Ö;ŸCì½¢Ÿxrø‘\ ßo tkFAý;)´øjÑ.Ò°“D~yË;ßiºy üs9Œ2‡$d½«#›%ÿ.„6¹§M'AÙ7´Ò6IÉüoôV0uõ‚MÑãë|21ûb¸£ô «Æ‹¥„>­œ±{ê;—ˆ*ãaù÷¬ÚìâBpËr}');Bê3îë .裸ß*áPÀë~¿æÚr‚’¬¶8@w+û(òAlˆ{´ cQÁ"º¤?ÑR™âûY&2w&O¬=žÍÜ–³¿“•´0c‚z€u7Ö>n¶Çþg?ÿVĸ£°u~ž¸ŒîÀ†ÁâŸr‘710Ü–’`wèºøÆg*+sÆ,“+¬z¸É“*ßóì.|©ºÆRšLl‰z¤é7ô7ðçnJ (‰“'ñ¼¾i‰?ºØ€q ùgˆàkoªV—2÷^” »»·lrOR£gç¹½I 0“y™ [§7ñf^MJ;üQØ¿I"V’„R¾Ka"ã8ñvŠH]MåÙû馮¡Q£§.JÎoj–Ìb¤ŸX¼í4BNüfp$šHï¾>‚{ïSÍè…o܆d£Kb¿ÎÒ{XÒù·¥H‹Âfüþ¬©³—„ A…~…„Uö³ïZ5ñvíSÎõ¤|×Бgb.´HeÊ)ï¨Áž.œÿœÙ¡œ%¤~FÃIÚ¦ÝÝ|9‡³û©ÃEÒòåggXo#ûnjÖNwâçe錼»Ž#Dšrð6§lÊs.ñ‹ì6¹àžÅz@9ÿ}QÕ¶ûqhL¾¯Î{k=´b\¡ëç=™ÁiâšÚd1*Ç.s`„㛺Øk?„¢ÜÉüd•7ë™y±+Ô×ø[¬Ñ%ãï0i'™ƒn Ì7gÅ–býMÆŸ-éÓ®Ÿ](üú­éP)F”6»>6Ï[¹?a³'`æÂk\Ï+ïµÞ¯Ó­¯sfÕK{{W7ÏXøˆäD9÷²5¼q»ÆVÍXnª÷ø‘ÏÛšzǤԔӌ”ࡸ\GàTæ^N÷çw1©nÖ2è|×þÃf¨- ûSÁbfÁ€U sç¯~]Ë[Ý­§G?Q5÷ >^ßpÅD-¾U,€\$:¡ÀÒ–ÆÒ Sn4”æ6™mŒqjM9¿Â(íbsJÅã¡ô(K•¨“n¹š&ÔËjm@¸EàÙ÷æ¹CI|Hzm±@f•.*•è0ªóö2#ì 󸏦2ÖëÚ¬EÝúüU“kôt·g,¿7±ý¢ÎÊwØ×®ï|'ëõõˆcf)t¯öKŸîÞ }¦ûÄ£¾ÁYjáB¸Våh8²þ϶a‘̼.WÜÎ7G„xð9;æÒAX¨ÞCU»ƒyáÛÞ½¾nH;§jõoÞ¦nÛ|rŒNa°¡BôD¬´â×,ñ¸Œø<„Á׸ËqLdG+=A>÷y*¥ÏЯ-&ëÒOÊ=Ynt,åorùÑܧ«ýF1ó¬0´^,khL½ØÒ¶”iKò.j¾Hå]‹ÇÄ¥ééˆÁVt¬s­höD*O7šúƒûrcé×qˆªˆÓ›W~u&®X–bñ/#¹i³_t;Çí¥¶5é)*Ç—>ð·ññãì|G”}ù—©â6±™MÅå‚ì$ûžCy虜žezû¯î· ý-9%Ô¯âMòJÒ' 7^Çž©Ñæ ÕEŽŠ’èÖ‰;Æ»I¨$•Ø;4+að÷ÞœZ,"ÿœÜ“„§.Û mÿÞ ƒº€Ê{$›³MÊæR£„«¬ö~»B:ù•e´èd—? lŒâæè¶ûÞWËXULz††zÓã«ØKþš.}c‰}m7Ôà ¸Yd/Ò×û{M¯AKœà™o¨_Ò²ödæø,(yÔÌô·dZBù^gs_}ÖkǪ%§½’›šÔ‘¼'Š„Â°ú”öàL°Ÿ!Ròâ役߄“L¶HÝL¾SÎn@½}ÐÞÅ}¾ÕJ€$À…„ãN}×áu ø¨Ý€ î<ÅöªÐû<žB‘¡À<`Èíö¾1šˆù’Hi˜«ÔÂåx‘¬ÑI2î-=ßPŽÜëI:ƒêŠŽ›NÕwè>ÊÓ¬Î:?«Œ{HVÛ6d­ÝœqQndYòb 4ó’píjY…N‰ ñ©‘«q¢~e®c9ÑS¬]ÙW¸·JêË Õ<_)›ÍÖÔf ý[YL¾‹~l0‹Y¤›û¦ A©«ôf‚–0ØÆÕû™.TS¶Qc\üªòN.Jñ °Î£kêæŒ¹å§6lýœÓñË‹Æ:«~ –¨^š[gT ¤J¦W…z|]ÿ§ 1$•d6 8m¢Ô Ý¥¾'®AU½GˆA¾éBN* oÌÉ:mÏ9 ˜Sf•¾óAç-ÑtÈáùüàkùÕâ!J‘ØP¤€'•‚ôWÊŠ3S´ðöS\kÆï ¾W.a„š½µï‡+Hoq´E ý.+)ƳIRî¥0þ b§ôa yááèà×#=]«„^ÀågR:mÝRÔ%È|3s¦ÇÔË7£õ͸a.áI2]{é&a9þ¦ÑѶßÓ=’ô§6 Ɖ¾4Á]‡—pŒŠŽ‰ŠœaI—.)"/ðwµÁcŸUWbcÓaSžÒ‚jµ–VxT:Õ¹ð¡ù¨oÈÖªßË6/ )±r†Üv~*Í$éžéIÿfº§¼ß²¼¥kX¢Ö ½ø¡†Šé ýõn#<2a3X]–Ø¡¼[〧 „Ë!™[ÐXBOŸ>Ôß–ÖÎæ¡ýÃêiø9<]Š—jÄ_ŠgvY­@i[>b¤B°TŒ"°³géëÛøÏa‘S¦¹qqyöN¬JÂc-µAÚÑAT™¸Y/BaY¤¨`:çLd< ßw6|v Ít× 7÷‡ª|óúß/ô{Ú¹N€™?˜ÙÂp:$Œ¨xÚxüðfSÒ¹ä•×Û<Æô«S´((Û)È*j…ßÊÙæ?«É±•Ò÷­—ã ïÎ&ï êâV`íJÁU, 7p“9- Ï7Ó¿ÙQ¢nTëDÐjDË Â[ŽŠ ½7œd€%ò»‡áŽ.%H…’Mþ)Ú‚Ñqµel{woÖûqÎ\¸AœYÁfcvØo‹fÑL S˜á]}o˜y–×ËË%p¿Öi50ì= mÄûŠÐuÂÊÐÒ¡(½“tÉæá=‚¤HR|q‹Óܳ“ºéቤɅnè$¼åM‹Æ|Z}+…HyµvhÁ~—ȆÍoTí­u…LÉU'h}»Â@N¨‰¼ Íæ—+Òyµ:rW” þ‘q-‹`ˆ’ ×îmR¹6¬4íÙäKS©á¦,„Û›û¨’‘­e!!»3Ç(¾ÃﺜïáÃ>+e´'Õah;§ÌÌ¢ O¬3õà)©pC4€{÷»%M!#|‰Ó¡Š9ð`b)1º½é—f!=gZ­†.;tå™Óß(^c§DüZ¦×=Ï.1~y:§Øleò=¥r™µítM{ïØéÄG•a¨…| /&ï}£†Y5ícF"bÓEd‡ÓhŸÝmõôËöt×=y¾–Ï;³§ØÙÚS¾K>³dsöPleñlÚ=¾ÎÃÕ˜˜ÌF9€:¼+Šh5Ïc£šÉ1nW}µà`4˜Fê+ÔªŠÃ^U@Qª?Ìn¨Qàù|cçg_’’kdì¯GЩˆ a£käÒóÜt2¦JœÐ;ðmºh¦…X«ÀF)<ÑœuWܼâ-e4+OYÕ–´É³[¼Œ3—²¡˜«1`ÅÜ;mò`Â/’š |y¹uN³^à .—FÐ=¡&V{ÐÝS˜IXèN{Êâ ¸¯;d¹ºÙ¤CurÏ$._ó©•µQ(lj öáïc×·îl'zkåöIÕÚaŒˆx4æô3'ŒËÅ¢gèù[LW6U´¯ã®û›ÄgØaÄÚ Trêñ4­g@1Ÿ˜'Xž¢GuJö¶ËòB"s¶"†q³@™8ëE½ 2…ÝIѰºX…®‹+u]«¼GŽŸVr0åh HÿaÞõ»§ÅxgRRÁ¶€/¶_Oä¨Û|LhÔ߀u¨igʈÜDÐ ïÙÉIàS^•ذT†E“‚¾äÚÖÞ¤@àkVùÓ ¤N9ÌÀDqØ/\PÖÓÚyç'­>¡‘ÍôÊ/Œr‡ ­_qÈP3åqÀ³F¸KÓí`ßñ: ‰™—£ôr»º/[Œœ¯{È\¦’A›çÙéFŸ Jy†žhg® ’*pªµo¤~‡ëب†iÀ äq—…ˆtbkîæp±¢,AóbBrÄè5ÞOFíÖü\Ï š},üÎ e7hùæYØüU\2ñÝË;mÁŒyy”r5dcDÉãÏѳ™ŸqpŽ"7Á»7ܾ°;Âð-Rœ=;Ö½G‰±î„Ž­J´á:O!MÉøsœ°¯¶èN*toX׈IcÛôPÓ{ÑJ~r1€íâFó˸?J^·@þˆ–x%äSúÚæ ¶ËS'ÃCnRÖŠ—fÄñ1êU¦bqx±øÞœsïIû…84Z¥ù}ÿ[½§/N5[DHXxm}ÜéùPÛì°%YÇ?™á·>û™¡áèB5 tN.Þ°cÈÙ§á1ñyЭ…†2¢dMï>‰[kì›ûÂÑü8Nƒš¬{˜ŽDÅîAxE»ªi?뚊rÌ3Ïσ= HgËbü:κ^ïJ\ò1ÿª^¥2Aßäëì Q0I[Îe±/ÊHUV…0óþ:ʯ—ä_ÕS]\Ö8‡¶¯žP]s³P£ÊîþÒœz´²‹¢èÚ˜36I'ìØŸvÓÒd.þjrR.Ú5[®%í{ýèRrÂgvÏ4$—1áýcéeÌ…óØóéEðÍBMŒƒ ×*°ø«ÞÛq!1bî¸ÇA |)ñÐ&Êì62݃ÙÁªÂ›r„ˆÏ—dǘ;Ӏ×äïkèºóí~šcç/P"Jzcw«“ˆç±(³u—kö©´ÒÏ *ù¢Ð„'wÁ…ógúY®sˆa[ç4$ÎsšëûúTÅÒMä¡Ôµòƒ^Ò'ËaÉÚ¨œ|4&HåOí/ksVv²MæÓ‘‘ÝõîŽl9ÇB®¶u :‡Äp ò¾¨#HF| @þ0ÉÓà<.\ßׯŠ@öž¶ ®L$l¯jöËž~/æÄÇY9í «œë꡽9Ìñóë/fÊRZõœ¾HiÞoZšh–|éO ék2‡Êõ;é5·]ƒ5JƒÅ½œ?¥|›÷$L3м߸®©” ñPNÞc͉»bU ¨Aï]¶G´Þü.ó¸Atዽ’€–?Ù,ÇŠXQßĆáâkÖô±Þ"Èð5­ñ^$И7­¨Í±ûî§sYò›â¸s]ƹɷòl¢6··©áÏšÆ3±Üã«/Öñu4¡(J{Ú¹Û «v¡“Ú—¡áäWåDc?hÊëû?K» ´`€ßö¼’ßY^u’¾†®­¾sÇ\o%þè‘ä¹ÚhN1ûæ:gÜ÷ÙaDZ,ÏBÍ:’C—”bZ­ù$ù¦´Öçe_YiGƒ,çRúÎeücmæçþÄXƒs¶è€.ƒïûé>çý¡"YÍ™b‹U~=2Vp²¸\00íõõÐø¯{—Ù£¹Â`{Ôô_ÈÍÙ¿&žŒGåâ[c;—b%9Éðr™æ¸ûCÐ/\ß#°°Û²ÖïŽFZC7,.vr"DÆ;²° §¾Ú»·ë¾ÒUD Ý´/ÏâÅÎ-ÖCìòZ`ÀEðŸÍñº7 •&yóZ¨ <°ìº.Ô‚-Wàκ¿-oO¿¦êèK†!±# ¥ðئÐóJæ[ ¦!' ¹J"&Ǭòã<)H[fžJ«CYù‡ÒÈ-ÊM§te…c^É %šâ‘œN]ޡż¤_N_-|!,*IÜÒ —LT.®x wcù@.»4-Ï¡RIæ_G² (ýHáO+Ø=›ê€ñˆ·vq/¶*"1–ð?yñ„”²Ÿ!o/Á®:›š$›»ó^¥øÊj³—ÄϧUŽ»ò¼¨êmÞqg°EYåvŒ ö©üÚ apfrI÷С,ÑJ3ÿˆIù®ðk‚¬tXFžúá#ÙË^¦ø [o­~ϵá„v”Sl çÐf>îê:ÑGU´$TqÏþb:ý»ª~ 0˜•îm¯³Ý4][AÔ"ñì§ŒiŠÄmW(E®YJßû“Àå$·&Ï!°ƒX8ÀO5 {ªƒQ¡ du¬E;Þ]° ÿ¼}«› í?˜Yewû—;‹úmn½lŠ‹–VI¾'Ÿ‘ÏGÖXÄ*1oN"ÜòàË3‰Ѽ@:¥vŒÆŠË“Êû=SõG™ÌĨS¬Š|¶Ü÷TÌ´<ߊBàÎÂŒëÛàþ|Iƒ.$¹¸eŠìE×€4žeÎvv\”bå~z’×ûn HO¨OçKŒR#)8Ki9)ýè”uml 7zYA Í©Ö˜C`–.–š¬_ôMÒÅR­,ìmòå,ʶ9éw4­6•A+ëfŒ=Bç·¨/®Ï–,øN]µ•7ÏKôðÅO7'‰¹ó€¶°8ÕèOpØ9ƒò¨½¨Iœél7qÝ‚>”ªu*Ñ9•´X¡†–¾Õw9uñ|ÜY?DžÓŽv¡Ñt’ÃŽ’Q¸3Q_Þ¹gEý,ºdäß( BíäÙ.ìfÕ<†dö>VDÄ&4ç±8—O°¤T·Ííg“ù¬†®ð1©¥ÌT·G{àPM ¥÷<å”ùÓú…ˆ=S‚³Çö"ô¬6J£uqáî8WT{2ƒxøËFÝ9{>ͳä™ò2YvÕˆ3ï]JÆÌÁéùZF8ëfµ­±52ž,Š—Ñ–'6#5”^Ž«°½?ŽÖø¨lmW9M«eÞ•Îó‰f±€aß]»m_Q•õÞþËPÝ%Yõ°³·m÷D±³çD0O‰mw!^¾%þ[óŽªgóWkçõ;—ÁušNQ®•zÿys­An>…Ágaz’²wc'[Käm7ƒ)U%-¶ZÑ(ý¢N™-¸àSzOƒ„zØ2Çð8ØfyFù•“xËâñÚŰìïscX¿™ "B‚o]=DôVQ¾µÞÙÖüŽ)ٞϛò˜·÷ãC™‰/óËã}¹ê 1Ê$Ù^Í9«¬þ“üõsÿUœÌÍÒ îíäRŒ.†v[þ!=›©SÏ‹/¬¾}r1û‰üÒ=«·'ßšÃ(Ö&[;&Ëîm¯ÂDl{ng#xý|Dæñ÷ÛXî‹A ©Ú7j̤ø?¹û¢Ê&HOƒcSe ëî¤`™ÐH»(²3eÓO½HWáÌ…#]ä¿èÀvj%“ýä„Êè³ü),íX"¶z9ÙÊ^5¼Ö¯íèg0£H¨`ÏÌlÜE!”ñM<«Ý&À5º½s>•°‡CUR¤’“>õl–ñû'ÑDÍ|~_Ti‚d{9—õ77q¨D?%GäégŠÎ“çùoxe.|êE¼QïüqNÌ¥OKHùõV§™X-$Fð=X&H!Ù]…Š¥Î3?à éø$%Õœ VW"e^½1GšŽdVO”>ßn¥Û¯Ô¼KyN!#3@6yʾ5…Ïv>„ç½–ÊyÊ€QêÍå~X¬íðr$£üxLëqͯIÀ_eÃ{6ôaÞ°ÿ~‰ÀÎ/瘿Äu’}uÎQ­ÃÉae7ÝÓ‘ÔêrÎCcŒáÚ+‰´3¬ e×Þ”UC¨$ÖzÝj·ƒ‹q¥nô<:Á!ºÏÎ%d&N.ÛòÁü6¿¦àÏÚ¹ÌíÆìĉ܂¥˜¬v“ ´¨ï„à 蚪+fí³dó•r¼DνÈj&+Ì;7ÍÕ>Ý­ýìÖåRé¨Â3ZÃHˆ±_x´…°åšõ8_·Žôæ œt§5Ã?E¯'Þâ{M'íA{LÚ9ç6I‰yÒ¶|kW’—¾bö=Ž@ 馅I^%Y§óa&"={‘¦3øÞ»¹O¢…¦ƒÖDà¯í!XÛ\Â?Jx›ÃAI€ ñ¯9Dâ?Á~›V·.Je P÷y ÷ê>wÅ+îÜ9=ÖÃ0µêà0„7Ÿ;ÖÉ8Â,OnËWþ ¶õT*­¦c~øö|.R‚E¯“z¹ÇšÚ‚cõ%j\ /ÓŠ\ÓŒÒò+ÿKÑIjýìå’=m6WÙ j¾²@ÝHUñÕÂé[ú˜žùÁΪ>úæ¤2LÑg„%î„Ó}Ü-ri ýC×°$ûS°¹^›¢ˆÁÜøéûâÌç6*‰ žéÈ0¤œ|mcZž‡IÖ’ÉocAøK¡,ÚI¨?Xqi3Ÿ!4cŽ0ìKäC6¬#ÍGià wæ´À¤×åi“%í²bȇ¸Ã–§å‹0 L Òé%å†ÁLm¶Á`ßU²¾ÝÜË!ò.?Çâ ‰Qó)HŠ7V¿xÏOß#Ë¡üsÆ£žhfãgŸª#32N5ÃwsI‡JøEñ³OàFÏ o¨PÛÑ蘚©d!]z=‡÷‘80¼,->}àéöþQîà/ÎΡxI(X%Ñôies¾|¤§‹ÛäÞˆÁ£F­ˆ"êAb¼˜Å†ÓšÁ¬ËxìÎ9úŽ-  æ¾¾9Qôäpeáy:c,ñ>ôAšµ&›yžÐTýYþe²Fºÿ˜:˜c5Dž½)oX;Ø{¾ÒJE•øm$Ò™é >çÅùwo¹ó²Þ}BÕŽZæ:ò]+[š±AlέyÏ`–sbìo£Äü0·âà³þ¬Z“ûu§þfGµ•Ãdá'LkF¬ ¿NÒ€Âiüd ™ûÊæF±AçÃH^½HŸ*’MæÔ~<ª¯vtÞeͳ6úÔdDíƲy«eêçKOÓÉæT¥T2\¼ëø’Ê;o%_6WGE]©T¾ µÊåè²P;=Í;«çž±K÷w=È{|×.’ô¬¦d$6‚+@K§ýk}ÓìãE/A°&P†Ó¶®(áÚûy¦GAÚfµéëÀŒ:Ê¢HZN¯sö÷¨Î]©´|!Õ.ÙŠoSšá±ª{Þ8ìŠ_‡GµÝæ1ì5&S‘ø*F¡Uã¤m¼ïçV?ÕƒÇéxWö0 »~›T/Cõ´lL 펄ÔoV‹HŸaUÌQÝv"³ÒEÛ¯|˜##+ŒGáˆÎ“Þœs–a†pRð È6¶’lµÜLäµðÎYk2HæÀÍܺ  ò¨U@^`díV¨›C{¢¤R£–}n…ryyxËD˜¥°¹(ó çM:†H0éT.ÞÆg·(áDLõì¸ê.dd ÏCrŸ9ŽÅu¢lÌbt†R@QÊFé®A͘'’ D‹‡¯Ú¨tz¿–Áâ\ôƒñ¤‚Þ«%:\ˆÂïè“Iì6¶Baå®ÓŽ3¾Ì5’± î»Lc¬XE(ÄrUÖNšçà+éØÉÑJ@u}ÕP™áŒ‡}æÄ©Ô¥\¶(‡Ô ¸(?üBëê¬9\·ÈÈ)*­[¼”þÛ8à×b¥‚ý9¾y|Ø÷MGüµAwµ%s<§«Ô;;’¹j×ýTß•¸ª±—w«à(,öð1';QòÓÛ·à›B©ß }^k4CfBNÓ ƒ´ ¤èïZ„¼Þ&dÖg¼Ž„&¨yÓÖR¸õ© I7—‚@• ¢íµIËB^²mµà½ž?Ã’¦xäm/̲î—þo¾o`Xq0ïE``Ym0—>ò+è©keÆå)¯¥¦o·©ƒâa(*E;T5ÖÆÓ½ë!i.cë)ƒc€ûì#›ùkF§&ð $QB‡³CX¥ú—øÕâRïI’Ê÷õÇ¡E—¡FÇ™Ks¬Ð8¸rc Q35}rxÞ4íxØäøáOÝ%ýTÚÓ_Öý >½#³Ä]f–÷‰&‚êàfõùóÏÃC|™ÌR1e'#ÜÉ-xzráíܘ+†«Ç[ßCØÝ®o0>Øw.Ýeò-vж¤ >2³\õbEŒ ~ÁÄQݬ~Úi’[1¤ÍÀÙµ$½Ù¤{ƒ!ÄÊs‘‹`àvÓ;½[àã/YÌÝ:h‹}b¹”´Þý mˆRñÉzúéN¹õ8.A¹Ñš>a[®¡O _w½%¸@(–ê…v»M 3Çæ‘|ðÓ±—X]ø U“¹u!õ‰4&?E綛ɧÛìn#¦tyBÎD¶”ÑÑÆôœ§|[–dçùøáGÒyÞ0ç5²ô4O#r )sy/g)³É0ã/} Àº¢-húr4µê…ãà€§Eß3CÈ0ì^·ËcCåÒ ´Òa³Íi.Ò+Ƶc’Eg¡Ië Ž~¨ì…CO¼¬Æˆ¾oj…ò9ç`ªoßîùB4ö?Ç)Bâlqˆ³ëga…NáÏøðJäÕñø§ä­»x1Ó,ÇjÃÄtØŽ+É,êö¼^}³I}ûbãáæ¤ fH×–ÿªžO@±ùź4‘ÛMôFç"䨳ˆP…ï3ÉZ}:þn"…œÉç•¶5Fl¯ÍÒŸ»‰ßöƒÉIv¢|ã—Žm:¬›&2çEMçTLce¸höÑŠ_nf7t1IC• d–7¸9ÐS¥õߺÈbßp§é!o?‰OåÁ¿ªÎƒæ]Q߯~ݶqÖ:p¡öÆîk‚|ìè¯ÉIÑSâ\4ó{;8Ó¡ÿFlbP¶¸ñC2ûí|´ÿ*­«—J˜AÄ#ï¦Û宊O³€ÀP¬ƒvžîµ;÷†×`-«8ë%ÿ÷Œfx‰‘b¤5” ™`Ëì@‡öàKÔ— ëš+ÍEà,âFÃürqá9ìiö{2êœå:Õd::£S:yŠÜJJîA+ô6à‚Ñ7‰5øõ™ ±ö²KÔ׬Ì^ÌSø ôžÌ©ª²DñÅÏŒ ôäyG•Þ²ég™¥Ÿ~·Þ„ßã"»ŒCØÇ’6_ô>кµãlP¹éxœ÷?SÖr³?0’ì¡øx¶.sØíˆÁ/ªŸg\ÄÂÍv¼ûöâ Å,ÑòàFQÉÛ=BŽù0I‹ÑÁdyÃÃŒ—žwâ ÔÌu„RZ÷x‡¿éT+a¯ÑqξÎÇÌìSá†Q„%ŸÊCGÎòlé¼çk¿ä³¸hã\BUj¦WÞ¼[­+kÏ gº²39ÕZ¼<Æ3“¬»ÙñÉI2,·µ6.°Í>ÜS`ÏÐbH±ÃøV°y-œ´²!#É~³kX' Ѻ~ï%óæ n¼º0Uø N sû¼,ª¶­L”t]cñn:#·ÐdÎ@÷ôÑ(Ì-wÌã®èòä6c 01àƒù»¬ñл"¦‚îü¨ÍX›oŽÆŽŸŸ +ès6Ùf'öÀµIcùªKðÆ{à—Þ™ü!ƒf‚«ÊÏ}1I Õ,.á¿*Ô…Œ¤B¹µ±bP£§‡=Õ!P$L}îHÚ—Zphv6ˆÛ*4øQÒžN(ÛÕI¹œfüöÎÏù ­£*,·O“0êç‰Íã·£·šù³Öæ6¢›TÙšq8pQÓL}«(œ,|a~TNÁœåFWôáiAD̹3Kü{:f/¼Íê·¯)µìJ†Þ²;“©C|ö§®*iûvÉ:õ­ô\lÖq\dÛHݱYãšÅÏÍåªO5³kÑrÏë]d¨­—Ÿ! ÊQã/ …êáïŠÛJ=ç(»Ä2éö5]½SŒ(Ç9.y4p‹NZݧg3,¾» c‚þœ·4Íæs-’ô]ó°ã•¡ë˜8©^çwc8Ū˜¢ü–ùÉÒ\­÷^”,kÂ9÷·+ˆŠ>\#°¯îú@±¡[ëŠKXž v3?%™Î=x,lC¸#hÔ&‰æ¥æ¦ŠÂÿ‘X”èJÝT7Å‘%}PˆdJ§x¼½j§¤5äñ“*«S«ÖF½vF `ÒAéäª\w—ßsÿP©öï ©õètÒÃÙÈŸKü‘÷œP=è­Íc_qªÏÍI=þ–Ê– ¥šÆlš1Æ÷¯f?äÕ3¿WlõIé·mÖ¡•ÄÖú­i¡ ¾WwìŽÚe§½ÔѬ_¾ž"QÄ iŽÖ@[|_î6@Yoâú#›Ù?4¨r̈©WÕ4Æ·J° Ëð\÷a«”›BÇÒ% »)ñ|:¼´z£LO #Åæ7õ>ŒªaÜöd0¢µþŸv×zÀ—}+ù5aLG%âÊ«T/[‰¼n© å´cWrç±wÂÙo<*êë§anW¾æjN& }ú…uHÌÌtéméýÊtŽæ$èø3@ëä‰d¢“ÖÁF- ¾û{·7Ìõ 2HmŽö=’hUL©xvµªGƒèª V¤Föòà2õ1cæú©­½6[KgÔñŒëcW”7Pè`µÓ@³¾ôz’5q™Qž˜Ó€Š¡ëkÓê¢ðqhÓŒ,œ[Q¾öþõ”ø òêÓ<刷/ð çÉšOZª÷´»ÈÙÜÑñ "]2x?ûz‡}}©kù¯…Ñ¥™¾M» B"¬¢ýTŸHåÖ)d÷:8#’hîÿšƒQßè‡q 4ÁÞÀë̽ €×ÇòÏ/a¾ÈQ8f Nˆ2ùÈp=æ!ÃmÞ'Eo'^…|Ô9‘‘Ì'Wú;¯÷)[a%_o[ùïýFÏ#È.º\–“½ÙDÔ aÊ$?ì!Ÿ¼ñ – AŠ.î°ÏÒ|MDu^Z¨¾ª mKã[w<ï1užíšÄw¼Vz+‚:]*EèôGàM0÷‘¶ç,› rï 5¶°ÎØ><íý,À·x™=©YÔY‡lÞ»,Z5ïÀVÁI!ñnî“]«SŸ&>Æ {Ѳ@Ù£M{H%Kœ[ ‚r¿>àì*D·èp¯p¹`IÌ ù–`CPGÂŽÁ÷³]º6°z7—kz<F”è¦÷Ÿ©Á-28Ã\ÇÈþ½,®¤n[Ù”ä5‰ ýô+ͦĢòPê«|?‰ƒ¦4×ÿÞ¢$KèÝí_W¬î÷ÿrÄÕ³qÊT­Å t²ÚÑ@ÿ`5Aè­/Ì><žWzåNHŒxÕK|ÚÕ÷À´Éú¼„èG÷m3¿gê§‚®¦À:éYÌ6³¡}b`R—«öDD‚žÎ‰›Ð k…Z}a¹n+ŠÍ‡å;bY½µ%µt{xúòð[ Š)ŽÌß4Ô÷Z«‚sØžQÑbŠÒ&#V] <ŸâßO{ÚýÙj!2qvw¢Wvê°=ea±kyØiäÈ•q貎B•&ZáK³ë¤QuŸ0’Ѥ©Ó† Ìæµ:®\° y!RQoYá|âm]¾›ÑT oå~tËÈâàYªäשÖË LÂyïó)Ä]s¬tµ"",kò‹Ìðø8?¨t­¥q†¿iéÈ#?­1‡M¨•ë 0Ž¿(‡I^?Úƒî­dŸþùÛ3¥?9ñNìžj”¬b»>"ßã©¥j¡¢‚>`ö‰GLãRK[®SP`àÆˆg®Få~°¿zz @â?ÈñúŠðV ¬ÑFö?2]Ô¶é-ôÑ_€éLð &.°rÊeSïÖ¤j]2µ‘Ž#ííjê{¸ý‘ïã‹ sÙ¬¡Õ˜ÉLà,Ÿô«~@$I8òz{*%²0m¡íeÝžG_%‰äUšœ=ØöH[ê0ðqÑáKü‹õ½n/w¹ý ^²>"AI¼îÖ8ã_è‹ ðDH; Å¤\ÜwtögJ5ûÏŒ2' yÚuå~@3 °kÚëÕ¼ £OìJF|´^‚óCˆgQUsy¾Á!z$°€Ù1¹R± T)Z³så­ow F-ðVá•1̹°ZtíÆë ®dà0ç;>’ÄA"U*Þ;È–ð9£<‘—‘¿í66ðp 19ªVü ³þkìü¦Èår¶|ÙRûI]s©#cëe¿hû.ÅBÖN­Ü_¦Þph;o^R<:ß*UÔÚxÄ~Z¡xÖ1zÅÔŽówâ9ÑO3@v’ngY[òZxwo<5tMì[a?6nã•)A¥؉¢&™•Þd˜¥3öæué=º) ³Õ¥W<™²ÅB‡X‘ÌÈæ)xþ¨±*DÿŠ®ÕS­zÚ¿|Ë»êÆp<åÜ(²î‹D’¦—EKMÁv÷:k"Ã&qÖÀbëž8ýV¶žÒöÿÍ2¡Ç’ìH`)*ü4=< €îòž—U͆²¬)”zõ!ˆ2ARçù7¯T"ƒÛèTCÄÅŠ˜þR2c7WRÛPt•kҕʤ_ýÛë ,fü–ÎL?`ÜU¤—Häò^¯Kr¯öØÎöI:_T;ÒöºÝ<ïƒ'#~}'ÄÉ´J…û!U•9,ˆ÷w RÔ»ÿ³ASáŠàK¹v7]CPOÍßÂ…—¿ä«rý 6Ç{Ô™ÙÉùñpK[–jÂqZ#–RšOº“Ô9pLº´ææ+ª‘Ú&té¥}ŒåðÊVx¯äÔ 3+è¢ôK‡{ÅŒyÓl“e\&Û! <«“ Ôõ,å7‹¥‹1ó#G^냌¥ÈínS¥™7Öö—Â/µ×”–’IšÔ˜L.uø‘.˜ñÑÖD¸sªŒ¶#éíÀ„™‡Ýàú!¡ØÖT¨½ƒí5* ¾fª Sä¬LHJ¸VL§J(D”¨mä2N©Ç|™ ¶ö“æ­“¼–£ ¾¼*Xá¼~¬ÃÃ+!¾ÕÄ'&8¥÷88˜L ‹)ñWyWº1ÿÄ l€ík¹LyÄû``ƒ¨ÊS•Ѥ/ÜÄÙ“vÙÊöHÖûpõÅý¤çòò6jMK´0É’“(FÙ[¿’Œ¥ïÝíÀúñŠÞ¬ t¹ã\.ÞÜ{H[oÓÐ]ÑÐ4Qþ(o²ä _`&H‘êŽw^¦ú#µÍ\ÆÔ õ9/ï È?¸¤ŸåÒ•€d ÍÝâ>F@`|R™û¤yûÍz(m_QBn0¾Hx;Ú3/ø (ˆýìôN>\Õ½N11Ÿ`©—º2™Ý}Ù+8cÀ Ìç”ÜKq}»O11³hÖ¦zl J£…äf2ŽnšNrvÌe½þSˆu³h‡-øÓìï-¾Ú‹Ëo±",êyÙáC)w¨Ö¾ñDºâw»ØB‡ûsxø"¥¡v¢ Q:ŠÞ½Ûï{“¶ØåˬÜê–š?q41Œiõ—vÕm·AR0%Q`(ÛØ~†LEá^v?Ø3p5è•<“ø~.­‚§oQ”<àxpE5ç~#êöu& ÅDécA‡PbIyëzZàRçõ¶áù jou/Ð~Ø.Aœ?…¯DF“yÍ2’„V‰Ýmu(Js…t^æ¿‘¥‘5x2ðˆÑzËK§ ÕåøD%­ÃZ ÎyæEÌûªxõŠ—p'•xb1ý‹ÍëMíuå((€Ì#ØçسÄýºßq7`.ïˆV'ÝŒ—-`޶—äÕ;$lfî\ÿ¥Ñ5ý©^Ÿþ bçé2앷ﲋÈ.’w]q{§=ÿvö Þ¨XQTMVNM ºa¶ZÅã>¯˜ü!-ú[˜ý×+–uˉ…¯2òb^ú ÃjG/ÑUU6}!qò0"f3Êe:… %s¬CPæ_À凙mHT2 Ç€(õОš’5óññÏ›™"Gb´ D5`ì¨RÝ….¾!#Û°Õ¥Möu ‰Èsu˲^¬oTÃr¥صf±Åõw£›€1›åÆÍÓ‚¢~NX„Z4ЦñqA(è `Õ˜[Êm5¿H"IÿH.æN¥N•(’Q€Û e9!å¦ñùfœýdúS|LV•€ ³ÒÀøœ F+¸KúІAôwËÔóüÙñϨ÷µ2dv‰ñòŽÌ{C_ìÉE芕IçGH¦0']"ç/IõeK7‰š5ªŒq#°ØýÉŽ¨/í3ù¦#£S·Büä‹Ýî!Äí›:€Ïøï/Ú¯GU;v6?;«'žÿä8&‡Á\‡s ©ø^¹çÑi"cŸt<7“ì$ŒX,`½ØÌÙ= wà 3q˜¼nƒ)ž42ýÍØ“n+ùF]_| ›q`I¸Ì¨¯@šSÿŸ@âÌ cï$¶³vÀUò-î§lçuæ©ý„ä­;³ª2qéîaƒY×¼§G.¼P<>øÕCûø5:ÞÃP¡ºB~Sv|G nÊJÂÈmÓÌ‘©‹ ¹˜¦|“p\OT\ã†8³ÙÜE£t8Á©=îùfŠõ'. 3èh=«­œ¬÷ÿNÏžòiˆ|`8 ¯€¬Y+%:5‹+œN=‰é­û˜4q¥Å ¼Yq*Gr|`6t©£do/žT]€k%"ÁòEæm…²Žx5"PÚϸí>)qÜ/ÉcAÄÚm–’s¿ÈЇ]¿¡; 'Êͱ®ÍZG4y‘Ã>ˆÞ“~êd'Çùå(^¶ƒ¯vðë*ãG§më{è`ê×|Õ™nìÓ³ E >ý1š «!eHSr•”Œ·Ìâªm%Œ¼ÍOî飴Z¿÷¦LÑPeBÕy¶)’\ ² ió6ùÔI·å{Ýuéx2¶îb¾–g…ä.(®1€gßx¸ûŸŒ[úr‚ëT„\ÅxqIU èEáƒ'Ьë·ÄYžÅzr’O0Ÿh^‘(Þ[õKùu¨n Âi‘±J¿ò$‹ÆÁ×ÿ”n~PÉÍXXÈx™m7bK’q±%ÓHÒø¦X„Ögè-O$§êlˆ»äÙšqÁ†ŒŒ-K®¿°£ZYÃæ±g?üšnÁã8œ'G*)%Þú—hG­G>ƒß¡áVÔðÙ~á¡W1¢+é¿'hÖ9Ó÷¬¹"@ŽR4GiÅ|Ž£š {Ûq/•´<^ÁƒÔyÿÕÊô×’É Î…Mk„O²Áñßû&T T*Å›ÌÕNoCA˜(Â8= -/øî}nŸÊ¶3ˆ"pÄ:˜›| î瞸wŽõ¦‰ÝR¶i4G¨Fœ*Üê µb€'Ÿe{¬³y1ëæ¯zOMú ©e[M\¼l±Æ×ši£-Œ]Ÿô&üéJ®,Zú#gVdn‘h´cm64É‹6úã<ñ§Šj û·Í\Ži³¬;Ý:‰ÖŸöÓ{-Çp¢rájQÉê´‘uÁK¤‰±'=‡2Wž N#ó;w=«It«LR‚cR—g›¿æ] ø¯è™ìÛNÓÖƒ†?„tJ¦’zÒÔAI¦ò°±Çþ°N¿\ðD­­ë@œH‰ËËä(²ÈþÔ© Õ€ÃÈßœZQ‚mKÉéLÃVQ¹uˆ¼‚ý[úT䈪e„Š}¥„ÈR°–}wÕÈ{‰ëÁ›‚Àyjò3/ý~@Æøàþ²¸3=ÀºQ`°-H~g±1%ìÒ¡““ç9ÜmOL£Uìõ@/R3Gt _PuƒôØlKŬҷµŽ±²ô ÉÔ5&[ËQTäUIO}æïé ¿µ‡+ç\)ÿÜþMÃÀ¹œ©­&2À¤xo.ÙÁLj¯µ@33†T|-û“nžyÛfõ ÷ÛÕßö]PY»ý„j6É:~˜ö%°‚‡/ÚÀ(þâ1 :xA·U«ÿá"K©É\Ÿ¡&hZœjÑU×ÙòõfÞ¸ÿº®³MªQ°CÛO—ªŠ.ð˜Î,ý%:j+Ù\ÂK´¨úÆkE›UcB½ëÚs€Ç$¦c±F¾¨íEÇíJ•öP¾óv(dÃÂXv‘˜ÊßöÍê]«®ùî]uÕÆ¢ïáh”™:bãÞÈF-xGÇûµ@&ëâ¤ÆQÖø‚¢Úèš­òw¦±qP0u­22¿:`‡rŒÑd}I;àç7Oó/oÄûž›‰xkÇ4TYSfo›8ËÓJ#™¡·¸´!"}ÖIQ}¥µ'ÓËùÐ"ìeàîÎÄ)»;\¸&_>ÖeºÁ,]€ø~ZÅv&m§Ôå±¥ò>¯2L嵿ö]›g“9ßlŒï)Yú+щ~Ò‚?졾ÖòµnÏjo5ÌwJPÈ«£y¢µÃ-ÿ寪 £¦Ö²ú‚/™åúÝKî<\,Üb| ÕœuxC#ìA}¶wÉ>ÉQÊZ -ÏMð©Quꎽ͒ƒ¦­³6 ìEƒ¤úµ~UŒ4.^%‚GL…:榙†¼öåŸHB­PæNH²$#ĬóÜß¼ZÊžu†]áYu‘RÍTâ×%Âä? åÐTÓÑ~ÞD_²±aÙ©øÈNϺÜÛé¹X¤(Ó‡IÊâg`»úb휂w§¾·ŽIA皌LÃÌ““O9þ×¼åi×Ö_OwÄy?Üþ¼¼/1­˜ƒÇ:_ЬC1‘Í+Kpºý˃Œ=¯î[’ùnCåCÖUl¾Z<<¤8ÌC¤•œÛ³3êB^{PÔ®—?e<ÒL6µÄkĵ‚!ħX„Ï C’ß_à±½ÎPó™í¨ö–ælÈjÕW;r/¢,wUZÙ4ìë°ŽÉ:·¯,Gñ®D2Ö‡IÔ3½4éüe“_sr"i€êú¯Rçm ¤÷Ô‹Ý'÷A©–%:EVqÖÃ"Úó†Þjά۠ÀhiFçkCÃa@¤ìÛôË>Ø)ý¹cŸÆÊ¶Ús7«2*.äõgñdkE*´Tz?Žc…V•w–æbv‚³[«Öÿ̨]ù5Â+ÑïŸA“‘IùöÓVÑÍ,Y¤ê(6ëdVÇêŠ ÒJ1²iÜÞ£mcTbr+ëßîžEï±I’%鈀s-y ó·¯&ý ü@ùj" Ë@6÷í¢Tr‹Q~}yñ`É^Ò¶]L«‰åH)U»I% rŸ^×ôÞUhå“uÉÞ˜|TËs"¼iì¬ÖêûçŠvS³l^à•P¢ÉôxÓ4Ú·—°h€;±¨§ÞÄ´oZÜT­´™½É^±Ùäðâ^HîÕþ1Î/…YÜÝ}_þ˃F)âj¦«[– "w¹·bš-u—Dg}t^näñÚp¼yzGo$ö!‹x“5ê9у ®Ä}›z¡š˜¡ìý…zÖ ¼åϰL ŧû~÷\ßU)šM¦ªFûn¥‘#ŒjÚÐE  (SK Ê3_;ªŠÄ¦ÅÂÐ:÷¶y"9MÖ˜ë"Š×fèRvüŒ"á2Î @vKÞ'ÖiTÊ)Uj ø‰ŽXÃ㿸“é#ÄD<¼fhVÎg bÀRZ@]oC2gGØ™ú™Ç·æ>JÚG;ÈfºÐëäa0ý›ëºøwÊpDëm½FAÖPÆ“äg°X’ÐcöñìõL³Sè'^M¡•'zoS©–©AþÕ Ï¡ñí8dfûh-¨ ʸ‡{VC+Kç‹êë†-'ÿÞ[¼:ø¼PV`0ôîÑo€Cb¬žÕª¼¡sšô5±Tj43Ñ€SõWH)¿:×…²€AXàD84¥€%=Q?Zx_v¿ÕÝòåјä®©DÄ_°ûÈgUJ£Æ¼,BçzºÙ‘°&î3fÉZÓè ½f­åvJ°éó†êñDëh¹üÐ<¶Dë$ínë€3¢£!ÉiͱïdŸ#Êâcëƒ2:õ£çoœõH»oNkŸxZR§ÿæЭº4,ñïïúaŽKË;¼r+O@¿‘—šð–Á¯€cîY^x’fCˆ s9]'G„£¹u}E‚U{"ƒAšÈ¤ŒLÄÙ?¿ƒk­UÝâõÅwÃp·Ò‘«‘TÔíqQø}-+¾CÑ<]—wTC£ˆ ®>”uÄA¦©!Ú©—RxʇüÌ´‰§ÑÕR‚³àîéGS•Kž_c©H^^¿ÒnT¢•ÖÒòjn‹Eƒzæ©÷Óöñäý/†"nÚ_ëÖÂéÞIÖ‰”ÑÚI%Ùx›pìâ‰ÁFMg7m3À]Ûœz¤[_yU*ú¾…Wó®‡Ë»\B”(‘´‡7'1|€•‰ÉîÝòæc¦GŠø\aB¬^®ø¯h$ɘ4UËWjY–"5Ñ}6¢×%ü{‡ <*@¡¬f±‡ñ¶Ã”sv:¹ÞÒl ï[Žt?ôŒæ·Éà>hQׯ7²‚»`˜-yf!>ÕÒ‰GÔ~Ää’§Swµd ­œ>Ýk7äF˜ä õ$K×°Ë®<ºkâx@ ä | ôõŠ$ÖeC_ÞóÁë§;èóX¤·åÄ(¢j“Ä5±,ô‚^eM9¦ºùaWÚøÐ–?"—ÍùhBi¦Õî"6[‡xµj=8ÙL/x)ž¾a4⯢Ù"ml,þ-(fÆŽ:™1)TB­„%¥R!X7©V(ú\AW)%Á„½™Fq¾#ªo²)sZŽò ›ú˜\„Ι™]ëÿ¹~”†·òVÍ ’ \·¢K«ÄмúÇ|Üv¶ØéT=›YÇ1ÕC^ˆª †õ¤~æZSfÇܹ›àk²W²;,U$Úg¨µ Ë•hPºÑ‰¹eAÑMˆ ˆM~AF¦Q‹Ækÿ5S:Ò*αO O ëi…Iý+dýà§öŒfU²4ŽoBkAMÖµG¢4*÷"¥4ŠÀÙ5£?ÜL<²S„¯.mô œNØ7ƒ4y/žÛ¤ÒHÝùª{TË6!}dûrÂÎüù¤Zo9¿œÍ‰Õ¯ÌU'ŒœÁÏ¢3%$Þ^àìC êP’ü¸ˆ ¯]ç?Åá”åA«–"’cI!O‡KJü(·5ncÇãOãðÎí…òcBÛº·Õv?ÜŸIîSÑ„¯’7 ë §5è·ÜwÃA i–ÜÆW-³]N7ŽÞØ0ä^tÖnž¢•¬MÞ•-ê~­°f°]ìbýœôG@@é>4Ôµ÷‚lcÇuÊvx./ë2$vñ*µpchïK-׳3 Ò.ÍdŸ`àÓØMëùú}5¾™@XR#‰¦áA›g¬BžÂʼõJšúª™—ò߯¾^4¢—¿º·{Vt¦÷fè X€ÐT-¶& ÓCLeYÈù£ó•by‘–ùÍ7.µ‚¬”í[Œ0\k‹„÷)^ã@¿ÏŽñJD@RInþ“qdÖ|Èÿæ„ì“êùYOp QÉ­á+¯ìÉ}¬É-Û#ûx”K«åªö’}ø“$3) Ÿ ©ˆõ8vÿ9ܽÏã_æë ¶£Åd#èh°ºñ ØX°è5WT!¥ä’Ÿ+RE|˜Ú èRÕ-ãP¡”nüÊ`p[±5´Ö+˜•ôª¤Ž‹ÇYæ3ÕOt.2_"¼Ã@iMúÁÝØð-rX – œõú„´?虢íéÒ`·Ç7,Õ)ïæiu³Bå–W8A³nª…飄áh–eA?/k^• Lñ–huÖwùÅI>»ãËŒ„÷ó¾.rÞê {oÑ_a¡²lÜõWQeß“Œe!@Ö¬ìÓŽ ¡¬•“_”FÇ)ô>itòcHŒÔ&º B¸9¸CAǺ¢'yé°={í8Ó«BË#-°1> j¸¼ýY‡ÀÄñÏIÈ禖"\JÔdoµiFØ#Ä  Š‘.¬z¢ý‡“Tóe(4ËŸ‘Ü‹—Ë[»EH¦4y€A»­pED_ßšu:Ý$À*ÝÁ [üôÞe[pž|…_~‘}÷8G*æ Pur^u9ÊÉ,'#õÜ#îËE~lK*”=TÃtIHøž†=Ââ;{½åÌìôR­F@Ý£”RóG¹˜ü~ 0ÓJ_Jn‘'Zt7ûÀGùŠ#-póÂÖRŒ£Uù'>GV~ ÷3tŒd ›ö6 Tö&ñÒ‚ëÁ’Ww”À1Õ+a~ÚáÇ©3­&Ì©]„™Âòÿõ¥T"u§_nÙU™È_q+‘é1/«`u˜À¢ ‘§ > stream xÚvPZ×-‚RB¤#‘"$tÞ{—&-„¡$@B Ei‚tAzEºtiR¤(UŠR•"?êýîýï÷ÞÌ{“™äìµËÙ뜵τ떱 ¢Ê®†Bb!B`i ²®‘ ƒ…\\&Œü à2…{¡(¤ôÿò+{Á¡¦ÅàÂtQH –·"„ˆKC$¤Á` 0,õŸ@”—4Pêƒpê µPH8À¥Œòð÷B89cp»üg äñ!RR¿ÓŠîp/ ŠêB1ÎpwÜŽ0¨ÐCÀ1þÿ*Á#ãŒÁxHƒ@¾¾¾BPw´ÊËIŽWè‹À8àh¸—Üø‹.PêÿMLÀ4qF ÿÀÆ(GŒ/Ô Än‰Æ%x#à^@ÜÞ@cM ¾ù'XçO€ð¯£B„ —û+ûW!òw2C¹{@‘þ¤Ðáê«éaü0@(ÒáW Ô ÂåC} 7¨=.àwãP š¢!Šã÷;4Ì áA ¡n¿‚~•Á²*ÒAåîGbЀ_ý© ¼à0Ü©ûƒ~_«+å‹ÄþY;"Ž¿(8x{€î"žÞpM•¿"pàÌ ŽŠÁ` )0î „ûÁœA¿Š›ø{À;!¿`\ÿAX”ÐG„p„ã~X4ÔÄxyðÿÛño 0 Ðî„@þ©ŽƒáŽlÜÍ{!ü€÷À8áA€à_Ÿ¿WÖ8m9 nþÿ„ÿ¾\ºº–†© ÿo»””P~@¬ °PPX „@„…¸Eп«@uþ'WéˆJýiwJÿiØç¯Ûçùk0xÿ®¥‡Â)äùGàV`10 ÷ùÿ–ùï”ÿ›ºUùü¿ûQóvsûíåùåþ?¼Pw„›ÿ_~œ^½18íë¢p€üïP3øŸqÕ…; ¼ÝÿÛ«‰âf@éäö÷!"Ðj?¸ƒsþ#•?øÝ_æ†@ Phį(ƒÿˇ›*˜+îÑ@ãôøÛÇ Í¿·TEÂP¿¦KXLõò‚úpWŒ³Ä€Xn à~¿  !Q\ G/èˆòüºOq1 HñôÇ’‚”ÿ¶pAèþˆAŽœÀÿˆJA¸WíŸ\94Ü÷Zü@€ Œ³üÅ€qˆ/ê·ý/.0o//Ü$ÿÖŽèìßÏ'Q°;\^=xsT­Èì+¸2$;Ƶb–Î+ˆöjñ>¡ Já}‘6ïu¨˜ÒßIõiY•ç@a†í»Ñøš(²)ɰù4ðÌ6Ñht¥05B÷v¸pC±¦‡•„EÐDa5ðÜ3Ð4Ô• ñJ›W®§·$…A>Í‘o·º_MOùìûˆÉÃÕâÚ¤gåãîÆZ…–ŒsåÙ?›``'IJó]ßõ£?8»ž3|ɦ•ÈÚŒ)ÂZ.ÇO|®4F·3r2Z2°\?z«´žªEÿ[Z4W0nå]-ò©ÏZ=xr‰DBÆ‘(ùR¾àÖªÓâÏÍ6Ò†¤€zTÕLjáê¹@Åý*|±Õµ3ðANß}ªmì$kùõºWìmg…ÊG¯3n,‰G‡hqÜb’•=àNfÛõz4ãÃ&7æ¾Ï˜Zu+DÎfH®F¡û:¸Çä~“™/ñˆ'›ý¢¬# "F#GÖSpFâ$ eSQû™ñªÀî°u˜M> `žžé3ÉZþ(Wç²1|}ßõ–Ož›ø$»®·’VmåC2Þ_ôGÁn²'!勇&Ì¢’x³“R'±Ñ´3 ±“Ĺv¥®Æ¤ØmÅY>¯Oîí?6¾NNšÊ7(ŸRKxHô%yÅ¬Ç Õš¸x>Áô®ê•}BÒŽ>j­6¤Dœ<èoåUËK<¦ñixwø4Ä€Ìt{¥”n*¡ÝášØ`ç²3±ûÅ®=³¶Cµâ./Šxû[­Ù.©‹’žã£ŽÙö†pƒ~“Ø)¦âP[ίTÏÉû½Uh#¦Dâ ‰Ó”-ý½EÉÖ³Ký:Š›çGõŽe.rb!SÌ–òÌ]S$èÇ43帘ÏÖƒÆî¦¸gWL2.yË‚opjr ]z.<1Ðä¨Ô½ž4¼nêç:DÑé׳©0÷f|6‹Ær^KÜ9dçùÒŒ¬³âLõüÐ{Biª6Ž”ý¤OÓ-ÞjuζO™·u¥3¯‡œÔ¿~ífðB)ÛÔïˆ';Tç‰ùöYý)7¶ ò±]ÁaH%ØßÜ«5E¥Jß2¡Tµ_h8á“ìF—Mi HØ´½ž·¡•éÙ·=½_xæw·Üw𛉮]g1Š3ØÍE×›è¸ïƒ®~1¤‰×yòŽ%Œ<@{J—Õý%Û`ÑË¢¬Ý³)~›¯ “>Š5o(Õ u?¶r–Í-ózM?Eüþ=³×9…D}'r~3Êåmb£WÓ÷wnùæÙ|M";¦ê.šòIæ!Ø,ƒw~3Ö\@,2Š^ÞL“W©ñ„{v¤vR?‹«`!®ÌË-%öSÝÚr|J£KÈçA½Y¬J³çcùõ„NÎkCz䆣¢¸esCë{5µNYºŽÖï#•ÙÑȰê\á0 VäDVõlÆ¥j_ô`ÜRï0ïÅv0Ÿoh“üÅ•}ºÂõmŽÔ×¹W¥Ê™îì^_U¼ÆûÔÀŸ‚T"*è“M­»7³ÚvÖT¯ðIL^reµ_°»x'¡Œ©¶ÛP€écÿŸU…ìªE’”êTGy«=_ºë»[•¢\Z(ÖÞÄt§Û%XÙP2]>=å/²Îæ„ö˜s(»$Ϩ)ÂùRœŒö§åu‡FRÒw((s>n°h¬:}t<£ìâ—-§öß¹ Ŭ ¼Ï²NùzAšq7huš§K²wBý³µ_AŸ˜Ô«§uAè>ÑiîQ0û»6à C µ­uö(<›o’b5ë8ÄÂd;´›X,~»Ý\iÇk9úåPʑܗ J6ÑÛÄê=ò^EV♥}:¼pßÎb†ÄO]éJü^ãJ °µÙì\‘‡>€Ì´…[¯+¥ÁXoFÀÍ®üÅ›D³.AXO3%¼2îgŸyÎi,Šðúœ‘àI³n£õÇÆ‹òxÞ×ñfºÉÎñ7Ó,{تëR¢#‘¯—'ÞÉN·4Ìäö¦ón$akÑ/d×Ý­ÂBÃRÚ¼©ÝlÔõúئN7xXÒÐä~W›OÄo$M³¼¼j¢Ê}ïq7AyqøŠü—• d›bn#6+»:ƒM 9…ÍT=ŒÚš4òs×elr_å¡Åó¥ÉltëS•´åÌ®.Z©âÅ0Öx.×ñ_Ïgxœo b¶ü?“0Í£¶(åŽW°%PÛ´õƇíå€{*B©Û˜QMêtÕ±–í+¤ÑÖ¡qŽ='k¦ßª&’*æ\$L¡¶Ðþö½vA,ÇÖØýj ³`èÉ À¡ô‹½~Úì½ï¼ÔÛÏß+šãϨn4'w_–ü¼ë”#ãZëY‚§ÃØU£T±:ùŽÏ¥r¬‰Ú™bR3–›ŒóZ«ÂŒ´»PÈ3«Üà ¨b&·rüºâ­»™ÖB¡³²ûÔ99ÎÇÏÚ?YŒlkÝkû(µ¾-öŽ•äŽ˜wðöÊ=i6~uåéýWjüìzT€‘1¦û‘–éîŒiŠãáÀÍÃá÷Y~ÙêrÓn B³\ƒ‘‘§ø¹î`öæ¢Ö»ku[ûgï¤cZ^¨½k òš¨óo´Î-xÍà8SÛ22Áu£/ü(€íࡺî‚að¸l¼ÁÀŽÊ°Þ—}j^‹·ZˇdŒQ¶°9ÃgÒÛóx.I_—Kç¥'N€CÙ¹ÑTëVbÒRæwG.1øF™óNÖ;øfžµY;– ¥‰ËÍ!O;cc¹ÊÏÖwüÙ³£‰7^¹pð÷.õöYeLb““ïû§¬•§X´Pê3ÍúªÂŸx›žî_žiZ[:T®ekkQ­«¦Zœ U;n¶DÐÇ’ò}+ejÍô÷Ý¥;§¢&ÓΡ¾õ#‚\µ¾!rDàés5MH­Ê–Õ\15O-è𑘙’¿ >UP¬™Üø˜p€~ŠçêÕ’’ûžÕá±ÌìÙÀ‡^šýÁýŸØ8KäЫDs[„×ÀÕ ¥ÇM}¥b'eëTõXÍ–ø)|9š÷þ×ÖÂ^¡F”_Þ gS–mW:–ß.xÓÁnE] èp²í®;ýé)¤D¢Þ§™ˆßAÈ›ÇØ¿ ÿ¼„ù Ïn¿ `ÀŸ¹¬×†oÜNÒq° ÚŽ0ÛˤÚ-‰Ún¶áä+a­¡P™ܱ”¯Ùz ñ Þ ²{å9¹ŠŒÁ2dÀÅú8z4@«•æ(%÷3á·'r¬ßiU˜rä l/w0#¨¼Á=혔nXyÌA=+ÞÁÉ'–ùÈÜGî ´Æ„r´‚Ïb§8ãÉîÜZºg!X™É”b·¨UP@Õ !œYvß÷˜N~Vãð¡ùœ“ö…×Èœ’ƒµ¡ø8_ª úÝ<šý‡ý¥/6†¡¢÷oÑ…˜;óml®aÌx"¦ñåX˜ù£É 2x[h«"ø m€9%°Ü¶ç&Í.Ã|BÃ…ë0ÏsµKwrY’/ûŒÅOä˜]È /ø«ˆ±ÒTå­Á´ƒè9É7$üCËŸ#ÈSSé Ó_U$ûéTΚ«ö8V^̶£TOu Àc`2dùûGªV¡ÝÓU§üS¬©ïlI› „uG“3 TPJO²dss‘œÂö7L»2[ÍØöwjiv½wŸÚl6Z¿–æˆxÞ¹[ ð“ ]©7V¥k«.HÑÏžÙ¹ûNZõÜ“¬†ÊÌŠòâÝï+l9ž1øÅôôóxï027œ¯,×vö. ø¼xD©jÖ³Úd)F+Ët וyœF”±Û3™E{TÀq£ÙÙøº‘bͦœp÷a8±þ„¼%»çå¨Ê7ýˆÈo×QÛ ¶ÙÞlŽ22¼";½¶¨°^QU³­òJå´’Ì’l…Ó†¶>tm¹µu+r<‰ÇNkàùGF)¡È^£‚R‘ Qñw7dšNÍO»Çãaºò0†ç“ÁƒåÞÍ1Z/]|U† R»}Ú6f:—Wxj?´¹j¬KzõܧßTÅÒõÚ?¬ø:º|‹†¬åAÄ©ËÉXÿÁþûµ:ïT’ºÓ%S”I£m…*gDIpôºŽ¥òF¨ý7Šª¡Ç ¼%Þð‚õÏ Dë|2ùTî„=AÌ„—7ƒ¢ÉÜ·|]¡¨Ü?J±–¨K[F®?Ü€ßä°{~¥k× ¹ð剺r #¬gA3Ψ“Ç‘úÊk2¥üRÊW9~" m"feKÚ‡\åÉhZ^Ã?çüv/5ôéUŒ>:?Ð9ÅŽœ¥^*+“¨ |;T˜­OxÚÛå&¸ÄåGASk¶à½öV¿Ý$-75Jš;(Xe컈¶—]BÆÓ5”Ââ²¢¡€U/ ϺzVšNGæ9S"wáÅÙ†â.Oˆ¼©¶£oÕ’'cî¯Xèp¨~»ð ˜å›ˆ¸L],«“íé˜ô=‰E÷t- ¦²FùCÚGªç>;Ê ðŠú”8”²%̵u¨ÆN§mîÞÛÚmµ›,ˆLø´ÅÞ Ç¦n23³gl ÆNÃæ64\Ó¿ÏÊ‚UÈQöX<ÎÛh>ÛøãõÐ#çY«Ït;œôî·-õB‰îÕÔq¼VTW’¯cëé]¿„ÛÜ¢½]Lp¶Ïm[¶9œF1­Ør¥C£¸cÛä>å U·Zݰ¦”*àŒ ÅÍ8©zŒ´ 6[âO4õ$u¢2ÆÅwpvSˆútzPl•ô=f1ß}pfÓm`Íûn) CÓ%êPC“²ˆ¤½T‡M­Ž3£Þtaè#ÎÅGñX0ðWó/BUoõ%Aúwä•wíkoø™sCàïÅ—ŠBƤ uÖò®¹A ÔìTâ­£ˆ‚²o,YþL|Å[ùXÒ#¬ø^$…ï׆A>ž öæ{·+¼ó¥ûùžy=õÞ$‰‘M/­e÷RVB¢&˜ìf : #_••«ÌÈØ¿ª€’îùLG.1ó_…ûs0ül|¤&š”°¾!Û(^‰zYZIÿã¸p‚¢ŠÕq|Ð6)Áb£l®QÆ%Zͯ;«A€ñÝbŽÄv<š æ :v Ùëžy V*8·ñƒ%Š ±ü¥Øtûá½pWéÓ*hÄcMÈ—âe+:ªëÎ$wG]HŠ4® t—=NÖÔ 3œ<‹Ësæ]¿¯74T:K·\®-G ®ÅÛ.“óÙé—K‹½!ÖÝÌ~º”x´b©×|·÷güÆ-ŽyrÃ-”ÊÕ©Ùšm€ÆàUóOR``öÕ˜%Nm ²7ÐO*«)jkBªp‘èjPk^›äHí>JÈ ~,æ(åQê.™ (@uw¨Á ÿUºÐšºCþ:Å£6&E­µ\¢$2³#Á¥nc“4¶Â[Éfµ.åͺú]ml_ðbVŒgÝáeÌì]-ó¤Ã²ùîWÊ¥’b`{Žýö#åçÉVRꬆ„ íáøÖ™¯ „‹@Í6ÂxÍ¿û̶%YúÏ~Ló·'ÝAjgÍK5è„vÐÄVñÑVØ5 ÆAÈBø_tüHËÜa¨réy?«ñcÏ cûsûíÈõv­pG7ÆÍ•Ö ÅŒŽûŽrP1e*Î2ñÆ%7§„Öó”:>ÑPM:Ë2§îsEñ…û’'QMR)çupìUøê¤›úé¬*Šœ‡yÛW$Êêk†•yö²b_[æ}ÑL»÷Ö/¶R“|"–Ãg„!m¼I³Ïæ8´ˆ_’PkrU^-àA¦´Ä2WàYê]/£O˜Â=êRCØñ|ÂL˜çÛç³õz‡×¬Z¸ÞEÀ•m7åºh8Í$aJ?¸±dE9ÈÛ¯,õÞz‘ÕšìsNçÕZ>cC &%Û{afW•®w:9®ív[Y‚™©Kã7ïù½Ÿ%x ºŠïï± HôÉE6Èe0ú½»>Õ»â=2àaÓݪÁáí;"#ºlO%pÍ/¨ÜãyçC½Dl³ã~®jH”‚£^î‚Ež«{Omøu†ÒJ/Ò¥ê)&´W“¨c¬±`×]Ú~*z[¿§ø —vïÕ8(æWÚ°CxeîΕÞ-BÃïó± ^jwÎó¸ÚU‡œ¼¬w&¨–>Z÷\s›ÇÆ'/Šˆ FÒ¸UŒËÓ‡îN‡[Çá“M\éy½w;& ²×8¨)d¬›a¥Ÿ¹CïNŠJ®aú²µÎñãìQnòý“2¡{_¶ï¾äp æ ”YðHXONÌ‹qž|ŠæØî€rŠÁÚ Ð‚é£›?cLT06D—†cÝ1Õƒ}<¯'UWûšt~~äæÒM63‡Q’ßwꪜ›¹\ó ŸXf’µkÛ‹VbiÁ’<|9ðÄVÎä ç­§o3QÎG6…ÞaQ% Ìû0›s{^;¯&éßKzˆËá‹ì¾y›Ã¾¼êË?8:UóŒò¼™^ù¬¡ÅjÿØ?ügÖº¤¨-éÆb¼è¹2¹øCý¸•ŠúˆøWY®+a«Ú?[¦SÅ-\ò”c|¤-÷ ï OÌxºq;ìóP0[5hÜút››ošm¨6ˆ(÷ͧæW½T¥›Ó9Ü7Ý…ét³ìœóŸkTß~™—Ý>t\<ž¡"¯Rÿú#œÖ.ªßÿ ˵åþ•tZ¹‡gðnñÀ{…¹‡0IO>b‡™’AßÝO†gÒàÝB—oÏe˜½W± ‰i Ÿ›ÖºsK†&ý_Y3Š((õ~ Ý©±Úv:³Feê¾¹²c£4E3—ÛË4J¼R&¯mŠüäÐŒùi˜ é¼g‘yT!DWs¾RLËøŽ9!;I/Çé»þÐT¾°p¤½JçÕs¹+Ý;Ýé2ßÂeV¬º`!_Ó Bx9L·c’ön6\ãh_ù!ŠŸyôÕé½C—Ç=v¾'K])tØ{9<~o=¨9RMÝwd«4¹ÊÙzci¯Æd ÏÅf˜ž°Ä#ZÏgÎÓvÊþlø4*PªG«"*ô¥tc.¶tÿðztLç•⇠§ºyá-0»â;t¬z«ÊiÌD‘¶bb4µDío‰ùþ˜ )-ææu:g¼È[¼¥Jl,ôè­Ø¯š8Aã1.M^8üHUˆïÃñG"ùze‰cJa–£P=0IH\[n°©À»ÚËUË¥­VOI%HRAkaxòž›mIÓk¹g1ÆÛÙOËÞw––‡¾¤ˆn³/âsÝ]ЧqªwP(~ò®ãÇeô§É$ªC!v”¬ãSÌ—qѽ¬6î6•8Ñowdö)›^|g=·4ÓÉ #· =å¯ATRì‰uì^ÃK¥)•4ª™ÎxFL—o·æv¬²|.ðn*r7VŸ ðñµ3I O C\{¾üÈ·’„iVkôt{áb|»âe ›Þ$Úç=/ñÑñ T°i¨{!PzÈé&Mu¬ÇKþýÌÈ<ÃŽËêŃðj›˜òO×mÅ?¹ž«ŒÞ÷ j"-K´ °Ê&q°UFTEPª6úi£ÃK§¥«éA9{Én=nÃÞ²æ<ÅÌËêO_Û‡@­qQW|ª>›ª–ÔkÜjyz[Ò)¾Þ_éS¸Æç¡ê{ “®X@µ碖$Es7/Y¿ ôtÕ¨ˆU~P‡y ½Jµý‹hv9©}Jb³¹¼ä<ä®cNc9õ£)ÖcÑ:ôBúJG…âYnw Aú“ëN_ê2ÔÓ‰ Zjã6Tú$N”µÑ`±ƒŽ² Í8Ui62s¾@ø"ýž–h(ìëïIöhz6_Ó­G’-å¾-ð 3c дdºz©YóËb0±µ_ÜÝà€ÔžKacŸ@u¤û`é#e•óZD¶ƒ$)ºƒiMFØ?ø]î)€òkY+4”N‡ê?äÊNðVÑ”µé w(IT†š‡‡´Ò›Ûí0϶èÔ ¶i Ž4ÜæQUSu®$¸fÍ;êÝhÀn´ÍÑ7uçó°Õa¥(Ñ@.›½¹üzB\Ã×W6;·‘l“1{³É#1Jò¾fz7%¿É0KÌ..’¬qú¤Ìs÷Ôøkõ;SDf±ïÇ?Uõíaì2‹òf(¬ê`² ¨Úm›ïÓ0ŠªWüD«\> stream xÚŒ·PœY×.ŠnAîîîîA§qw· Á’àî®ÁÝ!¸'¸k°Ó™ùþ/3ÿ½UçUÍû,{–íývS*«1ˆ˜Ù›%íA. ,ŒÌ¼1U33#33+"…º•‹-ðo)"…&ÐÉÙÊÄû½˜ÐØ,7v›)؃²®¶6 '/ /33€•™™ç íxâÆnVfF€¬=èŒH!fïàédeaéfùŸGµ) €…‡‡‹þ/w€ˆÐÉÊÔP0v±ÚMmjö¦V@Ï… æ·tqqàebrwwg4¶sf´w²¤¡¸[¹XTÎ@'7 àw¹Ec;à_…1"RÔ-­œÿ«Ù›»¸;`­•)ä vp™`n€šŒ<@ÉúÛXþozÀZ`adùo¸ÿxÿdúËÙØÔÔÞÎÁäi²˜[ÙJ’òŒ..ôcÙoCc[g{°¿±›±•­± Øà¯Ä’"*cp}ÿ©ÎÙÔÉÊÁÅ™ÑÙÊöw…L¿Ã€›,2³·³‚\œç'nå4wݓ鯱ڀìÝAÞ?›[ÌÌ—`æêÀ¤²rtʈÿÇ,Bü#³º8˜™™¹xX@GÐÃÔ’éwpuOà_J–ßbpþ¾Þösp @_+s ø¢·³±àâä ôõþ§âß‘…`feê0ZXÿD‹æcðä¬<zÌàÅc0ÿþûï“x·ÌìA¶žÌÿ.“´–’Š„(Ý_ÿW%*jïðf`ã0°r0X˜Ù8\àßGQ6¶úOÌ|e@æöž¿“wévûÏô©ÿs0hÿŽ¥hÞX €úÏ‚ë3s0›‚?XþŸ×ü/—ÿ¿íþåÿ²àÿ;IW[Û¿´Ô¿Õÿ­±•­çôà}uuツ=ø€þ·©ðïãª4³rµûßZcðYØþ·‰VÎ’V@3e+SË¿Wåo¹Æïfk*Û;[ý¾P ,ÌÌÿK>U¦6àKü©€àCóoJ ©½ÙïÓÅÊÁ 0vr2öDŒ8Þ,àchôøkƒLŒ {° \ž/ÀÜÞ ñ÷<99L"¿E#N“èÄ`ûƒ¸Lâ€I⿈‹À$ù±˜¤þ VðZþAl&™?Ì.÷Ùåÿ 0»ÂfWüƒÀìJÿEÜ`vå?̧úùÔþ v“úf×øƒÀ|Z˜A翈¬3þƒÀ¹˜üA`KÓÿ"v0øÊ³ûcý{ªLfÿ€àîÿ ÁCcú{¥þkÀ ´33v¶ü‡ \xöÿ”qþŽãè >/BƒK7ÿÁæÿ€ì¿¡Õ?b‚ñÈÁöºýÉŒå·àOpŽßæö®Nÿ`Xü‚ãÿÉŽÜ[KOKð{ãXö~fpSmþÁ]ýg-à¶Úý£pÿ„⻂Àçãzp±öØÁÎöÿRƒ³wø£s¿ñ@¶@ó?ggùÔé_ó`OÈ|MÙÿ™!;¸r[WçÄKÿ¬˜ÍÑÕÞhfbû/ 6ö?гðpþGóo{žÿHÿmÌò{–ÿ˜ ¸±’á;9í¬LímíÿѲß6@·̃Äü†ùœÃðMÍäbéüÇ®‚Ûæânÿð\ÿÁtûçáþu{ÿƒŒÞóÜ2¯? Gò:ýMõ¯ûÎÔÕ O† ªS»­ˆ‹ßq&óDêú‰Ô…÷|ž}4m [ ;e)²]¹Q”s1ïÝû¤<êúKWÆÂæwUöª8åžJ§b4>êÍRä˜dÌá‘Áº0ÁÓbœ{ ÎÞÜÎ`dM¾’È&Ð!úǰxën°Æ>Ìy­•«³:w½{ÿNúclŠÒ[t?EwÁ»¸`u`Ñ£…¿€$ë-}ê*ã>ë×*+ÕhPSoÛØRËNv2 „Š`sçSMI–¡™vU«a4¦K › h¿Ã\t­íV³ÛÜ:•p™gºî0ÇEú©æmf¤ûøš6o2[NV¾¬ûÙxþIBšŒŽõæ£ù;­'ÜgücF7±Ñ1-Ã5Žš˜"‹-Ý›T­[¥'¿UR92¡ÞÁÅÈ)'×cÙÙ‚B’ãËœG²¸Ž‘‚Ðù¢ò¦ÌQ¨øY;Lv Õ*`½p2`™ZlÖ÷ŒÛ·†;”+Ȭ/zWñ\6|õ0–ɱSõöv Q ‘àN.r1…tàN–°nI‡[¿£O¸ú­.À0Ep+IÄX鼿=ðPßÓÖû<®†ÙÐd4U‹ÿ:Ff›ŽJŠÒHiÇ$„w}8?øÄß›<•XžÇ횤ÆúzíÖº6xŒì±çér;*gF6²kNª›1*ÄxØ88Xp:v£n×+úl»'}ž=*¡¡¢+T[b¤ríIcôc wõÞ øNR&µÀIƒa@Öï• ÚãÆâ„=LNû´âmœw÷’yÝݧ/ÉoCö¸Þ¿Ôï^¤) +<–æ é…¥&ÇŠ„Ù*‰ýïE‘3‡/§(ûôɨ¯,Úw^‹³9·/O>F™SñàãW²(.£Ö¶ÕO®sŠˆyj§Ú—´V3}ô/2+é´JLd)]HMˆ.,|ïmƒ†Æ^)ÞöbsæÈsDér}–Zﱩjj UÕ>dàÌ(6|6—¼9¨†£îð˨ū¿E!Gié* YÃ*_é )]¥ž’!¤„îAÏÚÛß!ñdØLãõÞõxßlÇ{I5â[8S„iýAÿðµï›à¶óóO`ÊEÿ¦×RúÕ†5¦$×ó&BHžFWßÄ`BƒŒç›I‡™Fç÷D±f?‰†U˜¾Ïð”óf¡Lu¿54 ùlÇ·ÌîolŠãáTAÚ¹//Š,ÖÕïJ†ŽŽ''~«ŒfŸ2ÕfúàÅo£nÛ#ô.}Ó€ôqíóŠ`SËí—Aâ˜ÅÆ‹¤¼™PkAB–ÿ$;ž_¤Fº”99èØj:é*£ö@ôÝ¡Z„…Î}df©BAÀsÍW!ÞcÆ‹½<À¢Ù@ŽA vç½F"GUY©Ài>ï4ÌC ÁÚ¬1 'jBŒÅ*¥Êvµ®Œ^¿V²‘PãûÞ\{?L;Òå~ȉ£qૉ”T·—ÕA²½›­¾îeœ–š±â@vlÅ}W]ÝF¡ TyU•“˶<ËûÊ@‚k¾Ý#Ók õjÃxè»ÝJ„G(4“µw¡Æ­ðtâc¥ ÏKø(—A®šÅky÷ÐÎY´Uùœúµþ¹‡ÁU™„°WæëŸSÚ²»í†7pUõÝeÝ&Un«/v©ýÂÎ6¼H91¨‡&€¦êÚ-Þ㛉9©&Kt'XÌè"¦fÚ/e_å1Í å®åONŸce!mcb|O{<É–í*»H É—‹‹ŒÈý‚Áô6/^Z÷K㪜!¹Cx€ßL§é.¡^„CÆÃRéGˆìúÀIÔ"%:ÙH#†gž>`ÙeÑ,ð=ïâãs]ŸyÁ7ÄArL‰ìÐ£ØÆoq)öVV/ÉíêÜ„ð=nô”Þœ‹d2dÊ®‚¶ÈÓ… ¯¾g™Y[ƒÛ¥y‡p ®‡ðûÖorV=3Q¥?|Êü/@Ã-RÓû±ã‡Ü †¥a}µÖìªãÞxÏ*µVÉ¡ÕÈf|ö¬7Îq†?:2ÊÈÊ™‡Mè·§VqJa·÷½¾díîuhõXäÙ6Ü¿[á6ly#Ulm=é!&©^Þ—§EÖÆâF˜A™úIWØW”;I«¨(÷Û°Kösx ‹'Ø»ÛpÎ krDvDqH¾z7ƒ¤Œºbk"Y+å$c7Ð×ü?»4Q¯Ì¯DîF›úѸ¾qÕǾë /X:é¯cþzz™R«;VÑ1.ŸlzhÃÏiYµ‰ÌS Œ AKn òôðóäC)“cj ¾&Xws8…Š ¥73cÆåí r?·P¡`Ö ¯T„7¡_…0Ü”™õ¥´pürN™o²üjÙ©ö¦×º¤š»Ì! ðØŸ­xÊʵ-íËÚ¿àO²+ÏÔzÍê²|_Ò>Ýž8„2Ô»Wö*Æ•±1BΚtKWôÓAÑ+²ø`ôD…:×Ö­03ªÿÜä²ÂVn¿¾Œ‹H±ùéô’—n5º÷u&õwºlÉHìƸÕÙM×[%ÏØÒße)}°—hêF},QAû°ìÁuÃÔ.dÀ"ò½í+/œÉH¾c%ßRæ³mØeo§Û ‰fDxÔNÜs}ñæ[ìO?ÇÏ8,±ff`²ßë -¨mJ-@œÕýðÅ1 *™‚Ée›V?*ô{¤ÓõSn–š©0æ$Xf ÄÚä{á#¯¹÷µÐe#N$#¢ðÀ¹ãs|vhÝô RTk¡Ô,y}æo!ƒdJófùð±¶ÀÊ%žðGÓOI*C'>± 9 îD“ïr}¥SD®å s Ö§¾r’Ò¬‘i°d.ªBeI6 ^Â˹G Ÿëœ ¹R‰t6qkEt!ˆ˜êmë{/èy*pİåó3ª\¼“dUZ´ìåÛqÓ(SÏÎÚnЋ)»ù!µ>\É%4‰n×LÿcõØ(O‡æKk¹ m(¨ß=ž+ì Z{;–g ?‡½)ÏW5>"\¸_½ëž ¸‡‚Úªr[O^g}N<Ü߸)\p9$ÿ „Û‹†o[×ö‰sµŒpL¤Ñ6yJ½pñhB5Ážïž¶…úD©9_ íW)<øxáU{…#HJóÙC/=ïÇåv× ‘>¹0Šq‘E<ôÓ{ މ÷–pÁ“|ó$v%4>ŸûwU Ìhu$G“¥11»œQð‚Ihƒ~vô Ð'½gãu´‹bbbsNè&!«.áż®mh¡FöC}­S¢cöÓ¸ùñS}šN*¡ΩO:Zêr]¾3\ô[‡×{Sþþ‘âE!ñ©ÀÙkƒª‡Û/»»8_^E¥„pj¹ÉêÉü‹]¦y$îÕðh†0¦ûEw÷//ãž7^ŠdlŸ‚rèŒuÎdÈÈô"K4:ÜÙ¥zÂS¨'673ë«ðnØ¡ÌøµÚa¬ê>¼ ãxZ:>¢xà2´¸#—U­_Ÿ_ Â:-‡½b–.“½¤@ÁRÅ¢3Ûï¢wOÎÜÒ,²Ë®ók»™z™¥9¹÷‘ÙñL/ðoúB Œ‹˜ÿ*Bó…d „oäe'0@-E!ˆ ’;Ÿ-Õõ¥µÚ%÷¼3…‘¥<²Ùt?tö±XÔz³†/¡G¢J„ëÁ7K“ûK]Rg=p"¸›Ù• W>N=õÇhìqìQ/©-§ô$õ}¼ª,%{ätÑîD¸—8õ7Pë&þ Y¢Y {ÒBm"­Èsr˜!1qÃê8¬—I!‹ãpG°^‡Ñf5×#¿àÁsÄBdâíñAYþfálvZ{ÍB–ðDZ;åΤHU‚Spe©k¨T¼›¯©Bžy(Ë×Wþ®t’ Í‘sQN;Pżdd áiT­˜¿æWÚÓªr³Ù÷>Ë=4Ù0Âö 8€Õ.*®ìв°Ž½,Ax1àÝîlÖ”yïr°ˆç¤«¦ùäÕ!÷+;e•8o“™%d—$¿ ‹¡C¸MÝ¿høå†Ør‚‚æKC0óînUÜ; >£û»$àX¼Ï¶ (sœ aÔ…~ÌÇ7&â¶z?´šÑZÓ­ew]/¨ãTW‹7¾§ö‡÷*<ž¦ókHV?Yo(Ylå4u飾ê%U±;𥱳DhŬ?ÀüÖnÕÈâ´± J„"¡IWÉ<óD_¬ï쪛è8rgJò>l½ÊOxÚ¨ÁŽaã›dµØ¼v¦¯ù¾·‰—Ñý¹{åÄLÅy¯Í&‚è8ÔP.Ø32±º0ôBÐ{‘àœD¼KŽ ºŸÐ “J,4þ$‚>Á„”°EÚ\G^dÊïÙ1øç<.óÉ £ù—XVЩ=}t¥ÅG•Ó0yXó­ÏAˆ]3ǸÑÝi{Ùk‡>ébõMö®ÞH'Dù/Ê,¾8óVx”êomºsIÏmtmc# «(懀+îPc;G”EÛ/-¤Ñ¨¬õç/ „ýE:_1¾`µ:Ãù¦VKÄàÈ‹WIMªÑÒ+rGrЈ ¬ÐÅs¿¹o˜þÂ.Ð>ËI¦àå›i°""Kc ÿ)ÖÉÿ#­ (¥*KìÃOR™vŒ"\ÍÄôêóÏQ»ukŸ0L£X—çâ5ÐÂòçø&àE?¦v¢Hš\HÎU%'p_û〴³ReˆaDä>Þ$Ðö} ±gQy„›ˆ*›ñWm|˜Ž¥Ÿ!EíÍq›Ûµ[D’%M¨¡å¯¬aR«…êPãñÕ&Ò[QeÛü%ÂJ§lvD¶å!ɉ q“¨wƈš31£«¨$N@´Ýó“Äûcž ƹÜOAŽéhFj¹Í_Ø3‚tpaÁtì­žsÂÅØ?ÞdÄ~;ÕÓ!inKºA('b0zBÿ˜™”p1ž@ZPÄàSr£ª©àĉ`öÝ:æ®Ì½ˆŸõ­"愚‚шñöò­K×'D#¼‹!ÿˆÌýÛú8Ë®%ä5µTÍØ =Øí`ýPª†zY ÃsïqWr¥U¼G±ð0Êøüª™7ÛÍS.ÝãÈ]Í:œ?‰Îv‘;qy¹à?÷õ:7˜1Pí ,Ý®0%j{T‚~ß”AW†‰Özi®â‡%lãÞSæDó¸6Û¸5Pë ¢„x r½ܾ˜ïEõúîì± Œ@ÞDÂ>ÖÖX†V4·7q‚˜Æb_“ŠË Áv†^e”îz)ºõÀ—zhv’¡=1~l]àäâ)®ýÎî/ñ@î;bi*Á–‰ÊÔ=ÏPW·©¨¦°\}Ë»¹ÔNä™¶R•LhË“’‘I§ VCÐ#XÄÙwq$E™îÃc±;PϵQìpH÷ô;ÆbÆFˆeˆ¢l§I´õ±£ZÆBEOcX oiÞ¢qÌbõ’‘&ÜýOë0ptHµ”ÓË3GR|\¦J>X<† t~J…©ü$âIöbûÜœvOé'ÎG o7ÙÅîÇ5÷gTÞ ½iæ,0×s&lʧ£­Àa³ÐJñ$º<Av{~<×Ö!ù”ùÃ07ª†šCr!PnÅÝúܸ°­’þu‡ž0M‚šû|ŸEïØÓà Ýî .DDƒÈgñù»Úó´mð“²1Eq»¼¿–ÊìJ DÜ!åžKÓ|ÿ„ dVÔÄ'Œ×]kÍX¤~U‚Ê™—eÊ\ù^¦‡Q¦¶}Ëê á·‰ã}“_ßA8o)ðMî’HôÂMçÏÎûI’%2Ý}ˆ¤‡ÁX(ÎÙé ­øá¶eïíVêÕŠ]Õ¦itÊ*½¿bÊñ™i4)‹;±ïñ&†‚Ût¡œ¤S~c§œ;>¿M½û• ;ó”ò0‰,Ú€}HZêv¢Æ¤Hò>ö—“"ú¨úKË’ÞººæUÉóv^m IñzidóJ Š$†º0Ýe‰²¼ULòÛʵ·KPת_ O¬Pž˜µóxÃ+éìÄ^¢:)èƒÇ.D¢gæ’ô΋=›ag`DΘȷ|HAJUͳúCÒlá(œ”Ëëå2ºªH Æ Ð½¢Úk}3hô+¤ü oÛO:c=«Ë´ÛÕëÈh 1g”„ü›Ü]Up§Oå b–í¥¾ e\mMnð’SÓóéLv¿àSŠrÄœr´·®‹žçSÌC³º—14*´Rg)Ïœ5S_öjÅ÷h‰KW5×Èt<Ö¥Å6Ȥß^ÅaAëÛ”/T¶¶Ê>0¶ DOx™±ëÊ39ü”νáN‚¤ûÊÏh¾“{:Ëjæ+ÇÁ£R ànø{ñÚ.Wˆâ˜iÜá‹÷xI:¯Ê¦î·œgÿdƒØ[jgh.QI½ìÏl7@?`®Â†±lê\¬¿Š´²È¹z÷¡n«1™vk8t,zgŒAƒÞ#xÐ’¾òÒçÝœjíC²©-Yµnªn~[ìÎ%Wú2&ÄY÷˜ê'·™G2%"dæ¯áv·gÏÒÀ¦¡ÚØòæÿz¬.mÇ!÷öö,ãíLt’az·~ŠÕ449:UnÑzP·CFÊxã¼ÆNÈyJú xvuíEÚ'G™²§épHö«~L“gÂÂ`uY“¨r†,m¯0sÏãsgaÝ]¥çßé(èmu*ø\À[< ŒŽTaÞtw´BDØaxtNÉ¥TÛk_gþº)‡Ñ}}L9-‡®(HÅ$^É„©‡Róþ… (Å aÏËSÏ÷²»ˆ:ú–7ØïF8ˆ­u³¡ ÝŒ‘¬b À´GæJ0äÄÅž¤EÊCl.Ç'QYÛªýy¯ ÄnâÀ`M”H7½7ÿ“BÜÇ#}Ú¨‘j[ÓŒf§”Ô*]UÜfZ^\MËBò7ÜKÖµÒŠ9 \ÞÓ¥h†ãÒ\úèäjUþ+dÔ.ïÏKú+K`F¿“C&¬îÛºãÊ^\’zÌo”Êoa±Í™™'åôS®JCòoÑ¢zH§Äç¾äòR”»®ÜfaGP¤]ŸÄÆjfôm¦ÛTÃ3ZçÆŒ^}Ûçšj«QñÈAÌ.8+ˆ‘Ò j\6éÈ¥1Bë¼éëµMía.©ë¨Òã´ð‚qt»t¢³Dí“1¢–§xrd"S9™<ÎШGíŽi qÇi>çBBF*ÏV°˜|wzÔÜ!f³ëÈÓ±à? w©¹´wà9(³(ìSðSÞàdôÌì¥þ\+ ÑÔgýaû9y)>îhÙºƒ¨ª ¦²º“5öX×0#u%E[0ãçädØѻ@êOÊ_ ÛNÄ5ÒáÞ›cïvÜÊS5?½øKû¹5¢o&ï^$8#½×· ÑÖý µd:6×ÁÊ… êäD%‹”ûŠ{,ã NÓ·”™¯ ~¾` µ¸ï cÓûc]prÍý‰˜Þ†Ÿþ“LÇ…7õÖ,ü’¤_r@˜'cˆr-ùîßaŽÖÍVvMÞfuáò¿²…£›’ë•Bæf‹V4Úo3êŒz/%¢ÌuGjšSà›ÿ u‹‚eЉ·±¤ý‰mÕš=Îá·µ†e[ïHÖ— ×SõËÝjÅyœ¯ê*­Sa€n}ºç˨·?Ò˜N¾Bº*nÔmKFT©k~Š‹F!HÑtb‘¿UÆ~È…UŒû¼Y”ƒèž™úw~qŠ)ß7g™Xš=Ôjå®ÃÝÁò‚Í-5­ w§ÅaÉøøZl µ¥uΙ@ÿ®Ê¼Uî…:ö>ï8{놆¥Ê“ÜPÿ¬_?ï%6DþsÛ˜ŸYÙ7^±ÓÔ…ê÷?ºä!ö÷¿¡µÞ2ï½a ÇY>ùˆ åL‰Ü[¿úBÒ#Ü0¸èFàLÍÊU/ä»(ç ¯T¹ø¹:À‹!j?äuÆ&·{øW ƒ3Ä c„ÂfI¶.ͺ§§¼ 9ó³·fÑ`Im«0ÃŒ … šé¹SðNF{Ö[Šõ¨ˆëŒÀû‚‰—9"<ÁÜ€öoðô¥ã¬náZ/Ï®Þ>£\šI.DR7Æ“#×2<¨ m*Ó2ÕF½yÐ_¹æ°ñËçZ|6¿Î™ °=¨2é„"‚–Ÿ–iüµõ–Åy/­6Ø+å7‘m²Œ}’ì‡ø)z&8wù¹};,èð²…?¦Aª¿Ô{7&_q>þî>>Æë³WKjèÕänÓV.ƒGÈùAï„”WÓ+ÁžÆ4·ô#fñéž ckŵ,äçøÁæçšwr¢®)‡yå+)¡È–æ¼ÖDL%Ù! z=š¬E×ãÉ‘Êý¢Uö¯¢O”fÏéEö»H®jå"MŒ ASDXïöÄ[dš Mß߯ÃÚZÅ,lýò¨MhQ}˜°Þ‡ù)½GOÒMm}˜~„+gÖ݃* gûÅ›ùz¥9]´ñV½ìá² ¥µky‡Í&N. FN„±m˜©èXdÛ7ôV$+‡+|1Ϩt¶0WÏ•z¦‡‡³=$5BSNªzþVlVáBX¸"õppÐV¶%à©Ò]h]ñ:¯£;: #ȱ2Ü6våÜ­VŸ›×ìÆWŒ|y¼f0ú©i “œ1L¤)Ñ`8—ßÄht4”JCÆ z!žz€Ðf£[go;ÏFâ÷=DÖ“­Y`âѺèzÈí†Óî³~>YþTæY›bhM4þ\G¨ƒ;AnÇaßü"ÚwVuRIî+‘Ñ^DÓn5êÆÞ¨ ‰•Ý´…}jÜ黸XÏ-¨uxÁAg6ou®n›Â÷™Ð#|K#»jL¦r«é0]l>Ä0£“ û.…ÐÕˆ °pô6º1*&,qV‹¦À@tMù¸¤é !޾´ÿø†³9:‡ƒ1yµN#ÆŠokÉ8ê%y´eÌîÛÕÙ¡‘@ßý[½÷°·ÃYl}ÏjŒì 0áÖˆÂ|ÅŸÊÂ}þ"ŸÞ¦¬“Ž©5/Aðžÿ>Qú†¼>çÛeZV“´ 9Îu]ÆÉ6´E™\Cî&.ƒ@æìG?´ùmžvÞìË#8ÌÒ;Ë:”8lÜ;ƒx#UÑ/Ž: ÝÏ ãvÏDxŸÐ7¨sâ„·Fo…nQhx´Ù>“’W2ö^B =þÒƒžªY÷솉 ߘH £œ0£‘ò'Õb6i4Ó÷eCò¢ÙÈŽ…ç– \ÍQMcDðØfåÁݤ·†2Ùo¡…4†š³ÔéŠPØè!¬FήX¤ÌŽik¾å“[Ä‘6û9å½ÚGÕOÆÕΉJÈ„is1y ©Yp²_®+›šªù8Ö]Á5NfLñ«ÝñýøŠÅ‹pÔ¥Ð$[][üa^‘ÁWs,3JÍÝÌGhâóPúŸsÝ<ª½»V>H~kÓ^X´ªr+¤®gœøÐãLdÜåŽãî$ÙŸ¿wTÎIo| ^Iî>¸[Ð" â»f(²XÂæÅS/2û–qMº–~³ÁClûéËpê£AÙ”5‰Ç ¯m‘5!õVa•Á’Ö±/Ìîg¸lÑ«2HÁæqë“‚\U “3ËÂÏö>é r}ê1Þ=…“{¤í[ý¶ÈËu5v&»ÆNz£cu’«øõ2Šâó|ø¦´âɃÎYä;*¦R¸˜¡ÒjHÉJë§_x×X„áÐ9ô!yï&XÙ`'åÙ¥•ÜUBéÕàŠ×©ñ0'4Ä褃+ÎWªAý½A¶Ì\Aœ°õ <¿ðHßm‹sw¨€¸6ZÔªf(ù{M½mŠù™W#?àYø† ¾Èzà;oªJ“ ?¼”cUSë{ cN ñs½d(v6q|Ö¢Ø|Ïæ# Œ™üuâpÃô< 5üˆ ëñ}G6Ò)oLGÔ;·óÉ|"  D2Ñ*`¢c4v%ѵ~DY…‰ï§v#›B·‘yA}þòtgãiL‚uÚFCîG”öÒ¶¤›e–,Ù€&å;8ˆ3ÖQ9Z!Ÿ »RÁ‡OM£ãÀãÛ\ÍÂÖT]ö°ýé Ö÷è+•÷¦Þ¼ãªÙñœ4þ+ÉiÀ£c“'~Ô:…]³Öñ–cÌzWn:a8‘HΫy¿¹"Òoê†p<È„Á†ª±3§ƒ\þþ™[sl7t×ï¬|^Ö½i¾!݉­Ï-æ7ïlÊ·4Ó‰¢#á;< wôg{"$Ï$%+$£.‚F0ÍÎÕ˜0ƒ±%Ü ?;,¥BƒßkÑB­ãDúåÝ(’È÷³B±+÷˜ñÑȼˆY¾<Z¶LÆqžÿ®ß¡pUüÜJR£¤ ÅóW†ô„>N£è®;ÌCÒ'®ež]¡¥‚•tàIÿ“¢ÿ¤ÃH~íkÁH–É#”†C|¡æô(«Æ·þ Ö‚ÁUè ”½4·>sT ­þYQË™ñ ñ-×è~Ø"ôy_u«ÓÅ=¼ˆ:„éÙ¼x£ð%>[Eîz´;|hÒwÄ™ÂÔÕºßW©ÞsŽÂYÓÑ_ó1¨ý¤Áˆ} ïš"Ez΋ÌGÒ{©Ù¶)ó‡ë5UÜGÆÿH+©zvbOªÍŽéóºsÀ²Ÿû¡æQŸÔÀah(“|yˆYÚ6ïššR Ÿ‰u‰DàÄ‹}‰gdg—‚û%C6µ²K˜ÿ¹=Ö›Çó‰—)¡ë傆̴üqJ¡¿cà'Z}èŠÝvôýIÜ!MÜqgܪav§™&M¤¢…˜þT~2nÆôzc†‡’×¼\Ò͆é>EÖ'¿…‡8Ý]„R{Ù¾ªê<¹e6º7˜ªòÖN&ßÜ·Ý!æíמƩH ÷O˜Gô´FxNâœmø]P!˜6惠ÕwØ“ºeÉÅrø m†:µ(KXÜ‚…ÓŸ\‹ÏiùœDy†{ês7ýeH—N„C_ûñ¸òN™Ë‘ç³wHA?ãߥ~õ‚ndWõ¤ |WwJ%W€ý¾ÒòγÀâ[›hŽÃ›ÛÀº= ù’hÑ辶Mü½fp†o¬ûüRSÈábs¤apx²Ž>Ac×dl´ê?JîôMùŸÕ™_s}w9RÜ£®ifäÔëÆ„ &V~EÚ»/0tg†„®9=YšíèȪº¨µª«I!UËof5Rd&MJ/ÖœŸ¥ºÂáÊ}sè Ý¡à~®j¢‰–ê½[ÁdË?âo6Ýü©¬CâšãªúóâñeÞ€¨lÍ«¥þ0fíy#“uv¦îÃ5_íg$³ôš$®8‹lø“Ò¦+žv©íÐêð~§å?$ Å#²;(±«©ž4o5ˆ|ƒ_G„©¸P¬uˆT©€¿¨@‡é$®®ÖtWf|éNËúÞ8eI…R@O\€2ñ2üé•Ù'ïòD—EsÓ+Æfž–Q«@jà~£¶ÐœÇ2oæ³ÓûŽÂ 4”‡Œk åÇþ·Q[ptùVñ+t@¢¸Z…8eØ«v£IS'LÎy›ŸƒÖ‹eJ5å‚G 1OüÓ9±×4¼g;s«•FX9ðÜy–—|~HwGç5Ã{KWòöõÓ ˜C–R˜uÏS![dõhý!Ô¨5ä˧ZÇneÕÅ#ºà¢8 úc\ÅvƒužæK¢‰²}­Šö˜ÙqlƒÑœÒO€ZëŒ÷ÈÈA¢¹Y*ŒRÈQüi¥£Bˆ»å—Iè©r#7Ð×+¨Z¶8kã3;ï ï7úý{ž§ý³¤€V ÓNtI½a*Ö{¼-ê@=²u8ÕÖ¼R¨¤K¦§8ú4ÕIuf曈à~èèP¼Û®t’5 +,”ˆe÷šy MÅ>íù•šyL8‡½ïƒU«àŸÆEE ½h²úŸá ± 8éàp£FKc‘Ÿø%ß?ξ 1AÝ\žêpq5ösò×ù©‰œ\òÅ…çÍá ]ÿåÌ'ÜfP¨XŒêè–Ävãø–>†zdÜö޵êxk,´ýÇrC噬ÙQX&Þm;"™BAQyÁz!ŠvZA.þµ{¿”{¶0äÌs¾nD]F4êä0B›=q({CpÝ £ì!ñS9æ`jV7Æ›ã7X@ú:ÑÙÌUëúЛ7°ùߘ)ú>lH£æ1*îòTöÿ ~íoM|{8—«äÏD›´ÄñaìV}ú32¾ŽÏçíîŒE¶WÓgWšjÌÅ€¡q”-­Øh´jþFEvý^6=~µ•×õ/.K‹ûð’9 ï3 ŽéÐÜŸÝ01ÜÜÜf£-8¹re"Ûåıïê=ß'Þ¯ çTùÂ"Õe×>ÌOékÌ6ˆ91ÐÖÞESÒº#8šrͼ›>t™7 7¿¸‡áX³8<¬Ê«1¦Ða”´Ytl š9ûðäeDõQ¤ ³Êê>Y~YîDtàΓúú¼~ùÊøB·'{×™‰6“Y§íỉºmXîVìçŸ÷Íÿçé¡ÿ—&:ñhr‚VÛÍ|%¡»>Jr\3úndqñήt&Ü\†·WàSVFƒ€l$ÿã ¾Dy–UåÆbZµk§ñ#¾ÿÏ(r)FdÝáÎÍG¦¡™€N’嚘Û~NÀºÂb„bœ`þx£„óÁC‚¾Ïdð_®' oÅbH^,Rj„Tªðíf^I‡Õ„—fWè3ö÷< âx ©³…{EŠ67šx6p¾á¯ 7ä¼.¨ÑäÇ}»0ÀÏ4FbÌ]6k~÷Œ?‹#™”=‚»šu[_Ór³ðÞ›»ÉeÓpM\‘ÝöøËê`„«ŽµtNF,>ì…[ 4D^£IËqOÚ”:‘ü­×±ÅójÙ!BW•¯þ„qZ¯>i&Öosù¤oË®ÉõLâƒ1'y¥ÆèY§Z4îÄ¿l«¿?JÜ œÂ¶%&„šþ,Fƒ¹å›ÐúNÆ,“Žê²—ŒÞ‹ðžéžðn,³ƒüp‰` íý¼E·Ào>lµ$lØN[ûö4à~ë=øý¾ü ië<ã`âqöÜ]ìgé®/²ÞM¥¨¬kWžLŸDƼá\ Þ¹[RXp™;ÛªMhízU-Oë;(Cä®.f×¶e8òš;oaz’„PJœ=qDsšOFÝîTnKA:ƒ¿½–ãÞÝ%¤}’zQ’'ºE„¶c°¸·„ª¯˜>ü¾Öþ\g³,U‘-¡AŠêÛ{©%ù[‹•O(Æc ƒNWYÍÏïa’Q.Ó>÷~Ùû:Ë¥«bÚ’Er:*~“|{báRðFõ\¾/³$¢èâÈé8 å=î8—E,9d‹rÂèC~6Y^J ÞQE×Ծܣa ]ªî•(›[rdÉI}ñ¨TвB3“_ ]3¼Û°]û~8Ùfì ZŒô,‰Cª|8¡õL˜æàL,)% c<ô‹‘»7¬öؘ Ë `IµÄ[cÔ:ü˜§•‘ú¼hT?èçø÷mÝÒãð%%‰fCi>ÍWé–‹kXÁ‚ Ûô_Ù˜”ulý^ÅTF_ÃDu¬4KUd´PÞ`Ý-4ލ½Ÿ6 !½6°Ä{ ×PçÃà³/Ÿ_1ŒD¼¬ 2þ\tR¢]ûó}Èh²*ÀÓ‹[_¦^Õòm„m…«…ÛÍ÷ÄÆ™£"/ï¶d9߯oÊt‹Y&Zõé¿Î‹5ÔÖJN”T-dqÔ|úhhn‡ n¤tõÔ+­äĿ׋ÅbTk¤ççùÓŽ#<#ÚbÐ×4‹öÏGݳ&ÔÞõß6êŒCìë¡;™ÅÇnù˜¾7ÉŒôªˆ„è—Fî‘÷eŠN9ù“Ø ÜžàX“ÆüŒ¸ìððuêߥ´—}©ÊРîZ™+ô<Ž9ë¸ã­¤^i a(]·Z²o¯b‰j9%ÚøÂ¯N¬^A¾l[g€žýlŒ¢ðTòQ‹3d%W†ˆvÍZµ£è¡íƒZ*”Õz—|tisÙÈpreäoA¢6ì)wJ0vguI9èðPJZìcÈ‚E_ÝMc`õZó/ß×CPµ„2yÆèŒ©ÆI…·Ôy ­²’Íuü&P¿@¢U˜O‡Ô$¸ÿ¡â”p5Šã'=ý·>¿0™~}Aü<ÔMNlòwô­†Å–=p[Û¶¿Pü‰6Ù‹ ®‘¡†nössKqAÈÄS­ñ:¿Û …ªLR›¦¥™–ŠKÅèçzuþÊD9à]Æõ'¾ZÔl‹×óø.=&ï¡2ƒŸ,·–iZ`žf†^¯ Ç—›3{sL”ZãòRPÌvBÝÞíª¶nÓÁp²œÝ1…ÝOÃ)¶y=ì!Ÿ™×"˜ +ZŽ–ÄI¬´T›X$eüaÍëjÌY¤Õs=9lû…ËöóB¹µ†¡Z@`ÈÜùêÙáÚhhbHae1]ÆöÏ}¹3´'ì¦ûDQž‹S_[‰á$Ö^úLÒÖâŽÑ%1»¢ ju×d-V5itO2ã””'¨1Pw ©[HÙÁhfÚ·ñ ÎÈM’ø;,ºÉÄ=ÔøƒÉôæ†Ñ¾ÖfŒo®É¸VÂ&O=su­Å^2,j–öïz õ?èWDÍØò`ðN»à~[g¢œÿ,†gŒAÜso™—åGMdˆuﬗ ¿%šm©ûå9àæFùt>&ùåU«•:ª 77 ©¢b»_JLns|O¬rÆd¶‰’%$N¶¤XQ?R©jA¹7¡x+»Ó†I›¿þáí2UÏ£¹<ÔòÓ6$r•ôâ›”ÁÑÀá«'[çꇛ’¨¸ ‰1±´­µ_Gtâogü®]¨¿ãk^š  eÒÿBiÌ”zi7ôJŒ~ÄnHj Ù ›AJ’•ë·GkÊ æÔ‘þ•É ?J…uXð-û¹¹xóÖŒsr[ÐúSöá)79­3cƒãfÄ ªBŠy‚}Š“‡6ýA•„bŒQ½˜#!é~TÀÓ†Û3ã ª7‹ÿ[²_sðPŠ›k”ï'¤Ãqk‰¿Kn“Kí¸|)ÿ`r¿,Æ©ÿ°« j¨ÇÌÖÙ¶ù@0ønýZÔ‹÷|ЋÝì´lÕ‹!½ŒâÊ~Gªê(n/Uh;"ë ¡9.XªÉF˜íª^$ŽS,ÝQÐ7ÃEàCU‚° %‚™ývQ³Mïº~¯~VêªvqbÊËIz—·…(\¨ò¡ç}W0ÇûÛ|4ܽªaõ˜JÈNgßT¥ŽÕ¢b­¤Dèó¬Ñʼîéc­0Û«Í¡G&þ:˜‰÷¼+¯ì(&|j‰¿‘· F. B`Ä0>i evúÊXà‘AÀ¦¹Ò˜ã§s6ݲ¶Kƒ|ŒP£”*)Ú*ü-Ø ]f÷ÊGdçs¬Zûîø*C¯Øø;3ë¯WïXWmnLG+-B­"oàœ1)fý¦;eµöÙl²K(gnšÌ4ò4umRghȺuª à~Q¥GùSŸÜweJÜÛ¡2–?ï¶ó ¦2l0- Š}&ϪwÎöV ùf¦³ßÝWÇßt{ñЛü!$*øå^ç8XRåz¨Y˜g´i¯ìlîÚ§@Ü—ÓÊOŽÓökøŠ6¨¿Ó%÷mc õ‰I2~Wƒ91`žÕ©‚ KúQAÐ;Î—Æ Š’õP!RXTµ?jÄ=ÏPŠ{è^¹CrXrJþ&Àîë墪ÑËr×SŒY”œÿŠÈEtfL»FÔ›Ü3kÍ·,2VøI¶Äõ9èðÍùä«sP\õæ’e] EG¢ü™ø&¦ÔME˜_Ï‹ˆ3½¬A[|4LœúKÏ’§£Ð”κÆÎ«L”'jû·TÛéþåX\£÷Í;Lo`’Ïò5üzU‡21Œý`èØ¼nƒÃãM]æwüÒ$â›õó+¸`µ»žtš–˜:3MeÖSQœ”Äq¤ÓfôˆÔ[wì¨õúš­Eç_…„ÊŒKèn—•"}æ5t$ÂçÛ·±¶†¹eºŠ$×jæºi Ìë?Õ§®æè×ãž"þR‘jõ ДòÙ̸" Lú… Êð±ïK~Éš\÷»ÈgŸa?­¹íßÕHÖ™k†·ÐɇšúŒÕLÎÇμ>qÔO&k3²ðÿ'ˆwì"Ó.tË*CtNf’¢Fviž\S¥ÄÄ-­+σíln¸aÆ~¯±û ‰ôln—b0?Á#µJ%×{E+*›#™$’bm|s•Ò|ê\®´û&w¬ñÎ <éǾí.ìIön=å §Æ‚6ü*0°û 'Ÿ;M¹íçRÇ!SÄÆ+öî4^bÚÏnŒ˜¿_¾éDÃïP°f e!РŸªDŠìÖG¦Ú€'d˜¥eƒwó}¹†Ž b…Õo{ Xbð-¯§²Dk–„X«NÎlª´KÅáa¦:Äw* ÐY Pr—b½ù £Û}9ôâ¶ ½´Ê­×rH­×X* Ka*G–1Ô×KÓ™Öaß"’/D&'2Påé Ðj|3Á|pïMqÀžl *$}G¦w2;¾<‰ùÇÏŠÙǼÅÈàÝŸ·Ú&.õ¬¯ù7C&ßÖNU¨;ô¹\ÊŽ°~I¥,÷ÑÅð¤j­`"éx0-cÆM¡‘2/ú®äÚŽ¶<&Õ²> è‡@¨Bó,eì¤dù¤Ä!AÒ°Ýk«’àL”ì?ùn̦0š=ž¨€-Ö2f }ÁÙa !Ë‹C<ç}~‰¼ÔÜxQÝ<×N¬øì"½§—Cqt‹×(.Pc{Éæ¼d›ü i|#b /™WàRýÓLµ“2(ªÕšC×?øJté<Ö‰7±C‡:í ›s¶‘0±˜³RUQ—°•’į»=¬4¾Ÿ~Ò\4ÿÔÂ]x$d0:?žÕoϯ³Ö"Ä)îßLÉHOþF=‹e¬²è}7vñËqÉ0’©YÒÄ’59Ƀ™²6U/õª”îæÆ~EzÙxÝNœgy¢RùÆôÖŤ·”ŸýfêqYØŸäüE§E™É!e«B’æw,WA¯¯ë –é—‹f®mûSÂ(î’iüSfâZÓ NkôÀÁò €¨Yñµ|á¢Fdo 5ðã™ÝÓR²éµK_Ëž´ÿ (°Ió=Œlwm¤¤’ó·õØ`»+µ‹Et„Ùe]ß xu0#ټᒴ½t‰·‹†’½˜<Š$>™]?Ô38J¨ŠA´ß“[ެ¥ áÁž…'IrÉYde7²ßØ“ÒyòIÜ/K|Ä"µ/Fïð—1˜ˆù ÿw¾„·ŠˆÐhÒOº-.5jût  f.I.æ:–ÚN`físã5ÍqT×I÷k…Üž©/úõô7Ç|„qV°I ïeŠ8߯j!Aª ³†Á¶ Œ±¤¨¼ûÑÒºÄaS朜-”†¹Ï¨ÍJý]-fˆþóá˜ËÙÚ»ìm[„Òè­O[õó¯''‚*–çD‡8;=jækôGÂÙÚ³=sþmö°îæ‘÷¥S+lÏ<µ€<†Â,<¹‡i%ºÜ ¯§orX Öqïé[ŠŸ¯ë®4Àsjç(,3»gž²«Þ‰ûükO…f=Ó“ïµØd4Y¡ÇÿêØ›$L¡£ŒçÄUôs'0°5rG¾}”ÄœoÃo!sœ’žï,låB®$öh‡i뉜›Ã­ÀÕà.±<@aýsÛjœRQ>ë2)ðÝͱ”Nb¶ Ìª:'*´& k{ÛüSÏIØË²]åâÙ{»"ºM/á9T¹ŽºÇ¤Iö]È‹uÉ$}ÎÁf©tòRá3*è³p\ 6д¾,¯¨„ Š»‡â;‘¾ž¾*gKâñ­y¹Â¶6V,\|¤ô-gÑ_Ùf±${´ºµškBylžB ý”×úˆÝ-X&©®+Š‹PÝ["0ñda“ieØáŒøÞ3׳ä+ÄͲ«çä÷£WÉ-ŽqHON½«Þ/3Ô[šV w$g66;dAsUèb:?ØÊX-iƒÍosÐFžiSØrXè²"éLñqŸ¸Få+×ǰ6Ç̲Pžâ;)”¬„®V! V•iC ˆ çõM¼ìŽn£—ÆÈzË×_M®±Q¢î^á-q@&;9a:ÿÇ­*\-I"_§?q±§é>†)d©$º6×É*¯¦K’UR_WDnÎùhÇæÅ­ÍýéïÌÞx^sù9Œbò‚ʱ؇»¼¡H‚·õÅ¥¨åÍäs~{ûÃðÕ7Jâl—µB*”ÚÛ¨.*b¾é\J=£Í¤9jVº1¥|Åñ¨[|]¥)¤woŨ ?ø|–6ó­8ã‰cPÓ¥2ÑZ†âÄèÞˆ 1MbŒ¡=è·ë‚ Mß;·ÕhÉ?' ÁêG¬0ò’°‰5®À-¤6…­gC& _ Ó‹–:§ø¿…—|wMnt芅Œy=Lø4ؽ£Rþ­V½„B§ Cüƒ²;Y«Ž¦›À%s±Rí”ë>6ØdPƒn˜½ôñÏLÛnÙ¿‰KGÑV`%úD‰I¹BT†jÓ´•.‡n7ྵŠ+ä»f*S`±ò鄞°Ä*h8m\Z5}[·Ïå¶ñ=­‘;»† ‡¤†ÞØ G|£ý< ½,B¼g›»wÚ¡D@”ê•`¸]!˜tá.ªQâ…¨ † ô…0Øì÷|Ò²Nbg¡6Šã°ÞDSòb¼¼úï@ItùGÛWå•á4ìï§:ìEzj5%Æ6 ×Fôäõ_ØÔOPË–ƒºÖ[cc ÃDËZ*×ðó••4bÞ{P2áë}ª`}ˉ•<[>Æô´¹è#~éöŠmX™ŒVc³°±OôÖbËáËÄCÄC›Íç k‚´Ñyú·’™~\“ÎxC(½M'W ×r'co²"ÅMû¡„kà٤꼋Cê¬ù&TTÇ'ƒ°•-Àhó|XÐìÛÂv-‘˜NR:˜€Ÿ1=ýC¯ºaLFý„iL˜Ûµs¶~D"÷¬MÉUî¯:7Á×3Ñ ™•ˆÇÒXXAÃR-YFYcˆó\˜ÆOä:ΩÏÐE›·:Pž©ÖÔÅÌË@Ô\pø¤íUô½kñíh+Gœ¥UTû.Lå\ˆÜÎMÜGìxsö,u¾ÃÐð¶lÙ˜ëi<º.émú´ç p‘žJœÐ®iþ·€q&Î¥úý׈+ßêDµÉ¸ !謬¯8gØÐÖüÕe”Ò]eXVüí²[šBQ?èmíB¡ÔêÄJH/ Ží+ylS z<éá¦ÈWEp‹9ÿ3aâç® Ná˜,¬f“'U§ˆ´³B±Hª“¨iêâ³™"%ö±8øe;A_ïÇ5d¤)®@ḃ¼yÚ)“×4;Ùn'«yÞ°N4¢Taí`6½ôõòˆ”> @mP°KL‹¥ù¢4{U÷\ÃDF’ê|Ôî0þ×®Ÿƒ œ¦YA¤Í ~Ðþ‡p1&®•+»^ºùIMî0€P=åFÓUÑÈ–ä󣟻ôÏͽÃá± ¶·uqV•ð±ÝšÍÈ@®w_aG$ÙÌ,)ÙYíØ&ö7£ä[„ÊåCP½ŒqOE(Â!ŽÖòpc»š}éW¯Ö À…Ôü6Ã,î6ïu.+h 9ä­)Û:äû&Ñ´¯ÕÄ϶"¡…–»sÃ=V½ø^Ð?fîèå‹Ó&)!ÂzTèño%ÍVÁ³ãšiQ"‰\^FnÛîØ`¸ÞÈ\Dø…ÇÆ°JÏjüöÍ Øƒ%õ=ë#„¬‘ÏæÉ°!à5«ÙŒøôíÓ!µQ j[æ•d¨ÇrüÎ8´F¨`Ò7.£å—´Ó[#Ô„nñ‘h,¤§‹ÍµìR·Èò©í";^ó­ZÇž!Sõ§š÷›°DQȵ³([š¾ì Òõ»ŒwE¢×®rû熬Ùn•!Ò'û†$·‹ï“í½cVŽžô Ì /ƒ–¬šüIòH>˜hF vÙÇ,“üpùáÏz§Ÿç¸¥?ﶤ^ÖMŒOºÍZ”û÷Gu(ƒîÎ…+à¼d\ì~éy¨`Q0uÆI‚¦+!N V"4ýB= ~ÔÈ|ÑT†áû–ÜŒŸÝÏž‚®m'K ÔèUÐÔHï.ûôÓh¾¥³O—UVt†ªúö9n/Ô›™Ù““ù§ðg¿ÉÆÕ¾‘õ›+n¤‘§ëš‚¤}zDøÌ0%«UÈ‹;ÎI`ÒŒÉ9¦ÀáZž„ø:V@D3WÛ5ÒyÉTy Êç(6tYîõ¥·nmοõ(ýõ Iõ¥ù„’í— tÓwÞáe¹,ñc?Þ¬°ÎObb@,oÖšÉ €} `D…ì‡?e^®WJ€ž—–H©›9îÕÈ­J‘kÔ»Œ>ëA×ïUôÄ·§ H£œŠ[vÆ œ¾V§mÌì|_øË‡<“éTØ<íS”„#È ‡kdÜ qÁ~ˆ&÷å+ž4ò][H¬é[:°<¦ º_J1.$ü*–ÿ"’¨Z¸Í–Ç¿;îš9cJ”!‚®2 ^šqó‡ÙRt?‘¥†š„—HãÓ†=‹=ä±È¨»$SÌq·kæRFZèïFÓ˸oÄOŽ[÷UHÒ±{fjË3ÄŸ@ˆÇÊ ‚5cêÉkòƒ^5i++õõÒxqVư;åùùZš…@`ŸÛü‰¯ê\ŸqÔ§ó¾›hÔ¯ðñŠÒÛݽ"Ta_”špç«3ž¶@ð^)OŽ€¸ð+ÉCQO`šS†³X·9NÓ!xÓºþÕ=UQf3'‡ÄôKIO‚NäzGVñq‰ÀoµÉŠ·e®_ÕØtN½§–ª8).8ˆi¦m0ÇàþqðWÒä,‘F$ZoèL'|ÿЗf?A¨"·\ŠÆ(&ú0X;Å© ÎyW-Ö$ÕpŸePꇯÛáø0—cñ€¿GGø­Îš1ü"sq¡)'±v3~¼Ê‹¬!ÓäŽ}‰(æ7‘—2´É9Üg3:´Eoý`FíT*,@å=´‹/¸Gj=éZIÄ÷ǪLÞÝÌš’¶ñŸÉ¸ Ÿºªg,6 ÚÌ¡•³­Yu›z_‡ÊÙ=^']ïì¥?dÔ5¼² ƒ2'1ÎÜçå@dr€0feÛ ŽV·éLð;Ÿ·´P×Þ»HŸ=é0œ3/~²eßzÚ”¥e¨žO*¿’û x %ÿ•ÿvRf¿`€”CoÄÙèÐó8Ì«êQ€Ü(n¦þtLÔ;AˆAÏ„a òŠß,~Ø’:ç!èO2J—–KS ر¦€£Ç=ü Ä}iVyyÖLSéF¼þÏtÚ âæK¥báP·ÉtË "`™åÖ ¥-k쬪8ÿæ&²€J Ó >òNË9•Ò³ šìÁóà_XH éäÂØ­çH—iç{`ŠÚeI ³¼ô}ÁådÍ&(Ñu¼ããš i.Ø7лèì>¡@oYÖ¨k] ò”€Kåÿéx•üÐmi£$ˆZ˜¥Šòhˆ8ïÙœîôã©1½ÞÎ6Õ™êf$@$4ÜñË# ˜M¿ Œ¾_òãllÛåé·+u¼J^Ϭ‹E¨6䠋Ľ2á?Á£€o-›Û¯ÊÙøÝœpçãQóJp¡wަǎJ V0T•€ÊVSÛ³£!yÅ.nIîòÐêÄêæ„…%`é)Œl!¨çs{‹3 ™ ¥çIÁy ÊR¯ãÏ¡ìBì4 1áy ÞVŒ)eWßc endstream endobj 992 0 obj << /Length1 1864 /Length2 13696 /Length3 0 /Length 14851 /Filter /FlateDecode >> stream xÚôTœËòÆ ã.ÁÁÝÝ îÁl€ààînàîîž`ÁÝÝ=,\¶œ³÷ùßZ÷.ÖÞ_UuõSÝUMC©ªÁ,n6Ê€\˜ÙYØ’JŠìl66N66M‹ð?v- 3vøW„¤3ÐÔåÕ&eêò¨vÈ»ÚØ9ì<ì¼ll66þÿ‚R¦A%€<ØA¡‘;z8ƒ¬¬]^÷ùÏ'€ÎœÀÎÏÏËôçr€¸=ÐdnêP2u±Ú¿îhnjЛƒ€.ÿ“‚NÈÚÅÅQ€•ÕÍÍÅÔÂv¶¡g¸\¬ê@Ðù#ÐðGÉeS{àߥ± Ð4­A¿`K7Sg àÕ`2:@^—¸:X¯»4ä*Ž@‡¿‚ÿ `ü}8vöÿ¦û{õ‰@.657Û;š:x€¬– ; @EF‘ÅÅÝ… `ê`ñG ©üºÞô£)ÈÎÔì5àOé¦q5€ék…×1w9º@X »?jdý#Íë1K;XH‚íí.”?ôIœæ¯çîÁú÷åÚ:€Ý¼þC–  Ë?ʰpudýàrrÊIýójBùÇftp³±±ñòó€N »¹5ëhz8ÿt²ÿa~­ÁÇËì°|-è²¾þCñ‚˜~\œ]>^ÿvü/¡°³,@æ.3 ÈåŸì¯f å_üzÿÎ w€>Ûkû±Øþøûï—ák‡Y€ì<þ ÿóŠY•TÅUU´ÿ.ù¿N °;À‹™‡ÀÌÁÍ`gçàð¾~øüoUSÐß:þµVÎÁ àÿKîë9ýGòÇ¿{€îï¡üo.eðkçtÿ4º7›ùëûÿçvÿsÉÿ¿.ÿ#Ëÿk£ÿ_E2®vvúéþ øÿñ›Úƒì<þŽxí\W—×)P¿Î‚Ãÿ Õþ5ºJ@ «ýÿõʹ˜¾Nƒ¸ƒÕkG3ó³pñüeAd@î@ U‹¹õ_Mó—ýÃãfrª‚! ?3;Ûÿñ½Î˜¹íë#yíÌ?]À×úßm¥ÌÁÌ7ÀÔÙÙÔåõª_‰àÅþ:”@÷?{ÀÊâvy]x-Ñ` vFùã^y9¬r˜þ"~«Ê‰ Àªú½FjüCÜÖÿ/€Uûâ°êüC¯9uÿKü¯‘¦ÿÐk¤Ù?ôiþ_úã4X-þ…ìVà¿ÀjùþA y_ÅZý ¹¬ÖÿE®WíÖŽÖ¯/Ü?¯¶¯•iû/|Õi÷/|jÿ¾Îë¿R½N9+ø_ø*Íñ_øªÌé_øªÌù_ø*ò/ä°ºü _U¹þ _U}ü¾ªrû׉¼ªrÿ¾ªòøÿ§Ì]_ßÒ?çüµ¹þÃ>Ü@ ;Ðeql.hSØþ«ZœÄywœƒ }ð*üI{Gšè㾚¿¤Ðý5g^Ä‚x÷Ì^Äýö1GñK“­>›­ÑºwZ„þb};¼¥Ù6“÷¶ðÃ1DÑ•cO¡«KÏ„ÓÁ ÿ¼Yý›ÛØ4=“Óåîlæá{¡wÍ•wÖ爴',h0ãQˆ„||œh0♕5âÓ3ro!Wbã§ d2‡÷i#Ü[ƒK¥LРÍ4’£#tG…›Ì#‘Ôƒ^b“ À4ÍN¯4ác,ÿM{àg:3Ȩ†(µ`–ÜÎÄ•ìÕY–Ný›—ɘ{E¦7¨õü´Fsm:* ¸Ýœ;JqJ¶çwxC²\-öê&³pH*·t[#ÅVlC¯] ›`½9¿£ž·ö‹è}¨b§ÕöoœZ.WŸWª(¥„³Î±â±/dê U|/18nqÇVÞz:jÞò]’½ôØ…©`!ù¢ƒ‰óÉÐÓŠ”“‚ѱ8aÞšGÊ ÞXÒËQöŒ8kêgç‡<ë »Ð˜×¿X½N”Ô·R P…º£c÷~jó7nštžKt;Ù±Š÷ƒjͪ[¡¿n,Û¨¿ôboµ êÝt]?õÞ©7Y¹G»þ:[¡)Ú¹Öš±:ŠçZî`JôfæªÜ•vò)í+ò†§««~nµã<ŽP+3óå›juDçþÌëX`ñY€KÃÖ®2•íã+ ôì,>uNL/G9ò+¦V¬Â¶6=ýMÊÐ×M¸µ`ʦìŽ'˜•ŸLï-" L‘¤-ßûhþÙ­; D<à ^Y^CÛ×”¿bwù˜áU±?À€x-J%0í¹zZñBþlQçUå1€?-ùdà,š‘ù`¼è~‡¹)t?¦‡§¿JßËTE“ƒšÁ:rý¬n}´ßY¢ У 3 r?KŒv‹ ‰=;©–<Ð13é+ùm›³¼YÍñ²,ÒºJÂÿSìFGRV‹p‰E‘²ƒ ~iÇFï$Þùœ½«þbÿ‰0ËS× U¬aèÅh1Ý8A|i¯½Dž8"D™Pœy3L˜ã‰Ëˆ°C׃Ç,[Y~P E3ÔˆçY#‡/çs~ŒfDÙJÄ1Y»”9áx"–ï:;àÍ9?üv^tˆ ²_Ú0ÆMùÙfÒĪ/Ù7û„z²SàP+iïnYWùÎRª°0 ‰nL3|>ZAÉ–†Õ úmU/mĘæ<«™µ`1›4”&“u¦ ›Z,³|æÐ˜Mh(?Õcª&{ؾ5Š„¶Æý›Nšê(4¢·©k{&2 Á‚«¸X¢»H î‘ 9 Kß‹CÍÉ+…!ïRáÚý‚ºÀ05ß÷cƒÂÏRE@{Ã_!£óþw„yÚy†` jéäê%QK4ïþÖÌÔV ·öŒýbÀÉ/»zÌŽ­³H[eMÝ;< DêSÓ#æÞÇSç¹”»Ê íøÚ†•zKSžFeºíììNy‰Óº´þ\_FÁ4q2[uÊgCL棓ƒ®‡Ô§|û>Ýd" «è¤¹¤­•¦ßÈÜ”¾±'Úé0Ý[ Ÿð ×®ƒ—2Ôž×1òÃÁõ1å"¦êˆPTçÂŒ3‡È9ïÇÞrüFý쩵ЎÕ|~Ð%ªÐ*Á‰ØÔÇúBû•öê.æíºÆ»ýO×à÷<â0`&‹e$9vÉ—(q¾Hüïx¬Úm6Ô2`‚òlØÐëÇñÀ%þŽŽã’)vjš&̪ù§£éÛ$Å£÷–ÎAgŒqÇdym¤Óu8—æ•8=Oå€^b:žõÐbB…ôî†ò…‘÷¾6t„3[2“ð‡Z5½å ëÛë´§¹±ÜGyô¶Ýëà ùIZh|Ô° < nuq)ÓH)¢GäGÔ ¥÷‘âît`„sD»ÖTͺ¹˜õŠF?­¦~Ù—¡® 8ˆÃzºžËåå³={4œn´‰Å5=~ñýÔ­ÎgfÚIßÚOþ [®ôÇIƒÇI"Nݯ§e¨”èò°ÂÚÏ.}0²3Q¸ÇÚ2Cl»Õ½5ÈEû X½ÓUñIõ)¤Ý3.·ÅLëËJf“ÌyæÉ3OíSãJ}C\UÛ‘ ò¦¡ØO5ø0eQ¦5’‰6ãQŸÃÝʉ©ÄZ™ÁçìKåf5´æw÷‰ógn’î±:·LÓ—^Bó¥“S–@)ŠnGÒÌ.4ÕÿrÆ<õ¬²ceØDX†x_XÝbñýÍȈŸ9OÐF q†YñŸð›dºÈttlî§(£1¯Pí[)D½io.–JA| ®”»_c r:æ+;.ѺýÄaòb~ŒÞ&Çk~:‚;bFÇEiÁ´‘Ð#TÐCƒè}Shøiçô&—dA¨U¥ÞñGì‡(ôÙô0³í¢ûCÈ<ýïåŒdvDAo¹ ;Í! ©XûÞäÃÄ1¯©2"ƨPN'µÌüÁ‹È ;¤¶ÝoôѩԸaEpÞ½lîÇ £¨àÕJ†±–uº" vdƒÂUAÅZ¾L…éùæ¬]†Úolª½ù‹³…› wY¯TQ щÅÚÄ4I£‚ÝáÞlÉ~ÞšKvÜÁw¸ÝwW]¸;ñŠSõ¬û.6i$¼“ôjµ­À>Žhþ@ÿ³N, ˆ©ÜÇOI“BÄü}ðBœôn#¢šìáÊ(9¿îÞ9I;ß,Š(Í;÷(P§ÙÇÍ@NŸ g)®*oѪI•¨¸Ìµ6î0™Âi©÷‡m> [¹õ ±É±öÃ…¶ô/{zRš˜“àͤfÞë02»”Z[vâ\·3’Æûé̱"—PçnX|Þó.*ŠIM f©ÍYî?Œ;ð²Óµ©r"¯e•äÿ ,Žs¸Þà›j+ I;Ð}±¨I¦Ü ñ¨ña•ãˆ&¸9 ”p<© zЕ÷„„ltYºÏQKÓ´¯®×}3Yãxcî7ƒÄ¥Ÿœihœöè͂۷¤ûCöÃ&o’±¾ Œ¡½§håvé“´u&šlµÐÔ“1Îüà“ÅÊ3b¶¬â‹*6Th—õ#…:®/íîÅ ÿá £—G)‹Š©=VU—ûùD+ѼƒÑÄN æ‚j¨ÊÏÓáËqê>íÎ;1Åõ€‹áZÆ~W÷‚¼`–}|ŸëJ/°íRöæõ‰àÇ¡Ë=o…ˆÒÊü+bŸ3†3]ê 8¦ ýª×kóÆÇ æ n¯d¥¹owÖq¨)u¯i9õ!*‹þ¸Ô±ˆoÇe=Yé¶uÜ3PX¥Sh J·?5°¢9pL†Þçô‰jWÆ,ÆØ˜Õ:QØJLBYr¸Í£´¸4>Å~E‹¾ðI$8ö5œ<'é[±“Ó}ËdWÏñîɦ=•£&8Džº‰\¾ŠªZ¶)>Xhˆë!!ª0H.9Æ× ðÏ–^yö!¿8ϳO §qyCð.ãä7¤dÙÐà}GÈõ&¿Â—Ú1‡÷|’í_Rn9ýÁ5y¾ˆ)Îex<¶kî/UËžfJóxÛh?Fú2o¸1²äŒ CŸßj¥ã»ã$U‰/ÑOYÄ[3X1-Ûw;âRdám2ºƒ Û˜îé©ö  E¾Û·;…Trä¢}’£¬\d†ôÒc׌¦÷޶ï'Ì*D{²ËÁi ô˜Z3ä³2Nûðx=¹¬… ‹ÍÙ†ü¾µQ-‘ŒÜÛþ»)>ãöü¾r–˜ˆf5=Ãì¸ ÉËé=[ègw;Zù‚´ØYÃa%~ˆÐ¼üÜÞPÐ:r¨ëÓ _λB™û7‰‡EÄ~ãEötùÀèÙ¨pDÎ l@Ϻ3vŠv©ë˜ÿ ";os-œ/2=5=*'ØO{iÞkGíØaÕK»äZ$ßÓ iù|cÃŽ&pbåi´Rù¤ãUz€J†SmöslJÈÒo0`ê—ÕÝo¥„œúO ~_8ñž¿aQÇÅXvIV~SJŠîx\RfË[t¦Þм|þ}|ƒYÌEÂ.5jЍ7}‰â´/È¥÷‹£¹ÕQÙQ½èpwhT: Ô^…^ÜY®eV!ñFèžKÌøT#óÍ › ’€µ*O äÛ/(PAî’ÒB˜ ™ˆóžélgMkrÉ-kª+[æÿjS›(Çûã:ׂ֮›`§’-ÎèKˆÀ.Så–RY×ðð’å!öU=ÍÕs¯2Ñ&oAì@]û²þ—Ô‹`ôjéÆ4Çn´—<4ö .žë…@mN2JÇ-2ßì­¬šø±,¸óC\ùe“µI‚¥dl•ÉÝ5 ZZ†ž»iœq„*×öi&¸ž×]„š×ºÁádV9F;Ꜽb­C1c÷»”XXñ_ç-í®É ¡²áß8C”ˆéˆ1˃;ñcÆyÏ6¶'y#tÞ›\k Y@ \Ü…By—ÔÞŸ¿91– 0ŠÍ ø’IÍ,˜Ö†‡Õ­n½K½89¡®§=¸µÉ…“æ6;æðË2v‡{"tý:ž¼¶ûs ß>󒳸Ôò0&3¶^9µ_´«5£ÞBiXœw!H9!>AÌVhŸ?.’G›©ñ«ÿ$‚з’¢óÆÇóFØ(µ©o”ŸcBDà!»C²gW÷C„0ñ¯rN—ì&t1"óIÛ–®°R¼1Uãa ¹0Æòé¨A£-ÝÁ,éÙ>)²|Z¢­ËJNdåÌ$åÅiÏ廋ñK¡Ìvì !¢w}&õÙXa:H93}ª×Æà=ß „>¿Û§ãìêcVÅAÑ™XÂouÂYAXkg$@>£1Š T›³äÅ~llKøŽ‹3é3wºRBŒS%§ð‰xŽœÞ»Aµâ'¿ ã!°‡Ô}Ɖòeºw¾ìµOz—h‹kËøÎÛ_³ai½ÍÃXmµeØŒµ*úìˆ; Ûu@“õ2*.m¢¾ Üq–{žC/|ÄbêÁÞEpý~ÒäJóÆymÜzè;ïR aJºÀt°}!Me¢:¥Ö¬—Âc]ZÁu7÷¢¬ñ à‰üôȲbŽð‹ºS§&+¶%ZÒpB\U…‘²\U)cVÅúZÁ÷@Ïÿ¸É2óÄÄ|V°`ìÚ»Óx¶ï_¹à[§<â!I·Y»K• ÉJ_¦Ÿ:Â/5ÜŰ‚‹÷W4·‘F »k†´* ž°œÓÕ¹=¾iŽà¶ùu$ìßzÀ¼Å½:‘. …HÕ è™S‚r2,8¼ JiÕSì°éõ|‘I…-» ZÓ‚áé°°s6þ˜éÄ3†dÈ¿†E`vjÈa}ç…Ð[8_ïpÀŠeHGu<³üÂ,gT„ÛIà.¬Šîfw»¹æüR¤” ¢¿lns'GÞÄ@s—h¨|ëg!û•ú\Å8ïê<Öæg}t÷¶¥œ¬wW(‡ÇìÞ½—]R©}í¶¿ã^!Ÿˆ0ñ7½ „ÊvµŽné=þž  •¹ÇFhÞ&F9”šKj#¯]g¨Ø¾a€ê«!?kɲ\öU4Xä=­dÔ*zÚÜ ÍÎî~fÁ΢<è ©ßÌ6±lZ6‹xÄiN©!WŒ!]sŠ*ˆùmCÞMìl“É3 ?ÚëOÕ«q¼_>‘¯^!ÃÎM™+,Ñ<ùU… wžOQ7é©£¨Ñí^-=ë¿jŸöRˆª>ÌWZcKXÎæÉýa™yhüì´Ýu\(ogŒÞNÄ ]žÞ„>œç˜â‰Õ&(ßþ#'t¥Ä¡Ü‹H£5È€¬ÝÐu}¾óú=s*ÎU+6uÚñ沫´H8µÙ[¤ëõЇÐX6ß–¬aaˆ/ânåj*Oê—¼˜ïìëü¦¥;–9/…-Ÿú#ûè Oõ䑼«s¹9ûµà–P¿N×O(H=­aܵYft4vhM)¨í¥`’dat ú†Òû6E¹ì÷çwJH*ÚCä¥7¨oNˆtZÆ9Æ23¤ã2ÎukÍÈä;]H–ï»ç~×ߦrÆ¥¡ÐÙZ%± §ÃµuäœÉČԜŽDç4ðXM(•NÄÄ€¾ÄígÖî࿃Öîa¸`hvaÏ/?V²«ñâÍäG.òLöëé¹£U šw— ¯”$|¿½;vñå –™'FÀz©Ç‘<–‡©M-ŒUCñ}êÖ£ê‘$×1”gE&jZUâ*dfÍZöx*'7°fi¡,òvíËl5¹–(ì›uÓÊ‹+ÔDKœïØÍ”AŽq¶f~‘ðÏÒž £ý¬æþØ]áïZ`æ;Ëe°eÏ.•—&€ík#ù0ˆñ¬ë^²påü\2[ý|ˆñ¿¿ÎT)úÜåòižâ´ aéò?­{FÕI‘}Ð&±P¹ÀŸê¨c#›Øí,Slv_JÝoAÏ#ë%HJÍ ñšªÏ§ÀødÔ©“8¨Ýêš%˜úï]PÓ2M®ñmsÚNî*ÈháDA+Ù…×J®ÒŠã?‘z³ ê›|+§õÁVvh´#÷•ªél1h¯Óº^O×b©&æzQf|œ{Ëa&­ý@Y[3|îœû3Oæ˜~„¨Å ÛK-ÞÂu9y]6ÝÏ0@ú¢]­Åò‡Yæª<©vsThûsïvÊe^ª,<‰jMZôOx_ÏØ]ÓÔý¤Œý49¾ × Äºéöø1ì›ö†CQÜ’;q½0lå D—¨c8š£ñK#² l·<‹þìLyô©Ja8› ÷ö¡ãñËx?þˆÙÓs´#Zµ<.çÐ*äð2I½¥Ý2Qz1¦o@ûuLt4ª1AçWM(Ê­Qlf>ñk•\•iÁ–@–³Èçh+»—Óûž²*bÛ—"iVÕäaèÙ@’ø`3¿D[ëWÐç)7Ô£n‹x††}OïËÃ)UØÉµú´T Xh‰CH€5P¼>ÂÔªBÚ¤s<ê}Ï—A7õ>Š-Ab![^xæb.˜Gì«Î³åOV3÷cÔ º´ñÌ¥½=ø¯_ò=i›v­Œ&i9សÈH3E›Ô‰Ö”,ÜÉ ,q‘üöÎDF½Tî¸6¥[$ÔÔ)¦sº•U”)Ä3ck_g>=¶t{s+½Ws»–¥È¼GàŠî×å—'$k¿¸‹þ:CŠj÷]i~"+ èƒ4×ÛÍÜD-±ƒZüfó%ERâ¬Í²Sõ5Ý1¤¦z¬(‚h:TβäÛ¬sFTy ¨™v~÷ëMK‚°Wб5MÞ–©"IaHâÂ>90k9>b)ÿ˜ü¾ þ¦“;¿õÜ\a¼‹Õ¦`æÊ>u Sb*DàégÊÅ}‘ÛœÑ\äøUÕ£a§zl0£ÂYlŒðõ¡N¢VBЮm{R˺_´œ©oÖæ[ºBŽÏ"2ú£BÖÕ†ÿò«&ñË0L}†ä\Ñ‚Ol{;ÎŒcÀ±‘Æu–ÈfoM’Œ^ ©f§~&6ÚÖé†BS¯}o¾»—롪9u{PÌÉšÌÙ/Qï,Û÷ãH°Ü ‹?yžŠ2ÖEȆ„„G—Ü—؆8”1#Q µ™ì¦'Ö%ªçÓâæ $Z'É(î]è ^v<ÿäg ×­>½nŽW´‡—x)\b~~;¹t)på`ÍišT ëf~¶KÅLüÞ&W¡¥dÌ¢¡gø랬Ҭï+óó±]øó؃Ÿ4ËÚ”šÃZy…œG d+Ë“Í=mqcB2tÿ;Ý·l¯ÂCªŸ—¸í¥µ{¨hK›W§ªp‚ýMƒ?x+}L·òÕžqS½wàÍÞ°„³Þè†á„É·ñ>gPk¨?Þª^Θ‡·™.Û×#¼V»Q¾†Oªú‚mRH0}ôÒõ|xѼJÉx*DâŽA¢:Cgù5¢†A_†Eìt®8Ф뽋Q­žL\÷M'oßT°' q1K9^>&|Í™Údsö3KRæu) …ê±Û› t¤´0ÊtÌÀÛì­j—o­ýIº*ÂÑ¢@Ä ”d\¹ÐòQõ+Ý(?íl¥·CpåÊv` %êlÝìSÕç‡\$Eœš~Rn̼8âÆóL‡Úîñ6û,•&ûé}„_RlG¾þ±…V´·©ÜŠT¿š-a™Ôø/ ˜YY-ž9Çôž¾Üjr´oë 8}Á3/ïêÍFóɯk» ÿuÕ»ŸÏÇŠojd{`C~‹äL£–+¤ùÚÖ*‡X \œë䦇Wˆ|ûÖU-°Õ—ÖZ½­T90î©´žßjð5MÉH¨‘¦1óæuÌÚ:—Ú“;8x}?¢y‹æ¤ ãÜŠtgæwu™-•LÕ±Óe9‹¿ÃKóÌvêRD†>ß®,þFg>Ü7yÕÇÚܰɡ“€¾xd*&Ò–&ó¦¤úˆÍá…3<4…Q®fÚE–rF6‡"âh-6{ž<,îj¿!­@…²fOR·KË!¸ŽÖ¡QÑiºåG;ÜÊŒïuÓ,3¾¶‚+—µß÷úOÞ$ÁÌEQì—w¿£Úñ*_˜/¿£þP¯ã [åÖQµíÕSH)‚ÐkP©[Å*ž„7°,Qý¼¹"÷Öï œËTó™f7ù¥xF÷\þ€ÆÔ®û㊳‡—Ëyä „,ðMÀû…älËëESóÕâKêx¦Kê^5‚ªZL¥‡COs2͘!Ý‹ýç v:y8Õ f±š½°™¸Ùè_#Ò‰wß­Œ®¥¥ =Íuð`’Ø?¤”æà«GKU[ï¥ 7´=¡õ=X¬RDcFðÞr›`v*˹G«ÔBôº3Ä×ùÀbž6'n6Ûf’ßz8ÂOUT¹Qm2o7f)QŒ' Ì>3Yñ ö›¾#ާÞ)7ß#ÐÜîf³­@óÐÄ^YíW0\Ö»mÍžz^çÙRŸvF ›mcó,fæ' JÃ?7<iY¯1[EqS~<}êf†ñ °»Û LiÌ ð’s}rã¡Y󉤌r‘Ô¶ bp±ÕuÀ®q/hàrÈ…œÉÆÅpãûß;á7\VÎqâú=Zdü~ÐÎ3KãgÃè4~$˜FF¨ýМ0kÁˆ¬¨¤õ#ôtÕªLµZ .ú&{@ò²òùa%SkG˜WÖº…1ŸX@÷Ü”$oÏʧó<:á¾zͧTÑÏ3ÁjÁzïÍPC~ ¸¹èتá7‹Ú˜ŒTuL¬y~lñh¶¥Šûi gªÓýÔÜPAÿ€^à©›…!šçá¿+õi÷äè}j’™ õî¶6F»ŸgäƒNG4,™„)Îh8\Kx€s½ j’“ælåVFògŒ8{a’›NôBýïôrK-’h…²ªj:)/¥î6´¯7›vÄ&Š\¼Š}𠥇¾"[bûÏ=v .ÑL¹…†Œ;)Ÿñ§cÄœ:¶ƒ˜kÅÐAˆf¹G5:f.š^?X—×ÎÃͼA– a^ª•ù{~BS/ÞEÀ[Fâbì-›S1´Æ7X}ó’æ±ÑH,C‹­¨ÙfNÈLÓ3^œ¾ªY ‚­‡õyWÍ”’‹l<‚ÈvwÓ)ñ£âÁŠñ‰CƒÛþY†³•|oy¾|¸Ykëxï=¶r§¨ÃH¹îqÈo´_äÐCVë‰&ø´™È.¼à2CiýV ¢q¼‚aPª(@4dœ¨Æ ûôë§íÖõYý¹uùf÷Ú~µíϵyήUÌÙé;ìš?ºv<ø¶© /˜Åó*DÌÖÓ’Á6ë,)NÒ$ µÕ=lÂUMÚ[l4÷èK@›þ옩‹†w=~Þu8 I«ƒÏ¿LV¯?D1Q†£«àw¾ ëOî GFöK›\Àžïµ³Ç¼‡OœZv]Ò6dN¹Í·›xÖ(°¤éSÓÕ¬Râ·ÞqÃÕìGæ~b÷żFÅCê 2CHãeý†”…Å×´6u¡<èoäçúÄ[ábÂÿ•ÑSû¨‹Gk9Š0ú†‹ÛñƒÎtz;CÛ88…,Ò-”vÊ ; [¡›î;\|D[;okBç¯Zä!÷.Z†|OORý¤òë¡æÖÖßeý –.}>S¶Mø|nbUȼƒÄì:¹óÅV{cË€AíDýú½¥ë­þÊ2sø¸z_²ÁÅ‹ù/+¢ñߥË@ä;Ö”D^™è$j+ÍK_×àó• G÷2ŸÛDæªôžeY°?ÉŽ`r%'gÅ€žˆ÷;}Ÿˆ*`VgßûÈÖÇ‚ãÑ"«ÅWÉÜԷۇˉ!ž´ K×+ħք^)?µæ“«¥Føýw¼Çi]ðCÈ…ôÑ÷¾m˜¡%¦ÇÒ_7ð•×} •Xw©T8€FÄcK®€Iú­Ò¢ûl·{OH±P,d¢KîM;kÇ;sWÆíi¹ÒõðÞ»ó©.ìnÌT”¯»ì“€¸Xœ³Z€)ÉNÕ¬•4D⌛;Aÿk`r X©/Î?¼±ž¥àÉf\:ì3”nÂþ³ÓðRòG¢=÷±1ÒØfA™#TIÖTÚ®uè=£·ï[(¯ª®%½¢À.\nU¨îÊX')ÍIì•Óï »ß)²ã’]½¯WrÁe\¾‚ÒÎ Þ $õÇü‰ëhÒwf˶9{ô|ps¹’-}{“–º5'Ï`ü!i¤à¤²Ï¦›e¤ß¹ ùLñ­Gn›*»ép`¯?2»úÀ÷.Ä\÷K씘Ž7kÃþòrœN‹žÉ 1šÕhK.¯ä˜þtª U¸¥ÛAæÜ Øîo=,©)¡äÔ:ó$5Is³³Öhï õ쌵è›F…™½‰¦ºŠ0È»KË>QT[C¾2]Pãÿø]ÀÕã%#Dô•ÜúS .§Ç¤/ÀEÍeÙï˜Mi(ÄÉb}ßÜïþ`Nù½-©v7z›øtƒ¡Ú±Wp€9;!>´f …›IiX×¥{•ôÔézÒ#6t‹r”Æ2BÂOÛµ(’tØn-õ‘BÆ“›îØvÑ'ùòã^bΓ ÌF ¤ÿœ…éæžÓQæ„Z†!MÄéKį‚ŠQ)m滤ÖT‹ûãÔFž‚6Q4VERBÜZßM¦ôáFTym‚€Äl_ò‹¡½øÒ½cÔ¹Ô1rŸ™+2t ãÀ§0<dž>ñ£êóÃUù+ŸëO‹•AÑœè‘ÛÕ‚Ùϧ ìªYRl„g¹ëªoëS6».D¯g}ò&UTFXkOZpD†®GÔ1®ŽßÂÜCèõK1©éS-›QÏŒÅ2Iv_ ŒÐ ™“•öl𮋱óg)Ђ~##øMe©¯ÅyâÉÇüќ۽Ã$»þaøáîÜf´meÆwcd@R3ŒõÈPæ{øâU…Ôf’ºß{Tpxê¢mïh¦o®òZñ;µRõ$LÒ‚YÔl"e+`¶ÇÝÝ£­XT”û>‡Â ñP.µ×õO×FiÜ>1>ñbV2»úÑå(ÂiNaﵯ’á€ã¤(3šâ8° ºH!xä´ÊJÇ£\ìRx 9ãVÔ>`N u)Yú[úN©—Xè/޲鱀Iqxp=ìSJv§ä³®­ˆᾄD •$P™fÝ”Ês blå—Øô†éçü.b.a•]@†rkp1–ÞY—Éæ(KóêOc³ÁCž&qɪ^…ãw÷ÈÕD‡x ŠÂ%àâ^ mdÛkq¾×ö¥}ùðP`ìü¼AK„a¢®Ðû¢­!êÉ¥BíqsÁáä!ù6õÂјŸkyΦʎÝx52éX\óæm«†±©}¼àØÑa“¿¹µ¢ <–b‰õ #ñ0Ñ[¢ì 5ë‰ïÉË„ÓjÐð=¿BˆòÛRè·ÌV1Y±Ûåð.1;{ $C³ ØŸçƒM˪L;½ÂXƒ= jYŸrcƒbzWFŽjÀÀWØã£ÂRS‚˜YÒ•(J ²Üdöõ¢ïÇ~s]¯}Vlb/o-«ŸG¡ÅRÄÎÚj7y ÛW¼s]CAri!5¸<¸«h9ðçiâ6¨EÁÉ ©b]œ“µ˜ŒhæLGyYŠD¤ÆαïC¾PãØiX7óé-ñ*ö7h€2™NB74_»4òbJÞ2,̬†\6~e÷Üu?,Ž3Zxt¹ýAô‹-HB%º²mcËÿÅÐ 9ðÇs‹"l~9aX•ɺ;¢¡mC;‘¢»æ€ñ÷}¿1ÊŠV¿†#w:?s3cÌøHÁ!6¦ž;¬‰j~ÒÙYòCqoCr7{Á‡N¡ÿ¬èrÓJ’¯sܧ¹êÅqà½bÄÀ¹LD\wm]J&&P¶ÇÖN;ÙL°#Ôo•*Ý ) ˆã ºº÷¨÷ÌWåüAxý+îÝåÝ\ƼH—»×”|}®gYNë¦qª|nÒƒUç ÚÁáòŸÞùÅ¿"™IŒ²”`¿”:Œµïûº¦%]ìKé[;tè̤ðÚË›jf஢L?ÒÑ?Jæ:S»°Ç*Û-mÜâ<Ü[ÐÌ5í›üù7ÎØ½NJiSÖŠk9‡€üzQÂóy¡á¬ŒzÍ? 7ÉIm }Îà÷…¹w¿’ˆÉã¾[¡T\K ÊÕ[Ëåþ"½2‘Ü"”ßßóï‡ZÅ]‘Y›&Ù{u1©dv¸õk¬>no¸Þ]` Ÿ(} ^¤þBùÌÒMSG…y+™8¹št vY$Ì௒çâ“CF«zÃÜ\ÛÒ/e•Ž9|QE슓*÷4ÏmÊãT ѧ¡ÿÆŸ`†â~º@|e•È0‡ñ´Afƒ–†Üñzn{€ÐªÙ©òÞýlbØÍqz/ÜçÕü€bŸš(CظÈ:mͺ*,,¨$¾>Ï®DŽŸQãûVꔵ‘P¤âݲ³°ê÷f¼›á–‰HªÙ.ãxÅ­H ýD Áëƒ÷äj0Žu7ÑÄh¥Èsj\˼ jÄé&‰Q_J;ëuNu³ôü·äÒ‰¡ 5Ø\ÃYCT×e×¥‚>6õd Ô-H'}·¥EªÎ*†7hbüÚÌšéHH ¯‘S8éýÉXh¤ˆ=¾—‹|’QŸçØÎ®¸Ç"6$긵ÿžÐwß¿¸Â îãË+Bÿn|K¥a)x>z“ÓU4Âd…êÔá@ÛÅÓÆ…ðÃhSŽÉÍý‚?±û~íYàà¤øZ?*i*è‡+4i<¾Gíu°¶Î»¼+D2h£c÷ •Ä™Ý wˆÔ/Ÿ{ýœ[{öµÑxý#roõßÖ:P'œ#•˜Ä»ÒJq‚1Ò>Ÿ˜…_ SAÛlägƒò|ô†{ ¡ûã9x¨ý'Ãã|+q%NŸP4‘îò Ú쨖Á ¾pÉ sÖDl¬Oöfõ?ÎWu|·ÃÆg*­ØÖ¬~|£ðk”çMˆ^‡ÖÄÖ@w*¬0gJåµ–3®ÖßÒûåxÃæ'òBgð§ áºmVC¤"0ö/›n÷ƒÙ–Üš†°n…\÷þlç|äƒÞD3-nïöˆe?¯@E·"³¬N‘1ïI X ±ÑeˆCJ9Ϋa´£¢Ïÿeé endstream endobj 994 0 obj << /Length1 1427 /Length2 6879 /Length3 0 /Length 7850 /Filter /FlateDecode >> stream xÚuT“ÛÒ6½+DŠ¡w]ŠôÞ¥HI€P¡Iï½H‘"¡ ( EšT©Ò”Þ¤J/ê¹÷Üsÿ­ï[YyóÎÌ3³gö~žNVCcA%ÂªŽ€£E„€2=c]i(&Š’pršÀP®Ð¿Ü$œ HO.ó$„ÂøTA( Nh{¹DÄ"’2"R2@ @”þ”¨‚¼a€ž@‡z’pª Üý0G'f™½xÀ¼ii)ßé%7(Áz ”Ô ³"ä 0F€aP”ß?JðÈ9¡Pî2ÂÂ>>>B 7O!ÒQžWàC9Œ žP¤7ø50@äý3™ 'ÀÄ æùÇoŒp@ù€PÆá Cម /8Š`ké Ü¡ð?`Ý?À_{ùw¹¿²‚Á'ƒÀ`„›;îƒ;`®P€º®Ê%Á!¿€ WO&ä ‚¹‚ì1€ßƒêJ÷ Ì€ç FÂÜQžBž0×_# ÿ*ƒÙe58Dáæ…£_aM #u#þ?ÿ;¦¬Œðø JŠE%€ÌC ó ügCì¯6€çjÁé?Ýb¶é_{ÿEž¿ÄÁ øg-}†µPÏß$·JÁ˜‡Èÿ™ê¿Sþ ÿUå#ù7¤îåêú;Ìó;þÿ„An0W¿¿Òz¡0ÐC`dÿo¨ôhõ ˜—ÛGµP Œ”àŽ2 J ‰KþqÃ<Õa¾Pˆ! vúØ?~Ó_Js…Á¡†Oد« (þW #/° æúðÄÐòwŠQÏ?—Uƒƒ_2•€H æ 1–À_£GÔ÷7‘ÂBp “ÀŒp@ I~*†é _®ßÖ¯„!ÿaJ„a›"âaäߦ(ìûÛüGK`/$£ÌßÄÁôû/û÷5…úBÁ$3`ÙçWmg5JŒ>‚kc¢â7ÞÆ™­ª1x½¦"w~$V?­Ô9¹¾Hµ-úüºÉÅœèb³/C7S߆ï`¿"0NuïǶ§®—èºÎ›7–vbpˆ#ÝÞk£ŸcżôkS¹›r\¯«N_:ír7î‘áŒ%ÆÞº{WŒ '¢])·½J¹VéÃd‡‡ç¡âØn³úæyvß°¨ÄòÛÏåذ¥lÆ­­î:ǹ[òYÝ’·uìÆ8W»Õn]¤ð„·E„òØ{Ž+°Ë¢µVÇ5¿¡Íë)®'’£Ïu(H륹mà[Í th:ÅVõúë¹ÄïÒökŠ7»ÙMá|7µhIPœ“qÞŒ9B=l $ÝkéU¸…ËUÅdˆ&ÞÁåÊÏeú¨ÇlO‡ÑâTK–~>‹éÝÐÆ3 TËÎîüÞ…/ŬÑ3G윇ÛðfT•óXfÝ-Pò\, U»}Ä«OYúÖô;«ª?#¸N˜Â+=>²ÍÐóLlÛ—Ù–qö Y9 'ÇT¤>u^øFS©‘ÒX–%öçx[ª—}pr&Ül='nÍQãûÚ¯&vLpË _´ÊÀ6·çmz^³Ñt¸RÎáF^=Þ1 éc$éûPø{¯ì”[Pâ ÖóU«§8Q„Ý+Å…šÏÑýB1#p….Ã&ø—ÒgÌX‚ßcÝ!ÁŽ”d#²2P† êËr$Jdq\5QZ>§Õ#=õˆoAŠ:ua–\³àY ì> øÇLF!¶Â­X¦É;Z;”ÄJáŸ&cÏdø´bǃqô×ÉÛQ&Ímr„e§µaøHw¬ ³”ãUê"ú5± {ǘ‰Pž¬›H²ÀÎü»7¯Ó¼è±”>÷Gžht¯s‚-3„<àáÝ–ϪŸ8ÜÑù@v©km@€÷hê ¾øö¦dáT/ôsÚ4™4Ó&jtþˆmVÏ–ºÛ§S÷0:Zq‘k¯¹Ý8ÆX¯>7‡H¡æó!ç.ITLø°šÔ©1ED,2£NV{è¶Š¿ãÜ“8:!¤ÄÚ¸êLœ ÄÈû´Fí‰x X¥Åñ™lšüÃÛN`»Oö:NR§—¥‹÷ªêÜͱox”&%%’äTÎs7ªÞ¸>æ5å‹Q‹4ÞÅ×Ü¡o9>õ]í³(¨åqn$<¸_æqô<)Qgh%“rš3€6]e¼233þ(íñTN ¾‡.Ý™`}ô–ǃ\[ÆÏâ`ÞJ»Âpb9µ×îÐ'Ä&h„ô«s×YIÿ€,>B\=6摵M7Š'díHà«­\±”(F1¿zµðÞžt¹`E¼cr»Nаžm»öTŒ\~ãØXP„ýÖ°ÃuŠêmamÐÝ:W±9y÷y{éîåò‰GÕlçHÙOõ]pë—žr•ÙÝ—<Ó5£^!†ïF×%ÔEÊz­š~?ˆ ¥aljnŠG h¢ãà…C`cPÿænB9.;îlŠòHZ4£ âœbÞ=ƒ@m"üjo+pªy*å V¹ioLkÒ¨<ƒ¿‘" ò±¦¬žmLÿ‰D£ýUAÀ„Sq1+Òï‡|T€ ñ ± †ft€ì=0•Þ»8—–žÅyœR3o:Òà­ÀÀÎàôQ>»ÿÝŒ¦‚¸Bã5Hו €M/©é³âV>œÓáý#àlx°ë£ŽÑøe“öƒîä||¯x 7ZX= “¸6yóÒÉŽ «ÞëÒþø ÖdAÎ"Ó–2ÁeÑëG ¿ÌØ`û3B[(N6‡s8²èø6«Rõ e&ÕÄ—¼oòB¸ ½ª}ÌHÏb>tÐkí½zÇ‚µ'Šú5³‹]a ÓÑéÐ-s˜¬Í+‰*bsŸñŸ¸ÄA…_¦zøùçWìúJ™­teÛêfùÄ’'\¾û«í¥Y€A>ÉÂÖ"_÷å¸Ó£êS*‹3ÌÎBÞ£ƒàÍÌ–ÝW ,ç ó˜Gþ6AеØamLvÃä1Më‡ {¬vª2½×’‡:egQoõ ¾¥R?;úJMXCqJró’¦ì —ˆý-¢ú¯ñdúgë™Õ¨ÁÒ5ó;ò´º(±`÷oÄFq}§\ŸÐñŸv§è‘?ýöë}øð–Ô¦ƒ~±­A‘­Á¸s2£î¼UÒ²÷|“÷¾è*nž&lô¬Õ•îAuã˜:p¸Îxì'4ÙÝY)§x™£œÀݯo¨ÑYÇÄþ.ôHºª{Nà§ZÙí‹·§M‡sR½áëfJå)ŠdN͵fêãZ[5ùÈ^êìbû51à’¶×W¥s8WCëJfM•6ø,Õ˜›¬HµxfIŒÚ'´ ×b“š"µõS-Ï퇪cl]Zê™#í´ëÌ=tÓ t¢ˆZhB™ðV)½ûuBç§½ËpJáë·FÑ’>g’UÒ%·øùY”}! YVŸs=.& ‘Ò1É &ôRxl((9ÚµÏ-q…«Àqp¿î'Åê̶sÚÑð¯t%µ'c‚0K`fªHÊÒífu^n©î“}c­âG§ÎÂÈñ©Ï¹qÍœ?g¡„NBª}/Š·^˜´Þ¡h ngŒ²»¾3áÚÅ&tVÿ^}4M#rkßFü£æÞ+aµ„l=g—”ªÓ³µç‘šy›/DZʯg¥^ÄIÝÑÿ9Ï ›&Γºõi…F^¨NÛ¼Ý 5ê’ñwàà4$rü&q¿qj!’‡!êV<ÙKÚ‡WÃ<ô‰øîPSâSMÊU>š·ØÒ^»Ñ.LîàÈ8s Úƒ<ËzãÉðèQ%¹4¢´ÀúΓ]-!k“=÷,p|_ÝUâëT_¼êrDÖž¶ø¶¤Ð’·mQÔÔÜN{„¢ˆxoÄœ-z±9qìeDßߊˆRGpv±¤°Èà]Z{§l~NËtºèÆÞ¶µåÌE¾”š¥=6•îj6·Uˆ<©, ¥¯m$c]¬~ä#þý€,@v±‚®”"^—!щ'0³³JÜ`Ѥ­0ûNPnŒÿtO,Î"ÏÒM­ç[­y©sNc=ýa>2Wàæ¡©{ w˜"êâ"£tý“Æ m‹ºÕ4¸@î+ÿ-zÔÖ¸^‹Ó¬`v¤ó‰Ê³ƒ×\Öê–{ql>™o£•øhe1ƒb³×!áån“;iGaSžÜ'‰ ”söQ‹þÞ"͵O00s§‹ÔL ïôµáÙMì9gòw Ùùž·>ç¨ÒÄ—Oݰ¤×Úf)²‚3Ï¢Uƒæ'ÍÉ?³á+sßÞEŠÔd<5•fšÑà°Ûn/\°›7v³¶åÒÕÌÜLŽí/Êߎàäž¿¥ÐDÌʳqUÚ=Ö]{å¡…‚ºð Ô©‘Õ¶·ñÙaçu£q‚t`òI¥’ԙ͙“ÎJ@;æùôj´z:?´°ñ ñHÍf ƒkç¥ÈÕy—Ù9a%ºú«ùéô²àΧˆ•«ÀòPS?ÜÁN¦U&AͶ¤×k•= ¦2á¬{Ž©g%MKäDq]½Ðï_8!®ào¥lø!Þu=Û‘ÿ˜òLþ¥Qèék…Ø€ÈRI•“.ƒÖ6oGÑ[—©G:¨˜™Iè©Ë0,-ù{,žpÃiõ­.S!£ÃÙ cÿ:ÊÆE_ºÅ[çblß2:ÛycÓÃy? G/NW#5÷yüUkÁ#¢*–qk0¦I­nÉTäõGs-´–6NÒjwsäõ„”™9+T>*¡"­²§×:_KÄ]¶N™iQf#™ÆM÷xë3»l[â°o{÷ú¡¸»ÓâCQö”±÷ÁF#Ê‹¯êã!?Xè"õ8Î8狆ÔêveOÁ¦nÏö³›ï†ªÍKÙˆ™Òç&Åß‚N¾bOÂw±ù©øWïB«ã´™‡Â\‹½¼e£é™Zo†iAÒ›™¿[¹Á‚t‹è3À%€n,›¦¢’Ôœ´ªQ7늳èf3Nøzh ç÷'¦ªîFGyœõ½nEéÛŠ-y/Ö%iÛ‡'¾§Ü,1ÛW´0Âÿt¤.XHäå­êC7:¶Ó“K“•ˆðãdCҠť:ØÚ2õ AâºJ{cOÊ—™7)UúLý šæ4¹°œ=¸ö.C>zpŠ[×’¼êÞKëêÓ—3SbŽø¤ØŒýž‡mÙ{Œä^Ëÿ¼¬$¿>­ªØÇ ¦þðµ2’QŽƒp¥¶ºÝŽ-” Q Ižû )W3yQíÜwhîAâqêÏê½’ƒéÍc0+iCqæ}<Ç|¼7-#'7Z*Õ$ÚJnÿL‡ôˆÍ¼šó•mËøøf.!•Ë $ÄtXKŸ•Gù\å—Y~Ö7˜ÙX‘þ¬‡².æéŽÂã*\P“ÅàKCxZÉäxŒm`NC”À\(¶*@}É÷9‰å!( 5ûÕ'óu[•¿á3OÖÄÒËÜÏ@Ùƒ BžÜq |ǽžÝg]Ãï’s³!&Jµ—)Òþ­Ôû‰!¹²uù_.Œ ©+WM ÆŠ4$¸¤}ÒcýÍ›#ž±A¦"ÈŠn ³bˆ^<áÙ‰¥¿PÐMân™ÿv>Ã4®sŸÄ¤UB¹{ŠäT¶7dþø ÝÒ]¢S¥%…`ŠLl²ƒc¸CX_‘õy± f"КzãŠZ¨Ù—×4àSJTû«àÈï%MN<>΀훻µÕ ]QVn•ŸTÐTmU!ª!Í37ú¼š°0ÿf.Mn_.3œ0Yxr”B°†?ú0)rSzçÁ$èí{IÆç: +dÙEIûb¶jÕ‰UL¾¬.‡ãòZswe&ª»c¾¸´ýÓÕMPÁÛÃWTçIãßr1ÞÀ¹2Ÿ*켦Yx~^1 qWpGÃGHùØt©è²JJL&Q";XuôVê¨ðjhô0ŠŸW;óˆ–AN“ÎyÙ«Ñ˹Èã®ùª©d/ù«ŸÝ®~,Ie‘Öõ5gßLñƬrT+=ñ¶†uñîìM»oˆ šƒµTÖˬæ1ÿA‡Ct¬`YŸj¹³ÿSçØÚLÞ¬ä’NàXØS§Á·8åËfƒv$Âo^‘3ðÿPT­ÓÝ·™ßê»yâ¹Ã&Ú_3ì‚ýq8v(Å%=4®øÂœÂ¿|X^¸ÓÐÿnØçöÂÑnÆáQ‰k½Íø¦”h^½ýºZOÝA|ŸÅ×ä‚UçÀ¸—cñ—„_šîíÃ~<ˆd±òщQ8’û$§’qBœ3™wf)€fÃo 8» îÛ&œr¤F¸‡´6E}«Œª”Wؤ¦7’[¢¥|©è0=<•ï~ gë’ Ì ²èîN¨Ä©gßV(ßP*NýæïÙVR+IýNÜäïyè“×ÛÝ\åïm N^_òƽÊÖ²Ók7^Èã^¹~è Ü4ÍN+ð·¡Ñú£äMòqá%;Ñ×Û8¸ØJ='Ý áLkÕä#¹ •x8¸ª “„_:N¹t3ÛÆÓˆíQ1æ3::`òÓ’ÇÅEƒÝç$ËYtÙsæ¢owÐ:éŸJ†g‚÷v·"o”j'S$Þõ(,\…Ák|£GŽ¿FïáãWQ1…»žs;¾k£OÌf Ë'J´Òô«ÖÍ*Cß>x-ò œÌ}Ó&cÊÎØÏ]q—Fh ú’«tçÊ^f©PO>gðTÍY汯YÙÒsu´•Ntã×`xJ­76Ðás\›¸©î 3Õ(÷t5"rD@OØ?Ì´(¨”Ö2ørXÎ>°³Hj|NlÐõ™¬=åK*¶jŽdŒ9ǶÆÒ?ý½úR2š®,ª®¢Ir¯† 2ùð•ÞÌ‚k”ÕCQÈÛ&ÉåxÍÅ¢ÖàËî¢Ò›HÇ“caq©ò®üñÙ´#ØÒ8™Lß¾†ô¥ä܈ˆNmÀIMÛÑÂ_Íq™dÿ$YW`*Ï)Íg¶–QLä%;H+gëxSæ¡Z6$ÿ¬IÃ.r9ÜË"b?=œ&Ö™˜ˆ^iÔpß#D µãdíG!‘<¶OðÖŸ¸Jҭƾ«aÀã佤^7 ;ðÖ:9é§£µ¯ÀãÎ+ºpÝê›xô8ô5ˆØgœ­é£úøeuÄ]½b¿€œ¶¡ã³"“‹þ0¾[XãT«°M³i4oDJë‚ÿ­ …ÜŠ ð˜ž¾¹””ÂGñ³U”ÀTž«:qùûJ¶Ÿ1 ¼•QzTÛg[eõ´èP ~× …­¤I±¿Úó4àA Þ=æ¥æ¹L¬±˜7€è¾µ/ÑþwÉ©ü¦? Ñc·xpábE2äß¿¢Ùf}~kÖw†p$+I Üréμܭۭæ«ÏEÍU­~c]¾Ëžð×éÏjÖ÷>íS¯eë™—Ž˜êOT?´/.‰ìvvÈ$Ù˜Ñ08sÒ ò¨_Þ1¡tž{TOìPd~'Ñ h‘ œ*¸_l’¿`ÌKѥ͌ªˆŒù ³p¬·'´¾Ë*)a¶ŒG_"ÎAvõ„Ì¡žø˜ËI‹°`£Rrš/a­’õÀàZU×J«0+n;hXÿæÆ>™|ÛD'‡+ßÁ›H;ÏéìÀ?pùæú,Ó·}{Èê硹’Ýáz†ÑSœ¥é†eÅOšÌÙDŠqÚ>Éõ5»ðf—´~9–¢åŠ;ƒ†ßÏœ jÞÜqÏS“ tvlôÂêCUå,¾|h%Ç$÷ê)A+»dúÁåï\ˆb¤è ³hÏî(oJ ®U;Þ$‘B˨£sð¥#ƒ­F³Ÿc¿±uqN½\…ÆŽmE{· ùZìlèÓx¸<ürÓâ Œ¼s„Ì÷¼·ƒÝ‘ˆkÞ˜½´g|t7»ÛÄì]ò#,‰«JJTòSö£ú…°áÛìd/ÇÁñíÂ>ŽŒ@‘”òH=±#ˆ´››8Þ¶ kèc}ÜÌ)•X‹D¸59œag­PâËÄ£’Oô ¤ªÃ"Åï(eç ™—%´‡p§èÎuKt•ždÆ „Ò/ =#@t|x¡ÍN ¡Åšªã?Ò¢œqÓ‡ŽúeÝÚÛ òz~ky&½ø-’¯©'¿.Ù#@ñÑ´§j]Ü6š„ò,XÆfÓI!€£”€F}Y¾Où·ô÷6™Éäʰ'ùÎíºî*@q$›»³>%÷æ·L¾MÐ"úÊ>á®(<žŠ´Æ™X’ÄÝ`1Ø=Vï-«(göàïî™\8›ÑbwÖásÆ© ¿IhÏzqd‚v>¿©¼¨6ºªÅ=ÿÄçþ²­Ú<¥yY |ù#õŠyO •G¿u²žÃÅSv²îÞ$­‹Ïl¸[å×RÊ é=Tˆ¦ÊÕlèEí:y­ ¸WÄ$Ob±â<}‘%ª:T[=Lϰ7¬Ó¡Ií¼Û²l‘Ÿ°¢"ÛÂ\“Ôœ»xÚŠn7סi„&¼î» *;szPö?(ÛÊ¢©˜+0#!jnŽU-{/'I +‡˜iôfÈ3ÎÞ %Ë•íÙ[Xë÷Ñ=KŸRÄ»ŽAƒÝH#&îˆCÃY}—Ùˆãë‡z&ÙŸ=¨CÑ€±uT¹:„ˆµûßS6ÑóÚ{$½;ÖW˜ôÑk¾ £"Oú{Qܱ½zƒ2ÈUû‹ç¹AJ6ñ}á$•Þ¯âÞ\gJÑJ(n­e…Ö¢”TcÉ@åÔÅÁÚìN͆4#}–tì©*ö'i…¶§d¶|­÷VfS—ÑeÍÑ£|ü*¿ Âë}1½~·žÎÚ‘W¦)bG½)ð¤½GAÑ—_/´&ãrV•Œl<òÃJhOž½œ1]b]«p7F,[ ¥TÛiGh7Øoª'î(žœ`£¾ô8'œ±}~ÎnTr&ºÕ.©Š)õ)MðØÛÎè¥<3»/>&Ø©·²§–EkŸ¶ùZQ*¯IôU§s²L£žÛ…ÿ ¹1õõ Ùô»Þ(âñÈ…™1²w«ÜÑE…ƒ I#õ–0+ÕAY»µ,Âr…zýê|ùyJŸ§Q½²,ß>O™Ó‡Té:¿¼A?2ˆ” våò Ëh÷³帞âhŽƒ¯÷gv#µÙ6¥Tþ-VTòEïÑlé>½gÒ"·Y…1£sRšò=‘ý@›šõ9\+ø¤ LÞyB6Þ-¹À„Ñ¥ö©u+âÆLm³Æÿäw&ÿ endstream endobj 996 0 obj << /Length1 1930 /Length2 11157 /Length3 0 /Length 12351 /Filter /FlateDecode >> stream xÚweTœÙ-îîNÁ¥·Á%¸\ î4w×à‡à–Á‚×@pw 4ÈëÌÌäÞ÷~¼Õku»jWªsvõ5=ª»¸…£XÆÑÁ“$TÒPÔÔä@ nˆ ž^ÓÆÍüÛƒF¯ vqµqtúƒ#é6uƒÚ¤LÝ T%G€‚»€“ÀÉ'ÄÉ/¸@ Áÿ]„R¦6%€‚£Ø^ÒÑÉÛÅÆÊÚ ºÒLæÌNAA~¶¿Ââö`sS€’©›5غ¢¹©@ÃÑÜìæý_)˜ž[»¹9 žžž¦ö®Ž.V¢ÌlO7k€:Øìâ¶üj ljþ·94z€¦µëß. GK7OS0j°³1;¸BƒÜ,À.èú yE€ŠØáo²âß6À?Ûàäàü7Ý?Ñ¿Ù8üljnîhïdêàmã`°´±Td9ܼܨ¦¿ˆ¦v®ŽÐxSS;S3(á¯âM2âjShÿtèjîbãäæÊájc÷«Kà¯4Жv°t´·;¸¹¢ýªOÊÆlÝyoà¿GüÚÁÑÓÁç7¶´q°°üÕŠ…»PËÁÆÙ,/õ jBûm³»xA ô`Áΰ—¹5ð×"šÞN࿜œ¿ÌÐ>Þø89:,¡­€ßØX‚¡?h>®¦`€›‹;øÏŸŽÿFhœœ s7€ØÊÆíwv¨lù7†ªÀÅÆ  ‚Šúõù÷ɪ3 G;ïßô¿¨¢¥®©®ÇúoÓÿº%$½>ì\ ;77€“À'Èxó߉TMmþ)äPyKG€àßõB7ê?5{ü#¦æ„ðß¹”¡˜~ëÝÄ 2‡~qþ«þ¯ÿ—ØeùÿÐûÿÖ$ãng÷ƒé?”ÿ‹ajocçý*aw7è8(9B‡Âá©:à¿§X laãnÿ¿^y7SèXˆ;XA¥Í.ÈÁÃ÷·ÙÆUÆÆ l¡jãfný—Lþ6ký;;°ª£«Í¯«ÀÎ ý:k毡׉+T¹ÀÐQúïU¥Ì-~Í/ÀÔÅÅÔ //À‡:œ`¯¿ô r88ºACÐß,]Ð~-(ñËôâ‡"Å‘7¨ñ €ºÿ"A~Ðô7‚úÌ~#AÐü_ô«+ Åÿ¹@Ë? tM«? hý/äá…"o'kèõ›µÙü¡u½þB ³ûB+³ÿ ¡ãü#tDŽ¿ƒr¡Wùnh¥N¿ÝÐX'è]ê`¶tûmåüÇú·þÇBÛrþòýBî`׿Žý7Ú«ËÚ˜ëz4¿Båtótüà íÛý÷ @cÿº×]Í]þlº¿!ônzý¡Å{ÿnÊ…€]þ^ã¿4gîîíÐí¯ë*Èÿà¿.}0Ø lŽ6?ëh.b[ÒvS+Nîɾ=ÆÝçuõäN̓k»É×­Lòú=9Oþ¥@jŽ”ê°µhµ>¼RÁÇÕ›þÆõt•¥ÖŒR/ÒŒìgì… <Ì(Ózׇq²¸|8ÿ„þ»9sݽø[UB0Uóz¥çD¡Thg‹½äüA_N‚ž(ç«ï•%#™¦í‹¦oG``º3ë@óÀ“¢Iû·Q“]ú6u÷hšEõÍ­B„ÆÅb{±žY·rÔûÒJÙü1͹ô'3ýv;i]3¬M<£ ø§Oퟸ>ÏìœÊI:uKîhGvNÜ…(mʪœ”H5Wçž™ Ûœt Íúg• $õ3# Á¥½$ü¦¶æÿs×O²y¾ú Õ{Ö·À0W‘ºÈùéõØù8º¸eÃTÉ–Ë‘ pÙQûts¹b1:|YÜÓFe±ùÇJ½`¶à÷c¡±$Xl†$´¤{Iå8Hã¢ÜŒpä+HëØ'/|[NpMV‡„?š5IˆNgXœõŒŸh†— ¿y0ˆ?z耾ÓÈ|Z¿wA7Q€§U{ªTðÐIkŠôžë_‹ákȨÜžYºµ4øaÖ.9²Ù#]Ü2Ôpc³è˜KXòØ”LÈ¢ðP°²ú±j½ö&WgS!wŸ²HXcœû¶ç£rS€ERø›éJ‰-¯§ñ»>8&[ãô^ç\¾lðT²G]ÌŸˆäD½Þïj¡æáøàûŠ÷™¾‰àµ˜!ú*â”1~ŽÜLgª:Ö-úÉ0sì‘ß{Î%š½¿}ð§­,Ö$9cžÑŠvø/õlÖs$äÃ^Ò¦DOÑúÖFÆÎŒfEo[dR~,“'l Žó$à* ËÒ`.¸¼ßªPÍ0{¯Îu$|˜SÑ՜ÊÊC;Ÿ5³¬Ë$±½®PuÀf-ܸ›šSÓ5WrCO˃K´"çâçæGÓáN„KYmí–aÞœGZL‹HWdHðD¦Lñ¾êa\Èõ¬aRçY/”&¶ßçõÉ¢K}$Õ¹q5ûÆÁ»"KÔª7½ÏǬž =Ñ|ÛôªW™¥PåHÁNÿRñó#~„!G ùà£ÙU©eK:Fo}°ièËÖ¡r"™ƒ£%Š$Ø-AÛÀª1Ï ¢Í2™ø>¬–„M¦d§jw‘çzÃÁºP½äN}…Ó ¾|r—Ej‹¡m–¶X ƒ¡°cA17™ª5Š»«Cß¡YªÉH+xóUî‹Tk…Uxò!Y4Aê&[ˆpÙ·/ÀÕ%î÷XW9ZTE §|&'=OÞ`óyÓ–‹6þ³5îVT&ªÎgI7ΖT¸,×.AázÂDYÊÀ²tƵ3Ø×í&Vœ´/Ylò<¹ ¥sÍiȃþk÷kÓŸîÉÓ‘§˜)ð Õ̤Ùä18¸}²Ùx6Å4+ï†yŸÈcæà}–µ(/«]^v´¬óSý¼’GqOD“õ±¾‘y¿DL±ÇTÏÌΚ ÷& òŒãÿ ×’AžIªø 2Õˆ1„!ôè–¸èvoœÑåÕ.¿ž"<Pˆ®A|ì™Àßæ¾Uw 6˜Ç ¿¹´%¿šçsD?ͺh~жŸ/ô(#ãÆ™ø0è …î˜h a3ZÎéÃ$3TÖ{ùÁ ò(Kn :Å<0‰Ç%–ߨ—œÝ ¾:2Í=vuž'+Zßèê6!æB|FÀ[? K«4²FÆFc´­žÎDQ?Õ` ˆ¼êoCwÇA¿ä(×ÉÕš9zuùÓIó.WÙ÷~ Eó™ÓÊDï¸5±x®)¹œ#¦¿{·^ý̶VT¯ù=î> ‘õø+2†ìÏ¢§×dˆbQþ| sÉòãßzw—5ŸM§ÒÒïP¿U=K©$O}xu<÷Rh‡eÑÑb9\vöžk@»}íÍwï¹X !—mó÷k¥brOáìø_È#â`¹â Ùn¦™> èÙ&o$L¨ò´Ýeæ,g«ß#q,Fý‡êÖÙ®º¬Â¸¸%¹û%û>·‘¤ξ¡Ö^”›© ½þ¸¼ˆ8$‹µAmu9Ã]¾h*Lº`hrütãn³0¾WÓDÀϵÚ^1Ã¥÷ý#ìv77˜±·=Œª"‰bÍZ¿x”µ‡‹o¹y%eLqö NÏü6†ãG»—ÅúÙôF©gú3’{âB0û=©¾ºñãG~B¯ÙÜ‹ú]ýO‰?s7ÀHœ3³Kƒ$òþ^ÂÓìI«Êq:‡Æ…m§)à¼gGñ¢æ˜4XSCÏ5óˆ¿6Ú=ŽI¾ß“ ý béÐyT ä?k÷‹Ì1ÅsO.7¨ë˜8èl“.¸?`KF¹_ÂÐnR/Ì£=gZ+—.³Äø¶*\c½šªÞ/Žt_ÛöS{Ûü¶EíèìØ‘ÿ›ýEÛ"\쬫#1SÒj'|à¤ð9ÌÎfž‹î™ óE¸*k¡ç³ø7Jƒì9ïQBûš'–YZÃüÃ.m "+ø“(9¯)„å¥TƒÀ3QR~˜FR—§††|Kç•]׎¤£µù!çÓ¯cI.’ì¯ê¨—Ö…FÌí£YùÖ¼mðž-õ¨^^gFÖ _%´Y8¤óa» ×@褜ŸCADªÌÙõô‘$lš'=ÉD,Û3pµpÿ5 b Ë,'kÄ/ÒSÈH5‹%†0o¢Ú/®Ýè99)¦+zÆ ~gs®êÞ ƒÑäD9{­ÙN7O¿*‹= pÞgj±ˆ÷(S63²C¦÷`Ô+ì'qȬ‡À¡p×kœ ŸØý¤5ë æº¢OpìµfÂr,夯Kvùš²Ç£ÇЖ8Ê6xüÒg¦)»z»YWš>8†/… =漞g·P&zÇÞ>æc-./R3\ ¬$wJ¯/È.jw¦@é1-÷á]m±˜ø*fAõ‹ÎŒ>Ù7×ïác-–—;bsïkH_Âb4% ͲE: ˆ½C£N§e—Nfµ• ‘¿"ã-yñ™²¬|Ð(x°.qMÌÆ&œç)ö2 ±Õx¡f×|ÑFK‹r@>áÍ¥X·¿Y<ÑÄõyk`åÉ_‘Ñ Ù—u””©3bOâ@ç™G›Ð^Ù‰ÄÖ²ÓL•¤ñüïHD"W¿]»ßYéÈå|ù.*\±ê±Á€&žßÅÝ´ÌD÷áÊ-nÒUÀQîx#6ðkhô€'uìtÇ;I±päïH÷Ü€ç{b/ðøÌpý¢ÆÕŸ Xn¦ˆïÛúŽì“ Ÿ‰¾V¨7³º4¼ÀŽï‹¾™‘gÑŒøá†ºbñ‚(§ézMÙêd²‹ca°õym_¬r|´ÎQ'ƒÂ ι?}K&ÚϸÐÒûüñ:{Ž ˆXÎs8A£½ªG£ μCPªÙ?N)œ¯í‰^WƒDíÛc¤ ìèŠLÝY¨ ôÉ{s×·¿ÌOÁÄk4éѸ¡hâ¬5’ }»¬VÛÉ¡ðÆü~=ý[]âW­£Ü¼o¹ã’'ÓÃtx×ê;I¸í©4ãÆ¹î­‚x•^ovìÎ:EH†¶·_Î>Ž’ØÍ¨WºP>雃Žß;¨)<Ì ¼b4˜ñ¥GYß`Š™²æc¤÷U«lo}*ösxJÀåB|éÊU b$:ä¨*Šv. †tÂçNZÛŽÈN­EI‘A":$ø;¨ó0dÄ«ª †ÝÀ]Ól/;x®é‚–=Seá˜Ø-Ô®¸Ørâ¿nX€„H^K½@(·Û&ÝÆ8ÐLú,š£Cþ1Ívb¹¸OÞx¼c'²¤‹se·¹=ñWõ7L°å82(ÄÔè‹Ù= Ï”aÙnû2Ítäñ`R Ê!xQQŽ'š³6{Ó§ÖưM#(Èøœ5Žc]h´<€æ ùÜ¥ˆ€—í‹8d°ø3ê=¶èÌ2æ…Æš@R$Ü +wƒZÏ(©•Y\|…Æì›8škÿÄ6*ÆÏ÷’ו çððÊ·‹R;B¦Z_®e–(”ªïìùªS²FµîN ¿G4×´Åd%ðz§,ÙO?‹ós‡mÛ Æ(rœ¨;ìà$.SaÓ& Ôr¯ã;²ê™Ð‘W “³y47)g€¸¿©j5x –ï3ö~™jÆv1X¹Œjm£KÃ3 4›%c‚òî”ù#8ëE§È|{Ö˜‡9’Ën^ 3:k‹m_ß\ÃŽ„€N +V<`,?âå¶ $R½ò=b%?*ž:zã3šVÝOa>:)RÍN ê½Ö£öøà ~oeºô57yd£«%+þfæ Låta˜ŽÚ‰“Åé6¨a2Z§GÆ¡ÑÚüBC2Ú;D!/Àº_Ì*Ê%Ù ¦Xa•p¢Ò5ò¡r£ §“ë ß–(2˜_ÅÃ… /Îç,DŸíe–O÷+ý §*AÔêÅì”ôi…zZutÅ6À@YýTàòOÖƒPþû:mö5©íÅøw%¥ó»­×—#‚íSÚ¹Û^#p,_jÔ Ü{ï¢]Tƒx:ÝÞSØ?ñUe¶R ™NqˆQ³Toý¶Æº‹¥o]Ã1ZÕ,uYGk4B®KRÕ,îÔÞí‘ÌÌéïgo#—lùyøò穚+ž<—Eüä± Óø$ûÈëNbx’"·Q65¯‹D@=ö{­ID­ ºjòÊ â³Ø xiÖ.—ä}½*4=¡³grH¬~ÜË¥"w÷òI_gÅŠùa¢Õ?F•)>{óHîÝÓNëfYáÒ‚¶/lÞ0£€ŸtÞµ·þI¿iA«š±—ÕÏk/„3ò]ÖÝdÙ¹TH£\—)‚ë¡ øðú>kÄŽ#aæD¹´Í-¿ï87Yè÷Åôé²P]Ci)xOÜÌçõÙMWWózèqaºiceý!Ÿé5\qu› µ".~È\}B©ï—t€,öƒ„J–™S“­uW&¹ÜA£')©Dd:}3þIÁlë9®ÿÅ#AN¬ß&‡úr ×2>21ãÅ'žeðITËÖº©s°Â»èž'³!ÈzœYõ±°À"Gê)H+üivIçe”yBâȼ„âÓ&$xÁ|›Œs?OA6!ª£Þ×@3úvvSªºgT´vùÄ-ϯž,†÷ÝÛé6F±þ$’4É^T¬­i+ªŠ>½3 ކ;Ó|îÞ ×7à’Àf'`ŸeÙ„zæÝu_Þ@¬ÖI/$N—æyá¬hƒ)Ôz4UÙ‡Ö*ÀÑ^ëñÀ㳤ÙàÙ–ùboB±ó3Ê׆·U{–RÑtÔwh+6Ú›C­Ï”¼Œ­…Ð~–þV¢¶Az×]t5g0a^{—!r ØØ Õ.÷&žLt PªÒu^»ñˆ.­¬|±U‘¡×–Ð)HþɃP¢e„˜Jj|ß3¿»XSÓ­Ø%ÔGÜ~Pht;](r='ÊÒ½SZ“3[x±K':Œïà‹¯¾¨¢ø.¢´´tvj8ü Ç‚ræY½5g¾£Æ¡Õ™oKàÀÀ1â MS€¸©òj“6£¾l$^œ•ÃÎYéúÎsí£µ¹Å`dâ“ÇgIãÚUè²§Ú»^aöZ_fW Â}«¹ÝÈg_Íì û9Nuvø9†Ë·6ÍøòÃVÜÁ&#p(ÏŒä©RÑ{­4ÊF÷EGˆ)‘ ëäN)œ¢J›—ÒŽVƦÄ,ÅÖ;¤*Ú ñÎZc­ôs·¯d[wiø¼´ ç3î©•Þß2¶D·,‚-`AÝŒ‰cœØ ?c) h1–i˜´;ÊÂοê©×‡Ñ[Ï/BD2£V:­v Ðk8f¨Þ½I9+R±d¦¢¦­kLÕ?ß#èØ²?‰yY«·j«Ÿ/Z…r€34|¹»¦àny ûÓºÿŠ ÆåÛ÷°rd"üxT¾ì îzGØ­BÌKÈ{ïá²d¬3XkÒc«ÒùêkîÈOTWzq*øÅ¯×¸­ö·hü‘>XÙë¤Ë$‹ÙòêÆe…ÇÅ©c/ÁvóÌ%.1ôê7Ý/ž,¤±¨PPûÝ­UP²iîëbàXQEVä½ŒÅÆ=A¨ézöOçÙ®Ü!’Ö‚)BDZî$䮹ê9£úAµ¤ÌtbLÇÏ¿ ýyðpr(ÏIWB\5Õ€&¤Y$ñFRµ.饂þ«‰=‘y6©QCC²™§¹Ì…[Ë‘lçùBù[obHôƒ0úü‰0ß¼‚ÖZ†Î$~mÏ_²é¡Z7Õº\²í³Iïí’ºsöml)O‰Zc&–ðSŸ!:Ñråv:Û•zFÎ _ûQŽŸ» }9Èpñð*¾AuâûöO/œÂ k¿h/IÒÝÄCd™69ã¥þÙDwvôI³Ÿz)Â;0slñ¼ŠHn“È–c5b'š„Ïk6Ï$ÄB_ºžZf‚é´0¾z{ù°e%†"o—¥À!À¢bâ «ãÙ•LªÝ#·´GãôÍvk»6^æýÇÏ –uU¾Ï´Ž+¬Šlq¬ð®øõßEQòÔIH–¬{#U70œš|­âtn>Ò<Ý0ž-Ýk_@x:-•¥õFÿL€x‘«v 3œ:R ó^ÊLêYsGUí °9©>Î íîõǺÑ`ðFø•0Å'‰ \—3‚²«»eÚWÇ%9–8"E¢«‡Iýqà'¹É.ËDº½ÎÅÇ šFY _áÕ÷Ëe*=›Ç=Æqšºί]ˆõ5—'ã_`zbÐ&yN ÉÏÕ¥®ëðÜ?O¬˜§ðR†}³úû¿Ñg€BŸdU·´ߨÅÝÅ,ÿ‹Í¸ÕíÄË¿}¿0kïÑýyãü§@pJC«¿>zª²“—3_=†”6ë´Ø³7­,ÏFOȗIJî2Z…¨Òi•…h51 Þ-Ì€òwç¡ W|nÌž³ÌM¤K’ç_ÊnIøì +VJí9ˆVÞûÜ´|›FcÙ&a¯~t§™µe9ñM‹“|݈XM&£Ë_«}qi\ôÉ{Îæ‡²#ì9}žý©rù^,H¾ðâáºOaŸ`›.ÁK6É/3¿*Ç`Óy랈ºëóÃGT”èxOÂY†x“Ü‹?›LŒ‰VGÐSŽñ5¿ÿP¨§(X['†uß#GÌ9K~¾²Â¿D³*9¾ZW§¯w R¬ðäãgç—©+þÊN²X#„€p£Dö®Ð*y´†:2CKâA]ª·óõj¯fs¯5/º°t ˆ‡cLª2Ô°û¤§«2 Í}Mñ^:Öú P2ôHçóüÝÆ;Þ ?qEç{bë—¤¯m6Iv·ÂcX”b nÙ Èðrƒ¾/%Gøõ2?ïc” Ò̈–O­ b SºÚæ¯+_{ÅöA¨F^Ⱦ(gÇ!¦Ô)€ üC©‹®¶±Ù¼îË¢™Äçn4?µ æ9#%Øo+$È„‹Iô;‰]á› ñÔ¡”íz„A}‰02‚ÛŽƒ€«±*Þ­Ë`²ÚÖPÀ‚ÄÖÇbdl]àÒD&A «NîÁPêä*B¾'~9l O„ ýæ)ô=ß“ woÚ ¨7`[h™ÑتîcU+H¾–-V·ú¨ž¿¯EvkV6:7J“KI1TRug ~¿èPþþýj)…tåî;„… M&Wør:}î:Ñäd•)Ååâ $SüòüÓ¡YÖ4É7u7‡©”¨´X,=™DXƒè,ß.<ûV„ë±c’EŠ÷})^ƒXä‡Þë§¢N}P[ÉÈA’½Nt>ò‚y´$1ö´í†mž‡ôÒ ò’¼ý@gÎÛÓ§!] Œ?ó‚cƒz—›u¢ yŒ¶~´T´˜ÕXÞA³¨ƒ›<˜c ^¦¬a„⇿ é´Òc’½Þr*Ê =îbe4‰>ûÁô4kFê^«-—0P _œÛÖr ÓŒ‘C`ñVÙüÝs'k«¼‘–;Bi…")¤Ì¯ $Œ±!¹:¼ÓŠºþ©fâçƒÃQâ£*•'ÍÌEÂ/r… ÞaIÃã#Wæho½q XJËg‰çòÝTQ»Ÿ}/{Ñ…kH¦Ì?.î·°yÌk®_-5¶bcáÌ5eî&ûJ*ØçÑ|®‰™{+ú^HÑÏ‘,ÀÉ^“Ó ;Óq”üÍÛn9‹VsW•ƒÔ«­åSdàó¤Fq¼Å£^$“™ÿu¥úl;®×sÔx WßûÑJH(ýùCäßn„ ‰4%8¢°Ûœ%·ç•#wu™ò·Vƒ\õvìį2öM0S~^¢–r}ˆN€Wl#Ǿ9• ÁD—ƒ¼p Vùú©W­Ÿ)ê[“¡W=œ¢¾^LïÏ8}è̇iw!éÏ5û‚Þ]U{Á¾ºn Éî ö,úŽÞ»6‰ÕMÿ‡ª| ¬9i`ÿ­¢Xû«ý«"à[› ªÃEÈËx›¤P+±õÄ,•µk©ÔÙ.H'\ Q²‘»ô\à{ØfŽbì]<@ÎÆSó˜R•¥!¿Š¡Ö ¹¬ô£èd c¦gº` ®¸Ý»¦¦‚׈Å+%åÉBvŸ®]9ça*î¶yË~t© ð Òã9c-òÏS‡ì"ïEn1 ظy<(3³g¥’ò¾R?žŸ-:n ¼˜ //Ž" ºôE«•::µ?¹¾;ùAXVqCU0= }›cægkôùîÛú%Ì „hÌÜšFm<µÓħºïÇÏó&–øFŠç9§ÏlO¸rÄüãü‹VŒ|ë‚Оa@’—ñìGä¤äj9[ß›¾N°>C½ŸsPÙ©Ÿ)݉á`êþN{ÊÅbî1€e;“ÆD’ÍêÕüU8ã‘Ø¯"¤l ¯´ªTp}oIn±žQXÁû͉N‰Phƒ¼ÖŒ’›Æ~o×ú/=—,ª ÆçѬ ªgU× ¡´/¿Ît„`Æw4ÎõØg¿šj‘¯ù¤¼ý+vË~3Ë*§ðÅÐ˲LN@óîtëî>ÂèÔŸq›ê»’ÑOî×'@,¸Ý,@—^‹.:•Á©õÒ]Üt~Kƒ5™*Û`tQïîÒ$_™8´xxg//?s)‚3CŠÀ9RÍ¢Ÿ¬Í´!Lž73˜@$Ž…¶ýl×0D¹€"1tx¦Jç$ üzŽˆ¤k}Nï‡jŸ-‘God çK‘—Š}ÄjèØÒ/*¹°ý3¨Ì¬“ $YøµõŸáy/EC4@Á[…ü¯¦£¦ýÕ.¨¶úŒ˜$¢9‰èd¢èŽÉü°¹ßû¨+.‹j–ÜÃ\5WPÍK™<-wT1?‡ ®Æ• &g{Л[†ÐíWð5Súë{fT¦på§ŒYQÔ÷ê­ßβd=Î [–ãŸ7QDéu}Þï„7}~éÅKdŽÊ)¾D>Ð{;öúÃ÷KÕ÷/yoÛE Õ‹9«½Vì ‰b" î¦iì‚‹hDÓ;¶tæ¼õͦnEaö¼3qáŸê/Ÿ&˜<‡•x®i:~Ö«)–!ºxPRñ¤š‰ÝpoÆÊ”X «ÇÙõ«³ç^µ4QèÌî6ISýâ-²L“<”Ù4”í=(9û“ 'a•¢wºÿª«UcaØ¢fëÐíÿÎÆäê endstream endobj 998 0 obj << /Length1 1525 /Length2 6770 /Length3 0 /Length 7803 /Filter /FlateDecode >> stream xÚxTÓíû7% Òˆ4¤s´€tw—HŽƒ±ÝÒ Òt#) -Ò %J7ˆ ÿ©ÏóüþÏï}Ïyß³s¶ïõ¹â¾âsÝÛ3ƒ¶·Œ ܬ‡!¹ùx€b9 => àùñ˜™õ!H(øoÙ슀ÀabÿËBÎl…DaòVH”¡Puƒø|Âb|"b@ €ýÛî*·r‡Ø4xªpÇ,wör…ØÙ#Qçüý`±øDEE¸~»dœÀ®  a…´;¡NYAzpŒôúW¶'öH¤³/¯‡‡•‚îj'ÉÎð€ íº`ØÕløU2@ÓÊ üWiA à‚P„x‚m´!HýÖüÁ ~íkÃ_7 Ê ü/jÉ@ލ[¢æoµCÿ>W‚ÛüZ6~!a€•««•jÖ(IàÇÚJ°ço2xy`p$Ê€ªÑ` wÅû5X> 0€×ÚÊõúBɨ¦¡ÿ$àA\AP0è×\ÿ£ðÚ@P·øàu‚ÀÜÿü(À Š„8£òý'€×E¸ êò@µ5Æ4|({W+›ß|øþ«V›«+Êã7)Qø[þ}Ë€Áž`ÞüG8H<ÔáMhûU ÷Ö(öêZgT‚I¤’eö•½:Î ¥)YK›JÊ‘tí¹Òðɾ4WcžÏÞf­¤)ç"Ñú7d¸ó†¾¾µÓÛÀ©íÆEÒ£6Huèˆ,M±LY“>Þ„‰ôlW}.¸íDl?Ý8Š.ˆÒh±29»ÏM˜ÖÃ&ψãH]M3ÜôU Æo1žCâ.eÛc¨¾ym˜Æe//¿ËèO8ÉWë­® '£ºï­Ê3’4HEž˜­Ú„@c‘º+MM`¤*t gYÁ´Yù>?Ж8(àÖ`§)tOËÿ}£[\è£DNÏÊ ­Åf–þ7^Êæ¤({®št&Yæj´‹áŒÃjhn/Özv]çâOixqÉ¥‰:ÆBc Žˆ€ùç Ê+ËØ‰|üf©ÐǃŸ^Ë kCéGlnž¤Ȩ™É´U05ÖÜFqñœ¿î‡”?L†}i~×>Üqg: #Ÿ J0îx±Û·“ؤ"tñÄCAY«6 ï²`ωŸÐÍÍÁÒnëT*-:7Áo(@”§O2«¯¾–¡y×D,L&pš˜Ìñ ”®j¡Bøý+‰àf‰ÔÇ@ÿʼn#ty½xâÚ{:=ßî˜'X»ñòãš«åv>µ·,ÖdUE &@wn¾ÈšL‰|\É•ýa`AVâÿ,×6ö{ÜùöYÃa®±L]äShTJ×TÀ†Åë÷tOâh3º'öz;XS·=•®/°ŽÈ¬‡•ÄC ¡åñB­rËäQ¦Vêíg͸®=ïmϾáó™^Š n9›iÐx|žST÷‡vX»Úݨ|ÛàW×Fšét_(¤œíg¶ÄOcœ}gIÙÈ€>TüùàY€: †®=_½bŽõqQå¸g”@îÊ PT¸ØÃ†Jën;á´§ÌÖØÝXçw •¢q¬D2TšèV|6+s ß$þ)U+ÓšŠcP¹ófúÍ÷mÊs]’Èi#ñÌ®÷ǃnÒlÊï‹É¦ï¼ÊöñÝ8?×ñ³ØR,b¦vž>öĪ Á)˜B&)É”ôT®‹×1,®Lü k¾b¯K_toÍÙK’ê©Ky(ž’]+1²$É:°Q\ÞùŒ±ü[cê ŠIÝý;îºr©s…XÙ:òöxT„ÓÒ\9ƒF²‰:IÄZÛB·eT®´Í1Êê2=æ_Ù¨ ){;².B<¿'ÐGíé h«ÔÙú¨•Ž"¨ÃðFMªÛóöy÷Ü߯›æµ|Ÿ£oVgÖÊ“ÞÍT O&}²¢Í§úzd1À=q†k€©žÑÞ XCê¬nWj-Ù™ãc¨ˆ;á,…Ä¢6ÂoC‰(Yº@3IÈüH 5J«î±mk8€ÚK§("¤E‹=´ž (2ýyŠ™0ìn¨~Áu’®÷k²ÓSÛ¯>æ$òöKgO6ó}23×eSGv>ú]wÌç ømYåN½VÖk,«¦«¤Í@ô“kaÔ".¬!TŸÑÕ"oµ$(ö”K4$•,A¹–µá ÏW(>;b|Èä ÁuÁ4]`ÀÞ»¼n›û2ý Þl>ËÔijuzbFòš¿Ù„ha }Ë›°¾nÎþ‚A«/Њàc­â`~¢níAP‡cžxü—Ô7s4½(<¡“LaY ’Å|wØb¦þnef|íx;cØäe)™/ö(w€ŸOääÀtîtçsÚBôÛRÕ˜3lhq£~úÓŒOfi0Ú¡=3â[Ù×£ZËìšfÁƒàÍ­ ÅͱÁ.«Òfg_¤f¸ð1öO¬‘yÐä {báÄŸZ‘î=ÅØº_ß׉&èÌ1µ÷tœ/ï¾M ¹lq¾l+^X÷4íK×À¦û½¨#¾I܃å$/gqjù¡Ù @²Õ>_ö„Ø‘n¨YÅr–µ·’œ#s°/x¹ÐƒáKmÚ¨pìH¡®ö¦ÏM-b?;>°uÄ)<šûRhÃZÑ»ÕEÃÝÒˆÿŽ—¦À|ç1ßE3·Dï4Výô†º/_ðñx÷Ù|,hä´a~£":K]¹ðC«ÚÒÙic{Æ9ŽKçì"ÈÄ+µ´­07 ÌBã}Ì­%·tÔû–†õ,{¼v⢩W2T@d#µ\kLŽEÆbÖwé¨iÔ`Ò½¯8÷䋬_]ÚWǺÅ^œUÝ}¶…™qsþ9fb †ÌÍížShZÌÑW¨¯S|úÝ^© •ÎV+yehž×K2ßäø÷‡¤‡œþ ¹ô})  ¸oæ1“4vgy+/èì"çÂ0o”Á/Âçµå꿺kl3* ûáíàäæ˜5ðåÉP$tǤpún×°m¶Î¯F+•T@E‚ÕliŒî{¯¸æZìK|Wbôa- 7Ö±uQö¦Ö†Ryó.Õ5Î{O©÷> õm‰’G§ä&ú¶TØwnŒ¦~ªwÝ|*3¸QY÷nj®Yf3¥åmÚY;¦|›gЦä‰Óȧ ӎ⨗ÆÙu¢y8.DPÒ_)ó±‹à–ÄCc'zƒ™€ts?‚êË{ ¥ ]¤¤QÞ§Ûú}» %m~:x鿈 êm0tüœ¾FåRüÞNn˜*ñ4ñp®»õº¨÷¶-ýH¹•Þ>¤kbFøb8Ç~ºhÌ€ëøŒÊó<¸CµÁ¾Ú™§C^+Ï].ìÑ+Nk¾šoŽñ{U² òê‡:O1‚.µ¹að³ö“Ö'&«Ø`î=>Þ+˜\‘ ¡Gé6Çð¸43¹2I¦˜Šw½í&"9^Ã[Ѧï8DàÖü´?Z8Z ?y߯æ¡c·ëœÍÁgNFÌó1:òåXÏn-¾ºa”ÿÙ»Ÿ7WN÷¡VcfÌ÷÷x‹,ÚJ-ªtš ´Ô›ÎÝýqôÃ88ˆ$ !/ãxLÚ©Ñ*öãÏ´ùúyûhE6|j¹ùŽååÊóqi`@oŠ2¥*ºµ‡.QMñ»V¥F:_™½C§)Uß´ÌPç÷ U¼€}¯y°¦Eõ›&?*  ‘¤ð!8ÉÙ¹Z‘£¼ä¼v%ÃýÐUkÚf &»W@2…i+ÂQM³g,vÞ¹-9ØþBŒctEÎc4–¼W4‰Å*ÉAœ“·¼ q—}bA&É®·Fc'ÈX­cѰ‘Õ{þéé{ºö»°ƒ‹ñ{u3úí)$½™ ‹êc«„ª»‡'_Íå!%·¦EGbˆ'/—šù{Žï¯D\ûf¡¥=Âþ&dºk;i½ã¢äwy3å+ñ3æê÷L–¯v/öÄ Ñãbú8¿Í­d<:N;g™@®®·¾åüB$rCÁ"Yç3øI‡iÕ és´Ä<_yKhh†ZF€ùiHÝìµÖh FZ0¾=5U¡và+ðæG'ç“Õx½tMízZÐO‹£™©âuò¯]²ô†gþLG¢ ù­$ðž›IÊ¿¼ôñ¸SmA$$pY¨x`7ÝU'øR6óËfÖžLI9éZ‡Ë›ñ£¢‡«Ý+“‚ 8Ñô |UÚ¶”îVœr}ÔëÏ>Ûh¿Cûʵ Ø4qù­»å'üö†Úï±g]ž—JL?siB wÆyüòZÆî½Oi*¡XïTÍLÕÔ¾H – ¬|kË@þc¤£Œ›wÛ»/J÷q+›ôüüóÞ æé^M§ôœå×’Æ ïœRÁÇÃÒcЄF?§ 唿\½|üÁ‘b&ñί«lM7«œÂ’Ž~ž¢C ¤f}a_$”ÿ q³£ŒŠY;…ÆQ@£^þçŸ&ió°êàXlìÌø–ó8ºÁDÖ4Ñ:å KÓï“Õ±þ‚ôËNúIêýÒŸ;óeœ) ÂÊÀÆ'yþ^¬N{ˆ'™_ƒD,:1ŠuÚÎ7Y‹4³”ê×îdHbô—Œv;˜Õ“ÂNŒ%U󼥿å÷%4¯ÂÐ;¬at±>.Ö&l’Œó9¾<ïu,ñ¸‚¯G_¡-O£”7zâå=Ö[®Ì ñ;hÈwm^ù($‘ö>÷š§ZË$áa"7\Û¶§Ff_x;29:2™ îV“cl›ó®«‰Û䰌ҤOFN¿ ¼¼Hw~Õ©~•¬ó93 Ëz­„œ×ù½áô­~²K§âäc,‹32$I]°]28?óÔâ|X¼ÅŸÌtå`9l˜BDÞ?¨ßÍ~}ÌÊñàÖÅ8Pv‚|B3ãx‹+UÊïDÅž32n{ÖR½Ÿº¶žåõˆm£Ú’yÁ§Œ†¸˜¡]‡>›È‚Xõl9³Ý–-笘q}~¨°zhŠœ\°ÓR£ÕyÍtÍôFâ>õ§àÙl©i;±™@uáÎ í 3‡†Ÿ2m/uæ×Âq9›×kw†\;¨jøî;Üæ*’PwE‚ÂtÈÔ}%ÖËu¹gi­ÎìX•ìØ?²-¾ Ég¯ak¹Î*l¸§¡ÑŠ×PJà2àÎÒX=|)·º% ‰Ö¨þQç¡¯íæ“øÑÞ:^s¥óœ“ûeeižÁóôZÅsƒ+mÆ6µ±ðpÎòö)“N°™°œ-õbCCóB½^ÜÎGô-)›‰ wB Ô²êü@Ür†|û³Ì®²X}Õ«5e:k¾ä†õ6åAŸfA]s“ÉT„\x¯˜K>¤)ËÏŸRK9ŸàxM¦·Ü×^aV”h îÀ¾˜¿ÈSR›Ó¶¯ó׬7mÆR¶Ø‰ ”Ã=Òà½2e{wûî“é´”˜› tKAÔ·²ßGUÖöÛµe&K?Ý»ØDÁ8 ÏJIÖ5ùmó­Nánª"/ˆwêOÜ×vºÎÔ|²5¦W¤fãcK5N̾‰Q‰ß'q˜FœqÇx]üN¨ìä»QÅÆdñ<Úk*âR¹ ú‘ž{Mˆ{˜f›U!I“ÆÑ?îÝ& ÕwGºj %½$ªÃ96‚¬å0;ýÍ :ý42®µyPÖÆ«þ¢Ô›Sôgg—s¹C´êA»!yÚÉ,"H$Æ…›’·¸šàÂéd,½x“;ã×:ñë%½Ô´÷Ž‘£›s9ÿ:©.Õ6Þ$EFaž ä66Æç’šÎt(Šqxº|Rb7èñue?Ä®j¶6[ÆðÞãFXk™ÇïyN rw$@ˆä(ßp}¤´Ž³‚¤°©¢²û†N$ºÎü¢êcé€×öÖp_2Ž~nŒœÐ’«Ýºv±Ð{¦øˆôßšø†®h\ÿÔe¥²Í¹Ç9é;yÕØî[«lÈâUÁñx>ìx?Ël̬_ã½e˜Ö\"u¤!OÌë¸Ê£»º¦pÍ'>ãþ` Þîkç«$›#ì÷{HtöL#à%è#›Ø8¾Vê",|ƒìi¦ ½Z¤]Viÿ—‚žÒm"2é˜lýŠÀ «Õ#󀚯¥Žšß§üw'nòáÙÉQ„~§,·}Eyn?·m[S»Ë‚8º8¥ð‡„Š"Y ¢gÆ-Ú’0»³»*ŠÛbR=È”¹l=­1С¿œ“iá§r-É G£kÇÂüÒŒãjÖ7tE²‰È{ž¿™Õ\|¬·qXDÌ GHâg>¢¡>N›D²§Ú‹r*ˆÔinbãfÚÄ<öé7;‰qjyÉAuoà˜8§m6Ž¼Ð†Úê¹ F8¶IÚŇpg²³¯™ ™ }Ú/E¥à”ã}ÚD¢ë'•ŒYoí’e£_ÆŒõÏkĉ˚ëÄk•& |ëâ½'PâkÃdjZU Üù™k¡… þaùïaS÷ªe°·(¹o_á–F80GjîíàÐÎTM:=ñžý&¦Yt‘õQ×ÝÛ¯m;å;üO&¯FÓ8±ˆ÷´=e5¦ãÙµ‘Tªy?Jµ¤ ˜5U‚W¾ ‹æÜ±CÂgžQ·ðZoLöžh*’…~Žq:ªlñ‰JÚ¦ù•6ˆ'®úÏå?[óÊ‹z}‹ë?Ÿ$|ÄË2%ŸV¶Ïň3!%¯cŸƒ ‰8’¯þH~Ä€£œô «ÂsÌ÷ QðÜ/TÎy¢¨F²±1wgtß¾ø^ËSá Ê04'®•I{=n£§¤ñ„˜cª”¬M5—Ã%›Kš[/묠ebQLWZB«Ú›¡½Q Àhµ¨‰Fó­Éov.?Dµ¶ lâÎŒ?†mA³UMÛÈîŽç}½¥ß¼r=œ_¾oýè" Ý4ËÛk–¢·ýµùLU %ûL&·O“V|KÖÇk~bÝ’žz"Ïw_vqFêôãžyÈÚM$®·ßêݶåd1ΖA³¬.¼Å[j3T¼fž)ÌÞy;²åìZâ¨ß$-Ýfé~%šíŽBê]~îc¦ ÚgÿÂë¬;xµ2ß]ÆHÉßà†—¡Nºâ웯A?=a¥Æ½_ÛR|žñiÛ:Rç õÙQ”4סÿ@EíãN…F¼¸îÏÌC¦æýLó~^tèöÍÆå…® °!ÿ‰„œŒý>w*hÐðSصÁ<ÿd³ä_äì»dF¢.£ÖW!Z·ç“‰‚ZÞß[y@ͧ ”r–›Õ¥¹¹q²ø½‰]ÒÊÌú‹«wG;\2B°a•UÅèTÞl©›÷Ñ™kfVžzMÞŸ$Ù©¾"s‰PÍë »]ß EíÇôióJþú@Üö»,è§tÌ:éq¦÷²'Žk¦±¾í}.%éIæÔ…/4êˆ_?|”{«Ãê=ð@áp܇Y0 çž…ÒÍX¶$béó˧êî’=y®,"”ÓÝo–ÒÏ 1Õ_[ñÌ÷ðR‘£E/x‘còvUÃæº®{ º´½S⤌˜åÍϘ7óà‡½ŠbÉY¶8[—"ƒR•¨ÌK÷o‰°ÞÜX”‘د”¿aÅlúç n½ Îç'ÅUñ {ÞœºÔ¼|¾Ëdq]œª«}¯#r¶Q\+$úaìNhµû²ÿññë f‰ÆýjB—ŽBîÇËe¬®i«Ð&Pi‚u(ÿäBl»œv0züÙæJ¯øf˜c¤yw d™Ç7ž7«E+Rà8ÔË&ë¹cEÅ¢²Uƒ;<7¯ˆ,æÇî«§& – ËIZdèÝì/ ¾ŸÃ~Æpc®íÜfåu÷­œ‹8>t2J.V=Ø;Wº“>žÙ§,¦ºXwžf‹Þÿ˜¥jE„>9Áûê±zOº¾LiÐÄ3•'è`¸_²b‡-Ü16ðí†àèÁJO”½ä %k­%ƒÌ«Ù1§›þòÌ‘”TttË×|>JÒñÒ.}Ú‡UøeþãQäKÃßÓY±á,«U•¤dúÒ¶gCHD 1p¯£V©_«mvèg­·r[«ˆ³ñFš<8ùÝÃÓTˆ<+ØÀ3ÿä¡?ͽ§C8Pk:` µuúaàaã •|‚ã#ïì} jMÜS,âÛHõ—žò dŸ³Ïå(õuØ}©9Fn]"ä£f+Ûž;õõШN0V“Šk&Žb|w8â' ’«Ä–ŸMðU)ˆt0g«ßº–}þ>‰?1Ó!ÿ¤P½ïÁÓ~eÄNѱªÓ4ÖbuiÌßßA¿’áÍYý²jiÝ¿’Uð$‰K=1v5ýóðts·ŒSñÏ06q¦š&³d•«þOq†©ò·Ò>‚ÄÄKeß)ÛÅ'o·Ìˆ–µéÆ!§ßRkî:-5X:½•ÃÅ]¦´Œ»qû9-ø#©Ä‰ÓÀ:WÏÝo…§<˜@(.Èî9ÄÞåQ$wö?yE#ù endstream endobj 1000 0 obj << /Length1 1412 /Length2 6219 /Length3 0 /Length 7190 /Filter /FlateDecode >> stream xÚtT”k×6Ý(ô €„0 -¥t7Ò‚Ã0À30 Ý”tH‰”J‡ ’ÒÝÒ%Ý¡€ߨç¼ç;ïÿ¯õÿkÖz湯}í}ï}ß×õ°³jëñÊX!,¡Š8ŠÄÇ/ÓÐ3ðó òñó ±³ëÃPп`"v(Ò†€‹ÿ/‚ F¡1y0 ÍÓ@Àª® $"ççðó?ü›ˆ@ŠäÁn0+€@‡º±Ë!œ<‘0[z›¿_œ.èáCÑ¿Ó2ŽP$ †4À([¨#zGØ ‡€À (쥈ӫE¡œÄ@www>°£ i#ÍõàCÙt¡.P¤Ô ðk`€&Øúg2>"v€¾-Ì宇°F¹ƒ‘Pp€A pt†+Ü Š 7詨´œ ð?dõ?„€¿Îâý§Ü_Ù¿ Áà¿“ÁÂÑ ÷„ÁmÖ0(@KQåzí~Á.t>Ø s[¢ ¿;et`ô€çAœP.|.0‡_#•AŸ²ÜJáè…£\ˆ~õ'CB!èc÷þ¹Y{8Âîý×·²þ5„•«ð æì U‘ÿ‹‚†ˆþÁl (€0ÿC!1Ôõ€Ø•×÷t‚þ‚~Áè |½NkôP_˜5ýGäívƒPHW¨¯÷ÿü{E¬`ÀjƒýS C­ÿ¬Ñ—„yLùÑÚøýþóö-/+ÜÁóúïûjÉ«ë¨ðü™ø?1YY„À›$ à}( €ÐQ1€ï¿ËhƒaµÁÿO® Üxø§[ô1ýݱÛ_àüË\€×ÒD U pþ#r3~a~úúÿ–úï”ÿ›ÂUù‰ü¿Rtupøæüÿ?Â`G˜ƒç_´h]Qhh Ð6€ÿ7ÕúÇ´P+˜«ãGUP`´dà6h1ó‚„øø…þà0E˜ÔJ†‚Øþ‘ÌüÉ/«9ÀàPm„ ì×·ÅÏÿ_1´¿ öèï‡ Z—¿CP´}þ½¯‚°úå3a‰{ñ£å$ , ð¡ iõø­dŽ@¡Sè}Ö$ѯkåapW—_èo$"ÐÆ·DŸZòÃhK0ô1ýBþÕĉD[ñ·RÐýý½þí{(Ô !ú2‰€H„ØU…4žWÈ0¸ó~Ä[\n~gÜ!Œâ˜zåm«ŽÿRiÌYö™UéþTíé·a£“> ÜûçCfŸ2R”sP «²‡¼¹½'Ÿl ÌVz›aÑÔç«äñ:L·Ÿ™â˜ÞO4œü*Ú&¸Q¶žÕì²aòpà(üFÆšÂ€Š‘ÉnÞÁŠ2fe[Fõ›‘ÅR MÓ\õUž _aEÁb¿Ë6FÓ]x®šÆ¦÷ÍÏ÷dvu¦ ¿Vk/) £¤£òReÍîO覣ŽÏT­sÁàþ&÷69î.]cǶcÕˆ‘‘-¶ƒŽßPÄh×/‹ÀL@jÝV®ihàè‘dýéå‰÷Š]jðV#R?Y Œî…•rB¶<‹úâ›×›ž+Õ|]œJv سeEêuÞéßkã”ËY0Šr>T¾¥©u¹´ñ)=ΩA 6ô”E§LX~ÔdFoV½ŠÄGGdÿÙödÝLŽîŹ»GFëS/•Žv60'e=äIøŒ;†¸å÷16L—5,.•5Ž#úÛEÞò@(—-gœ²M,kFÈ[ü³púÍsBk5[C}¯H¢•*ô–øçÌ®Ís'#ÇŠ ô¯Õ3ý@ü0 ÈGéQ¾õ=YËfÝh¬Jï…¯ï0«ˆõ¨:øjÒâøSôÍcðÝ?3D(JÒß«ÝÊšŽ§ M7Ùy5y9/2? QÁK.¨íšÉ£ñÚ.÷X¾&Ä´Lãý¡©ü‚‚6‘¦ï€\ôˆ\Ž» ŠlÞãçäVÍdòƒëûÛ®iÇ7Š8wò<)(ã?T/Ž_ÙœvC³\:çÃ,zrŽÔã]ƒ²&ýÌ]±x‘Kª« g·¹”{«ÏÏœÁÉ iZ±Û$¦Ybã í>`U½.e{žNÞVwŸÓ )Íò£Œ%+:v•]SÚ(]чÂ->,ë7r“šlÈ@q§Aê:˜ÉºW–ñjš¯_Û>X, MöŒïb¿mùú¢Þ}ù|Ä àO$ƒ:ÎûºæìxOK\Õo>!+¼rf22ä_;sÊ&¤Ü¨í–GÀ{h`ÊI· í^¶†¦¨OÄÌV6XxØl@ÂÌߨöY° •…ì6‚r;î;^ÄÞ™êüLXÆdH”[Xªi·¼µîc–Ñš‹&ãÁ€#à5Þï@òiNäÕ\ˆ‡¯æ\ewöÎÌ@ ÄÍtÃ<ì(”ïø.ÖÅ5Ç òmá^úMÆäÄK09›àeÓY‘O …PªÇÒÙbÉM?Æ;¢¢ò·œ…1iIàÇ=ÝY¸ˆ“íôK:k/¯ãG‘j} ÄT_è.Ù"Œ/jUÀHçã¾²–¤ƒ0œèõA‚ã}¾õQË÷!¤Y ªT²äãî÷…>¼|tEæ+ Lçð' é1‘2HMI.\|·*Z§à/ õö1ý‚¶_zV´FuV ß›½‹ÃKÌK«Vê˜Úä¡ÄxWL~Iu‚© üø˜ÒOsÏJ^ê«A +Óµ„8sH»·ž|tÄ«ÿÌ}K”ÀY Øñ.F‚ø'›œ3ž—*LLPSDRÒ‘ÞfÌ’}qÕ$^E‹S½#?SD‰ßÃí ë|XŸÅÑšC/;*ÞëNB¤ŸWi»Gß…ûö_AXT}Énå¥åØ+sŸUØ#ëÑ-ö$ÖRÐøÚù¢ñýCù|–xºG+·j…ßË÷!ºFÂðܸp:êDú¯á{ÔY‹Âg–”‚†Y¨‘! ЬY•Ø—HǬÅV¾S_Éï«¢W¤3 1òxÜê ¢~ù.99 Ò€ÊW½1Ñå¾ }™´ß¦åo?ïÝËù¶‹úÎp³Øýng– t«£e`—uÒ衈Â}É-æäí6G®ýXÕf²A=w!VÁ¡šÝ½’åÁŒÅKÙÕC8ÃÕ¡a©õÛª)_Ç>)5i™7ÍPýܤ£FGÍ­ž*V¾Z=žG÷˜?¦"¥‡úÇõ̬ ¾OO…bå3ýå¯öÉ”/RÒ²Æ2¦bºÂKïE² 0gõnyXv> 6|LXÜ› GxgOŒÓt­¿»ý0‚ÅU†Ú³eõPTÀðq¥ðïË%-ÿÀÑVØs¹ÅA }oý¥Æ€‘H©Â+y¼ò©0Á‡,„çœÑtÀù1¾2B÷!‰¶É½E•èQ™bœeê®poÏ£kU/ïÌÝÚª}˜VÖÀ˜1þæíØæ« ´ÍCŒñØýyÊR—œ‡¶gƬDð½•`*ÙT7[Üu2-6;Ô¹õ7Ó$«Àõ¼P1†^ú×»%”zÇ…JýV y§AŸx"¦o%}°¢ç‹áGfhÜ‘±ÕñiÆ’=[ßÃ0¢ÛÅ~o©ô¼;*„¸ô8;te{º€}¿:ù$D˜Ä­8Fò*ð2¬º¢EJäÐ(x€v9NqÝÆŠe3£ºD‘uøñâ=¾¯ï›HgšÛƒ É%ž–ùa`Ã%VØ¥—K³Ú·.Y`9—6íucOM&'´[íõpùÀUÚ SŠŠ××€mS°NÝ3Ʀðó¸QÞvÓ8µÐüä0RiÝ4jæ`õÄÏð¨o‚„SÐJ²¬,\>F‹2³«(¸ñ n¾Í‰Œ(ŒÝ¿•SøÒ_Ì™ƒ` 0Ó¨I ,-ª~nEÛïúRS4Gܽû…е.ðó¢Ñæ¦ÊçÔ^b­I‚½_»i¼øA2ŠÇX…kÃ쬻9£å)¡É‚Öb9“—[VÁ?5t3x·ð¿U¼€c1QgbÜ7þ¦ä>ºãºßŽgÁsc¹Æ\m„[æ^*%cì,}e&!›÷¥s€¬&Ž”{XÛeCüû6á§”ºæbOû¸WFÏŠpºR#˜«ò¹¼S-]­.7ø6"Ôc4Ë¡\ÆCÒ"#¬;F¤kO} ú¿áãZ–x‚̤nÇm–·9ÇÐ?>¼³.‹“Rhdq2`žc—«4|ÙÒ>rëˆLÿ-<¢æ„Û™D@¨A#Á7?]Ø`pņêâÏøª„‹ÉL}j¾c2‘ò`­¦È3Îõ{cÂö“orŠò_Ão5@0}"4½³Õ'w™£ì˜y«Û'Ý[¤7´žÝ½ßq×éB*‡8†ru­ÞÓ‹õÕx.&‰t;ã&Âþ›½>TfÐŒwÿà E,-ž/õWr9‘4Ëäªúe–‡Ö;àáNéÊI[–R‰™X«žFž¥UÂêí·Ûž¤Þ¬ çî}hépþÐCQ¥ô&(]©Y˜ WR¦þlgJ¥XÓqÁϰj5èµYð¤î]&™Ü²ëõ§¤4%f?áó PrVŽãžMŠˆÚçì#f0ù†«€“¨£þoÞãH¶õ˜ãÛ¥³Q™Âú'7éUSá2ùØ^ð{rà×D/ã(‹€>²á1z½Žºz‰Û×ó~»SIJ#"mmPYÐÎib¼É&µo ˆ_“g9™~ýRŠ©z„êmÛžâ?³PÇ{~[( “›ŒçšI'\Fg›ŸAÛg6%¶á]íS£å ÙâÏQ$ ™Ü„I8º‹ÏóŒÙ±j4…{WÂEvÇ-v› ­“±K‘¦tNzÊ ¹ž¡QB—ò‎üÖ拏4:ÀNO¨SðDÏ8Àd.N8†ß¤n)èTtÉůÓT%<1“@bï„ÑU“ãuLøÖvûˆñM‡&Iiv"åò(i»ý„\ÚŒ³ëˆ™v^FÞÔŠ’ÔFÚìè{ G;ù½°G)QͺODP h ÓlZßI0¢{ÿ^ãlqñ^¼‚V>fIyì›jâð…híYÜÄâ (eLK‰ûÂLŸÏÊ?ŽSîM·Éh\ßk_Á*ÑÃÔ³m[NË«J(¸E58óÊÇMò$¾VÏÔ¬ž¿ÓøŒÃÐøÊÈ⊬Je´ª@Ëéepk.ø i˜ì{×ôÃ7?òžn›°.POÏHÜ®ü_e“ãTªE Ñi;â[ŽaаÏvzãq1ºÔ¤®8×+'•žaGåJÛ%¹ÞéõÞÿ¾»è=»ÉnÏ£¬Ev€[±xe8Xxy¬5 ®$@sà-]æ\‰;¿pø^wŒ‰Ó¾Wöä2Ò¼¡;ömoaÀèWÉ(ç/0ORu¼‰½ÇnO¨Q¼ä[ëTI¬6§´v‡-y*Îînƒß‘j§Žm ì‚vlÝéõ5jWêÚÌ©™²ÒûÌ»OŽ¡XʯZÓ°61Á¡ÓžÜf5™î±o‘楑bÀ¥ÒK©ºÎ«+íý¸ŽÕµåùaíWßlû¤ÎShbÞû«+6¯¡i-qe†? %™×áÕ’çÔý $„âêR®4ûò„ë*‹güÍÉ•?·äXº2×¼fº[6‹'E‡ý£gÚùÝVuéMŸÕ×0Gÿü>ÓÉÃÓ îsùâ-œ10EPÅàë9Œ *òs%òÑËÎ}nÜC{¶õÅ ©Øîm§¤`n¨õN43߯7NcìËoU9÷ù…•3ÕP¥évd»ù0iÄTÙZ#ð‹'-mG<éì}ý„JX…¤ñ8Ð|†áÙ`-£|ÈÛžž¶ðËéÕÄ„çÍÑœZ‹lر2aFªBúÆïîrð13{sF†Ù5•ÊÍÜCr´Ð¯Ü* ý¨ŽØQ)ah”×È<Òi¸›ñ~ Â\8ƒ)zÅ©}Z2ƒ!§ç`Ó§Î(u­àè *#Ávz™”8Ów8j¢%äù<øhdLsÔO¾ï· ™¹0h¼,2Bïüø$ý¦©Zü§g‚:9lªòž~^ñÆÃIç,ùA-LCóÍÑÆ5äÕKªã~ÃêUJµIæk²£¦×7ÛO:JµL›_y#yÏ^£ˆ²!]ì/ ±u‰jëP7~ºJ¯‹E¨q!”ßô…y #ôNpõ„9ç£O+ï5éTa”îa?ËcÇ€ïõÖÏ׬q³ާÈÞ”í’û­ÇŸÝÏ¡òYªKÖ¾KyàGÒ £Nx¬FÍýå"w5ö+ÄxcÙ%Õ,¤·IûQáÉÛŒrö?¿Ó?`^ð zèæBÂLÆ:’RËz}6ÿ]2;Á×eö“·£RiðˆÄ¾••[Øló$›€êã—JÍü|íN“*5ûŸæîØß ¸ÀùeÙý:ÖË‹/Ô LD&ÑÔK{¹‡"m¥#5¡ŸAe^t|mm—QÏÎä.s®Û4ì­uÒ‘Õ[úªsHçáúFz›c6VZV€c{§±GÓùw ´”Å£êÌ£íTs?E’´ˆÚºÇ§„íPÉKM^±b~oSéçÓ9ÒAV×;"ÛásqþñG'fAY"iûiay*t[un£ž‡6k‡N4&È!Î$Wcì¤`¦ZTFè“~¢v¦SEf¶ÆÐÛ'º­)øÖ»ø³< ÉñÍÑ ¯É-ÝÜ îCÅAýž·ݧ¬ïáU …q-“øêÃÓʲÙÔV»µý1›±³ÅX‚ùŸŽðF°¹h¡ázш¢Œzc‡×®¦>·øqìÌšç$K~dEHšVáb¤ï>&u?æêkàKXCRÛÞİœ Ë†‹ø€o¶oS‡à—'ï…þ;1¡Jì’5?ÁN}²7EE·¾eŽß@ÔÖ³æð”uY8Gs·×i‘Ùd v~ÝÒ¯!¼fd Éa–5(ÉüôpÉ.æÖebL”þíž0³XURv­#ÙdVÒ³¦¦a+<™B:ùÚv࿯v¼ÁýàжºZÛn½Ù{í}0q‹¼Ü©»¥-íé`…“ T¨’)ó®— vØfïLJ'ÄO±Ÿ•r îrØ 6Iã'£qÓ˜wÏG¥ž©á4-÷×ÊŒøTc)ñ,èËFmeé®N“ jMɬÊ~phõ^wq¸K9tú. X²ï£·ˆ‡®òRÜÄé„i–(êd|¦ÃÌ JÚO9Œá†5wHmÕaÏ)ŠírWåR-±Ki”28b…µš æ>Å­S n÷à3B“JÉuøD…U$–™JAzŠZE Al¾ZŸÔzzò$\ø»\â½QÛ—Dî²'·;‹­Ò‘ÃÓ>ç5ÞY=ú_…suóÍ{Í;Y´‹6¡#!Ù³|¼ýÃ%_Ÿ:Tuµô—Šå޽Ġ¦º–RÅÚáU*íxìEÐrÔ8Ô_rxf€€d?^ B‘›×ÔÔÌÁïz"·>mÚ A¿,絕X޳õrQd—è4‰Íf1ëÒG}=8é‘·’3Ë ªQìÜVö|K•¿¿D0˜·ŠîfQÉ®­ªC^2̘ø‚µÛdóù)=?}§×œŒý1 …Ðýãv/=‘!¹Ì½\«‰J³5sé|ˆx{c¼ÞéA‰.çÖõÎÞVô>[,Ê÷H’™H÷Q8„çYg,mÍ—rØM–pôV·{%´„ê#‹Ý[BßwÔvoÈ£†,_%ÍÏ=su#¿ý æ¾U_W"XÆ`‘ÊH-‚EÓ„z<ˆäÃ[adð9≂:é*4. ]©6òùeo–Ï]‹òˆ#¦ÂÈí½¶†¾„k«¶éU³¶áõµ3vvÛˆÀÙš^ IKù1-RCŽ©„÷dtðMÕ‡%?w%X7ò†dÈŒf”iêøÎí¬JqÚ¦9Šo šÏÔÓ[ó¶ScÉŒ!…—‹°§XüwòÁß;Iòmƒo[ïšH RVø&à(›žµKn¼kìÌeCÓÍûIæ79ŠFª¢ÏÎsa3büä² ¡ÁNØô¥Æ›A”ÝàkŠJ/åçzÏið³•{kúãÙøp=˜í&’å°Ö&Å·1ù ¿»èÎêÛê7Ý&µ*#{C–BÓ²#È’Ö`½½v †•‹jxš,G<{Qùàq3… Q!&of3›ˆ=²5ŠÌbq¾Z3M7*´¶ÿ¸­#SÏqLŸRá ¦›ìUK~\Ùv~eIÃÚ¾9Fá²&ì‘칫š<ž?ýÖ¾-Ìøô?çûç¶ endstream endobj 1002 0 obj << /Length1 1674 /Length2 11132 /Length3 0 /Length 12204 /Filter /FlateDecode >> stream xÚ·PÚ.ŒCq/Npw‡âîîV$@ ®Å¥Ðb¥¸[q‡â^ ·ÅŠ»?ŽÜ{Ͻÿ?óÞd&Ùßòµ×·öLè¨4´Ù$­-rÎ`(;§0@ZUG‘‹ÀÉÉÃÎÉÉJG§‚:ÿ%G¥ÓºA@Î`áXH»- /2 è‹¡ª3 äîàâpñ s sr¸99…þeèì& ±ðYTÙJÎ` •NÚÙÅÛ dk}Éó¯#€ÑŠ À%$$Àú§;@Ò è²²T- v@§—ŒVŽmg+êý_!ߨA¡.žžžìNvg7[1&V€'jÐB€n@kÀ-Ô,œ€·ÆŽJбAþRh;Û@=-Ü€€#È †¼¸¸ƒ­n€—ìmE€º ü—±Ê_¬€¿/ÀÅÎõïp{ÿþÓÙÂÊÊÙÉÅì Ûl@Ž@€ºœ ;Ô Ê °[ÿaháq~ñ·ð°9ZX¾üYº@NR`ñÒáßýA¬Ü@.P;äøG„y¹fY°µ´³“ … þQŸ È hõrïÞ×ìì öý²­mþhÃÚÝ…C ru*Êümó"BýÌðqrr r €® —•Ç t¼]€*¹þ¿ôàïëâì°yiè²¾ü úB,<€¨›;Ðß÷ŸŠÿF¨\\k` ´QÿýE ´ù ¿Ìß ä0æ|¡€óÏ¿O¦/ ³v;zÿÇüÏséèhjë³üÝò¿•RRÎ^_6>7'€‹‹› ðrðÿï8 ¿ëø‡¯"ØÆ ôW¹/÷ô¯’=þæãß ÂøïXjÎ/ÌÿCtN>N«—/®ÿgºÿéòÿÇò?¢ü_‰þ¿ɹ;:þ©güËàÿ£·p9zÿmñÂ\wè˨:¿ìøMõ­®*Ðäîô¿ZE¨ÅË6H‚m_ÍÆÅËÎÉû—‘y­5@P+»¿Xó—\÷}sÎÐ/Ì‹'çÿè^–ÌÊáå¼PóOðe‡þ;¯,ØÊÙúeãæãX¸¹Yx£¾Ìúñ|¹^¶Òèõ'™ì`gè‹ à¥G€³êƒpXü!ú 8,ÿƒ„VÿFTÇaýÈàþr8lþy^ã?´/ØöÀa÷Èàý¾TñOß—2œþ_(Îþ|)Ãù𥠗À—Dnÿ€/‰ ÿ€üè?àË]¸ÿ¾äõüä~Iäý'ü¯X¹»¹½¼FnÊËtþ…ÿ|ú€@/ êÂg+‘PûÚж›jIRO¶íqn^Œ³è ý-YbÍ`é7·ç<ù1ó’]3¿bn×q¸Kž› 9ÌÖüRc„ êÛm,7Yý&qEï *îÜ¿”;;Þò€­m ›µ¾y^HL3½fu=ÝžÍØ“Cß\y]awŒÌÐø›n<6™HP.´]2£½RªFrz¦C‘r&1~˜H.·w›Ú?ÂÍ÷s`ñ +,h#•tÃEù"c_ìón?‰òÛIÀ4ÝV,ÑýGÆà‹¶ÐwŒ–Qmq‘LÅ­É3…³­XE-Ûf…ÁuøþxéõÔ'ë¯$³½,~š‰0wÊ”|^HÖ)ôáácøÒSV&'*÷ ­oþ•ÜÔïÐZöle?•š¡©3Hrætj!ëH:^£†ö¹ï×”Õ«‘˜·8«T;ùf VLV,²ýœ£ùJð´F· ­KŽ +úôžâ€&X¯€ÌâhT^”K2zÏÑÆÀÑò 7ã¦æˆx°×ú.Çù×ù@ŸþHŒ¹|dßÔž¨¬ tj xí»Ol%ÅDy¶;þÐ³Ö _búäÒIÃéËÌ·QЍ!~Kyœ)ÍôcË&ÙH„éshݸH"Ÿ‡šß çôOŽ™'ú)Ïaäº5£6ñÑheþ¹®±fV¬aåɾ‘u#ü=ÇkâÑJÚµ_úê<.i“ê.@uÔ´§µêïQóÒ(³õ4ãÅ`VvQ¸aÎÊÊyø¿¸À–ŒŒ¿õÇ­uȯmƒùIQ±™ÿIè²s»·†fLU´Ù†Ý÷lú[Ù&I`+†<Å4zÓAéï­w¹3ÔÊ”ù¤¸‹wÙ_RŠ©&juÌ»'š9K‡Ìðø"}ò¼$HØø¸ÄœFŒ´ã{³$Ìúï!±O àÊWvOº"$…ìý”ƒßùà|US}vÐ:u6°’/틒Ń^÷Ý“o¤!™¡ÎªØUTÝ+B ý±ÉSÈ›øô;¬’7XZ—'¿Õ¼ß‚„T76'wv¥m°£5½¨­Þ¼O\\ P³«ˆ¦ã<~»!S±½ÎçztºF‰ç8½2hÈ)ÉP…ù ƒîid] â9îÑ‹IýEÍBËÈ7‹éÇž¤u}÷v^Þ¸ŒÀkbžLUBß8(@äJ‡Â,:×xA—ø˜…⓯Ä#'Iw ñÑ!'î;åúùwkŽ ¸2Ó,Ûó¾wÁÜ#WƒEoLî£èÖÁúŒ!ø|kôßW­ó_ØèW·AËLSnM;öy¸)/á,ÏöJ³õ0ᦴ‚Ô/K+0vé“Þ>îÙ­@ä%©ë6év°âÆR¨§ìŽZß<7Äé àVÚÑä$Ó¦"ëLLDçBÑT¤a)l3g¾ji=òä-ù«Zù¿í9û_ðø.U¾´Ê„Ãn ìfúëNˆ6ôÚÞ?~²Ÿö6{« c°óʺtRoô²±4ß°D섹ø}ïx:܈Ý[a[RMÛ´‚ d¨Úú§oBÔ-4…°2̧´ƒ_Ú2pz{›äJ„Ôa d±}½©?fjJz^pœNrHX¤|MˇiäççŽ×Âv£ánº„ {…ÇrnzØÑ?ìAX^û~í`¾¯ûIOÔ]óµ`ÀèøÖF,>`éì†7‚1ˆoG„üœ°³EÄ~~S)ä‰åf¾Å9“*fçK1“w»Ù<”©ýìç3[5G=áÓýP´å;Æü;Ê){Zö·ñxÒK¯‡Ä¾ßX»mátæúôð$ɘQS2Þ¯|ñN(ÿRµt)ƒ ‡È„A+y)øÈ•Énnf\­ óŠõ ?7ø¯öi,(2BâÇfõÓÞ5Œ"å¹Ü5ˇû£ló7¯ûM±/ßí»UÓk&Ïqw¤OIªšfÙÌüoô2¥ˆµÜ¤þ:ëŠÝ¿Ë[¦n~dœêÒ'IcÇǰàRA`¯÷lY„‡­*T”=í]ÓHDz½µ%y\i³Â„ª“X++xñ˜®è.‹â,.Gj‹6Í—Ú úÿ¡“*èbRÞЭ7˜öGî/Àqö¹ÊVWÿ ~»`¢ð=9èU†Ì¶Y„ ûÍ‘ãaU–Ÿ£Né‡ù uáüä÷ ~lÓ`ï0‚|°ÀÍ™â$J νlÔÄX-Ïb faQYòMg_2˜òkiG…Øf*kìƒK# 7ÜhÀúñD§Û“ˆ’HKÚTäºwÃþwoSv®[”M`Þ{Γ’}\Õv¨0Ù‡w¶]k»r,NÁûnIq‹}^6´¶4&x£ËgÜb>¹Ö=Å´wDuÞ¸~~l暉Ŷl‚Ã)z|í?"÷6þGgçµÕNÓ8Ok9¤Kñ*Ò¥Þ¤->êÃç L¬Ó¶v={^€¢Ÿ143•ôøã6 RÅœ¡|ôܧ§y„mMFú´OªšÂm£]&G]ãžEW­çöÍ¢ãÏëæ*Éá…×_<{Õ¾7#…úË-[ˆ ´ÄGyÆ þ:§ûj¡ZbÕ›xÀ‘wDvjiI¨ÌBžÎíºZfcƒ£ŠÝý¼‹¯‚5çÌÎໃ†RnƬ——dQ[R˜åÜxz½AŽ™œ„åxÄMÌTOÄ»#a™¯»î°}ÊOD{|Ýï ªµ­Çb°éw­ól‚Îe(çÍÞC¯/é§àrXßÐÀ<2ý4üÌêóù¶ß'f²3ùWQUrÌ`Ncu]¸>µ‹ûÄ ÉéÂBË«dmÓíá¡OB:‚Í,³ Ú¸ñ¬eÆY3¦ Å=öíIJ•ª»§ž]+¾>–±¹¡Z_õ‹I(ÕœC…ß~8Mdì|eÝP" ñ °LNt(Ó@³%Ûä8!ªEúu~õÑÜT†"§±;ÙgŸ2]瘕V¯tJÇ~ìhÉh­áâÃ36ùs ßÏŽµ¦bhè숦ëhåáBêwy«ñ«#ß‚ÌW~ÅZ_oáU`±Ñv_˜â{HKÚíÒ`1òåz ‰ H :ïcqÜ`Vù•«=¬þ ]ÒC\<&%)g­un³%^Ï"êèa¹:‘ '8äWû­×¤ÝœÎ÷ä{I=½™"2AÆe5¦þ^»öHW2öX/Ÿef:ö›ŒzÛ¥üåÃn&PÔFÅkÀrȴi&ûöªéKÓÞ²¢Gîé‘Àq Žr[ ¤5WÆ'‡rÚXòÔ¸ÏËÒ½ØÑµ-,& t¹Óáø±ÐLoð73T¸’»¤Ç*¡&âY†öt]:Cœ}TýÅç[Ûtñ:áľpö~Å!ÁJÔgðäÒbëVáíì[Úן®xûpî°P'bÖqäÍ28 (úÏúSÃ;ãîd|Ì–ýðÈDBj?‡àcëégªü›h2™Q–QÜ…‹îDpøÝ5HpgÍŒèvQyJ¦ü&uø6Ä £úFB{*84¶²ÝACІ¸¬EL¼l÷¼"l°­Ã¤ÌѰ±Ó©Üi‚!¶FK›2³0=7X£¢­†Á×#'ºÊ5@E3' ôšKœ±­IF2W«ü¡ ׌w¹,L’[’YŒ˜‘¸d¢+ùЇhýFÂüõpýJå ê†^¨ˆjÎê8Ÿô NÕéøShà©])rn¾ÆôÀäÔ½Û«2Rœ{µaU¤Ú4•ã –  X€/†™WÕ˜ßïžÀpà/+œÐ)L ØD%ššã¢S‡mÀþàûÈ"$;ù—[§y´ùÛ/éú“8õãðºY¼Ê錳ï0¶·¢oN$Öë¸UxÌ:á;f‹Ápf±‚ëø n”VÀ}O)ªü‹„ë{°é€ ‹"Ÿ§¡©‚Þrm»ˆ.õàgÊ‹õ÷jÄDÝˈ¸-'¼géá+Ì+H}—¢¾F™¿uù?8³¨Ð­ˆ>Vß²è[ë<†BpÜýË\!ÕÁ]%¬š?«åªÄµ:ä,2;o–Aë$ÛYâÞèÞ–!^“6º¯U>~ÐÇѼ.À ×]fã¯.í-´|eQ$¬H†žPéÛ{59Iª¶©l\l¶À?ÍN©,©Ÿ\{+•k&2‘uiÀÂsÃо1l³c~¥NQ0IŒ™qDù\G( 6Fš îŠÿ 8.pH¶Åÿ»R¤ F–¡ÚIñ×™Ù·ì-’y½Ÿ³®U,OPãuF_½ø©®Trr]pU÷´ë–23-%>(HáÐòÄ-A¤“ŠpÄz§Yd¸óJ±å~/´NJvQ©ƒÞ­ÍÈòápµºö€ÈL€«œÕ7š›¢2+«â¯?R;¬U ,9>tâĤ­ÚõÍÔj…à+Ęgä¿ É}X Þô‘f:*Z8pX3æ#øó~¤ÒÿÌ“uJ9#IJkÉo>I†k¿„ öìq§ê“û¡*‹¤Ô —N*1Äà½>ÖßSÝäÅ ¢c ©ŽI^¦ÎˆT]ÏFûcZ>oò`täqp/}ˆ„01™á•,#\®J?­ÆdphõÏ_'ˆú? T’}ˆoÞ¥´å¥œªåuäèî7Ђg™ôS´± õ͵G—Í 6å 1³¦û šRTIç°¾n“š…Õ¢fV .4šiJ±MªZe~[/þ°ô9³P#cN0Þ#ÎÈøö-Ö¿#2›‚ÙÊ ÄÃT˜Þ—ë°ê[T“!>Yý¢Üƒ$Nl†6&ÕFÂMTá Jò'%)©Ú‘~r’½–w1ȚɹÚÌ1i%Ùr'Í5§ïDk«­4Ù NÉÉËxî JO|²ùâIji*æ÷öù,mtH²#Ý(³8“é»å3™CØöÆåÃ,©ðI ßë)g+3—÷í”Ë1W?ìÕÐ/ßZþt!F°9åÑÿÕ¥õá^ìâI6Ó2ÌsÈ„É÷mkƒŽ lÿJàÕ;FG„,ä°¬‰(hˆÁ‘xÝþ Tç÷7¹…È­wwiðUS‹)–Þ@âÔñŸPî÷"¦ÍÉŠ\¦Sæß6±ò‰Ùàê+ÇÄMÆ?ÒnçòÆ6—{ mê‘®ÝÄó ·¤žÙÜå$TüH«ÚRÇ?‹X.õdÞ—` ¦„ç7ì)¾;H0}âÊÁ…ÿŒ³ßå¢ß‚û :~ÜZîìí4­;Nsí{‹1îvH²Ùc™‡¤ú+è»H*[ »Œ÷ 1“¡dÚaŽ,Ó|}šì:άÌU?U6Èë¬`%mNbw\[‘± /¿3ZS;àŽ-í*ÏbâÛ€ ëfõ\ªT8Q¾µ˜4ÝJG™þšqƒ•ÚXƒö&·“L§ö_|wµÑ„¨\2‹â‡!:«ôce’97zÂzÏÑ'u¥»áËpœï„4L1.ÖÅnÇ›2ÅüÕÕ·ˆÙjñ™Al¬*½Úë²»@¼W Ë ï ¬ñ0‹Â jš(%­Þ h^ê 4Y ‚Á$¡QÒökèÁŒªöîı¯–$›Ão7°À¶n"H]”Ù9·özòl€Mˆ¸ûD¦Îø“¡¸^ʱ3\0Vlþ,!ºÖÝ3L«¹Ç1ˆ,U, všR·­"´T£ˆ—–S¹Ù?ܳRÇÀ•vPòÑÊ!œòŸ“g>˜l,­P±æ·†ÝØuXSmõ¦›+•„UÆÖךX•E€U¹Åi½Ÿ#¤ÚÒ&j|«ù^ÝB&QcÌiQÄÇÖ ‘¸¡é²”o œA.¤NHŒ‡es†ˆbÞ-¾!eg¦ž¢k¦‡V}ï¡)4ï´@©5³0®ê_#¡Y¸[º¶TŒ=¯[s%BÊ?N¯Éýt+A‚.oJŽARévïÍo%Žè]þz:—Á):‹›Ö­DÙÏs|ÉÅf¨éwøFæ"òÍÝü¸¤ '‰"Lqž N²êD(jTí´¼qÞc˜ ªg~©G®Ò½P]‹—–<"—82BÖ3€ÇbbÄ#Vv)v¹™‹¬]˜ÏÂHCë°gfÁ£ ê–÷Ÿ7×ëfØ´qºi"czk¤ãÐ^4g¬ñm)ÿ´=N+‚FýUïc'ZbÑ}!úÁÏÆGħ³à‚–HßÉlRÝÀ'ªíì·ÔÚ«îí>±iaÝþéüâÊž­Îšõꊣ¨¿ûYíZ‰Ú»"Ï-–Ï­MíúyDB§ÆDõVÄ ’¶k‡©4l•Óíê¾Äm$,pczÙCÐS.UÍJg†Ë4U—m>ýrdsF(HGn§Ìor±(\)±TE÷.ú?)t:Yk+ÄD ‹_ç·]<Å#ÍKJqYL Núf«ÁèÎC:–†¸ém5;¶\4ò‘#­:é u+eWq^ì¢aà¢í‰öègHaƒº,Z„µÒ¶€%&¤Mô=\ÞˆmVlƒ·Íõ{Ëï9¤I®©Ü2Ã*&±“ŠÝ¼Ì0ŸU®mÂ7Imæ»çv‹‚”*M7wóñ¿©^Ntø"µNÃ9N°(!!㑊£&C«Kí‚y\ß{S ݉B¤5-°#zß”ù¶½[´eGdcÙƒét¶“@¦áMëÒxV.¾Úq8Á×Íp¼£Z€[Ï~€fKÆçƒÙµHœ–/æ8§€¡ÍÀ°éV|#*òˆœsƒ˜ÒÝüÈzÜO±¾* K:o ¾ÝÑôÆðn­1ÂÔP& ÅE"u–‘×vïûLìiNG݈fX‡@]Ñ‘¼Ž®QÑõKæî~ëûnµ“/‰‹-›çòÉgÝѾ ¶/[² C«WÛ“¿±ùk¾ÊáÄ„Y…úM_i E]WôÙý<!ÙU¦©ÝØE?ŸÆ¶¹v0±¯÷‚é7C×*dm²BQ‹ÞUwÏP›Áº}y«%.i¡Íô”-iK…ªtX(sæ ‰Ÿ/~îØL¼JP`¬ùPÚã±[B³üù-åügqýn¼³ªéõ‚û$+*ýªBº\$#tþ 8õ¡«ÖñGáÈÇ™]÷hɲr¦ß͕§l'qÐB¸$±2XÞE°I)¿w|\2Rˆn¦ Š'ÁÇrüäMšaÚPæ"¡]gK’Ïn‘6^bŠúèixmÏd6!©ùYß·¼çÁtg¶þ¸?¨Êsš“ã¾Ös¶C Q±£iÜ ø–ô]ÈìEš à+ïÒG©}M¹gÎGûk}Cå}rCÏQŠÌx?W?[‹Zz_‚óán7<`€æ°¹µ"\ C!xs«Á3mŒÊ4­=Ûñæö¾DTæç¾#éôâyph€97I½ŸZ’¬gMeZz­áhÆqv]+§VÓ¨C¹×Û²†ÝÑ OF¦˜þÙJÛ 2Ä›»Ñ‘F\Îh{Ï6§¢JŸŸ¿¯¥2ïà×QK>/ÈÃôˆ¡])É0KÍl¾¿‹Éß—ío®ÿÎÚY A Âks"!xù›¡åyht$`1YI€5)rèÁ+_ŽûÅ‘H˜­<…²_whÓ¢±¡6 טƒœ ¶knÕmŒü³0åXóUXKêˆä)ÜŒ\Ç]Çgrž,Zâ7ž7Žm뾦 ØïˆY»ÏG*OQw$ CO)R¾Í]¸æ´GDÛ]”-æOf¶=”·6/bEY¡ÐW•Èô7£|d§ë÷ w䉡ø퉬×ežzØ2—•â®þv,¯¯ãËÉñÆ ·CìÄåBÙ:ŠŸ*»þã+y¡#š~Ü3yrfíîqEîÍkÇÃÝœáïªjÌE&ÃÇ̼߯ׯÿÑÜO±ÜZÄ*W¾½$â‡á$èÆŸë;ñªì?Z’2dÛYÛη齧G¯Ÿ$­[bñ­½6 ÔR,¡Â‚¼H¨õIÑÐ>ÿsÀͪt }Z¦‘†€ ¿ÉúUØû`>Ôv´¥xÆ EÙëÚÉaâõá~úç1U²ÇN™»u›†š¸+”@Ø4­¶:æQ€Ì¾Î73©ïÍw¡%™i‡_ú*ѤÝô„€m)㦌ÐÄÜÉ/.ä‚:–$•Bõéb?$Éeø‡´U8³X¶k:USõ‡ §¢Ú(H qK^½M3(5WTUÜÄú­”Hþ±S^ω±±O¥?69›ùr¶IóŒÕ-,Š%æ×[ é¨..UÇË»¶ËwE×Sç>.µĘq++C¾yÎ@?Ö_ŸaaÝ\”^ôÞÑà¯ñìµØüäT‡o(ÇÃÈOáõ¤ÌG—¥KyÓÜq1 ²/itü]~ ´í „&|,¦YÖ ååãìœ.‹,ÍKÙ·JÙ§k,='u;k¦KèWYœ¸ùíjýÖà[Êñx:ͪl™ëPÅTi‰Øu´’~O¶¥Q>¾M¾e¿4j¾5#õjƒHÕOµ0û\<`ÕV•øÑ­ñJd í þBíÇ(ø yÛÛ‹“\$¤ºWDe0Í)ïTNjHʺ.œqÔá |=£rù<â$ù|K­ÁCÀ¤…_õ˜^›®ÏÛ}Huö¥ædpêrá PÅçý:™!¯@-éæÑ§Å,U 4%±Ð¶øl«ïîØ;§£Â~Û´œ;§U·tjvS•_µ¼ ä­h ÷ «O­ûܯÎauérƒ`¶ݹµt÷ŽBý©]ØÍIç\Rò‰ìüi©öù¡×.HDÞo.JÝ8®d— “1"b$Vþr'rÙ‹«Œs9ä“àñ‚ôíE yo©IUæÈ@Kð›‡#¤©qrm"¦}€%g¾é’qÛ!üŽi$.¬|8ã¢È!sî+‰X8©o§Ty_pØâÕ…º’#OÕ‚õi‡ˆ/1¬wî“ÁçZVc;ßd—’ô©)Þyiåf¤›0#Ô:.I÷ƒ š? —Õ/”™ä½Èuo  s¯¿%ÅãÝnì *FkÖæt |Ë@§±äÀO§þºRŽPœûyýј ¶ŠŸULéý5Éâ±ûD¨Ž„ˉT3“hõâ;éMYßÂ`^(%y™áµßUnÀ@¨èúrº§×ÔÑCú":¡q‚3_]øðÉ!S iØ[ ÁÙpüÕª™5±È÷wÚá6Pt,yæ;buø«›K=˜›U~AëÅ:[Ê#°a•Ûï•i_¹çô¦¸ºX‚}f0[yŦGÕSˆ¾#îõ¿‚·UØ7Ž™õJíǰ‡N±‹ ¢Wô´­™€ÚGrÎj ƒK&©'ê!ó7|"l®úË4®¤ƒêÉì?°Ã…Bˆ15FÍð»*H×’~çK—bõ¼Mgb‚®UÔ•3±RPS9xïÌS~Ž2lOäe5(Ih‚«Ü〛Eö·k"‹ÚÙõn‘’_ð˜|Gk…ï¯oZ*ÈÝ×QÈâH „£ J›|Øm[>É3!‡ØôN˜~‚Ë9øãÒc„Ø_r¯owð¡2•Wt¯­¨ŸZ>¨âáí’šD˜ –«0 5ýLR1~T·Ü.þÜ{<÷•ÏR‚ÈB^èÜÖD27ñá=d98S¾iÏÜ6‚²"•VžE²×¥þ¼wP“êäÊ6 t°$¢:P–+úÊð”3$î+3¶®¤ÚbÍQ]ßé¸T^eËzê†ú#"‰n2k¼Äñ[c¯<Š©i©à ªò(ŠqlÒGE9Òa”fV¢ØM÷úŸ¢TŸë!x§¿—ì.‰"‹H´}9Q8aft&”ɳV¢BeÑVìÒ°ƒ†Œý¨Ï°³0Q‚3ûQ9ì.]}¬õ<ÞK“Šözw0$ñ½‡ºÛ9ºvöÖ+ž˜Ã‹i ¯ú „®nŒÃöÝŽjë„õù<}\eQú˜åÊ ‡.Igjv?*ïX}ü5ŽòPšr|Ò5–™+šÑšÇK)ß—í¨©yV̼ÝÙ„¾ØÖ°˜‹’bW¾^|D´/…8ŠŸŽÅjr65“TIûŒÀ”ÂÚ»¨¦ÅÛEÃI£IßëÄU oÙ4cyƒh(P+•I—š8—䌗öÕ®¤$ß›¢îÔ÷×r0¸³Ð–Õk–MrÞâc¼ó´Ô!ütR`>e&ÛÏÙâÕÎØýQ¤`gÐa?K‹ÄÙ~µÍ)”ƒÒ·ZôA\ÓKýõ%êù!BôPÛ®Ù³<¦ósŠ‘˜,!§¡c yÞšÚlðoê°»ˆžpC”¯ü½ß߬`G¯‹¾6Cekß'Ÿ+V`×Ê(‰K!(`áÍ" Œ‘gH¦Uëóü{a ëùçÛ‰ßõ+–+ Ã’!ßí·ñ B<˜1É`MºÓYÜ¿½‹úÊFfÚ8<¸sv²X.VÎóŽxÀëUÅ’ÈØ¢ôùêd¯×Q„‡yž({‹òù<õÿ8µzÓªÔöû|F‹Ž±ÅIãitwѶØì»Ë©Ê \İë ÎE ØwØ‘(5½§°D?(ÜÛ¢&vÍÕf¶‡?MOÌRçŠ|2t` Hj€OJ=íÃŽ@=¾ûÞXínÒÿKkò.‰¶Ä«ð¢ßc ‰ï§Î…A†w2¸u&Å&½-Ù=e3œ7ŽPÈêk="FÉ´%õ„bŽwô#W”C ßµ"›øBLt=—ï­PY6U¹Ìw6z˜÷a´ÁñÒ5¥Ðs­‹¨±øVJú°™¡oMœ­9–¬äT?‘ðÔâ¥ã_Òw#ÜÃ!¥ÊÕM“d©©{PžÁVkÖ«úùÑ ˜9 ÅÁšÔ·3ÕLÜ}íTI'>©î8ùvnŒ™Ôt8íÒ-?aûƒ™íÌÚë¢Þ¸ôµm¿!¸ìËg¢~ëešÛ¥ßkdTŸâ¶äO#ÎÙ½ ¡1:j½VùÝÙ^J’ …ï÷ÕÄ v*ÓÔ¥ÎTßox½GƒYWÜm)D]45zýJ¶¸ endstream endobj 1004 0 obj << /Length1 2845 /Length2 20318 /Length3 0 /Length 21944 /Filter /FlateDecode >> stream xÚŒ÷PÛÒŠâîN°ÁÝÝ5¸ ÎÂY¸»$xpwîÜÝ]Á%HweŸ}vöùß«º·¨ ŒÖÑ=»çüBE®¢Î$ffo”¶¹0±1³ò$54ØX¬¬̬¬ìHTTV.¶ÀÿÊ‘¨Þœ­ìAüÿ²p»€e’Æ.`CE{@ÎÕÀÆ`ãægãáge°³²òý×ÐÞ‰ iìfePdÈÙƒ€ÎHTöžNV–.à<ÿý@kJ`ãããaüË ft²25],vàŒ¦Æ¶u{S+ ‹çÿ„ ´tqqàgaqwwg6¶sf¶w²¦c¸[¹XÔ€Î@'7 àwÉ%c;àߥ1#Q4,­œÿ£P·7wq7vÀ[+S Èìâ 2:ÀÙê² e è?Æ ÿ1`üÝ3Û?áþöþÈ ô—³±©©½ƒ1ÈÓ d0·²”¥˜]<\Æ ³ß†Æ¶Îö`c7c+[c°Á_ÔÒbªcp…×çlêdåàâÌìleû»F–ßaÀm–™IØÛÙA.ÎH¿ùIZ9MÁ}÷dùûpm@öî ïÿ"s+™ùï2Ì\X4AVŽ®@YÉ¿mÀ"¤?2   €‹•••—ƒt=L-Y~'Ððtþ¥dû-×àëí`ï0—ôµ2‚!y;».N®@_ï+þ!±±̬L]&@ +ÒŸè`1Ðü?|þNV=Vðø±Xÿüó—>xÂÌìA¶žÌÿ:bie E †¿KþG).nïðfâ0±sp¸8xÜ|Üßÿ¢blõ7‹yÊ‚Ìí|ÿ! îÒ »ý=´¯àc)Ùƒç ý3æX¹XMÁÿ°ýö¿\þÿÍøï(ÿ¯cþI»ÚÚþ¥§ýÁÿÞØÎÊÖóo ðܺº€w@Ѽ  ÿkªüÏâ*ͬ\íþ¯VÖż b Ûiå,må4S±r1µük6þ#Öü½g¶V  Š½³Õï›ÀÄÆÊútàå2µßÎà‘üKïÎÿf”™Ú›ý^2v.n€±““±'+x’ع¸Þlàm4zü5Äf½ Ø®Î`nï„ôûH¹¹,b¿EÿAÜñ?ˆÀ"ññX$ÿ >‹Ô?ˆ‡<}€Eæb°¼ûƒ8,²'€Eîs‘ÿƒÀ\þ 0Å?ÌEésQþñ‚¹¨üA`.ª˜‹Úæ¢þ¹hüA`.š˜Ëû?ÌEëg×ùñuÆÿ 0Oc;ð¾ü¾ôþ±g2v6µ²2µr2uµûGÎÆÎý·ÂÅÊÖ øœ“ý·<’VÎ6‚€C›üA`cSg[cgËäü-vúcØ~ïÌ]þÈ9þ‘ÿgaÿQ€‹3ýqsšÚÛ‚gõjœ¿%vvJþ=Ä,jå—dfokû/là{ŒåOuà±eþORîßzGWðeðO0?ðÛÿ«Y¬à’ÍÿD[˜[¹ý+ìoµ½ë¿Ó‚M,þ@p-NÆÿòàfÿ-¿ÞÀ; üÓPNðTXz:XAÿ²Ë¬þÁåXÿ ‚çÁæ_œõOYÜàVÙþÞî?zp¿ÿU#øgù“Š  ¾þ´œäjgòû>¶ø%ðÃbÿ‡48¦ý¿¼ØØÀ…:üQƒs8€¿@ÿ3œlKÿwÀ xœÁ¯ý¿L¹ÿ’YÙÿ9uNp«l]ÿUøK‰ÅñOá¿‘+Ðù¯{ïŸØœ¿…ö.@3“?-úËï·ÐÙê¯KõO@°õ¿Î‰ ÜŠ?é¸À%;í¬þwX¹~ÛÝþux\à ÎàwöÞàòþÏ ±«ûS+øcq±tþkÎÀísq·ÿ—8†ëŸçüë“ÊÙÔÞéßôÁƒàö/&ìþ¯½õøgõüŸŸ×ÎàH^@§ÿ0øŸ·ÁÔÕ |€.=ßà‡ã¿ø¯¯1 ÐhŠ´²ho*b]ÒqW#Fäδ7)4Gµ§•JÇä½âÔéú€ŸLW´åôK,y¤c}WŠöFt•ìÙû¤µ>¼-QµýÑçÉ0^mf¯iyopªðD¬~€‘˜ICtßçÙÑç}  t+d—U®£+/šJ>ö{¿ŒGý@ùÚxØâžê~5·<òSù,SŒfô‡À’yª<“¬ 8&z¬ ôù›_sX9S¯drñ H¾§1EÞºÛìŸî¼6¾h°;wRê@ß`ÏP{‹~–Ã_ò.-ŽÞZÊf¥c†Ø óë"?ã×SÅÂgµuZá“§ôm¯g ÔîCAÌÜS7r ¯s8A["`0ww—–ÉWn)î7ØG¼pb0St‹…WòôÞÿ¶s£sr#rV7¥ç5ªg¾ƒˆ´ƒ»Þ,¾!ùîè‹£GüsŸ·Û§Ð:£Œ²Ö»ÏzêÔaÎcßC½s°BêÜ ¾09 »0½‰‡j$þ¦›ób5_» â‡:½ÂUiÍ5fÇËýγ¼qÝT^ùG/wwâFOÛ¤©bY.¬f2kÓø3]Ü/Phi‘Œ‰<9…‹#åòµüwoEåÖ̪DgÚ¥O!'Ãn{ ËóÍ0ßZ0Ô=œ5 ŸDÂÌëf…û·4§hG*ÝàD¾ãÒaYÝÔ­,<,Ì H„Ä#’š(Ò›¤Î‘Eîå<\¸ý…ýî3:¥ƒys„’^e&žøÓÈèUµt¯ˆ…Zš|Y½þlj8Aõ9• –îWôØ/EB7å;zãÄ}‰+ú5oýRÇuçzt—=G=†«£ëÂk‡µ¨%õâçŽ 2¨±÷Ú(øˆÛCU|ï}¿ÆouõÍß,Z3>OÆä®Ž½#kÜíÇß ºÇŽÌ)6ÏÑ{ص,àíëT¥àŒ Ÿ®£2;ía‰s0÷f•ìöá­8È9ÊÐ?f©þjé35Í|W¢&³9R#?m—iûË`Zk=?jcÈ›´9ÿâÙNºÿÍÆ ’¬†”.¢Õ…´Ž8iy?Y¼°"Q< ±uÅGe´HfOqÑïF¬Â´k³|ëî²qö­t´o¤–\+È: ¸†ÚÖâÄe;Š¿åEªðžÊryT;c8YM!ߥÍ/p^¸ê¢ºëtö}NÏÞËbïÐs™žý¼ZÝ)bù3-²Å$óÛ ý e’Ù`‘Q$%@%%4ã# EPîeݧ2Í™ƒe'Ñæøp÷Ø’….wóf)½%¹B_22¹&®;üˆš Ï­yz¨N¬D_Sðv°‡1é!g"Æ4X ¦#Þh®OKÕÞÆµ²%¹HMÍ6oä‹¢Îäà³öÔI¨‰|fÊJκê-vÄ 7È$Œ†¢g³p¿=`ïÎãd)ÎÍiáè­ØùPÃãµfìu<ÃF|D÷±™y;íâ:0JÊ#H‡¦m¸üö˜+BÚÔ_dý•}§snÑç0Î %æénü#À$GV?<3²Ç³¥ŽÿÓøwTóż²õã¨Ä½ãËâÇRs‹Sª.‡¼GA«K2eRZï²Ø…º14÷Šõ}u` ¯äëåØ ÑN=ûÔd÷¾/é­te€øB©ý\L[ü¶LpOʹnqòÉÊ+Mr\e¤²÷ŒtêÇ>ãoZÃwS\™…*vbóà ¹ï—F½6F 2LñÈ Œ8 4ÐrTܨßÔÔìö‰×¿USË(—(’€1¨æzæ{ûSììƒÈø åÁúݱhB ­Í>#t8Ä‹ø€L9 !“S¸F^XòžŽU zˆ8£Mté5†ÿd…E†ëeûŠÎöC™ÑaÌ#RˆÚäÊ98»´dytù9TáÌL©m%F~ÅCïHuv54Qî9Û"L xÚ14k‡7þÒxÌŽ–©}°·:D9W¶AÆå¥îã+JUš%F••?wÒùjá¾âÈYÌš¸“鸞Œw8÷ŽjÌ&ATJvC›ðk9’ëû[ æ¹·'½–ÁÀGÓìõm[Àõ¢hhÄÊV€Þ}Ú~oÊÇìœH¸útÛ—k„µñkq705à×Ò€¦”Ô!b V¦B‡­uÿWÅÇ\Í®™/¥,§Ê°HTFÔ§ÄÞ!´òü̧Vò|ù]Ýv¤žæ9= ¹H#öbsWÚž"Óûf—˜íØrјŒ™l82~~÷‹ œXsÈ;ð QI t«Û/s ïè:AÚ®²u¹å(Bj?-‹YÇ‘¿‡¹¶á:¤ÎÐÉ;µ"]q¿óÁ/%È s“¨ŽRzíJÃÔnÆIïÈÁ+“wW¼x æ õH1Óñˆeº1¤LÚ¯'!TU¢{áí“û¼øWÓWM˜h"ÇÁÀÓ1»È[:Æ/½DÒ³Bç:ž´ÕT „(ái"p ’ Çnó ÷ð)»4éqøÄ\p9±B_·: .¿<.óÂo%k¥;J* tv|ò^?3ªÃI6sO"òY A•‘{õbiÎ<|GóU—2äã DÚ²âd!oLáö§ØA]ŒñˆO…‚<[ÞÕ ›˜}·ï騰±¾ÚŒ®s‡œ¦iØ>I€|9…›u_†k¼Ûð{4u_ù¤Êsçeª¾¹Æsò­ oÙ:~` *üæw„æ±ó9V=Ô'Óœlé‹H·ö%³ë°¸‡¹Œ‰Ô³»–Àchš=c7"~‘¸‚|£7<Ÿ9‚…Å#¤í‘OuQÀ,šâ°1}Á<å¯$]no×›„Oy4OMü'úšà+ hš¡pÂA-JèÓi“lÑéÅZ›ƒ/ð¥+¯ï×QÊR•\áø^WÑ9y0£¿áœ0®ˆSíˆ"–¯°nºñøâj™}˜\Ê'­ê.ÜV-]Úûãéw ˆ#¢ûá“$FÞW 5™Çía¬¶PÑðâŽ< —WV‘ã¿‘š£ y eÄï†eŽúÓ^ëlˆKç¾üâ¹§È›4 ИýL¡J”äî0i›¸`©Ív[/@sS: Û`Pìˆ.8EûãÚÿ¡‡K¦9È‹agˆ^n{€vSGtŸ¶ ¾-½ QçFûܿž÷t‘s@ ˆëhX`¤ÂÀ­ÂÕúâiäi§NFEäTLA™ãfÌ[ä·Ï¿\h2¸$±å±Ó‰-¢yo•ÞýØ5 ^ªÉ¯(õR¡W+KQ_RÛ3£';°U:Ã_Ž5Á¶ /Ãrït5(& fÝ"à(2ì²ë‚f9ÜòW½üYïjþs'é’FQ &¿}GdÛѺü2iôÓIú\CvSžÖÐ É´SþN{7õ»é$ ¾E;'XŸ>§:¬k™{*þð+9§—&ÁMÚ ƒÞþ†z¿j•#8ƒùÍyBüžmPɱDŠ»–$JófÒ”Õô-_ÌÖí±ïö‡O™4; ¡@ž¿;>é¯ ‹p£‰€dW¤ñ©IV»–H|J.˜„$ ¡|Aí®V¦ûÎßåÜ‘Lu}šzp`)%†õfH­"—€Áȳ·uÛ_ÞpøˆÅ{IÓáü¥¿¬Nün4Uî[Iöß+Uf‰‰^¦²Hßå€nŽš{øVëT%WE¶ÖžO€ÀB•,÷y T’6ͳÈCùûŸÎ¾ìфުbtîoäŽ]൷?áZq¸F«aq@id8rÅ›øú<$±?vóšˆù†椽)RОWæ>xdÁ 2â'›š¿ì„jèjˆ/%mƒÄ½äµˆ–…¤¼‘aL~W4òô•9.ÎÄ¡3MX‡Ý¼þœþÊóM™œW|´ó“-äó: ”ý é^ã‚k„’|sˆºÈ«®`9IÇ•¢A¶½Ô·ÅI¨‚ÚfÆ@yT¿¡íæDr´¯Û‚v2­n1ž¬|Â% ¤lGÅg*“_d›PÔ1GÄe5š£æÝ®°V€‡ydˆjí6n¶”>•V·§¬ŽHª3Nö»ïT#êÓܼ.2‚/€+—œ±F¥CãÀ2“ÛÔ6‘Š÷4ÕÆ¸¤(½ôß&ð‡ò Ûý¢÷$$~æ¬Jºa¥pJ'rΘT—¨Ú‡êõEyÔ›œ7$g*f£¬áRHÚTÄÄ”e~Á[H’=‡` 7{›‰%ÇwN& ú¶05`ñi«É”¾]’¡´w]Z d¦è;¥¦ãšf¢ÝTé–~`*bh¡hÃ¥kßo¿ó¸4§>xÖ<7 ÚëL¦Wxþi¹ñd"‚1#÷Kꮅ͈>”/v³tjβ‘q„‹‘\ úÁäÎ;»téƒË"-‹^¿è®€Dñ„¾±÷î‚ö jˆV #T‡DT$„2Þ¯ª§uŒJŒä Å«·I-Kæ/°yQÈF˜¯¦†ˆºèû»o¿ ý8È0éJ*V”'L1ö6±—ÏÝÍh†Ø·¹/X\q$ô,ÄøÄ«}u$Á¼¨ y(C߇TX´—]|ÿ¡~MßjQÃb8*FÏpK·ÑðÔ:Œ¸ªà%‰«°º”F‰×]1‚ žAŠß-)r”"ºe®üG™ÿ·Dãb<)”OFõv(·µ“ƒÀ˜«?Ê(Lœ·­…ûßè‚FIúJ38ö{£Óã´EµƒËöŸ!ÊSµûæ×œÆ—õ/°Õ94Ð;rü¦ÖåÅAæìHJ üqÊ£n‚þxÃõb"|B]óáÆ sÃÞ8Šcí‘M¿¨}öA®YÅþEœk9ïõÆ·˜ó CMŽK)]~Uı37ùŽ,Íõ˜ÎÒFQç=ÅòΊG[ÈÒù"ÇiƒëÜzACéÄá’þ¾ÏCB·eG¥ 5®:º«À“HWYoñ+ 90lé:~"¾‰‚9¢»ãÕ!•ñL¿ƒ„^ƒ¯8ú+ˆŸ‡¸úÆú]F*4J9y#M1LG«N?‘ žàü{ÌùÇ\ÂP܆AšsÛŽAŠ¢wŸTâ@3Î 1Ô8ï̆ø®‹àªÖÛ“z-ç5DŽß^ŒÀ}?ý)%±ç¿Ÿ†¥Û»m^gfÆ9"¨æX½›Î"W˜{~’ªÒ„͹­Ùf‰ï;j”ÉÁÿQÒŸu¿ ÆH¦/"cJMv?Ç2Êi›–µcÃa=‰TË<()(ÑëÓš£\SÉÊ!!O÷0hž’·®ÐHÅÉv§/éÒ,̽ß\ýÚ©è—o¼ÿ3lV)Š`£ 9ÅßL¶à]"63ùª «ÙNóà¬ó;ë=šdà©Fÿv?‚žùâta2`ŠR…¹Ùð=gŠXžW! ÁHñà4åÑnªŠƒÕW¬E#º†2 c텡ȉà¬×èá‚;¢‡šícNWT‡"¼¢×UN@IÂý%˜&öè¼MŽòF£AÊ_–l¸ÏÍb=,Íßfг©×Õ ©Ô= 4r™eŠhk8ä£ïk¾õMš…Sñ’Ï9pD<¾I^éBSk•33¡vîhV§¦‚Ó¹D^5*»´àãè7í£.¨£WÇo“ˆŠsÝ5ëY–ó‚‡ïPOìœèS"• ¶6i6HòWIƒˆrrBâ…¿ÒÊÚ¡tà1µ;Ò*õM†‹Í]‰U}hmtû™ë³î57BUþ 2r‚ÎÓò !ùYÔØY»à/¦,`>EAq% Ìq°ŸÛ*9†E÷ÉÇ10§.:îÛ¢&/¤}Tqå»Õ{»½ÔŒØé“Zq+ðÙ3HSËú¥Avª/¢]êPÜ™ãÀðûU_” ñ;€øª¬¨MÔž„`Uþ•å²@÷ÇΠ›úŒZ²´‰0ÄP¼ï­S{ÖiCapWª{$?Ž)ˆµ\ERægpTˆÌA|OïŽ\$]EÈ»{Žú‹‹ÜÍѤ@þ¦¢zå•×ŇûͶ3‘‡qß?ð¾£Cl¶d^§0¾ ÊJc¯n)Ü]í¸ëSthÌ ‡œs¢Ê¯Î+IŠÎ:húÀxë°ýVâ'£×Îáqôâ9ÒGHÌ•„Ö÷'¨ms¥˜¨ôpŠТ‰#È/Bð¥÷¹þ—¹WË4Ï”ãž+ðzWéÉH´ÀOÀü_LÕëß }\7©äeº-¶0útܧU]Wßöm,¬H;Ù¦W³ç‡¡—«=ÖÞ®‰mŠ˜|áߨB•y6ö©6&àÝŠ¥{ËVÿùb̯¡>%t!Ô‰šMbË€¹Y$nezÝQ$9a±¨<®ªq³"ʸ­ÎfhNUæY9ÏÃ/÷Ba=¹«6E»»ï.2"ò >¸—«ù§t¾þÓº*y×yØJ3bíUªA9Þ¤þæ4›ëêXœ€ƒÔÐUM!Q¯ç¤½Ü/ÕD’5ãC¢êC*ÎM ûy~^èmŒVC‚f+\³æf5ͱC…JV.]óÞ AË[@‹2ÈÛ:{JÌ›<\û’„Ü´ºßOw"ž£v«8ë­ÞDÓt¸<çGÒŠ›ÕY6÷B—€Z qŽ·x£WàçÊé ¿t&²×ÜíJú°ã®Àrž¶5}AœÆGó rÜ’YÝ}‘Z’Dº„OG¤ô¯B9ý¼µÞ{Cu»Âüœmçí¢£Ž—3uIA2pÇÇÜ™©"²ð.óå_+º)²Çjágl@áHêìR~ w8$Ú–Ò]›XVPM¼pðVk¯Í…î&wës}SOgU׌£mÑh·¾TÌ]ô÷œ¯J.gù;åæ3e§‘ø-P?*߬D…77ç¿L-×PõNäÛû Ðî $¨j5•/²ÇŒ•^äCH–\Lj+ÅÂÉ8~ö™ ´öx9~ù9—åb7R{^ÏdÍs«ÎœñE©à1é#Äd ë2Ö3Sfã¦2+Ù[ä&ø--==Î÷¹Öo2é½èøx%QÉå¼·šXY ¼²Bá"É[´5TYxJ“à÷«Ô®g RDc¿_A}¾j0Ь˜;–ŸhÙžU'ìvEaRƯ[ÔüÚó©ÔL_¶@:ÁùÑË“¯§ ô.‹Iã¾𳢇·w 5œ!Í äË* æä¯÷Ê"GIÑ u_ë€*ï4âý)‘ø`ü¢_gƒ},ÙÚCØ€aÇ{ÉÃ\©ÜDæÙùÁ%KøåQ0(Pa®-˜k,3"øMhW8Û¦ŸÄÌŒ/]jŒ+4·"æôÂŒK†ª÷æGbœ £V_Z*ÌÈM½Ëù ¶§½²Ê Û6¾~—RÙ¼d×GëG>5X‚½&¦«o•°§ìɾžÄ ´)·Q¢³t¹!M¹[30™{:%|qx;>‰BÊ ëXÄîü„ŽSM60“¸¥;BnÀ«IÚÈ0Òdï±3Ô<¹ñ‹tâã?$¶çâÞ|].+F[r8k·Û|Õíº=å³o Ámr¿Ç‡JáÅ6¶Uá–°r2³ûŒ3÷7ð ™OoRp»ãGï¦[À1é÷ß KT+T"Ëݰh¿4eå”r1aÁ ¡¸Výü,m#`ÝJ×ãÒdq¢v¢Õˆ@1H¼tcl“èñ ¢I_ nª¢Ÿ„øsÁÃK«´.Í€gé̘۠Wé·?–/è˵ܽK&·z‹ë›‰äãW³F`0;¡»¥K™%£÷Ík.UE­$ ôêòàÓd|‰ø‹‘Ê<ÊvE‹Sg¼´ŸK&¯ iñ­Ù(&ª„¸f¯¿RøÊ:(7Îá* \ÃE”`Zžu:î%Œ¸nƒ4q? a&â ý– ±;ºà­t…`OŠ^K}â>òìv%­qM]_ÜJÈyޏÔ%Rã”;)&£MrC]ïþÙÀöµscÃ*°-.cžåº}Á¡fêjWí{C1|ïè<Í•B£Åhê¬ãji•81«HWöp ±¡‘§T Øm¼‘çXŒ‡zعÔXƒõt¡U="ÍÛÎoî¨ú«Y³Æfb<•¶O`Ó% p‹ jßSý§A¶e»šFk#B­_ÞÛòM~#ŽØzùúákìRŽ0ˆÂ ûGt%ƒñG ¥ÍJ#b¿¦©t0ÞV¯Ó¾^bôšátm—³\Ï>ã½Á€?ª´R>xúu8MEhÂXp­–OnZo¨ÙäUðú±d‰`{ðIÚƒ.×Îâ¦û±Ç“w‹uÂñà#§L:]G Á„ù|4 ad©%öÀnøVÌ| …XÅФG]ï®ô@ ƒ åÈâF£ÿ¹àoúÜŧNê5%_€òy§BaË!—äR×áÚ Èy˜ÏG-ëIû#›C½xt-«õêÐ#›š_òRœ³j¦@Ö–«·L–£øÎacé"&r…}öf|\¸æªÀîóäé™|¶0¥Ú”Éd7ºïú­ÃáGQõt`‘^Ò»82¿„ŸJW jŸ+HöGô¯Ý Ñ;äÏÉâG«¤KaðuÆi÷ë‘®”qU*´×»›¥þï?3Á„4L”e¥ ¥iê/·?qt•¾C©üù#˜eû4)¤×'Ñ)šŽ²1?¼JH íßïbD’’~k-$Ïï|C‰¬èÅ-¬þë9_¥Ì•{,[D–\N„q Ë8ƒv#m\ŸNË­ÁÚŽìדú[­ÙŸsëýÔ ^ÃLJ|ÝríOˆ¡~NB{º±|‘5¯!ǵÒ%×ð.!0¾+"ÃßÜ÷C&X´‹¥ƒÌܯ…DÌöoÕ¡Å‹•’7ªÏ¡^æŸÆ* T‡ë]˜u~ +UNžx Ëtðöˆ-˜•iqáò–B¶´dééÜOžx^^‰×ø>L¹c}l ¢Z±˜5V<«< {Å]Nýõa:LdžZ_ E:³€Út ¸*÷ £ýÚþU5Ý£e\È㘻` åÕ"iZðÔÓl‘Gï4$€ðSm‰EòÒ‘Oå¬)à†EѶ9+óhBÀÝåÅ¥ø¹2›Ù³DE¾K¯¹ç®ÝÒó{`k«Qr›¼«¦bóáGÇX,‰¹',VÓb"3|O½qéÅ›Z LÖúbœjZ‚õèÄQQÚ¢+4Á(i°1ùÚX‘ Øû×ÊhMÎÜ^L²Â¦ W}Œïäú>™çLÊ”wžüÉŸ›ìå|l‹{#™x á\g(.¦s¸ÃŠ&XÆÍìI¢Ó@îÖÚïO’ô ý«Xî²î}‰ÏCCó²Óêò­kïó¾Gç‡`ßÝÀͶîÍÚ ç1Þ¼ˆŸggiѲã·“ 6µêjÂ%wü¬äج ïà«IDN•gJ¼RÒÒJµ“v†ÇŸ”Õš¨´’è ¥ Ž,¨™åTJÆ2~ž]»C1v­<Å'I1WKµ« EÂ:Ügm-ðÐk r?á­®ûýªÖæ ºªÌóp‹'°HÍäĘ`¾Þeš¦Gì%6šÛiìôAQi_OIC9ÈŸ©«QW‹µœHy½eÉ¿…gnÉ^ù†ó3SÍy·±ƒÀÝ?SÖj£52_¹/ë®ØŒÃÐ4÷m96éç^ñÔBC7”'¾¶B”B `g3.|uçToMݹjxÐ,DyÀgZs­ ŠBT[™cÍx²š“+Š ûvm±hKsJI§dÔŠ¤ZïG–#PõRg¦iÃzV{!ý~°>5YdÅ!,Z†ôŒ5ñí{rgŽ¡NÂi6½áº9Îo hu®—à0°¯ŠbÚ+&Ñ¢ôB‚A×!Õ"«Fnw!ަ•y¥eœ3tÉÍSùœRH-š¹Ý.í£ÄÈúªTHŒJ±÷‡ÒÈ ¦‚2i!jtíe Èè§½Èã³&Ö9š£¡Az 0´™dÔï díTò¬ãªý0Ø“…ï7<Ô³ßÙÆËðdžåjn?Fb$2Lm^›ëåÖ¸ûDP¨àêÀpž‹ö¥?´#¿·K®p*G¯3#Z-Á²œ(Òlùð#o3ƒâjÀÛ!ê ž, #£Çòöé§B篖¹€:…¼ò÷5!V§®‹…Ì{˜VWÜVuyYÅ äq¼ÈîøV¤mXÞ2gþDKÁ–?¸^œ]LPöT»éL2mÅÃÿìýãz*â×O$7‚δßkD}W8A…Yê£.fý­­ã¢(ýÌô˜ùlå+{k‡ÖšÛÞƒJ‹ª3õu¦)öê*eŽMQdääH~årÍI¼ Š*¡Öé*a"Õ7 O –?ÞG!H2}wXI"6:«#á@``}xXQñxOш1ÁØë[|”ù¶žˆJîhîÂdmÙ„Ê-íl’Å€%@쟹F¡ÊMÃó>ÀJ­/sï#‹Ò³IØ9ém§x‚­å>nŠ~~K߯A¸rH8âŽî“=›—:ŠMSUósˆ…(—¾ÂÜgv§ñ(Dêã›Ðyeö¤pל”(2"^ÉgVãbX”Ì|Dü:øA¡ç‚¸×Ûúµw<¤.tw›=ʾæÈeÓËS²iiP_„®,€EmoEù[¤Ï·@íÜÁh†;_‡„€ý¥{¯ïž¢5p#’‹ædìBÛøDÞ±žé_xÙ;ç9ü¨bÏ’W>b);Ô·™Q±›ñðMXaË~yÿ«:ÓÄ9˜ÆZ ÒTÉQB̨“ø‚=¦Q‰ðvFóк$7<§ÌD9™çg×ý*»Dê}ÔwgÞçí%’v)· I›c™c·VwÉP8f\f…$Óé“UGÔ1H½¶ K®fTþ{)5¹iŠXöÑA\”/•üô°¢õL©ˆ¼ykäffük¿ 汕qøV]ºž^Œ÷ºüµ»ot͇¶ÚÅÈ¡¯¥AZ!#ø˜}"ˆõU=÷ÂÞn¯çÙÃUŽÉ^¸lA bZ¢ӧΡ”¨¼[g$}& rb$KαÌŽÄäþÖm{Ôà<Ûƒßß}]Êq¬úL§¾ÞTµ„ þÎðK…:Z@fõâŠiwh¨jÆ@vê%þpÛxîd’ ãK6"v-*6„øô‹ËG³9 Lsó‘ æسð5c⟅¿ÅùuÄ IAí¼7ïu² Ò¼¤ $a°MmôÛ^¢ÚáUÛåùüá'ZõñANß¶Œ>~Îç›w>‹=jyåŸ Ê$ªôl J«…šw˜w>‰ÒtÃ.Wœ°:ªNK(a2áî”Y¶ÚÑÿ…~k‚U%1Ìïǰì<3ö[÷$q’¬*Éç°Çðƒ‹áÌaákNn«Ìw†pØeÎAáÎO€ÎÝ;ïw‹±UYŠ?’³ z(Ʋ2ãEEùO„’e©j®ç¹™¡Ê2*l}¿õòä-"/e©OÆRüà îú#3ÜdPX½¢i¸€*êî}Úy7ß¾ Ðlù:²ß’ÞÙÊÉLrR”<,ÕVRg´ºÂÑÍôOÒ0ÜL!ÝÖ„ÙžK;úTÇ&L]hÿ>33 6¬N‘ãØhKÁ«b?,à7Ý37–d¡P‘cVùá[åaˆØj1#ï­¨·w3ÄÆ– ß&EÝ0øpÙ¯ù ®“tâ¥ß׫£²ŒA?SÙ‹ò,´5GÜ}¯ôïÅÿÑ>C hSE¢*Ý·þÎxî *ë]‡9òKxF“ä>|yo'o*é~8ò¾s…g) ‰¶ri(׊W…ÿ4źüðEþu²ÀQe"ŸšhcQö ¡oBÓÒBÝ–­²ìàÁ}M`r¤—e–‹Äs-Ü¢ßd›1S¾”=8ÍœöÛ°’L‚¸¹Ÿ>’‹¡oçÚƒì¢=Dª$<,ËÙg ©iW {SýC¢êâvûSƒºÎùä.žÿŽ…™BóÔ¹úÆkb¹\fœ[ÄÕözŽaë¾Ò¯¨Uè-¹UÕ׀Ƞ¼ûþ¾Å;ÝKÐNRÝ¢Oñàf¹} VgÖE[r]~v\{p©ñÁð6âaÜi†ç®òþw|ßý`ºÜ@K§Ð©ÆÈeVº¸gÀÉ;{äèm˜ŸËé,“<Eð¼0àMD¥÷Ù_ÞJ¿¾ò©k BºD)üA'i—‹åÚ”5Âÿí êC H@d[ϸ¨ ±)jèäÎ¥šÇ¼±Æ¢e¶r}VXŸé•ü¥ß«£V& ¨<„’#<žÝ¯‘ê)ïzÏõs¬ÇÒ 8ƒe¨-j˜í±7¦ÜôªÔ?Ž…–îÝO°ÍFÏo¥SÄ')ÌyT˜GïÜF(÷*›ýC…Zb‘ŒÞEd/QÑAøŠ©ÆÃ0Úlä’·íKçPý‚¡Ù,…ý5Ÿ»Ùù“Äc“Swz¶Ú-\“0#°Æ¬ñ¢/}~Ä-4•”R›7·O5¯‘~[ÅQ£à¡»Ö™||ù=)'Òž@£ÐÔ‰”C´C¹M’#t‰¶7o¬ëeKâ÷^j8e¸Qc£…Ë ¹„È*ðö¢Â8€s®Úciª[ë$88ùVƒhššk‡¥eÁrÆú.Ä(ÿ@Ú1:sèþŸ/˱ü£¬êœ À\:GCñ¹åV½Eýxþ8s/§Û©&K™ ŧg‡.%fmÌ…Ž9äýÑ3å¢ñXÕIu‰NôI;§n¾€ ¡žhCG¬â~?nÁèS¦O0o¢º?:ë½5W®_ŠÈ¸:§´¥ªmIn[ÆPø·`‘¡?(M™‹(Ìs÷ s¤\Ç0ídB}d¡ÂT¡øL"«ìGØ>£Å&XéjL_W £,,gö‹R7ί=,HT\±n‘zJHSO¬Cá¯èBR.žî(Óï"zåÀ6:›þxІî®çÏGeEÈÓ7/¼/òŠjÕ®è?\Îé»÷)Ï1N¾|ú¨Òº$IÙ¼`€Ü„Mj¡–UŠ€æR’ç]1…ÅPQ…ªu< šÔ•©?²r/Ó³ÏùÓ›ðEŸ’b‡| S[ÁëõµîXJê‰|ϹÁ ˜±bÊ&P+hºƒÄ-«Ðo•}Vù€ÀЉŪ¸bØ“«=±!¹/ bßVm[aÑâT(×KÕ°€DÐóÑ&šÖÚc–àÞ.KR ñåßÃë(¦ vMˆ3N¨â“AdÈä¯Ò¥´ÅT„L9â‚nOö¾d¬á')„Åz—ÈyÜ—˜K|pøò}õ¨­þvØ)Y {Iª>‡²V¢‹Ójå©·?DÖ“»[lT˜o¿¨ë8w÷¸áæ!Ó?ýxs§2(Тõ€’Æ€ò%wññзrê]ÇMtó·Ç"†¡¥È=c÷[Þ2¢Bü¯o‡ÐV4èóÈÌc ˜ým„ɪ’öîxL34› x†÷}ñ•(G%XOö&ÅÜíþWË!JY/¹¼S°«&ÝAŠwpÏv"›µDžNòªÜ¹€0‹ ‘û§äýrvm—¾a‘†*€ÄÎÍÁŸåUBΈ¼Ò/­™ =Èéýèû‰.S:Ø`‰ëü³\ãžìtVÚ”—° FôØQßÁè¾£JJYóáQ²n(œ÷ÀÐf}J0*DiÑd ›Ü‘à1 8~¦íÅïñ‡Ï±h˜÷f8g¡Ú°±Å`-NÛÌkW»î2'Èêf-(ÖÕŒðæ÷B7Â/9Â@cƒùht:Bp¸N¢P·FZ2V‡üù)gŸP{ìü‰’ûT²¼¯È<ŒŸÜ’?ÅlY%hR.˜PÙƒÆSÂiµ²5OoÕ¡¬ò?¹oBÈ#bAin^+ØöŽC§Äˆ¿h–P ³<øšãó˜#3¶kR­1úÂùã¦3BZNâ½5Þ^Û©QZ^i$9t@+ƪc-¿ !N}ûx‹ÀßêµÀTŒäúÞã¦"ÔLj7üðtH›f¹Lªs¡þ݇ŠÑ·9ÔŒZ !š›»ó¾ål‹ú‚Mò”aÜpYwÚæÛ›*±„Wò›Ò“Uä:òáÐêÚ.ÛVs¡ã–ÊHäÞž9¯ÈéèŠo7v>­y€Vn³„ Úa‚Òø”‘‹ –Yi0@9È h ¤«>wŒóåëq¯§f±6-Ô7‹Š‡¤ GkÚpgÎ3ý‘½ãò¨‘R“|U-ZÒÍ Rz¬ÙÑIš(îÔPÕõÙ7ÅÆ£[¦ t[;Ô²ÏjïÛàðºÈfõa¨*ãK†m|3øâ©w¡y½qtQîÒ`ì[) L8']a3§ssO}çÃ9QIË£ˆ}5×Mš!„¬f?%ñçûe0³N{™PE˜¼m#Xr¶…m÷{_™beüHŽòI’n“…âzϘöc›_®RÇ¢®_.¥fa¨H©ÃBe ­ÁDÞi¯µ‡ª)¦köÑ":‹ö@G‰SeBæ¢,*¡¥»iZË–ãÕéF¨@ ŽÚ‡ŠYåÓ"³ëp¨€Ššd{ Ë `}„~ZF8Z|W-ì£ú“óÓ¯ñá;²9¬Ö ^šfË*ûÚG ¯­o†UO%‚blNh°ÁSŒ+¤Ãk™þ2®XŒ¶qÌZÀÑwC— }ë¥,ÈsDBêŸot¥æIG."";•Fiõö› ñü &¦UcÕW‚I’t6ª`7íx«$F#Úáuf† Ùò ¸Çú6EÖ-P¥r]ßÈšº®Æ:/HÃŒ16®T¼Û›;+ÙVOáERÀýöruGÛÝÙ­:Iã]Ó\ÐRZíôJ"qøª`ëøÛ÷Ô\ÍCQ%³(”³ˆ%5¦†œ–ÜýÉnÅÀiç¨8gÉGÒSËf$\Y¬ÉkCI[( x¸õ3ÄÓ…ž™Ÿ4¤î’:?Ø·×3Ô)Rߤ+“È™ËÐÅæ¥3áLÒjFáôŽÖP‚6Ý,Åe¢;c… vË÷3´%{[+o†3P>C©¬m´,êµGÙV¿Þb¥È¸5ù`nËEÔÝ+ß½Û™ò…dœ~>eCb ãM·X{¸d"{zmN5Yž†eo[ͼ’ô×Á§Y­>ê’#~ÑçÏøÞÌðÔ¶kböä:?¿Þt4}h*+ÔEtqòÊ’æ3%^g„/ƒ†óy'ö–ðÇzìø6´ b_^Œ3¶ð[Y`&‹íÑ* â$“Çê{ûª~± i5rïíš8ñ4§4MÝKT¦ZžÊWÇ¢ÒQîWà DcãåÀŸÇŒÏay†¼·œ}^‘†·uk¬´šîÄ,8ÁlR0鲉OêKãŒÉÄ/4;4 ¥"s<¿Ö.‚t?[euˆÓ'ðò&¢zÅEå‘íˆy»ÏŒñÞ§ŽššOóië÷[+CïÉᵦ 2÷‰ÆÍ~]³6%ÈK¹"Kãt(ûäì§þâlY'’ëdƒDA,/uòò£/¿>Ï$5ÿŪ–Aí4¾eáÅT_¼°Ü„)Ý€x‹ÞÚõ‰§L?fL ¬Ž«“ý˜Ü¡È<5La»ì¿•R^"ÖL6R83Z&y^ï%QÌ7ò‰SŠÒw©r´Ç 91±ã¥îÜ@3Šzÿ¢qãÛ®Ÿ³GPþù’ÃËO ÂPÄÏý1Ë ¯z¶5$Ì¡$ÿwX¿øàw¹Q¬qZþçGÎ1Üï¹×p§diMÁÛp¯Ì™¤µ¨ÙÐŒåÞ57‰…Õ6¶Fk.;³EŠ!"Ѧ¤æRšo--û"=Jÿ…š\ƒÏp+-œoÝeÞÒ¿§G™³ÚÃKAV>^¨£°*.ÊV`±ªT$!NÚ:ûþhMï„QÝx3ÄÛX,4}ø‡/‹lï#8•]H øp(üoÞÆ<[rtìÈ¥ /šn¢~Ñ~•ÈFúÒe%HVRPetWÎEô>L£+‘Ç”¹ÿÙÎs &ž¯ + ˆLZl®96VIH'14 2-Ý>1õ¹ûdq+6Ú·¹£]ã4ŸØôµö¼ ›°qéCÙîKyÝ·ð˜6ïa|è á¿!²Ù+€`ЖZL»zâì½RFý¶Ô-¾>q3uŸùºMÉ:ý÷²Î¾Ðh˜ùV˜DšÇb¥2æ 2Q¥ Ð¡þYÏp1Jà‹…"¡ì³ûAÚbÝó¯Âd ¾¤c&ÝáMVÓŽ&á­"Õ‚ LÎLðëî«Íþ0¼}Øî¢’« Ù< qÕ›ÌÚ¯áxzÈpa¸÷IÙ¯L_nòúæž¡$õ,ò¬Ö…ðb:D9B›oøŸú§úš8o#Æ £ä?ø°Ê:Rî.q@†„ÏäšïúëÎ8x!óݧf‡Õ¢è—]4$ÖA… ~ùƒy5§Q)%vÙ… Æðv‹yòŸ$™y…Za4š‘‰ÍiÍ7:ùYxüÚÈ·4×m> q(3ädW½@çj—–Vÿÿ–D-ƒ¦zy¼é™Ùóš3 8#ãå¦öo!î-ß3¾b¯¤zG~*›ÇÙv?«’'«ùæñþ1B­ÆPpRyMõ9d͛Ą›ÖPüLú*èS™•«/:[Áµ{È šÖ'ýD‰Þ`Ou:æÿ—rªaÅ󦡈/ˆ|ד§ ¾ïö‡™»êKº,WÒwo#BQ§µï@çX>µ,±³»Ã#˜¢Ùë;þ±ZTä'[z4…“¡Ÿ\Z»ŸôëÒªç¤Æj;ÇJÅÉ`-FTÞ³ŽŽpƒþcrØï¸™²“qíÇg¸P;’. {§‘ë-Õhþ›2ïzqkb;özoauJÀÌ*CÖ4ÓÉ?¬Ú»l§z^Ï›ñ1êt“©Ê3í~Âb•vï8–p)äµ4ó¬í8t!N`½MŽæ‘¼ÅuY-f ¨«Ò+t€ƒ6ÿ [RfÁ)íAΥŞ/ô BÐm2t¼k·¹ µÐöSšÐÝl!Õ7?ãc~󚸲”ÑËTIf²›$pV‘³´ÎDôЛ–äèvÜŸGx.Ç’‘$7­>Q]¼ì½ÄÅ玕zúO‘Y(Ó ¡‰.2æ†LÀµ† LLNt¨ Óƒ_hT¦Knœ÷]®¿Åås÷Bs0iWòó [ æÀó¡ŽT{A¹pA¢©}ÈncÚRÂéJ8&ôçï}:ûšˆ\È+èÀ†Ñ¯Ià.ë`€ùH÷K¿Õíò˜Ç[úèugñTQ~J^ñ–KØŠ6zPôëpÈL,7°}Á‹ ²µwý¿$޾‘·Wýo7–æcX>ms*èt(óÓž `4‹•°Jß¾Íëæè6°œfyÀ5&À9$ûØ ô åÙB_˜î²VÐWík5< #½TÅ×§l†ëvkpaëƒÝØÁSÌMO÷ü¼Á-€$Žc€”…U8dI`’,<}¯{oS#«ÓKeòEóȹ‡±øDðÇ×õÕ:J5(¸?fª’…Y.øÅËÑ’¡Ú1ýæV½&»3 Ÿ¶´uiNáuûU¦/½|E°a †%A ˆÈT´¯MNøÎ|s!z`*\º0pE®ÝßVá 'u‰÷‡–þFc5P!÷8Rlp$Úª\"TŽæÄeZ6–ª‰Ý Zü 6O .¦PÝöÉ…[žòåÆ‡É Eõ!HF²ö°ñý6yöð`{·×t{-9Ÿ(qkÜ4Î7˜5µ:`ØÜ¥ÊGT^ûÞ%ž£i»aÛ6ð ColʮޒjÌõëÜIÄDýu˜V¢s+™1Œ•¼”SE(S¦*ã@ õåäã šGý_/8M(¼dÅ£‚¹Æóö.§ >Sœ ª©pbP†qà aÖ2ÑÈ37:Ên™=ýiã 6è]IÊ«KPÒâTÈÔ`5Û¡y‰ùcG~-dý8¯C\:¦éfÅ¥‡Z3S@[ a?ðͳÖ- è=×hzù _Þì`·1WiÜ·±%Mýp!îˆï׋ä¨ÌdFOá9.û'Ì"0¨–ò§#ØæZ®"ZK8 Áoâ꤄ÛÌïÑ39žöÆg£¢ðÙÞÆ¬çRªwü9ºvgžTž³hWfs¸É ¸{¬Âe‘Š\©Î£z/Ðê[@° \ŽN%3ÎÇŸ=–qoÄÍ*i‚ðÒ1ŽA¢›{ãûj|Këæ"Û íüpT|¶G<Ó9ÿ‡LÞí=‹÷–åâ~¥ /˜{\ •üú8\Å•œ€7C9ÿDº }\¤),IíOSpéÁ?ØÑCjdÔ­µÊT[.øµ?Xè£R”È‹®dýh¢§ŒE\V Õ-¬§¤#ø ob‹óÐÖ$YìW̼ 1œð½_Níë­Ân1©µqñîCkaQÚ¬nÝgÄèq `ìv^Ķå*t‘ø&uþÂWFÐÎ Ô‚/u‡£ÊC̾1¡ŽQYÉPÛbÓ¯:ûJƒ¬6è4ñwÏÉ¢/9l>yâ×ù"W (ê~ëƒ×î;ÿ«‚wÕûþÙÜcš5Ž•!\êýÅu´äÈyPß#‹ ¡‡Øj”ù¾þÇÆE"ʃ)P<¹Q¯‚™‡"Ð=1Ê6¢Á3K”ÎÛ>”2±Ð•Rp9gÇoÒ²Ú|,cÌx%9”õ­±”›ÅmË`å:ᄬµàW{;è·kÄTȹ%xL$x=š‡oÈ^:émKךß.½ˆ#çtx©MIW»S[/G$ÔŠ8·€?JéOÞ—i¨q1µ~pn¡»†^,¯¶‚~Ž Wç×~­G+µûõÈ|ê®PÍž¿ÌKÜšj³ ŒÑº?D¿)ë9ÉuKµIÉ—ši Okå¶©ªÒ2}2 òh÷ü½îƒ¶²Yðý¿y1zsüAòØÓLCHˆž«©´YïµÉGpt5Œ Ön*ÄxD‹Fƒ¼kÈÊHÉoKÞ†— }½†ŒBcã¼sù§w}©Ãu‰YÆëÙö.æÿÎàëPš]î¦_‰­Ï HäC¼Í©L•pxÕ•éc1{cêÛÒ<ôª!6ß ¸Šv%QmË =GdºWi8—W†/®]÷ð³µzÊ•Kàã€!ÁW­k…=ª¢;AnÌG¤L¾S}«¡4djUð.  ™( ÓJ.šî4#@H›åAÆ?ëoÿ.¸äµÉ»·µ‘#2+Ó»z3Kóæž¸‚ßb`@v—2 ý{$¶Yƒwéfù¸kméL“´M i¼“Ò…òe[Lti“%ãH½i¶ Í©qï—ŠJ&?H&<'m2XsYâYëÇЊâÀj×>Ø^*•!—§ßSÕç™(¢u®…~;0?X én)•ˉÐ%>9âÐH)C›ÅdrfÆòlá´1oôGnÛØ"HG—çZO±º†ª¿¿6 ¹åÅ«Y0DÅÛG‡?ñwÄÓhAgÔé´TûwJÃÕÈŽ<æË÷f"WÉÜùzè_‰‚ƒßB#aÁšGÐá „VŸÓ¿åh±¿¨˜¶RÙ(áúæ^û §…Pò@ãqƒ[„Ñ=À¡¸(HÒiHgŒNôå²ÄÕÛ ÷³ÚQOÁ^"?o\½õÓKe< hp9x³ •Xþ,[×H±ÚSÈ(àF²ÂŒìmÑ-ä'ßSÒª®£Ø‰™¤ÁÜeJak#eHÜuÿoyI³GNR9¿-Ô–"î^&Gã½Í¾h÷×Ú:çÆï] 3I­ô?Çæ‹'Y‡3±^¹ÍÈÕ]S_J¼*ÝÇ,ÿˆ ±Óÿú¾Q©ü\÷ÿŽ7Ùqª{Y˜(BrDvÈiüÎbDËј|ì9Qç…cQ9z‘ŽÝ›éûEáÙ£¯ez/ çÜUå>× ÒQò˜ün¼ îY)ÿ„Ó…`«ˆÙû~²hãvNž,%ÞgÐÜwx4»bÅ·¸<óú&¥´¯T¦ãÛ'f¥ˆ#Kš]èü÷J(c³U¹ÝÊ2ù¯SKýbVt\”˜{pº¼_ý_C ‹œýðü,à_ÞQaSDQPÏ÷8FÝÞð¢›fëçŽu›Ù¤3 Œ¬ Œ5v}ŸY°@YéÀ¢+7<ˆÓÈ™¬äqO× ºLU,(Ç ú9ÄhŠOSs‘ õ4ñÞ¢&ÁÝçd…pÞ èÕh5f-Òç»wŒ£yúÂq±B ×c?è([A%w¢bÂ^|åàAñÙ,•rfšäýþ Å Ø÷ì­kŸvN&¬Ã3"&v€PÌš ìCK§ï؇iIRíøÉ-õ·Ì0í/™ï‚þ\î ±xžM™¶ò;ž)ÎÇíÞë†w!ß g)Ϥ(‚€ Ù@Ý s!‡ŠXö§½:ƒFÞûUtyv›XÑCfí<ðžÅž TŠè¾²Ò3ŠBN‘䨻ÉNTsñ;˜†‰’‚RžÿžQàqÞ_±±ªç‡g &³.7š§Iâ?¸‹˜&æåŒü@„¥Nc:8Ü$Æã¡`mh‚×r Œ„°xF Õ÷«+ïYS.ëº ºlùøolö8Õ¯»W™‹.{y¸ÍÂI¼ƒ‰(%Ÿvv Z£¢ îÔ-lj%÷~û¸&ÐI‹%§ŸJ"ü5ìõP^²¤˜æaVcïÐÙ±®÷ï sû"aF™:‡Ð‡É‰fìŒÿ¦ÜC¾×…/›Ç³îJNîG0Ä3;¶¨?â3KDNXЊ•ZS,(G™r=%yÿþ¤—€¶ËÔ³¨GªáÉ ynËB†­3¯Ð ø¢a666†;ñR 5Bn,ÙxöYh/|•$y»•ÌsqöÈß“3wçÇõ|†Jr¤’À)ÐEx4 Äå€vÒ™@¯íËž92N"<|ʵ«x]X¹<§Ëx-w~A¦îAý¥Ûlêqþ¾h÷…ý¬.ùÐ?y*ͦ®G q?ùpý^Ù‘ Ì*%O q©I5_BýCÆÈ v1¹n…Î6JPºu!ç9Dʱ endstream endobj 1006 0 obj << /Length1 1521 /Length2 2489 /Length3 0 /Length 3457 /Filter /FlateDecode >> stream xÚT 8Tûû¯n‹•­´¸!f³ Ù²Ë2#*ɘ9cNÆ9ccÈÍz¹BtC’ÔDuméÊRÙ*´(YÊ%{…d+´ýiýÿŸç÷{æyfæ}ßÏ»~?﫰ɤfLC> Ìå`fë3ƒØ »7ÿ¸Þ0‡¿Jt¦ÑgÛ ñX8gòåVfóT…ù®ó¹€&×QW@_ô§2p³ È8g$̪Ñ‚Y  £m€AD0ŠpÙ<0(ðGÃφ@h• x‚^ŒùUƒô/2úþlÈ؇GéGð³Ÿoÿö£ £!0Sð>÷Ä8{Û½&.Ûæ[þf41Aü@5 FT×4‰€–®&ôs 4_þ»§LGÝ/Å¢SúZ°ß<”æ×Cø9Ö.å-(}§¹^OE¿ÿ3Ùç\þ?ŽÏFù¯4ÿµ"s“9gWúø?vŠÄÌ#PÞò¸èØ!è&À¿B]À/‹kÒ žÏ¯V+.ÝcØ‹ùmÇòi—ʘãÆµóìž1!t@8ÐìeÔxü/6t¹¨Þèõà ”œ3èîüœq'LEh³KFÔÔ(l6E€Á£L"jjti ÿ‰F¸¨ €vÐ6föI5ˆŽÂAÛ…8Þ³–9¥®.€£~“44CÀb —૊€GuÐw‘€p?X Žýƒˆ‚9?ˆZŽûƒ¨ àxßS£Ø¹Ä¡"èešUÿÔ/•Çf£K?GIt_å¹ ‚þ ÓÖŒP·‡ü7¼t*ßx=_­¯Ž¨!^3=!âÒ»s­ß€c¨©þô¸ú¹#­Æ•úL?—$^ü\ìíºïíÞy(åˆÞê¶+¥Kèž=ª‡ê% f9¶²ñ¨ë;¡°ã,n¯JþÐy×+nMÓúÑþ²æu†i‰iÍ¡¾fly•ö|ƒ˜úÑ—œ¤ U¢–oø7Ÿ›$žpÜR2þTå=2Þ$n‘%õWåÉ4¾FBûèã ì ví§%ºç4)”äŠ_ èHœø­€[yïÈ‹åpÜ[Ç?T *«woš¨ÀŠ=Ywùªõ«‰UåQ#¿m²•(šIëÎOu½´>ò¡lûrßÈ$F€ïÞƒ™Rén¦¼¼Eö ž¸— é·çwgzb;]\Å-_ÞÓèÄÖþ×ÉÍŸ ó7o±!8,äžgG„ÓO†ûŠ·P£„¤gº/Vêí}»5õê…¦ ÔNéååvcý…'.ìfOvôñDš×Ù¦ëî á­ÏQZ®Ç.¶=2qÅoûÇ®Œ’ ʶ˜B&a^+ãN·[~PlÙyÅ|í§È—æ4O©tÕÂöKÛý}k’'g¬ÏIì¾÷ÐõãÛÔ,zå‹ôeò¦£ì“qÓ5¬êî3!no÷W'I^w¬¶<í:]±SÏV3ãruÿp™Ïä$˜‘u~™t4IæIÍéUðóßÇo·NLHˆ°|ùƘ&Ð_`ÞC:¶ÆÿNVa5I¨(ôÆ›-±Ó9½Vè>[g³u f›yÓø–7ÁöJ™øøˆ¬G·C‹£5ëbË1Ê¢¹"õ-œßU¼%U˜I¾VtKFÊë}O\ÃHv×7-Uyób]©s®¤Q@JDÜò íà…¦µ2íë«™ÈW†Z­"r4‡°Ú˜åˆö”¶2 ¦OezW§zÿ}VéŠ$*œUä7€ÝÖ2ñ¼.ûÓÚ ›}¦r­V‹÷º<¢vY¸Zn¿#ã”›¦"çòª¿cS3~W¼ÿ”|7×.!tCUލò‚d.ô]>eÔð$BK >©¢sÃŒì‘weòµÇÙGwˆïîSŽ«mçÆÇˆö¾–záíœ&÷ìyÐYÐÖ[¯Â•*—“‘ç^-+=Qá7¨òyõâ È/pÁ¢GÒ‡ Ž4)õŠBbRñ3úAQ#g~ªæŽØXEçìÄÆ¥GÈ(øIc[i€` Í­ý džªQõÇÓW'E6ÜHÙâç™fówŵÆ3‡G,m>œŽ¯ëС•(G?}¹jøßÎR̃b;ÆžûJk¬ù»3 3’'Nþ½õQyâeÅþÞàú83<ݽCµfìÒå6ÍÌ€ëw}I.é9›n`77ìÙ´;·F˜vtÌóŸFÃî7d:ìÛG(áx­ºbÿ½-Û~—è]`Q9òWd,z² ?ztIã¥Tùà•ÓÅ z·®i²•·ºFYМdfã(•.ÉÉ5ÕËy:Œi·z˜KË.ê\úÑÉ­Lš+&Ô FX”Öò®)ýÍ;þÒãF¢1¹€›+“¡ñ¦´• f§Åݬð"V{xáqÓðTUó¸C%÷ïÚ—è*ŽÎ|šº{J¹Œ°ÄºÊ|_ØLË刘'ÄXvlQL‘ɲqnYj±ÁæíIÌ¦Èæ»ò ^|öþ¢²êO¿ßXxÚãõ ¤ùˆ»fÙÉžø£¹‹eëDc2G÷ÈM™|jNçwܘb†]ÜܸýnÑA`T€à˜ed›ìPáûÍ ÃH@†DXàÚßMZ[Ëö) };‘å› c/Ý2Õáóª —Û/,îQ®¼"ŽÒ½uß,¸Fä=œò/?ÛX ›°wYyRÓƒd½ ñ‘¥RËØ­‘76U‰M†[¬Šíò„ZªwV3•UÒ"çÕ¶Ië,¥évDШIYá±»•];m)çô”'Û£{ÖË2­qoôÇû®î¿qíq½³á]8h±½p\G¸¥êëžZé±JæhüË©Fë{µîñ‹yÙš û%WrÄZ‰õ®®¹ˆDü¤½Êßׯxïv?¹ü ©çÖCÚÕf­N_™ðnŸ…ãͪõ0#¥çNœ]Æ:Æ´H⑲d6îÁÍ+Ôcé­#hÑÍ¿·j–_|-\AÕ±(¼Å¬‘´“7Fê¨Ûª]ÔE§X+ßAbŸkT¯íi2'Òΰ´D-žçÐ:¦ƒo2¼±gk| MèÝÚœß+.fÚ”kk{íSÊØ¦3©~jV_ª¡ø?‘œÞÛ× HÑ32Ïî—­ÑÙT|:úIÄ€I±cHØ*þR‡7é¤üÈs}JODÀˉ˜A¸—ä]MzÝ{¦¢å„³²¤èA%ÃâËÊU3û÷w…%ÇÄjc5¤É²¥ò®+C)Æ<–:Uk°Ðz©l§6;N;¸¾²4¶Õ°g§únÃÒ¸®-ÿ´x¨õF µ[ÒògJ_Ý“Ø`Mºx2qÈ ›š·‚³%æð1Æ­ÎÈkx0‹lî• +ý£[´Aéá_û—Ä7Hõ¸óÜ$ÿz2ïaÚ'a:¼MËOüž…åªæó Œ ‹Þ÷ï,¾òg‰o9ì"©2’’Jm+çÿ ^Ý endstream endobj 1008 0 obj << /Length1 2311 /Length2 13830 /Length3 0 /Length 15201 /Filter /FlateDecode >> stream xÚ·P›Û.Œ»Ó⼸;×âVÜww‡"Åݵ¸»»»(…âNq-7[Îî>çÿgîÌ$ßóº®õ…ŠLI•QÄÔÎ(igëÌÈÊÄ“WSã°°°3±°°!QQ©œ­“‘¨4€ŽN ;[¾ ˆ9œÁ4q#g°œ¼-@ÖÅÀÊ`åâcåæca°±°ðþGÐΑ nä 2È3dílNHTbvöŽ s g°›ÿ<Þ™ÐXyy¹þTˆØA&F¶y#g   Ø£‰‘5@ÕÎtöø/ï,œíù˜™ÝÜܘŒlœ˜ìÍßÓ2Ü@ΠÐÑh ø#a€‚‘ ð¯Ì˜¨j §¿èªvfÎnFŽ@˜` 2Ú:5\lMްs€ªŒ@Ñhû—°Ü_ €¿k`ebýÇÜßÚÙþ©ldbbgcodë²5˜¬EI9&gwg€‘­é‚FÖNv`}#W#µ‘1XàÏÈ’"Ê#p‚§çdâ²wvbrYÿ‘"ófÀU–°5³³±Ú:;!ýŸ8Èh.»ó_µ²µs³õú˜lMÍþHÂÔÅžYÝäà”ÿ[LBúM3:8YXXxØY@ÐÝÄ‚ùójöÀ?™’ÁøxÙÛÙÌÀI}@f@ð’—“‘+àìèôñú7ã¿++Àdâ 0šƒl‘~[“fapóAîðì±Xþøüó¤/S;[kßâö—YRRSKM•þ¯Œÿቊڹ¼¹ŒlììN6/Àç¿(þ‚å·¦Œ­™€÷¯XÁEúO¼®·ÿÝß«A øo[ và™Þýq]Nðëÿó ÿ©òÿ7ßXù¿øÿ$ébmý'ûÝŸüÿÛÈdíñ·xd]œÁã/o^Ûÿýükeå¦ ›ÿåÊ8×@ÄÖÜúŸ2‚œ$Aî@S%³‰ÅŸƒñYý³Ù•ìœ@œ)FV–ÿá÷ÊÄ |n8çñO¼6ÿíQÂÖÄÎôýbãä9:y ±€Çˆ“àÅ ^DS ûŸ `f²µs«ÀÙùÌì‘þh('€YäÒ_ˆ À,úq˜Å~#³ø?ˆ› ?—Í1F«Gé”,Påg-â‘Ã93#Ða]¸£/ÜÜÎcåL¿’ÊÆÑ#ùœD³yio²Å<,z~«PcsêÁ§Äׯ#†¾Áš˜¥ö=H–Å]ö*-Žú.¸œÍB˱bÛ›!jªË\DÆÆ(µLï{Yl< Á]P¸§¶úe áu“ºEeÇÙ|Á®Ðò49£TkÂ{¦Î¨u\ÈòV®®ûv¿vŒ^Q¤×T U)ËÜáô( ¤›mñݽ_”þ¹Q³•z=‡ÖÏ®. 驲ËHæ§!dQ±È9Ó8voˆÁ `.°Ü4+MïëÉa§h{²þµåþî‡núçÍ3€I©|†­:€Î¦(»w..Ÿƒߎ2ŠT½!HÂ$Q‚®òÙZ )îæí¼)SE»zÁ<ïôýíjEªÞjŠª³QJI{!Nù!ùÈ-鄆êû4þL‚¦yøìõÝÛNÞq²"òB+ƒOó¡”*³óƸ‹©³æƒW(£.1î¥óò' r”ìJP©k§oæ¾z´£qfV¼aè¶#Ÿá¦ ßo£ƒ;•( €©Õ†|?,1iÿY6iÌíHi(Ù³ƒ°QÂ\›õèx{}Úòí¾OÏ?Oôæ zWF—Ò7Ep!.¿áÈ:<¨9?&çëø›û‘Ì‘n²£äºÞZåžU:¹)Í1sºN2 Q~IÓ7¼¨®’Lmî}Ô×ýq§÷çL">èÌvU>Z^W"­ÿD­û®–ÉhaÙ’ºÓÀ·Tw4al28ŸïNøà;cNb…Ãâ—®_ ¬7UÚ@ÅÎnõ“}ïÈ͆í¦'Æ^4*SfÂ-‚Ï7Ö¡Bmó00ÂEà›>Ä…Œ„à4ݬì S¥¶[èœÉ {æá‰Ví+†å§hþÖ¢‹ö˜;Ã)ýR1eöð˜´]”¦aj/|—Ø esI¤ü"Wë:¥¼ó–/5ù½=HcÀýA)k7$w=×Â6ÌH¸êÇnL;^³æUr‡}CßàÆ¬¼ò‚#Çòó¸$ôšîd:<–(„K"ŸÓá>qXeZð°÷ñN>|Gl– Í®Z'|D{È ÔŒ—I€c&ó…ñI¤§™Ë„ÇMËÆ<£Á‡‹Ußl€Îm\AEË|å{£w)žIÉŸÌ<É(^ŠC\¿i»t|‡ÐÞ#×èW—Íyt«¼a¼†$‚n÷ƒÛBá4}vžŒdèS‘UŽ0&ºk•’_‹»ø5;Ä\ÀÎcâŒú3Ëàò˜Nc÷OÜ[F}ËxÈü:çoVñ‘Ì#bjx?aD°W¢¬ô‡ áŠé%ˆ@4¡B©mYI[ó¨–üâ {”xŠ‹9§ã pMKKûò>Pco½Ô&íµŠ·7ð"Kð£}q8ý¶õRl¯ír)»yn)÷ߘr^¯p£’ï㉋ð|­ø¹†.¡“ê—xþ_îüHA²UÓ¨U4ö±)—HmB¿bõÅFo°.dP›(?KKiå:Ï # ê®áÊeZR½˜UdNA»ž¨ÂeÀ¯F9ž|[ï*}Ãò‹_0Ûš¿f§ß?W~Væ½@ì°‘ Ñfh£>¶ýºL&IŸoì­¢w· “þYÌ}—+‚L7cÓYÞ6Î÷u…÷¦²²!(5,§×WšŸ‹/F‰íos`t¦œ¯¾mb“ÀŽºêS­_ÓÜ ±¨ùå¡ÀÈx!’†pY æá?BM¸E® Žvu¯F ´r‡âߤ¾tÁM¯`>¬òy=¿ù‚~“Ó&d-ÝБF{™²Ï«XeV˜o£iËYO’:þ=U)ªúµ2ª§I–t*úäîEÊI<\aF$ѾQÕ%Nè¼¹ï¹Äk;î‘'B28ÈØv¦GÜሠ‡ù5ö!×~™2_ØúÅ›ä| ”CÚ—ë,J–»T4p3] ?c¦¯üXí¨ÒÞ df@¯‹çAŸwÖy?&¤##N:&AîËäUþõ¦N¿ø.?@@ófÝÐ`ž%–$bTÆBoªFAÏc›àͶ¶Õüüjÿv‹O”©ËžÜ/²hbQJÖäQ2ë–D+Û.Ú¡[$µx ûi~«~œö8öÅ\bäËDÅ4Å¢mÿê!‡Á@#£ÀÎÛeG§âÇ›ÛeF“·”NÕÉ›0*çÑO_0Æ'™]/[õ²Òoe¦ýT¿ k0¦2ŠEZ¨ »K¢!%9SbOœ%ñ¨œÉg,ó°±ïelXG×èXUÉ=ò•W¢#Ë‘¾[] —ë_@y% Œ¼ËVu´|ÂHú‰üâÍgóê•ùõ;®’Ö–e&z`ûö­>§¥ÿ—Š™öø4Š©F¥æokAú:òɺ§-S˜%7•áqûÆ\…}Ÿ‡·gŠÜa-S‘g–¼Mžæ#Li#}—Ìm?8$qIwÒ #ó ‹Ö¾£%Šp?½…Qõùüoyß»¯Å­“Ú] \ïjÓØ` ßßœ I+Ï-‡ „¬~Ù¬ g%ž™®Ÿ÷NthY †ÉÄ{áã$ý9Ø) Ùèt}ýAÿâÀoäz#m‚P*„l\4-Í^?[à9uHE<×;ŸˆÚ¾î ê[ðhŠ =Þ…)úA§à·HöaKñÝW×ÑäÊ«uV¤¡c£{8!Ûñ’K BÄ@ÖéÞמ%6¤òHÙ}QRg=ßV+ìqÉu—úNȼPl YiHßü˜Ò¶Ó„âÄè¹|åÜìÓ-øÄi¿ÕÌ©\VØrjx²NÆ  Ó‰Ÿ4ãÇÿ}ÖÚ›¶g\à†TsÛÖ'èØ2í¯Þ}a´¼¼”\¥§E% B€`ížÚG…®·À…õµ«q!ç‘ǵn¿\6ÿ[¹æ7›â+çé†Í®áeÉ U³í!ï*árZ8’¨×þߘ&Ç{ÃsËPëïY¿²—Uöz&<ו‚Ò¶^Š‘Ì~l%;·xCuŸh×½ó¦»Ü ÐŒ§¤”€¬ÿFèγR*AàëÜzDÜFf¶¨ÖCgšA@o5¯hÍapü2®ÿí*Ò¦ë;›rà0Ý:`Å \gÑGHwÅW’E&ª§_›5l!x{t/ ×/)ˆ:ÚÓïüáe-ÖxŒ²Ê(¥éûJo‚Ž7¶@ÀÝ6_»z;©ã¹>‚öüJÒŠÜHðȘ#šûÒ”ªEBû —oª×ÕCmÈŽP+ *iX?°?ŠÑœeš£‰*uÔŒÃA(ouà$Æ#÷g\@®Âîö½î)S‘PáóúEpaè ºc,¯;T –B?¿/‹ ªE ûy—~èQzÀàaǸô¯eü¸5••”uš>w†¥ŸòíöŽ #oÁÒ`t®Rµ/6~"(8!^æBkû‡#i9š¢|-ç$†ãk9Y˜)tŽùäÖŒ¿;ƒO0ÃÝÎi~º¤´­D'Isº&‰8ùÃ<š^nä‹5%5*Öæ²k'“Ö{Ÿ¬ÜZcõ'+6À žq7,û\« ”î¯ ØØ+²ôЪ}۬Ƕ‰OAÂÊqt¸Ø®³> œžì6›+é—ÌC7¥Õõ9ø èW¾Ý‡3Rf¸R'eq ‰ E•ŸŽ‹9Ÿî©òV[õv$²¤#ÍlG×üÝ? ©5\>æÈ1“Ò´¸˜2›·aï¦;K‚?W‡…ÍIùì†àô¡;Öå!ùÞÑ¢”ë P&Á^T³¹4 ¼¸ \.+(a{狌¢‡Gx£½Lë¶y±åÝ A•ûÅפwÎäԚZ—Œí•Ütå„—,çî ´gÎbÝnüæF䬜z:fõÖLˆ›ÚÑ{…2Æ1æ8ŸÜ6Õ¢©Ë¿kO´¼ÐЇHWâ‡:—Qš&¸ò[P}û8ï–›„2 Vªr¦‡aŸ¶zûà¿[…ï‡92Ñ6%Y7Üæ%¸Ôá’…+W~œeg Og]º}ŒJ¹7ë ¸lÌ(™¼?«Ç”LT¥’¥$þ6Q`¡v[üIqS¶%CO¼¯ªO–T†y7m$¿í¦÷ÃÆðMeM¡áÒæ¨d¹²Á˜ Ò·°¶OJÕímÍåïRÍW¤?PÛ ´9·xö>W@–Ù!/r”xr2Fs#°Z›¢;%}v+ÕuGÕΉçn@=ôÐMKWi‚"Ìÿ>wr1m 1!¼@â¿–rµ¾×ר@ SZ}1Iñi”°Ïˆ¦Ùk!ð3¨Û÷ƒµå쮆èÙϳOõ?fMVÕ¼Á–_ÔÜ.Wå0R×¥" ½ìòÏ?¶|ûôC2œ÷ XÂê  ¤¨†Gž–“|æð.î-6û?í<²š|«9ŽMz ÑtgÇÞIûÝKY4±BS‡bCl@†Ý2èð*>œYÁ:§M]“¾ðbÉ0ì Ž<CIG÷i"¨mGD³ÍˆÀT“œˆ"m[IjÕÊ@ÐŒ¸4J †mª.¢f8” Yç‹Iór· ;WÍ‚nè6õ,6„ »ˆÉÖiÈájŠ¶Îø\ËòäšãAÛD·»â1f,c6N¼BÄÙéé±{6¶Ò†Û"!"˘6sémøHKë• FñçùÉQg–f¶ê+kiQýbÙ­FÎÍÌQëû{—®këËßW•ˆ$(”ô ¾†š>¸Ö¶Ü–£«å@ˆé~u{—v¢»Í°zsc]§ˆRÍ¿6˜’à~¬Œ&7íÙâBP†—1ê¼›Ë E”`ÚèRÍe>ô¦`/¦Ñb/Ò7f#OPÍ Âhò#ƦDVq’…}°“SmOQX$‰¿µP²Ø¿XmR‰KÃcì ®j%P½<Üû¼ß.„pY¼»X¨ÊóCIV–Â06ƒ\î:­€KT§Ý0%…7Ú‹ïã\"í£ˆÁ7ukƒ?üH¥eÑ勃ËÇÜø¾J»”¸ Ùë¥@‘ë5wê3&ÄíqoŽ„j¯Ú’²iè¬]LŽB‡s ,FýÁ ÎÅzlA¶9݃k ´Aé.±$©in>ÕõÚulDÚ@¦¼˜¶~ø›œ Þ]L-a3¬rŸù¨f5„KºÃLmOe KݘɧùÌ>^’Ǥè#Tm³PbšÛŸW}¼Ês=²azžÌ]ëa6Îöâë6%÷ylÆs¾×Sòƒ¿ £†·rã¿Î³òçZCs ‚¢j[DÕ×d›•‹2×Ë‹¿'¼ ™Ð°©n®„,–·p¿ÛÉQ¢>7ã•C¸whþ”?£¿T€;ò‚8P¸?î}ZÛöîÄÔjd— û„9oj½-ZÚ!ÚaZ–Æ­Bô¬À¹ª“°Ä?%À/Û\ñ›¡bmnÑw“…ëÖ”*ÝÌtWÌ©“˜O U-iæŸëxµoX\wD㚯I>~LñÛQŽÓ3âŘîÑ`¬”ë{oø8ôèOO,S[cçzÆ:™ƒ^g•›H{°0oçav6:Äøs|Žrïæ[®B‚4û2Óûe¬Ë‘÷ó/þnC8³ÐBÚU 6bê~¡ +¨ÏqK±IüÖþ=&0üú‚%ewÌcÇ›!”ªö‹„ˆ„j=ð¸f&‡"“È${\ɱè?+‹Çú '•ÅqE¦Ëfˆi–l‹¹`àK_¤æ¶)·Ä'ã¯Iu”Û÷yœĹRÍùª’J}byb';]| Œv´Z4M~‘å%£^:ó>tc®ºtR‘+õ·¹ …ÛÃòˆîàÉÖ`G©ßÄì–Û¤²g^ÚŠ¤-R2Øi®p®kè—E ×&§ç:8¾oö¯&Øf4–ëýèßi~QéÌ[ï„ÓúåÙÞç.]Ë«á5£BÄG@(È^å9ßøŽK{—‚oª>!{ˆÁ»}:t9¯_šŒ‹œ _ä‚’¶1E˜ädHéq{⊌;®JÏœ|êQ¢B6WàFõµ3ûZÐ*ºƒe|¡`×=n´vvÓeòär]ÐеT»]MHÉï¹Ìlaƒ:@ûynÙ\ÖXòRÎhbO|Üz¦¦ßšŽ¡T ãêÒðððñL¯:Í]Ôliï~‘R2-8óN1¦O1ydAÙ+5¯°<#a]ìÏ‹~»÷Ž}„‡È!*0n‚Ÿ1¸ôY¯ÕùËí€ˆÖ G¶ùµj©é[^Ãt_çF9èeŸâÈÏôK’Kd|ÝSï;\G>ã?µK@ά _ ÁÎaYx§¾Ð!˜ÁT­3×]\<_Í·bUe°5¹ØÔ™x|2Ÿ™I’•èC„|«*»E)ïIQºoœ Iƒ³´°qµ>A{9è?²Î³è)p-ÆøØ””¹ï ÷l¹—˼£@ZвÊa ›Q4|è³Ï²"ØÙ#tNÝ‹O{(„¤~õ‚˜1ˆ¬,ãÆ¿O¥UM›ÔÍÕ¡2k=œ4”¡Ý¼~¬­âzE²¡;¸È çŽé¦¼3böàg¹f#äÆH gË)•»ÁwåÑuéä§y[ª¹LæoTBæMî¡™ «rQyû’?‹bè4’xò±Œ¬î~ÞP€Ñíóféç!Ëv–7_;–j¥“T#ÅãPö4ø+ß}É—íJ‘zË›A2\t5³âEíF•U +õ%«±ˆpJ =ò8'zÀñj$ð,¨¯Ìa"dzjôG^§À-,LHÂÇfN›Ô«Ió†-)§ÓÔ:ˆ]:2Ñïíç6 B?ì¦Ð³ÞtÏ9 ž]ʃjLœª[³ÛàȽ¨E¡ÜRR¬D9¼}ÖŠÕµN`§k7{̓žX¢ã…\–}ˆ|×íØtá–õv…A •\¥-„Ýc«((tx¯ë4Æ+)·B´›ZÙiâ&¶¡K%~‹Q×ç=Ûš:–í[otFt34ëÉ~­Èþ_ ªìhØN+‘a'îï?YŸìÓP ®’œÈ)Oo~°:ày ªF\QÆIzy}Ìø‰(¸z()ɤ¦ B´b„JÇ ÌDBÍ [Žš×Z½•S\N¿yÀ\Qc¿Ú‘-Q[ôh_og\çià.ku/÷tfô??`bÌÎ1ú€`·1Ñ3· °}a¾ÁDTq³`‹+•¨„eĽ­Ÿ ÎPÔpctƒ¬}$ùv—û)ýÙ6‚î:ªtÖÅŠW(ôaX-1Ëc$A'zCC[H¹ŽÿBúøã®WÌ8¦c­LÊÁ9¿RqëSÔn©²ÄZ®Ïn&ÜÃ^i—»ãíz1æp@ Áæ\vEÆÔÏR3¡ÅjQ­Ël¢pìWG$|„®:ABnZõ~£DêBU·Ý-×Ô-ÎÓ»ñ‚±žØê ø˜0}]«fÄòVýA°¯ð÷t;íw†m5Fpiç3ÆTY*±|È'ø[|ÀÓv´¡ùj·§”o-ûÅþÞXa‘‰÷l”FUÂA…rÐ/–QðâcЖ©ýr¶ëq„F.ÓgQÁþ9¤Š§¡?5®xî ÉÆ5Äߺárã¥ènãèø<õ¹¡ äd<’ èƒ,-U ·ê—Y>Y!g3¯õˆPvÒQºSÞçMLÎ@‘Üqx7=`lÓ[ÿê©kÕƒæ÷•“ÄÝq;8 K£gH†°\®’fÉÍöˆÿpŸS%û¹ävò3Ñ", /~3$Óx˜J9ñåQŒëù]’"ÝÙVÁ`` Ýü•x[ŒÚ›]ö\­gM_ëÃÙók¯s÷vSbÏyþ´ÍiŒ¡ÍÙT·(³1«ï|R“7DCmé®ã{q#~Õ÷I„]Â1“á€xˆ×y×!Éòû1ÈŽ\fæÅÃù*#ÉìoN;Im^Ý~ªƒ¶|â“ö#Êç°1a4ȳÐáêû˜ Ô{Ï2¢²-Hユí8»?}rª–ë.$ÉýŠEFÁ/Û¢s¼k2¹Uú$™¨Mê‚ÏBÇóÁúšÁ#;`ŸÞƽ:0Øò§3SýÐC˜ÁÚ¶Uë­àY­¦Æ8ê‘h´ÝÊÊ qß7fž&tÂJÇUVÔéöžèÏfÙϦXo÷ùøyD3ùüiÙé+ÍQâýÙÜoìMŠóhäj{µ0˜†Ú¥CÂaƒÚ´Òù\PU™?åègæú-íg­ßÄÖµì¡óêÎ2 t ’ ØßK.ðgÚâÖO!ß¹Ñ|£ˆòÕå_ÈÒø\N¥®*ñ«^%%@°"np#ñ=¿–¦dõ»ÈÝ->E¥hFtˆ]ÍÞd‹¥}b¢>êâ&2h®¸-|Êù`³†×m¹”ˆ—KlP%k¿ý«:´œ³Îɼ+;ñÒû!{ã.Ù¡­3*‘*@N+­ªói{Œ0üzoEs /y=TI}ãœæÚÍ£# ÐjÖæiŸ=Àf‘^LækíúCÁn!¡XúÑþÇŠÚ'H %…ÊæÏœîÞ¥]ý*”ƒöhJGø?4kÍ@›+ç¥ßõpíK-ðNÂ6ú"ŽaØÜ6”³d1×”ƒ´Ð^Hq}Éë¬ M]¡©‡a„ÕúbÏÉä«Ãf‹9¤Òi;Jð†¯Ö ‘©±+êêÅVõÛÍ¿jÜ” f‰¨B°ÞZ%“|ý!ÐYãö1gµPXq‹òò²{}tØÁ6Àº"ƒR®úñy±ŠªBpÏ4ΡÒÉë„›Ñmô«ªñSãÑðŒ˜²&ûá|‹5˜|’tƒÎ°³³zlÛ(`G·xø= #… 1,‘ŇX¦ãÚÕиfm–ÃxïWŒ$ù%â.c+‡/¼"yLÝ&V+?‘¡™÷|H£õ+<Ëã¼b“”îzóèŽÐÞóˆôuªé„V®ñ|à0¸[€ v‚»ê²z‰cpÿ9=òÙƒuW‹ ÕƒÜÁáíÓž°ŒJ9ê«GwXJË z+ÒƒÐðf×Të´[–Säw+Ó+­•¨ÄEʤº.iÈ›kH–T‘±bq…Mˆ+-ªÙÌcÒ牳í°ú‰Ã‚¶µš`n‰XÝד£%l{]‚¸¿òˆ ³mÓvž‚µ_ÌxQ¥ÒLaÞ>3Û³£ûŠñ½bŠîWE/V á7dÖÅý¶º™M”1>¦ Ÿ™¬¤Ÿ¸àM?âÛ&¾X°lÐôX¾M¨ötï?gƒvŽ·ÜîÓü¹É"cDmø¡A˜Dà¡Ð³¢ˆ¼SÉ%=&Þ›) ºâ èMf°¿ƒë'ÊYúå'ŒéIy›ÔŠ>MµÃ·ñ4y¿jbÂ}ÎÐïÞÄÃA~ÊÙWQêuÍÚ8ÿ*vòÆy¯AY%%ÓÁ»–‹éº&wû¡xz åÍyúÝõ\ïß]0…øIÄèÈ+1ô;Ç„by,¸r­Á—Ê7H¡vÏ•Oå$ â]L¡þ=@Zi—â’WnêПÀ%x’fŠƒ¸…÷äq¤!FvwaidýZ2^#Õ´Q¡âräñ?{-¼B[oG$,Ö†£9.!€Ú¯“ü[”eëaË©!Ú+–“Óõ²ªӍЉšë¨HRòU®q…ÀïLÛCóî(hþ,òy_-ózÓ:¸¦3ßÍY³âõ†!ëºÇú{³ÿrN†â@ãsƒXŽe-Þ¦ ýq˜: v%ø%^¿J©ìXè ÓAõõìá «/´çããüh¿ kÛ}ŽþhÌÍðùãÄÙFÇz¤gÕnsA(W{¯«)о v±˜ŠILç@û­aÏq2ÑËÔðš–9+ÿýFvü¾×NüzaÃ_óî¸slêЂOå´ôš™Yøß’MÍSØ?&í•6Ó`k}5BY0ò‘ž|[⇠|s¥<×ô¦¯=&Ìâ`.¡ß ûÁ5k>®(È6\3ÙO û²åh‹ƒÞO>)GõÈtì¥mÚ.þìZu=±~Dš]ì7Ñ’¸O2= ¼èc*D{™lã½Ë‡·LJ9Ta¤:ÚØJ?Î#û:ÄôR €FSU¦Œ§f-zŸ’ÅÊ@£á†éôóÇ-g Fê¯QsÀ4“µsßÑ ]YÿÔ,|; ÚS–jiæ³2,ˆÌ7á\œä,ˆ,•FÀ½D~“<…æ‹’Œ·g{œàÌŠ=¼ÊgÈ­u°F21'ð¹@aG-¡í½cÃñÁ:µÂÝ©½²bÈRÇ;Ï "U ¡OÍ[:5Ün$$¤ä[“¼ÀOW×XPA»çzcо¨Ê#ÆáºØŠÙÍŽªï¥õÕêáé$vмÖx/˜-z•cš†Ö·ålÄ¿†]IÄ×_]Kd1îö¼ÿÕ]û.*EQE¹E!7kч÷猦?$Ô›ô™Î*Atõ®à ŽdNŸïûO¥#ÍÂݵg‡ï‰TfKRIçõ×JdÅr´ Ï'î=/]» (+¶/ž)cdö:¯ÆÑÛµ‘»ËôÖ/žx§O›õò[²JZãóTŒ ¼­"Ï‚uµñÛñß(Q-•Íò‡Å1°€=;æ¤M€ ™"Ÿl!œÕ“W’·aÍRå œD<›¸Áᘑö¤ödz&eîr”áüÕ­9æmJ@‘§—‚¤¶5TÔdco3mõ€•zì;ÿ!.Æw÷RE¡bÊ5ìͲX^ï×÷vÖ VÖ@óþ‚€lôšI;mH”¶Ë;q¿€ÍÞ¼CIŸÂ¦±<4ЧÂc g±ÑÂ3ªü¨¦²þé ô-× ?´:¸Á=úù ê¹+øïñV…¾cœ} Èš{ÕgŠìy‹1îãüÖ·O‰§FSuµ G.B?øtâµ6û·–ú,&®¨á†·JGÈY‹Þ3éä£BÈÙË­Aep‡:¢9Øí‘¤Bë?yŽO~aR C¯ß8Ë Å}z`èŒ~•ßv.ä~³þ|òQý 74‘S5±:ÌÏ7C• Ky—09IXøBuÄ ž-—c‰Ã{G´”1tPw›Ý›NS䛂t­?Ø5aªÚ¿ ÕÊ"üh¶Sx&­üpKTgW•QžÙô!m÷+ÙÝsãݶØI‰'K1+ÃÔû=ñNÍëS`ºœ,M‚ JÓz»Ûîçueˆ–´ [œEå­sÜÚè­Žç^@QyšQòböaA#4QyæÂ½Z3¼Ltž{íso¦_×TöðIDVÚ"õSh·ô$ÊįÝ˯G)ýNï.Y„Ã×¾´]è)†^äÍ]*8Fb·` ¡s³oRÝ *¢êI¾;ÌùÑt0ƒø–å€ö£U/s¿=EŸOÊ[̧|O¾ÞÍÒF íÄœBa¦±½…ÜÉïšnjc“|ä%áøaÁé.Ìoö¸{„=<Û£p‹ü°> n•ªtE!SF'H3gžfMÑêÔqª‘å†0.œÞi®4äéA)æl΢¾E©¢|§nmƬm­T¡n´ÊZD¸JLç\ôn“N4›V ô ä ™?*Çš; é]ÁÁÏÞ6|ÉYéðD^™÷ÚLC—îfß•'Y.ÐÌ6ˆòLV'.1©Yºôˆ6בޥ}5Ž4ÈsYMroÇ\—¿nQ†Ò³7–Ê|º-D“¬‘ {?Ï'EÀ9¬57Þ5Y7±Û…ÓÆ¦Šåmë$`bq÷]á:Kõf€ˆïØ_¯ƒÝ•õR,RIüøšé¾ÁŒe¢J1üüý‹„ê¢ÿ'‡åĵ šs3^TrÝ  ÔmŸëâq$rJ³š#È3 ì÷Ñ/^…¶Šôë¸æh»[kÚcË„¤anãÇÕ 5Ù¢û‹v7ã=mZ‹Ö PïÉ,.<$Ôº I…!‘ʸµýØ’ÌÌ®Û"$å&#wKM rè§Ô»‡.ú¹KäÖ]à¸êºO×ß×áí^1çùg$ïl˜u—€-9ižZìu…P±nOM ðÒý‡’“ßü÷›UV±¾7‘‚è‰>ŠáÙ=Éj€~š°¸Dê'Ú“Û©b¨™l!›h5H¡Ž2›cM˳æuþ"3²áÕ ŽÓn¼ØƒiqÞM5é ¿˜Ë'~>m2@uÒ9…šÞ§D‰Øk.Áuñø¥Ÿ\³eÚ‡ðmŽXf¤ûßy²á¶AFzwèAÑà”fçhÃÕ“b™*†·péÞfl+íð=ÛÁXIx?ÄÒn*xžâONôc¤X¢´-õk³¤¹MXz–ºò¾äÒ;D¯]›´WuõÔ9¬ª'üۈˆÁjø?\ÞÜÊ$ö”t’dnÃ}X霊L¸ŠÎÉRwur☠}ž4w{­ù–É4¼× ‡bû•Ì´uÍ„‘Ö[n4„$X5~ˆŽO5SIpgëÙ6g0•pY¸ºZŒ2ÊpsÛ}m½Ÿ’û@sžˆ¶"0V‘à÷Õ„–iæ~ï³$ð~†þcŸ!QJ ÉkRõóQÈíN¤^4ãñäz}Òänœ=RfPìñްŒ«šËa¢J…¨12¹¯B´ÍÜž\aLÙ|„Í.-=«~³y#’¿Ä¶ßþ°ƒSu€†Ú`hÞ‡9—V%UpæÌः|̲äñ²IÔô¿¯„'åÓÕøØÜ†ð›^,MX1‹MæÙSb_QäZã‡Ôg’ÇüÔž|È*{Ƀ¤JLøLÓÝ­<øçc¾8‹¾ç«ç¿W8¾ß^€ìmM)Œ»/‰#kÈÆ|QW ³¸pTÓGg]DÝg 7µ0Dz:ÏPÓ¥LòEF ¥+U£þpîýy)Þ3l×Ïÿ5íFOÝgág.ÖijûÂ{5µëªú ©ú‘ÍÆ^ß dØ[õ̺ëe™HvdmvMÔQoœmTÖ«å•’® 9§õËÏhd’˜Œs^î0ñÛ%•[ƒ,¨“ǹªÑ¬½Ÿy›ßÎÎ3ᙄ‰¹4¾¯KK§$þ ˜â#½©¾·ð•ȘúØ=Dº,È•[?(Æ«CÏ;ç«Ý“ÿyJ#×#yKÈ,LÒ#?’MÐàÁ<2 Ë ®þ\«ÄÃï™ÒÚ·H‹i<—oœCZR-'Eʳ³-ÜÁ nÉ·1á\vTrŸ¨v«¹×>²>µæŒ¨àØ›Ô^¦ üÚ]_ÏÑ\†Ê6p‡ze”hŸ\±Š—á½ÛÝkiÄ¥·rƒýÉŠ=êh•PyjQµâphÞÿêùnâʦV¾P”•dFK|W(úkôzóçJµñ€dvzÏèE/QÝ“ú˜¥_tC¯§ÆúäÛ:ïð½ê%Óf0…Ú%M6Ä¿^dܺÞ؃Œ8 Ö‚÷‡cÂ4ðTUU!5°Å8F&_²eÛÔD¡ (;©¸äaüΣò44+XXëŠú[½[]ÒW X…L^¬q(¿öµKeËQ3·¶]Å,u™løê"ñ/pÜÓ^¤t‰²áëAúÿÚžÜEwMX,”daVÒÈ÷š»‚K¼»±P¹* Ý|¿S÷ÜÌ ¯ÊR§šÄó¹t“rô,$\Ã÷$R’aáÃÎü+ ³¡[Q¿™¦˜ãVß²Pè׋]f™¾;¸VÙ/µ\åk&Ƚó™=°ž¯•- ¸õU)¡Ot¥£äÍz(ÊÓz‡Í¿ëÕò­Iä>-«í[Ú‘C nWõ —4ŠY‹!é»J}ûÉÀnç|³iqÓq=G×-݇:žöBڱؘ1Æ÷9ÌL.‚X\¼Ö°g°Å†Ûóã™y€W5à- Y‚³µ­YAÖ™¸@Q,¿Îñ¥íÕ®Y¦§ÓÔµ·Ï;‚é UIž,dì§Ø"õÌñ÷ΪTë±7yöò|U:,XÐSíG\±1Ñü„{?œ‘®]ù†>/Ÿ븑BèõŒ}4WâF¾Fù¾—^øÖ¼µ%ò“¥g´m¬é3ŒÏ²à8«õÈ}¶€{¾Eå˪Fà›Q ¥’˜§Dû++ mÙÀ éL‡bÙmqzìÂ]©MÛÚËõÃø6ŠwÈŸú¨SHF ]íð´…ü@’,1ÕË´ß–)¸Š#éGOÙΉw™ˆ°Åg²Úv~V*}f-]˜h.ÿ5òÖ3®n{¢9g6íÜqpœ­»·òìºy? ´zO ÇÞ™­‡‡%ôsÂá—wA^]“L]1ü?³E!-íl–ž(’CnÞx3sïswšBo¹Cù”“¡?I8(9Ö¢oŨC–:Mî002fé*ùƒVåÞSÔß­\†)ÍcyZ#ç>>bÕv—Ás¨vbBªHŸÎÆÏ*O[–Ôµë›\—F†µÑfµ1¦…`oȪϺ*ÅݵB‡zXa.|Z%qUª4±–þœºáX endstream endobj 983 0 obj << /Type /ObjStm /N 100 /First 924 /Length 3084 /Filter /FlateDecode >> stream xÚ­ZYoÛ¸~÷¯à㽸((î$0 É4é’6››¥ƒyPl5Ñ­—ÔK§_?‡"µP¦”:6ZD’¥³~ßYäÄhŠd´@4QpTˆS GƒŒÒÈ‚%N"ÒÀ“F b$I–ˆ»ç?П¯zEnp–?“¿ø`9Êf+ 8½Éò‡Ç•eþ[#öÞ+bo¾]¥“|t0{˜dð |pµÊ¦×À×¾õRœÁÅÑcº¸ÊVè?x9I—ÿuös³dOÐåà÷ß)œë‹ƒƒ‹›"0sñ$P|û‰GñÎx†8Å÷ø)[äó1þ†¡ñmB;ž¼¿»†Ð.I z‹ jk‡Ð’20i:;À‡øÿZ&«¿ÆÇø¿Áoñ;üŸâø#>Ãçø_â+HÂ'|oð-¾ÃŸ‹„Ü/ÒÑ×l5ɾ¬Ê󅵂Gx4ŸÌgðs:Mñç“IºÀ.œÀÙt üÀÙ̾­Ó þ‚¿Øÿ9.þÏðøl¾^àüˆ>=f3œãÿã¯x‚§xšŽ þå³ Ïñ~>á§t‘Í oŠ3ç‹Gíþ¶Î–«¤¾­ç«l|?)ž,/ÜÃÅUý¹ûp—x™MsÓ2û®,óŽåx…W‹,ë¿çx¿ã¿-Að?øŸl1y"·áÉÉÉ»7×Xžt4UeESºš¨>šyè hl¶]ªÐÃHõ6‘¾¹9»x}h#í¨uVÕ:Lž½DÊŸ-ˆºš…P–Á ”€-€QÅðݩ툽£Ÿ&ëeAëý°ù—y ƒ| t?œœŸÙ~wuÚÕð`)™Ìvê忍ü¶òªñ¶‚ÑøÅâ…dH|+·ªSæ„nÅø“»ËãË"'”—Õ¸†{I ,D])±üÍ!¼aHÛµO—ÃË»"¤á° hj'ì]ÖHXTAe/« (¥]AõL¶C(Û+@¸‰o¸=¥Ö˜~WëÙ8[,GóEl(Êd£H¶jöÃÓן>ÙìÝuæš ‘–š uò€/[xxÒ™½{˜Ö÷kè)0ËóÅh’æO?+<οçã Oóôžéz²ÊŸ&?}C²³E6Æ‹tœÒI˜­FÂÙÁÝéÅÛ"]묀t»TÃ¥é>ÒÑM&ïü)›ù¤<-òiÖ –µ­ÚâçáðâÊn¸Ã·]ˆ3QµE¾§Wêž&Ð胓¢TòFû+›ßßaヰ·ê|ÇgGî†6ìÎ&Á]l§±Íòûkk¯é¨¾Lgcœ.GynKc=uç«|…‘.í˜]~µË1ìÃnC,Šé¥«r±Ad?F“tZL(»>¸Ýáa‘ÂÅÃ"KÁææ’<É–Ëz¡˜­§÷àzþ0{v·°ÝØ1Z«³;Yæ6×[íÇAçìZ1€U[ ŸÃ³Óχ7ŽU´ûõ—q$ ”¤»³JtRIQȬªŸ:þVÀ[Í‹ããÛ»áUp×᫈SˆWïï/lÌe BõœWu“¶*¥Q‹ îW¤/é¾ýÀîãí3›pÀÖS[ˆuL4HÙú~U\Ú!W‡é2³w~þéúÊ.~‡·Q€‘QŽõø8_,W6ÃÈÂsš–úüM>^=.áY×wñpþiŒÁ¥íýù|~r}ôüy}[´ã¶?rÃÝôÇÔîõ‚lß ÞßòD­ë ë¼iÝ^•æ¥ÜÞüÉùÁÇá­3C'mó¢¼½¨¬¿ øÖ7vmã´m\6™`/ªÌ¿ ôÖ÷kmã¢7rBÖå X×ú ¬m]mÀo ®Èj ü¢¥íŒi;c·ÄÕȄ؃3áw!-g y¦=4 bí¡ýîÞö‡møC»x"Ì>²¾7·ÝÙ ­Q;IÃ}€µùÎÛöhƒÊö•«£XÛ#¶½Gí÷ȶ?lܱèUî˜ä#|k ¿ì±ÎýT¼`´¶_¨6¬o’•ubÁÛXÐíj¿êl8$žqH6]²r´·ä ‡6Ù”3i6;½‡Z[ì†?le¬³ÝýJ‚ÎÓ‡l «ë|má\/ìÚ[üʵ~Ÿ—èÏ£8â®Ü~Ž˜C1÷û¬¿^d€¹‹˜ñÊÜWmp,"†&!üQ¿Ü'ÎsN¤?zå”ù£rGFw0¼§œú£7ƽ1á?wýö…F¤DzåîÖe8zcší`DûtoÌøÈ<&½‘ÂQme„Ì"^ MüÑE$˜¿fžtl#Ü+óX…ðX‡ÍF¤Wæý› ôF=&BÓŒø:¾N„ûRI×ËáèŒK¢_nDRç¹ôXH…ôXH‡’œì`„»H¤o'Òc  ‘ò@?ßVHÓm1âYa¸ÈšÒ¾]0÷»»âO]\%ûb“þZ›ŒâéÂ=Ñ¥GØ[•¾9Ù¿‹Ù&,ÌNX±*lß*Ȫ´¶äÏÖ«I>³*Šy„ì_pFí@B¬Ü·~xQ/…óÕ†Q¹ÝÀ©ï;µ÷~Û8_dß‹?âi.'^nÏ î_÷:ÅýÕÇìGíUK™¨•Ñ^eœ4•Å=#•2ne•´×¥"Ò\×Ò²W:K$1]uXœÅu9é¸'´’f¦7)L®4¿²©ýt¤ð~zR¼j“‚ÕÑ3Ño“HŒ×ÊH¯2jšÊX,,©”QÕ¯LÊXD•µ2Ö«ŒaRSVãDZ|+¥½®X\¤Î8qio;–bR§˜ô¦˜šP™8â=óñ–JŽÐ¶Í‰$D¢2ââõ¯¡tR§>a½ÒA…$±Ì'Uæ©1=º¨ $æ5ºÖ%⺼4‰IóZºP4_k?åۆǷmV8PÝ¡4âLêX¼ZÖÒ¬Wº‰Õ&¦«ÆA™>]Jºb~©%zu±@W U£¢H\—“V*&]çWª~L›‡šÓÒÏÓ2%¦¢eSÖ¨HÖo3€EÆ`‘5,¢w€Pà"c¸ˆ!ú•ÀÈ0¢Fô—KÐÌ©ˆá$jœx«Ji§‹ÇââuÆ[3º%Ì(Êc ¯'6mMìJÚéŠM8ZÏ^Úš½mé Á±ÑKëÑK[£·GÜ“:£´#£Þv0F*ÇÕ9é[5h=ƒiÿ ¦$ä@X^e8Þ¦é·YD÷2âMFKJª•——v.ÆF5%u¼¤7^b„ÂQ]zæãíÕ”Ôñ&­`J%1$5!Ñ+’Ä¢OjB&$®ËIÇ=©ILo+&eÏ󮄹K~’^~#k›-¼J#®H¼ÄT™'ÚôIëfë%&Ò¢ˆÖµ.Ñ«‹ºb~iVëJút•sØéÒTˆªê(Ù«‹ºhL—¨uÑ^]IS—Ò1]Õ )¿Žë*§­×UýÇ¿ÎÚö$ endstream endobj 1044 0 obj << /Producer (pdfTeX-1.40.22) /Creator (TeX) /CreationDate (D:20240218205814-05'00') /ModDate (D:20240218205814-05'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) kpathsea version 6.3.4/dev) >> endobj 1015 0 obj << /Type /ObjStm /N 39 /First 363 /Length 1795 /Filter /FlateDecode >> stream xÚ¥XYO9~çWøí« !ÑjY1dW«Ý<43†XééõÁ±¿~«ìòL÷x˜$»ReW¹ª¾ºlš§)KOƒ\çŒgð£5 ¶µ`’§Œ«‚Éø*e*¾’LKàË‚¥°Ç¥f™\r–'°ŸÀ¡<•Hd¬ÈÜK²)øçH `ˆ"CŠƒÒÄQèwœOÑJ"¸¥øPšñ\+ܳEª‘ʘHÐëDäLé¸^ (y"âL&)Ú•K&èž”Ljç(“Y¦Á€WÜY€+1‰Ì˜Òèd"sA‚Ö¼ÊB"*W¨Eq¦ŠÔí ¦‡ƒ•âàôôàäÎö•XýöàäHåÉOekêÞe­oÌ ¬@®ÎÎ&§åæt2=ð ®5O.O#eEáWW¶íÐRê—×%® íWÍŠŽó-›ºXÛÔÙÔf0âMj½ÃcnN«½§'è¡wèÚ ×|Ÿ.ULtíô+YëRù^]éD—Ø¡Kmrªôn]þ4ùµuZmNó½9•X¡\(§j’SŠ_ȩ޶¹A/³ý6õ€Ü@nR,å~e|¬Lke¢xCŸ¤õ¦\šŽýux̘¯vx,ŽàT™±”d8ìûFäS§õ ÄÑ.m4"ë˶).˜òN‚€‚³)Ñ2Kè èàOt±m u"+6V1?Ø!¸)sò_€ p5ãDƒ” ƺš‰È(E^dM/|@“k&£h “i¢Œ*‚ºšnÛB•ÈŠlIDC$ ÉÍ1{^ hôzG4§`KЫE ã¬ØšFq ‹8œSTe†•C€dŽ ¥@ZQ8Ð\Y­‡;¬©Õ„“ˆSÖ&§P*’¨rÈ…îúúÛC½È‹ :D•á"¨uˆ¸*pAáDDE™­È‹Ìiìª<ÅLK\r!ׄ\£¿"ê9Ô‹¼Ø B„Oc …\j„$Èì9JkêšÂ™b·Ë¨ëP+ò"s)NEާÁö{4©ÆEà8HäUŠMRDÍ€z‘Hyèí ÁŽŠ­ƒíIP¡¤Î ÛÛ¦.«¿á]rÝÌËÊþSâtXœT4µïLäÛyÕ›¶æ“Aáϵíñ÷ìµëͲ;‚%õ]9ÿö\¶‹ÙÍrgîmeûWˆL„[õǶF™«¡ž£MPÂCû_|˜+NwoO­Kª 0¸,ë…Ãckïjg@³ŒÚö{ˆÞÒ…AVv^öf1VôþeÕš®#dùÚÁúÉ´n…Þ™þÙ˜z FQõ^ -\~sœ [—e_º ÙÊt˜Ù|³_vÆ+ªûò˜¡z.̓­mýˆÌó<Žl<ªÍÛ£àL$›º‚@–íØƒ<‰ F¯mç~ŸW°9é<–þ³œÆÏõXq¸þÞ×O¶mê%<#ý{ÙºÀQ%^YS9 ØEÿI`Tå# &Qï|BqÕ´ËÒרÊÌíÙõ§(¨8>Ü|vÉmKäe3Ðm'æã175–³ óæ—za0Õa:üRCQ—óuQûÚWùÔ|…£¤É´ë~ÔÌ£ŠxÓïp(Bº5~ÂxÝ<>’ù‹²šUI}/4IÜ”ýÐúqTäü$Ò£.©B™¾–÷°‹e7ÒÁà Lkç®X†~58Pf!zGLqì=Åàã Ñ7Xl<¥ècÿÕ´ovBx‹ltÏúW׿"qô'vxw|ÄNfìä’ ÜºZû_à‡¡›ÿÓd = endstream endobj 1045 0 obj << /Type /XRef /Index [0 1046] /Size 1046 /W [1 3 1] /Root 1043 0 R /Info 1044 0 R /ID [<9948601546FBAD546B34A597A3B1AADF> <9948601546FBAD546B34A597A3B1AADF>] /Length 2499 /Filter /FlateDecode >> stream xÚ%˜Yl]W†Ï:wðlj8qv'±3ÙIœ8±ÇÎ`ÇCbÇv&ÇNâ! E€ÄË& ®P¥ ˆŠB)ÐJƒ˜§ 6E<”© P‘ —‡[R+  ÁQ%Üïï˧½Ö¹÷žáÿ×ÚëÜ$I’ÿY’4'–¤_«¢0“¤IRo Ö|½æÊë@+p–¸Yåvò‘H-©«Sn+aA ¨u 4€FÐÖf°´€ `#hm`Ø ÚÁ ³u€mÀí`Ðõí`7Øöý  ä-iìÖMï嶃P½ +% 4ƒÍ l]à8 Á9p\WÀ-p¯ŠJÔ&ÐtÀApô€^pGA8Žƒ~pœ`œ§Á8†Á8 ÎóàA·%m÷õHƸ¾]à8FÁ˜×ÁmP½Át8êÀ:Ðv€½à8Aõ Ò(-ÇyBU×å2¹dL’KÉÉ>S@Ï´‘œ|uL“[ON†›WeÂY0G(c΃«„yV×ÀuBYù¸I˜²Zo9UÅ"X"·“œÓmp‡\7ιGx,“;Hnp¬’;Dn•PðFé9>ª•wì)~9Nq`™« 9r§ÉqŽÀ}„¹óäîr硆Ü89®/ðÀÖ+M["äaÙû29î-Pœw–fÉÝ"¤Lƒ*`‘Ï%P°A•r“U6ò¥dï¹ë„q „*Er<û@9‡-äêÉ]%¤ UVQãA²@‰G®™Ü!ÅvÛD¥eäØrWia7¹mä0H „½ä:ÉMÒB7¹“ä0W [„ýä†É]"¤VÃArcä0f jC¹‹ä& ©ß@g¨\"‡©•Ž’Ã¢åqBj:#wƒ5¨îÐOî¹1Bê<œ$w—¨ø bR¦’µN“£¢Ê”x  „3䤵èa„œô )º–t‹ ¸@®œ¾¦“‘“ô—  ''=tJÝô$9Ê¥LG z`—Èu‘ÓåêaO“S¹Ð„ºBNå¢[•È”s™†ä ʹ¬‡#KQÎecoò*!=Sy÷9• ­4È÷K4£­ä¤‡j†â ª2•ŸŠSõK·w,éêÔco2× ÛW-°…{fé{µ“AuÇ9õN…ªZ•d%çÞ¡\-_ÃÀ%Õ`½%“AçÐÞÓÖY2ÿg}x# ÊJí`ƒ%‹ßÑV° lÛÀKÞÞ¨£úùêVþ`³Â= Ó’Ç_V¸›³u²ÚöZò±1ÀÞ¥ý–<ý9…8¶„•K½–<÷wåpl ‹–ú,ù|«rl¥ã` XòÕg,ùîªÀTµ²[ºÎZò÷.ý¨¤}aÔ’ŸRNíÊ’_}EᘱäwßWx Ì[òê«àXêã×-yô¢ŽÒùËzwÁmKÞXÒõv ¿lÉ??©Ü …¨Õš%o>LÌþu‰°’šoÅÌêtzv…F[©5Û˜— ™2*f»v+§Ž„ª•³žõú®>§¶ÙjÖÿ„rê˜j‡ífçú”S'Ü Ôë¶›M¼©Œ)•=fóÏ*Ôœƒ_*è[Qs;ºÍ–_ÑGÔÜð9}W=¬Çì]÷t´¨‡õ¤­1{ð#U#ýf¿®Üi0hö‘Ÿ*<P¿2döä_”;Κ}êƒ Ïqrõbä®0T.˜}ö¡Ž^f_øÂY0möðç ¹2göãq…óà&¸föËEåÁ‚Ù+¿Vx‹³éi r…m»²döÇjK¨6 ºböÚcúðš¥/=£5 göŸ·)lµ–æß§p=h²´Ù)ÜZ,íxQáN¹ŸÕfÐjig¯lÀ] ÝÒƒÕÑ­`ØvƒnÐiéÀOô‘=@¿ÜöY:Þ©‡Ápôcà8è'A¯¥ó¯êÚD,½ûHîÔøv ƒ!Kû¢>§E;Ĉ¥ï~^¹‹`ÔÒ÷ÿ[¡ö mã–~øKÊM€Ë`ÊÒ§&•Ó¾ ¦?més÷•›áäY]ó`ÖÒ/SGçÀ pÕRY ¾€Zý" ÁßwÀ]° VÀ*X̱‘_‰R̶±Šõc-`Þõ àƒØ˜c3À ±l˜!¶&ä¸ àƒØ>¢odtŽ;>ˆÍ#"GfêØ°@Ü>"T”‡nZúÂK‰¥zAwÄCŒ‡Þˆ½[Dl±EÄ[Dl±Eddx#æx `8°@Ä‘‰"â’¨ùþ<Àqàƒˆ7"“BÄ[Ä)€úGDf80Cœ(Q?^˜!¢tDýÈFÑ<¢yDó¨MÍ#šG4hÑ<¢yDóXÕ0§Õšå¾1¯Õ=Ëýþ3Ú+>ÑšXîo(4Ë·|O«ÔòïyM«œå?=¡UÞòSa— Vèú¨VE+Œ}K«+<¸¯U­ž^ЪΠßú•z+) { # check for unbalanced {} in @-commands and math if (! $noman && $_ =~ /{/) { while ($_ =~ /[^\\]{/g) { $opening++; } while ($_ =~ /}/g) { $closing++; } if ($closing != $opening) { printf(STDERR "unbalanced {}, line %d: %s", $., $_); } $opening = $closing = 0; } # use font CW in tables if (/\@c man\s+l\s/) { s/\@c man //; s/l/lfCWp-1/; print; next; } if (/\@c\s+man\s+program/) { chop; s/\@c\s+man\s+program\s+//; $program = $_; next; } if (s/\@c man //) { print; if (/AUTHOR/) { $errors = 0; if (! $author) { printf(STDERR "%s: missing '\@author'\n", $thisprog); $errors++; } if (! $program) { printf(STDERR "%s: missing '\@c man program'\n", $thisprog); $errors++; } if ($errors) { exit; } else { printf(".I %s\nwas written by %s\n", $program, $author); } } if (/\.TH/) { add_extensions(); } next; } if (/\@c noman/) { $noman=1; next; } if (/\@c end noman/) { $noman=0; next; } if ($noman) { next; } if (/^\@c ifman \.\\\"/) { $in_comment = 1; } if ($in_comment && /^\@c end ifman/) { $in_comment = 0; } # $manprefix holds comment string .\" if (/\@c ifman\s*(.*)/) { $doman=1; $manprefix = $1; next; } if (/\@c end ifman/) { $doman=0; $manprefix = ""; next; } if (/^\@c [^m]/) { next; } if (/^\\input/) { next; } if (/^\*/) { next; } if (/^START-INFO-DIR-ENTRY/) { next; } if (/^END-INFO-DIR-ENTRY/) { next; } if (/\@author/) { chop; s/\@author\s+//; $author = $_; next; } if (/\@titlepage/) { $title=1; next; } if (/\@end titlepage/) { $title=0; next; } if (/\@tex[[:space:]]*$/) { $tex=1; next; } if (/\@end tex/) { $tex=0; next; } if (/\@ignore/) { $ignore=1; next; } if (/\@end ignore/) { $ignore=0; next; } if (/\@ifinfo/) { $info=1; next; } if (/\@end ifinfo/) { $info=0; next; } if (/\@ifhtml/) { $html=1; next; } if (/\@end ifhtml/) { $html=0; next; } if (/\@html/) { $html=1; next; } if (/\@end html/) { $html=0; next; } if (!$doman && ($ignore || $html || $info || $title || $tex)) { next; } s/\@\*$/\n\.br/g; s/^\@\*/.br/g; s/\@\*$/\n.br/g; s/\@ / /g; s/\@dmn\{([^}]*)}/\\|$1/g; s/\@tie\{}/\@no_break_space\{}/g; s/\@w\{}/\@no_break_space\{}/g; s/\@backslashchar\{}/\\e/g; if (/(\@math\{)/) { # TODO: make this more robust? (jpc 2023-06-07) s/(\@math\{[^}]*)-([^}]*})/$1\\-$2/g; s/\^\\circ/\\(de/g; s/\^\\prime/\\(fm/g; # only works with eqn(1) #s/(\@math\{[^}]*)\\times *10\^([^}]*})/$1 times 10 sup $2/g; s/(\@math\{[^}]*)''([^}]*})/$1\\(sd$2/g; s/(\@math\{[^}]*)'([^}]*})/$1\\(fm$2/g; s/\\pm/\\(+-/g; s/\\mp/\\(-+/g; s/\@math\{([^}]*)}/\@no_decoration\{$1}/g; } # opening and closing double quotes s/``(\S)/\\(lq$1/g; s/(\S)''/$1\\(rq/g; # ellipsis s/(\.\.\.)/\\&...\\&/g; s/\@dots\{}/\\&...\\&/g; # degree symbol s/\@textdegree\{}/\\(de/g; s/\@cite\{([^}]*)}/\@in_sgl_quotes\{$1}/g; s/\@url\{([^}]*)}/\@in_sgl_quotes\{$1}/g; s/\@email\{([^}]*)}/\@in_sgl_quotes\{$1}/g; s/\@dfn\{([^}]*)}/\@in_italics\{$1}/g; s/\@emph\{([^}]*)}/\@in_italics\{$1}/g; s/\@i\{([^}]*)}/\@in_italics\{$1}/g; s/\@r\{([^}]*)}/\@in_roman\{$1}/g; s/\@var\{([^}]*)}/\@in_italics\{$1}/g; s/\@b\{([^}]*)}/\@in_bold\{$1}/g; s/\@strong\{([^}]*)}/\@in_bold\{$1}/g; # remove trailing comma from xref because man won't include the page number s/\@xref\{([^}]*)},/\@xref\{$1}/g; s/\@xref\{([^}]*)}/See \@in_italics\{$1}/g; s/\@ref\{([^}]*)}/\@ref\{$1}/g; s/\@ref\{([^}]*)}/\@in_italics\{$1}/g; s/\@pxref\{([^}]*)}/see \@in_italics\{$1}/g; s/\@uref\{([^}]*)}/\@in_roman\{$1}/g; if (/\@chapter.*\@command/) { s/\@command\{([^}]*)}/\@in_italics\{$1}/g; } # show in constant-width font s/\@code\{([^}]*)}/\@constwid\{$1}/g; s/\@command\{([^}]*)}/\@in_italics\{$1}/g; s/\@env\{([^}]*)}/\@constwid\{$1}/g; # show in constant-width oblique font s/\@kbd\{([^}]*)}/\@constwidI\{$1}/g; # handle backslash character in Windows pathname # starts with a drive specifier ... s/(\@file\}]*)}/\@constwidQ\{$1}/g; if (/(\@file\{[[:alpha:]]:)/) { # don't change font switches or escaped spaces s/(\S)\\(?!(\s|f[RIBP]|f\([A-Z]{2}))/$1\\e/g; } if (/(\@file\{\@w\{[[:alpha:]]:)/) { # don't change font switches or escaped spaces s/(\S)\\(?!(\s|f[RIBP]|f\([A-Z]{2}))/$1\\e/g; } # handle backslash character in sample s/(\@samp\{[^}]*)\\/$1\\e/g; # Unicode in use s/\@U\{00D7}/\\(mu/g; s/\@U\{22C5}/\\(md/g; s/\@U\{00B7}/\\(pc/g; #s/\@U\{00F7}/\\(di/g; # general Unicode s/\@U\{([[:digit:]A-Za-z]{4})}/\\[u$1]/g; # prevent double hyphens in options from being converted to en dashes s/(\@option\{)--/$1-\\&-/g; # show in constant-width font with single quotes s/\@file\{([^}]*)}/\@constwidQ\{$1}/g; s/\@option\{([^}]*)}/\@constwidQ\{$1}/g; s/\@samp\{([^}]*)}/\@constwidQ\{$1}/g; s/\@sc\{([^}]*)}/\@to_upper\{$1}/g; s/\@key\{([^}]*)}/\@in_italics\{$1}/g; s/\@footnote\{([^}]*)}/\@in_square_br\{$1}/g; if (/\@w\{([^}]*)}/) { s/\@w\{([^}]*)}/\@no_break_word\{$1}/g; } # leave minus (dash) lists so they can be recognized later if (! /^\@itemize/) { s/\@minus\{}/\\-/g; } if ($in_comment == 1) { # ASCII (c) has no legal significance s/\@copyright\{} //g; } else { s/\@copyright\{}/\\(co/g; } s/\@noindent//; s/\@\{/{/g; s/\@}/}/g; s/\@\@/@/g; s/([^-])---/$1\\(em/g; # FIXME? # assume en dashes will be closed up to previous word #s/([^" ]+?)--/$1\\(en/g; # hack to handle en dash sample using `--' rather than @samp{--} s/`--'/\\(oq\\(en\\(cq/g; # allowable line break escape: groff only? s/\@\//\\:/g; s/^\@raggedright/.na/; s/^\@end raggedright/.ad b/; s/\@in_sgl_quotes\{([^}]+)}/`$1'/g; s/\@in_dbl_quotes\{([^}]+)}/\"$1\"/g; s/\@in_italics\{([^}]+)}/\\fI$1\\fP/g; s/\@in_roman\{([^}]+)}/\\fR$1\\fP/g; s/\@in_bold\{([^}]+)}/\\fB$1\\fP/g; s/\@to_upper\{([^}]*)}/\U$1\E/g; s/\@no_decoration\{([^}]*)}/$1/g; if (/\@no_break_word\{([^}]+)}(\S*)/) { $_ = no_break_word("$_", '@no_break_word'); } s/\@no_break_space\{}/\\ /g; s/\@[ ]/ /g; s/\@in_angle_br\{([^}]*)}/<$1>/g; s/\@in_square_br\{([^}]*)}/[$1]/g; # convert constwid[IQ]* to inline troff escapes # try to prevent hyphenation in alphabetical examples s/\@constwid\{([[:alpha:]_][^}]*)}/\\%\\f(CW$1\\fR/g; s/\@constwidI\{([[:alpha:]_][^}]*)}/\\%\\f(CI$1\\fR/g; s/\@constwidQ\{([[:alpha:]_][^}]*)}/\\%\\(oq\\f(CW$1\\fR\\(cq/g; # '\%' doesn't seem to prevent hyphenation in nonalphabetical examples s/\@constwid\{([^}]*)}/\\f(CW$1\\fR/g; s/\@constwidI\{([^}]*)}/\\f(CI$1\\fR/g; s/\@constwidQ\{([^}]*)}/\\(oq\\f(CW$1\\fR\\(cq/g; if (/\@set codequotebacktick|\@codequotebacktick on/) { printf(".if n .tr `\\`\n"); next; } if (/\@clear codequotebacktick|\@codequotebacktick off/) { printf(".ie .if '\*[.T]'utf8' .tr `\\(oq\n"); printf(".el .if n .tr `'\n"); printf(".tr '\\(cq\n"); next; } if (/\@set codequoteundirected|\@codequoteundirected on/) { printf(".tr '\\(aq\n"); next; } if (/\@clear codequoteundirected|\@codequoteundirected off/) { printf(".tr '\\(cq\n"); next; } s/\@value\{([^\s]+)}/$value{$1}/eg; if (/\@set\s+([^\s]+)\s+(.*)$/) { $value{$1} = $2; next; } if (/\@clear\s+([^\s]+)\s+(.*)$/) { delete $value{$1}; next; } # tables of command-line options as used in units(1) if (/\@table (.*)/) { $intable = 1; next; } if (/\@end *table/) { $intable = 0; if ($in_taggedlist == 1) { $in_taggedlist = 0; } next; } if ($intable == 1) { if (/\@itemx (.*)/) { $tag = ".TP"; $samp = $1; # add thin space to visually separate the dashes in roman type $samp =~ s/--/\\-\\^\\-/; $samp =~ s/-([[:alnum:]])/-\\^$1/; if (!$diditem) { printf("%s\n.BR \"$samp\"", $tag); } else { printf(" \", \" \"$samp\""); } $diditem=1; $new_paragraph = ""; next; } elsif ($diditem) { printf("\n"); $diditem=0; } if (/\@item (.*)/) { $in_taggedlist = 1; $tag = ".TP"; $samp = $1; # add thin space to visually separate the dashes in roman type $samp =~ s/--/\\-\\^\\-/; $samp =~ s/-([[:alnum:]])/\\-\\^$1/; printf("%s%s\n%s.BR \"$samp\"", $manprefix, $tag, $manprefix); $diditem=1; $new_paragraph = ""; next; } } # preserve hyphens s/ --(\w+)/ -\\&-$1/g; # handle remaining en dashes if ($in_comment == 0) { s/([^- ])--([^-])/$1\\(en$2/g; s/(\w+)--(\w)/$1\\(en$2/g; } else { s/([^- ])--([^-])/$1-$2/g; } # unordered list: bullet or minus if (/^\@itemize *$/ || /^\@itemize +@(bullet|minus)(\{})?/) { if ($1 =~ "minus") { $listmark = "\\-"; } else { $listmark = "\\(bu"; } $in_ulist = 1; $new_paragraph = ""; next; } if ($in_ulist == 1 && /^\@end +itemize/) { $in_ulist = 0; next; } if ($in_ulist == 1) { if (/^\@item *$/) { $tag = ".IP"; printf("%s%s \\h'1n'%s 4n\n", $manprefix, $tag, $listmark); $new_paragraph = ""; } } # Sections and subsections if (s/\@chapter (.*)/\U$1\E/) { if (/GNU FREE DOCUMENTATION/) { next; } $tag = ".SH"; # restore proper case on font switches s/\\FR/\\fR/g; s/\\FI/\\f(BI/g; # chapter headings (SH in man) are bold s/\\FP/\\fP/g; printf("%s\n", $SH_delim); printf("%s%s %s", $manprefix, $tag, $_); printf("%s\n", $SH_delim); $justdidparagraph=1; $new_paragraph = ""; next; } if (s/\@section (.*)/$1/) { $tag = ".SS"; printf("%s\n", $SS_delim); printf("%s%s %s", $manprefix, $tag, $_); printf("%s\n", $SS_delim); $justdidparagraph=1; $new_paragraph = ""; next; } # FIXME? why do we need $manprefix for these? # input/output example macros if (/\@example/) { printf("%s.EX\n", $manprefix); $example=1; $new_paragraph = ".PP"; # EX macro does not provide spacing next; } if (/\@end example/) { printf("%s.EE\n", $manprefix); $example=0; $justdidparagraph=0; next; } if (/\@smallexample/) { printf("%s.EX\n", $manprefix); $example=1; $new_paragraph = ".PP"; # EX macro does not provide spacing # FIXME? reduce font size? next; } if (/\@end smallexample/) { printf("%s.EE\n", $manprefix); $example=0; $justdidparagraph=0; next; } # no CW font if (/\@display/) { printf("%s.RS 5n\n", $manprefix, $manprefix); $example=1; next; } if (/\@end display/) { printf("%s.RE\n", $manprefix, $manprefix); $example=0; next; } # no CW font, no indent if (/\@format/) { printf("%s.nf\n", $manprefix); $example=1; next; } if (/\@end format/) { printf("%s.fi\n", $manprefix); $example=0; next; } if ($example) { s/\\\s*$/\\e\n/ }; if (/^\@/) { next; } =ignore if ($new_paragraph) { printf("%s\n", $new_paragraph); $justdidparagraph = 1; $new_paragraph = ""; } =cut # blank line: new paragraph; don't output until we see if @item or @itemx follows if (!$example && /^\s*$/ && !$doman) { if ($justdidparagraph) { $new_paragraph = ""; next; } if ($in_taggedlist == 1) { $new_paragraph = ".IP"; } else { $new_paragraph = ".PP"; } next; } if ($new_paragraph) { printf("%s\n", $new_paragraph); $justdidparagraph = 1; $new_paragraph = ""; } # manprefix is either empty or holds comment string .\" if (! /^\s*$/) { printf("%s%s", $manprefix, $_); } if (!$doman) { $justdidparagraph=0; } } # Override a few default groff man settings. groff loads the man macro file # after the call of TH, so these settings must likewise follow that call # of TH. sub add_extensions { printf(".\\\"\n"); printf(".\\\"------------------------------------------------------------------------\n"); printf(".\\\" ensure that ASCII circumflex U+005E (^) and tilde U+007E (~)\n"); printf(".\\\" are not remapped, so that example text can be copied and pasted\n"); printf(".tr ^\\(ha\n"); printf(".tr ~\\(ti\n"); printf(".\\\" override translation in troffrc\n"); printf(".ie .if '\\*[.T]'utf8' .tr `\\(oq'\\(cq\n"); printf(".\\\" override mapping of ` to 60h with Tascii; assume\n"); printf(".\\\" we don't need a backquote for an example\n"); printf(".el .if n .tr `'\n"); # bullet: use '*' rather than 'o' for ASCII/Latin1; override groff's # translation to MIDDLE DOT for others printf(".if n .tr \\(bu\*\n"); printf(".\\\" override translation to MIDDLE DOT\n"); printf(".if '\\*(.T'utf8' .tr \\(bu\\(bu\n"); printf(".if '\\*(.T'cp1252' .tr \\(bu\\(bu\n"); printf(".if '\\*(.T'ansi' .tr \\(bu\\(bu\n"); printf(".\\\"------------------------------------------------------------------------\n"); printf(".\\\"\n"); } # convert all spaces within @w{...} to unbreakable sub no_break_word { my $line = shift; my $pattern = (shift) . "\{"; my $len = length($pattern); my $ndx = -1; my $bracelevel = 0; my $char; while (($ndx = index($line, $pattern, $ndx)) > -1) { # get rid of the @ command and opening brace substr($line, $ndx, $len, ''); $bracelevel = 1; while ($bracelevel > 0) { $char = substr($line, $ndx, 1); # end of line and braces not closed if ($char eq "") { last; } elsif ($char eq '{') { $bracelevel++; } elsif ($char eq '}') { $bracelevel--; } # make spaces nonbreaking if ($char eq ' ') { substr($line, $ndx++, 1, '\ '); $ndx++; # assume multiple spaces are not wanted while (substr($line, $ndx, 1) eq ' ') { substr($line, $ndx, 1, ''); } } $ndx++; } # get rid of the closing brace for the @ command. This should # always be true unless there's an internal brace mismatch ... if (substr($line, $ndx - 1, 1) eq '}' ) { substr($line, $ndx - 1, 1, ''); } else { die "Missing closing '}'"; } } return $line; } units-2.23/elements.units0000664000175000017500000044752514547660325015017 0ustar adrianadrian# This file is the elements database for use with GNU units, a units # conversion program by Adrian Mariano adrianm@gnu.org # # January 2024 Version 1.0 # # Copyright (C) 2024 # Free Software Foundation, Inc # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This data is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301 USA # From https://www.nist.gov/pml/atomic-weights-and-isotopic-compositions-relative-atomic-masses # For several elements, the standard atomic weight A_r is given as an # atomic-weight interval with the symbol [a,b] to denote the set of # atomic-weight values in normal materials; thus, [a <= A_r(E) <= b]. # The symbols a and b denote the lower and upper bounds of the # interval [a,b], respectively. The values in parentheses, following # the last significant digit to which they are attributed, are # uncertainties. # # Brackets [ ] enclosing a single value indicate the mass number of # the most stable isotope. For radioactive elements with atomic # numbers 95 or greater, the mass number of the most stable isotope is # not specified, as the list of studied isotopes is still # incomplete. # When composition mole fractions of isotopes are given, the atomic mass # of an element is given as the sum of the product(s) of mole # fraction(s) and the atomic masses of the relevant isotopes. When composition # mole fractions are not given, the atomic mass is given as # # * the mass of the most stable isotope, if available, or # * the standard atomic mass of the element, if available. # # If neither the most stable isotope nore a standard atomic mass is # available, no atomic mass for the element is given; the user must # select the isotope most suitable for their purposes. # # If the standard atomic mass is a range, the value given is the # midpoint of that range, which may differ from the value determined # from the sum of the products of composition mole fraction and isotope # atomic mass. # hydrogen: H (1) std atomic weight: [1.00784,1.00811] hydrogen_1 1.0078250322 # 0.99988500 hydrogen_2 2.0141017781 # 0.00011500 hydrogen_3 3.0160492779 hydrogen_4 4.0264300000 hydrogen_5 5.0353110000 hydrogen_6 6.0449600000 hydrogen_7 7.0527000000 hydrogen 0.99988500 hydrogen_1 \ + 0.00011500 hydrogen_2 # helium: He (2) std atomic weight: 4.002602(2) helium_3 3.0160293201 # 0.00000134 helium_4 4.0026032541 # 0.99999866 helium_5 5.0120570000 helium_6 6.0188858910 helium_7 7.0279907000 helium_8 8.0339343900 helium_9 9.0439460000 helium_10 10.0527900000 helium 0.00000134 helium_3 \ + 0.99999866 helium_4 # lithium: Li (3) std atomic weight: [6.938,6.997] lithium_3 3.0308000000 lithium_4 4.0271900000 lithium_5 5.0125380000 lithium_6 6.0151228874 # 0.07590000 lithium_7 7.0160034366 # 0.92410000 lithium_8 8.0224862460 lithium_9 9.0267901900 lithium_10 10.0354830000 lithium_11 11.0437235800 lithium_12 12.0525170000 lithium_13 13.0626300000 lithium 0.07590000 lithium_6 \ + 0.92410000 lithium_7 # beryllium: Be (4) std atomic weight: 9.0121831(5) beryllium_5 5.0399000000 beryllium_6 6.0197264000 beryllium_7 7.0169287170 beryllium_8 8.0053051020 beryllium_9 9.0121830650 # 1.00000000 beryllium_10 10.0135346950 beryllium_11 11.0216610800 beryllium_12 12.0269221000 beryllium_13 13.0361350000 beryllium_14 14.0428900000 beryllium_15 15.0534200000 beryllium_16 16.0616700000 beryllium beryllium_9 # boron: B (5) std atomic weight: [10.806,10.821] boron_6 6.0508000000 boron_7 7.0297120000 boron_8 8.0246073000 boron_9 9.0133296500 boron_10 10.0129369500 # 0.19900000 boron_11 11.0093053600 # 0.80100000 boron_12 12.0143527000 boron_13 13.0177802000 boron_14 14.0254040000 boron_15 15.0310880000 boron_16 16.0398420000 boron_17 17.0469900000 boron_18 18.0556600000 boron_19 19.0631000000 boron_20 20.0720700000 boron_21 21.0812900000 boron 0.19900000 boron_10 \ + 0.80100000 boron_11 # carbon: C (6) std atomic weight: [12.0096,12.0116] carbon_8 8.0376430000 carbon_9 9.0310372000 carbon_10 10.0168533100 carbon_11 11.0114336000 carbon_12 12.0000000000 # 0.98930000 carbon_13 13.0033548351 # 0.01070000 carbon_14 14.0032419884 carbon_15 15.0105992600 carbon_16 16.0147013000 carbon_17 17.0225770000 carbon_18 18.0267510000 carbon_19 19.0348000000 carbon_20 20.0403200000 carbon_21 21.0490000000 carbon_22 22.0575300000 carbon_23 23.0689000000 carbon 0.98930000 carbon_12 \ + 0.01070000 carbon_13 # nitrogen: N (7) std atomic weight: [14.00643,14.00728] nitrogen_10 10.0416500000 nitrogen_11 11.0260910000 nitrogen_12 12.0186132000 nitrogen_13 13.0057386100 nitrogen_14 14.0030740044 # 0.99636000 nitrogen_15 15.0001088989 # 0.00364000 nitrogen_16 16.0061019000 nitrogen_17 17.0084490000 nitrogen_18 18.0140780000 nitrogen_19 19.0170220000 nitrogen_20 20.0233660000 nitrogen_21 21.0271100000 nitrogen_22 22.0343900000 nitrogen_23 23.0411400000 nitrogen_24 24.0503900000 nitrogen_25 25.0601000000 nitrogen 0.99636000 nitrogen_14 \ + 0.00364000 nitrogen_15 # oxygen: O (8) std atomic weight: [15.99903,15.99977] oxygen_12 12.0342620000 oxygen_13 13.0248150000 oxygen_14 14.0085963600 oxygen_15 15.0030656200 oxygen_16 15.9949146196 # 0.99757000 oxygen_17 16.9991317565 # 0.00038000 oxygen_18 17.9991596129 # 0.00205000 oxygen_19 19.0035780000 oxygen_20 20.0040753500 oxygen_21 21.0086550000 oxygen_22 22.0099660000 oxygen_23 23.0156960000 oxygen_24 24.0198600000 oxygen_25 25.0293600000 oxygen_26 26.0372900000 oxygen_27 27.0477200000 oxygen_28 28.0559100000 oxygen 0.99757000 oxygen_16 \ + 0.00038000 oxygen_17 \ + 0.00205000 oxygen_18 # fluorine: F (9) std atomic weight: 18.998403163(6) fluorine_14 14.0343150000 fluorine_15 15.0180430000 fluorine_16 16.0114657000 fluorine_17 17.0020952400 fluorine_18 18.0009373300 fluorine_19 18.9984031627 # 1.00000000 fluorine_20 19.9999812520 fluorine_21 20.9999489000 fluorine_22 22.0029990000 fluorine_23 23.0035570000 fluorine_24 24.0081150000 fluorine_25 25.0121990000 fluorine_26 26.0200380000 fluorine_27 27.0264400000 fluorine_28 28.0353400000 fluorine_29 29.0425400000 fluorine_30 30.0516500000 fluorine_31 31.0597100000 fluorine fluorine_19 # neon: Ne (10) std atomic weight: 20.1797(6) neon_16 16.0257500000 neon_17 17.0177139600 neon_18 18.0057087000 neon_19 19.0018809100 neon_20 19.9924401762 # 0.90480000 neon_21 20.9938466850 # 0.00270000 neon_22 21.9913851140 # 0.09250000 neon_23 22.9944669100 neon_24 23.9936106500 neon_25 24.9977890000 neon_26 26.0005150000 neon_27 27.0075530000 neon_28 28.0121200000 neon_29 29.0197500000 neon_30 30.0247300000 neon_31 31.0331000000 neon_32 32.0397200000 neon_33 33.0493800000 neon_34 34.0567300000 neon 0.90480000 neon_20 \ + 0.00270000 neon_21 \ + 0.09250000 neon_22 # sodium: Na (11) std atomic weight: 22.98976928(2) sodium_18 18.0268800000 sodium_19 19.0138800000 sodium_20 20.0073544000 sodium_21 20.9976546900 sodium_22 21.9944374100 sodium_23 22.9897692820 # 1.00000000 sodium_24 23.9909629500 sodium_25 24.9899540000 sodium_26 25.9926346000 sodium_27 26.9940765000 sodium_28 27.9989390000 sodium_29 29.0028771000 sodium_30 30.0090979000 sodium_31 31.0131630000 sodium_32 32.0201900000 sodium_33 33.0257300000 sodium_34 34.0335900000 sodium_35 35.0406200000 sodium_36 36.0492900000 sodium_37 37.0570500000 sodium sodium_23 # magnesium: Mg (12) std atomic weight: [24.304,24.307] magnesium_19 19.0341690000 magnesium_20 20.0188500000 magnesium_21 21.0117160000 magnesium_22 21.9995706500 magnesium_23 22.9941242100 magnesium_24 23.9850416970 # 0.78990000 magnesium_25 24.9858369760 # 0.10000000 magnesium_26 25.9825929680 # 0.11010000 magnesium_27 26.9843406240 magnesium_28 27.9838767000 magnesium_29 28.9886170000 magnesium_30 29.9904629000 magnesium_31 30.9966480000 magnesium_32 31.9991102000 magnesium_33 33.0053271000 magnesium_34 34.0089350000 magnesium_35 35.0167900000 magnesium_36 36.0218800000 magnesium_37 37.0303700000 magnesium_38 38.0365800000 magnesium_39 39.0453800000 magnesium_40 40.0521800000 magnesium 0.78990000 magnesium_24 \ + 0.10000000 magnesium_25 \ + 0.11010000 magnesium_26 # aluminium: Al (13) std atomic weight: 26.9815385(7) # IUPAC spelling aluminium_21 21.0289700000 aluminium_22 22.0195400000 aluminium_23 23.0072443500 aluminium_24 23.9999489000 aluminium_25 24.9904281000 aluminium_26 25.9868919040 aluminium_27 26.9815385300 # 1.00000000 aluminium_28 27.9819102100 aluminium_29 28.9804565000 aluminium_30 29.9829600000 aluminium_31 30.9839450000 aluminium_32 31.9880850000 aluminium_33 32.9909090000 aluminium_34 33.9967050000 aluminium_35 34.9997640000 aluminium_36 36.0063900000 aluminium_37 37.0105300000 aluminium_38 38.0174000000 aluminium_39 39.0225400000 aluminium_40 40.0300300000 aluminium_41 41.0363800000 aluminium_42 42.0438400000 aluminium_43 43.0514700000 aluminium aluminium_27 # American spelling aluminum_21 21.0289700000 aluminum_22 22.0195400000 aluminum_23 23.0072443500 aluminum_24 23.9999489000 aluminum_25 24.9904281000 aluminum_26 25.9868919040 aluminum_27 26.9815385300 # 1.00000000 aluminum_28 27.9819102100 aluminum_29 28.9804565000 aluminum_30 29.9829600000 aluminum_31 30.9839450000 aluminum_32 31.9880850000 aluminum_33 32.9909090000 aluminum_34 33.9967050000 aluminum_35 34.9997640000 aluminum_36 36.0063900000 aluminum_37 37.0105300000 aluminum_38 38.0174000000 aluminum_39 39.0225400000 aluminum_40 40.0300300000 aluminum_41 41.0363800000 aluminum_42 42.0438400000 aluminum_43 43.0514700000 aluminum aluminum_27 # silicon: Si (14) std atomic weight: [28.084,28.086] silicon_22 22.0357900000 silicon_23 23.0254400000 silicon_24 24.0115350000 silicon_25 25.0041090000 silicon_26 25.9923338400 silicon_27 26.9867048100 silicon_28 27.9769265347 # 0.92223000 silicon_29 28.9764946649 # 0.04685000 silicon_30 29.9737701360 # 0.03092000 silicon_31 30.9753631940 silicon_32 31.9741515400 silicon_33 32.9779769600 silicon_34 33.9785760000 silicon_35 34.9845830000 silicon_36 35.9866950000 silicon_37 36.9929210000 silicon_38 37.9955230000 silicon_39 39.0024910000 silicon_40 40.0058300000 silicon_41 41.0130100000 silicon_42 42.0177800000 silicon_43 43.0248000000 silicon_44 44.0306100000 silicon_45 45.0399500000 silicon 0.92223000 silicon_28 \ + 0.04685000 silicon_29 \ + 0.03092000 silicon_30 # phosphorus: P (15) std atomic weight: 30.973761998(5) phosphorus_24 24.0357700000 phosphorus_25 25.0211900000 phosphorus_26 26.0117800000 phosphorus_27 26.9992240000 phosphorus_28 27.9923266000 phosphorus_29 28.9818007900 phosphorus_30 29.9783137500 phosphorus_31 30.9737619984 # 1.00000000 phosphorus_32 31.9739076430 phosphorus_33 32.9717257000 phosphorus_34 33.9736458900 phosphorus_35 34.9733141000 phosphorus_36 35.9782600000 phosphorus_37 36.9796070000 phosphorus_38 37.9842520000 phosphorus_39 38.9862270000 phosphorus_40 39.9913300000 phosphorus_41 40.9946540000 phosphorus_42 42.0010800000 phosphorus_43 43.0050200000 phosphorus_44 44.0112100000 phosphorus_45 45.0164500000 phosphorus_46 46.0244600000 phosphorus_47 47.0313900000 phosphorus phosphorus_31 # sulfur: S (16) std atomic weight: [32.059,32.076] sulfur_26 26.0290700000 sulfur_27 27.0182800000 sulfur_28 28.0043700000 sulfur_29 28.9966110000 sulfur_30 29.9849070300 sulfur_31 30.9795570100 sulfur_32 31.9720711744 # 0.94990000 sulfur_33 32.9714589098 # 0.00750000 sulfur_34 33.9678670040 # 0.04250000 sulfur_35 34.9690323100 sulfur_36 35.9670807100 # 0.00010000 sulfur_37 36.9711255100 sulfur_38 37.9711633000 sulfur_39 38.9751340000 sulfur_40 39.9754826000 sulfur_41 40.9795935000 sulfur_42 41.9810651000 sulfur_43 42.9869076000 sulfur_44 43.9901188000 sulfur_45 44.9957200000 sulfur_46 46.0000400000 sulfur_47 47.0079500000 sulfur_48 48.0137000000 sulfur_49 49.0227600000 sulfur 0.94990000 sulfur_32 \ + 0.00750000 sulfur_33 \ + 0.04250000 sulfur_34 \ + 0.00010000 sulfur_36 # chlorine: Cl (17) std atomic weight: [35.446,35.457] chlorine_28 28.0295400000 chlorine_29 29.0147800000 chlorine_30 30.0047700000 chlorine_31 30.9924140000 chlorine_32 31.9856846400 chlorine_33 32.9774519900 chlorine_34 33.9737624850 chlorine_35 34.9688526820 # 0.75760000 chlorine_36 35.9683068090 chlorine_37 36.9659026020 # 0.24240000 chlorine_38 37.9680104400 chlorine_39 38.9680082000 chlorine_40 39.9704150000 chlorine_41 40.9706850000 chlorine_42 41.9732500000 chlorine_43 42.9738900000 chlorine_44 43.9778700000 chlorine_45 44.9802900000 chlorine_46 45.9851700000 chlorine_47 46.9891600000 chlorine_48 47.9956400000 chlorine_49 49.0012300000 chlorine_50 50.0090500000 chlorine_51 51.0155400000 chlorine 0.75760000 chlorine_35 \ + 0.24240000 chlorine_37 # argon: Ar (18) std atomic weight: 39.948(1) argon_30 30.0230700000 argon_31 31.0121200000 argon_32 31.9976378000 argon_33 32.9899255500 argon_34 33.9802700900 argon_35 34.9752575900 argon_36 35.9675451050 # 0.00333600 argon_37 36.9667763300 argon_38 37.9627321100 # 0.00062900 argon_39 38.9643130000 argon_40 39.9623831237 # 0.99603500 argon_41 40.9645005700 argon_42 41.9630457000 argon_43 42.9656361000 argon_44 43.9649238000 argon_45 44.9680397300 argon_46 45.9680830000 argon_47 46.9729350000 argon_48 47.9759100000 argon_49 48.9819000000 argon_50 49.9861300000 argon_51 50.9937000000 argon_52 51.9989600000 argon_53 53.0072900000 argon 0.00333600 argon_36 \ + 0.00062900 argon_38 \ + 0.99603500 argon_40 # potassium: K (19) std atomic weight: 39.0983(1) potassium_32 32.0226500000 potassium_33 33.0075600000 potassium_34 33.9986900000 potassium_35 34.9880054100 potassium_36 35.9813020100 potassium_37 36.9733758900 potassium_38 37.9690811200 potassium_39 38.9637064864 # 0.93258100 potassium_40 39.9639981660 # 0.00011700 potassium_41 40.9618252579 # 0.06730200 potassium_42 41.9624023100 potassium_43 42.9607347000 potassium_44 43.9615869900 potassium_45 44.9606914900 potassium_46 45.9619815900 potassium_47 46.9616616000 potassium_48 47.9653411900 potassium_49 48.9682107500 potassium_50 49.9723800000 potassium_51 50.9758280000 potassium_52 51.9822400000 potassium_53 52.9874600000 potassium_54 53.9946300000 potassium_55 55.0007600000 potassium_56 56.0085100000 potassium 0.93258100 potassium_39 \ + 0.00011700 potassium_40 \ + 0.06730200 potassium_41 # calcium: Ca (20) std atomic weight: 40.078(4) calcium_34 34.0148700000 calcium_35 35.0051400000 calcium_36 35.9930740000 calcium_37 36.9858978500 calcium_38 37.9763192200 calcium_39 38.9707108100 calcium_40 39.9625908630 # 0.96941000 calcium_41 40.9622779200 calcium_42 41.9586178300 # 0.00647000 calcium_43 42.9587664400 # 0.00135000 calcium_44 43.9554815600 # 0.02086000 calcium_45 44.9561863500 calcium_46 45.9536890000 # 0.00004000 calcium_47 46.9545424000 calcium_48 47.9525227600 # 0.00187000 calcium_49 48.9556627400 calcium_50 49.9574992000 calcium_51 50.9609890000 calcium_52 51.9632170000 calcium_53 52.9694500000 calcium_54 53.9734000000 calcium_55 54.9803000000 calcium_56 55.9850800000 calcium_57 56.9926200000 calcium_58 57.9979400000 calcium 0.96941000 calcium_40 \ + 0.00647000 calcium_42 \ + 0.00135000 calcium_43 \ + 0.02086000 calcium_44 \ + 0.00004000 calcium_46 \ + 0.00187000 calcium_48 # scandium: Sc (21) std atomic weight: 44.955908(5) scandium_36 36.0164800000 scandium_37 37.0037400000 scandium_38 37.9951200000 scandium_39 38.9847850000 scandium_40 39.9779673000 scandium_41 40.9692511050 scandium_42 41.9655165300 scandium_43 42.9611505000 scandium_44 43.9594029000 scandium_45 44.9559082800 # 1.00000000 scandium_46 45.9551682600 scandium_47 46.9524037000 scandium_48 47.9522236000 scandium_49 48.9500146000 scandium_50 49.9521760000 scandium_51 50.9535920000 scandium_52 51.9568800000 scandium_53 52.9590900000 scandium_54 53.9639300000 scandium_55 54.9678200000 scandium_56 55.9734500000 scandium_57 56.9777700000 scandium_58 57.9840300000 scandium_59 58.9889400000 scandium_60 59.9956500000 scandium_61 61.0010000000 scandium scandium_45 # titanium: Ti (22) std atomic weight: 47.867(1) titanium_38 38.0114500000 titanium_39 39.0023600000 titanium_40 39.9905000000 titanium_41 40.9831480000 titanium_42 41.9730490300 titanium_43 42.9685225000 titanium_44 43.9596899500 titanium_45 44.9581219800 titanium_46 45.9526277200 # 0.08250000 titanium_47 46.9517587900 # 0.07440000 titanium_48 47.9479419800 # 0.73720000 titanium_49 48.9478656800 # 0.05410000 titanium_50 49.9447868900 # 0.05180000 titanium_51 50.9466106500 titanium_52 51.9468930000 titanium_53 52.9497300000 titanium_54 53.9510500000 titanium_55 54.9552700000 titanium_56 55.9579100000 titanium_57 56.9636400000 titanium_58 57.9666000000 titanium_59 58.9724700000 titanium_60 59.9760300000 titanium_61 60.9824500000 titanium_62 61.9865100000 titanium_63 62.9937500000 titanium 0.08250000 titanium_46 \ + 0.07440000 titanium_47 \ + 0.73720000 titanium_48 \ + 0.05410000 titanium_49 \ + 0.05180000 titanium_50 # vanadium: V (23) std atomic weight: 50.9415(1) vanadium_40 40.0127600000 vanadium_41 41.0002100000 vanadium_42 41.9918200000 vanadium_43 42.9807660000 vanadium_44 43.9741100000 vanadium_45 44.9657748000 vanadium_46 45.9601987800 vanadium_47 46.9549049100 vanadium_48 47.9522522000 vanadium_49 48.9485118000 vanadium_50 49.9471560100 # 0.00250000 vanadium_51 50.9439570400 # 0.99750000 vanadium_52 51.9447730100 vanadium_53 52.9443367000 vanadium_54 53.9464390000 vanadium_55 54.9472400000 vanadium_56 55.9504800000 vanadium_57 56.9525200000 vanadium_58 57.9567200000 vanadium_59 58.9593900000 vanadium_60 59.9643100000 vanadium_61 60.9672500000 vanadium_62 61.9726500000 vanadium_63 62.9763900000 vanadium_64 63.9826400000 vanadium_65 64.9875000000 vanadium_66 65.9939800000 vanadium 0.00250000 vanadium_50 \ + 0.99750000 vanadium_51 # chromium: Cr (24) std atomic weight: 51.9961(6) chromium_42 42.0067000000 chromium_43 42.9975300000 chromium_44 43.9853600000 chromium_45 44.9790500000 chromium_46 45.9683590000 chromium_47 46.9628974000 chromium_48 47.9540291000 chromium_49 48.9513333000 chromium_50 49.9460418300 # 0.04345000 chromium_51 50.9447650200 chromium_52 51.9405062300 # 0.83789000 chromium_53 52.9406481500 # 0.09501000 chromium_54 53.9388791600 # 0.02365000 chromium_55 54.9408384300 chromium_56 55.9406531000 chromium_57 56.9436130000 chromium_58 57.9443500000 chromium_59 58.9485900000 chromium_60 59.9500800000 chromium_61 60.9544200000 chromium_62 61.9561000000 chromium_63 62.9616500000 chromium_64 63.9640800000 chromium_65 64.9699600000 chromium_66 65.9736600000 chromium_67 66.9801600000 chromium_68 67.9840300000 chromium 0.04345000 chromium_50 \ + 0.83789000 chromium_52 \ + 0.09501000 chromium_53 \ + 0.02365000 chromium_54 # manganese: Mn (25) std atomic weight: 54.938044(3) manganese_44 44.0071500000 manganese_45 44.9944900000 manganese_46 45.9860900000 manganese_47 46.9757750000 manganese_48 47.9685200000 manganese_49 48.9595950000 manganese_50 49.9542377800 manganese_51 50.9482084700 manganese_52 51.9455639000 manganese_53 52.9412888900 manganese_54 53.9403576000 manganese_55 54.9380439100 # 1.00000000 manganese_56 55.9389036900 manganese_57 56.9382861000 manganese_58 57.9400666000 manganese_59 58.9403911000 manganese_60 59.9431366000 manganese_61 60.9444525000 manganese_62 61.9479500000 manganese_63 62.9496647000 manganese_64 63.9538494000 manganese_65 64.9560198000 manganese_66 65.9605470000 manganese_67 66.9642400000 manganese_68 67.9696200000 manganese_69 68.9736600000 manganese_70 69.9793700000 manganese_71 70.9836800000 manganese manganese_55 # iron: Fe (26) std atomic weight: 55.845(2) iron_45 45.0144200000 iron_46 46.0006300000 iron_47 46.9918500000 iron_48 47.9802300000 iron_49 48.9734290000 iron_50 49.9629750000 iron_51 50.9568410000 iron_52 51.9481131000 iron_53 52.9453064000 iron_54 53.9396089900 # 0.05845000 iron_55 54.9382919900 iron_56 55.9349363300 # 0.91754000 iron_57 56.9353928400 # 0.02119000 iron_58 57.9332744300 # 0.00282000 iron_59 58.9348743400 iron_60 59.9340711000 iron_61 60.9367462000 iron_62 61.9367918000 iron_63 62.9402727000 iron_64 63.9409878000 iron_65 64.9450115000 iron_66 65.9462500000 iron_67 66.9505400000 iron_68 67.9529500000 iron_69 68.9580700000 iron_70 69.9610200000 iron_71 70.9667200000 iron_72 71.9698300000 iron_73 72.9757200000 iron_74 73.9793500000 iron 0.05845000 iron_54 \ + 0.91754000 iron_56 \ + 0.02119000 iron_57 \ + 0.00282000 iron_58 # cobalt: Co (27) std atomic weight: 58.933194(4) cobalt_47 47.0105700000 cobalt_48 48.0009300000 cobalt_49 48.9889100000 cobalt_50 49.9809100000 cobalt_51 50.9706470000 cobalt_52 51.9635100000 cobalt_53 52.9542041000 cobalt_54 53.9484598700 cobalt_55 54.9419972000 cobalt_56 55.9398388000 cobalt_57 56.9362905700 cobalt_58 57.9357521000 cobalt_59 58.9331942900 # 1.00000000 cobalt_60 59.9338163000 cobalt_61 60.9324766200 cobalt_62 61.9340590000 cobalt_63 62.9336000000 cobalt_64 63.9358110000 cobalt_65 64.9364621000 cobalt_66 65.9394430000 cobalt_67 66.9406096000 cobalt_68 67.9442600000 cobalt_69 68.9461400000 cobalt_70 69.9496300000 cobalt_71 70.9523700000 cobalt_72 71.9572900000 cobalt_73 72.9603900000 cobalt_74 73.9651500000 cobalt_75 74.9687600000 cobalt_76 75.9741300000 cobalt cobalt_59 # nickel: Ni (28) std atomic weight: 58.6934(4) nickel_48 48.0176900000 nickel_49 49.0077000000 nickel_50 49.9947400000 nickel_51 50.9861100000 nickel_52 51.9748000000 nickel_53 52.9681900000 nickel_54 53.9578920000 nickel_55 54.9513306300 nickel_56 55.9421285500 nickel_57 56.9397921800 nickel_58 57.9353424100 # 0.68077000 nickel_59 58.9343462000 nickel_60 59.9307858800 # 0.26223000 nickel_61 60.9310555700 # 0.01139900 nickel_62 61.9283453700 # 0.03634600 nickel_63 62.9296696300 nickel_64 63.9279668200 # 0.00925500 nickel_65 64.9300851700 nickel_66 65.9291393000 nickel_67 66.9315694000 nickel_68 67.9318688000 nickel_69 68.9356103000 nickel_70 69.9364313000 nickel_71 70.9405190000 nickel_72 71.9417859000 nickel_73 72.9462067000 nickel_74 73.9479800000 nickel_75 74.9525000000 nickel_76 75.9553300000 nickel_77 76.9605500000 nickel_78 77.9633600000 nickel_79 78.9702500000 nickel 0.68077000 nickel_58 \ + 0.26223000 nickel_60 \ + 0.01139900 nickel_61 \ + 0.03634600 nickel_62 \ + 0.00925500 nickel_64 # copper: Cu (29) std atomic weight: 63.546(3) copper_52 51.9967100000 copper_53 52.9845900000 copper_54 53.9766600000 copper_55 54.9660400000 copper_56 55.9589500000 copper_57 56.9492125000 copper_58 57.9445330500 copper_59 58.9394974800 copper_60 59.9373645000 copper_61 60.9334576000 copper_62 61.9325954100 copper_63 62.9295977200 # 0.69150000 copper_64 63.9297643400 copper_65 64.9277897000 # 0.30850000 copper_66 65.9288690300 copper_67 66.9277303000 copper_68 67.9296109000 copper_69 68.9294293000 copper_70 69.9323921000 copper_71 70.9326768000 copper_72 71.9358203000 copper_73 72.9366744000 copper_74 73.9398749000 copper_75 74.9415226000 copper_76 75.9452750000 copper_77 76.9479200000 copper_78 77.9522300000 copper_79 78.9550200000 copper_80 79.9608900000 copper_81 80.9658700000 copper_82 81.9724400000 copper 0.69150000 copper_63 \ + 0.30850000 copper_65 # zinc: Zn (30) std atomic weight: 65.38(2) zinc_54 53.9920400000 zinc_55 54.9839800000 zinc_56 55.9725400000 zinc_57 56.9650600000 zinc_58 57.9545910000 zinc_59 58.9493126600 zinc_60 59.9418421000 zinc_61 60.9395070000 zinc_62 61.9343339700 zinc_63 62.9332115000 zinc_64 63.9291420100 # 0.49170000 zinc_65 64.9292407700 zinc_66 65.9260338100 # 0.27730000 zinc_67 66.9271277500 # 0.04040000 zinc_68 67.9248445500 # 0.18450000 zinc_69 68.9265507000 zinc_70 69.9253192000 # 0.00610000 zinc_71 70.9277196000 zinc_72 71.9268428000 zinc_73 72.9295826000 zinc_74 73.9294073000 zinc_75 74.9328402000 zinc_76 75.9331150000 zinc_77 76.9368872000 zinc_78 77.9382892000 zinc_79 78.9426381000 zinc_80 79.9445529000 zinc_81 80.9504026000 zinc_82 81.9542600000 zinc_83 82.9605600000 zinc_84 83.9652100000 zinc_85 84.9722600000 zinc 0.49170000 zinc_64 \ + 0.27730000 zinc_66 \ + 0.04040000 zinc_67 \ + 0.18450000 zinc_68 \ + 0.00610000 zinc_70 # gallium: Ga (31) std atomic weight: 69.723(1) gallium_56 55.9953600000 gallium_57 56.9832000000 gallium_58 57.9747800000 gallium_59 58.9635300000 gallium_60 59.9572900000 gallium_61 60.9493990000 gallium_62 61.9441902500 gallium_63 62.9392942000 gallium_64 63.9368404000 gallium_65 64.9327345900 gallium_66 65.9315894000 gallium_67 66.9282025000 gallium_68 67.9279805000 gallium_69 68.9255735000 # 0.60108000 gallium_70 69.9260219000 gallium_71 70.9247025800 # 0.39892000 gallium_72 71.9263674700 gallium_73 72.9251747000 gallium_74 73.9269457000 gallium_75 74.9265002000 gallium_76 75.9288276000 gallium_77 76.9291543000 gallium_78 77.9316088000 gallium_79 78.9328523000 gallium_80 79.9364208000 gallium_81 80.9381338000 gallium_82 81.9431765000 gallium_83 82.9471203000 gallium_84 83.9524600000 gallium_85 84.9569900000 gallium_86 85.9630100000 gallium_87 86.9682400000 gallium 0.60108000 gallium_69 \ + 0.39892000 gallium_71 # germanium: Ge (32) std atomic weight: 72.630(8) germanium_58 57.9917200000 germanium_59 58.9824900000 germanium_60 59.9703600000 germanium_61 60.9637900000 germanium_62 61.9550200000 germanium_63 62.9496280000 germanium_64 63.9416899000 germanium_65 64.9393681000 germanium_66 65.9338621000 germanium_67 66.9327339000 germanium_68 67.9280953000 germanium_69 68.9279645000 germanium_70 69.9242487500 # 0.20570000 germanium_71 70.9249523300 germanium_72 71.9220758260 # 0.27450000 germanium_73 72.9234589560 # 0.07750000 germanium_74 73.9211777610 # 0.36500000 germanium_75 74.9228583700 germanium_76 75.9214027260 # 0.07730000 germanium_77 76.9235498430 germanium_78 77.9228529000 germanium_79 78.9253600000 germanium_80 79.9253508000 germanium_81 80.9288329000 germanium_82 81.9297740000 germanium_83 82.9345391000 germanium_84 83.9375751000 germanium_85 84.9429697000 germanium_86 85.9465800000 germanium_87 86.9526800000 germanium_88 87.9569100000 germanium_89 88.9637900000 germanium_90 89.9686300000 germanium 0.20570000 germanium_70 \ + 0.27450000 germanium_72 \ + 0.07750000 germanium_73 \ + 0.36500000 germanium_74 \ + 0.07730000 germanium_76 # arsenic: As (33) std atomic weight: 74.921595(6) arsenic_60 59.9938800000 arsenic_61 60.9811200000 arsenic_62 61.9736100000 arsenic_63 62.9639000000 arsenic_64 63.9574300000 arsenic_65 64.9496110000 arsenic_66 65.9441488000 arsenic_67 66.9392511100 arsenic_68 67.9367741000 arsenic_69 68.9322460000 arsenic_70 69.9309260000 arsenic_71 70.9271138000 arsenic_72 71.9267523000 arsenic_73 72.9238291000 arsenic_74 73.9239286000 arsenic_75 74.9215945700 # 1.00000000 arsenic_76 75.9223920200 arsenic_77 76.9206476000 arsenic_78 77.9218280000 arsenic_79 78.9209484000 arsenic_80 79.9224746000 arsenic_81 80.9221323000 arsenic_82 81.9247412000 arsenic_83 82.9252069000 arsenic_84 83.9293033000 arsenic_85 84.9321637000 arsenic_86 85.9367015000 arsenic_87 86.9402917000 arsenic_88 87.9455500000 arsenic_89 88.9497600000 arsenic_90 89.9556300000 arsenic_91 90.9603900000 arsenic_92 91.9667400000 arsenic arsenic_75 # selenium: Se (34) std atomic weight: 78.971(8) selenium_64 63.9710900000 selenium_65 64.9644000000 selenium_66 65.9555900000 selenium_67 66.9499940000 selenium_68 67.9418252400 selenium_69 68.9394148000 selenium_70 69.9335155000 selenium_71 70.9322094000 selenium_72 71.9271405000 selenium_73 72.9267549000 selenium_74 73.9224759340 # 0.00890000 selenium_75 74.9225228700 selenium_76 75.9192137040 # 0.09370000 selenium_77 76.9199141540 # 0.07630000 selenium_78 77.9173092800 # 0.23770000 selenium_79 78.9184992900 selenium_80 79.9165218000 # 0.49610000 selenium_81 80.9179930000 selenium_82 81.9166995000 # 0.08730000 selenium_83 82.9191186000 selenium_84 83.9184668000 selenium_85 84.9222608000 selenium_86 85.9243117000 selenium_87 86.9286886000 selenium_88 87.9314175000 selenium_89 88.9366691000 selenium_90 89.9401000000 selenium_91 90.9459600000 selenium_92 91.9498400000 selenium_93 92.9562900000 selenium_94 93.9604900000 selenium_95 94.9673000000 selenium 0.00890000 selenium_74 \ + 0.09370000 selenium_76 \ + 0.07630000 selenium_77 \ + 0.23770000 selenium_78 \ + 0.49610000 selenium_80 \ + 0.08730000 selenium_82 # bromine: Br (35) std atomic weight: [79.901,79.907] bromine_67 66.9646500000 bromine_68 67.9587300000 bromine_69 68.9504970000 bromine_70 69.9447920000 bromine_71 70.9393422000 bromine_72 71.9365886000 bromine_73 72.9316715000 bromine_74 73.9299102000 bromine_75 74.9258105000 bromine_76 75.9245420000 bromine_77 76.9213792000 bromine_78 77.9211459000 bromine_79 78.9183376000 # 0.50690000 bromine_80 79.9185298000 bromine_81 80.9162897000 # 0.49310000 bromine_82 81.9168032000 bromine_83 82.9151756000 bromine_84 83.9164960000 bromine_85 84.9156458000 bromine_86 85.9188054000 bromine_87 86.9206740000 bromine_88 87.9240833000 bromine_89 88.9267046000 bromine_90 89.9312928000 bromine_91 90.9343986000 bromine_92 91.9396316000 bromine_93 92.9431300000 bromine_94 93.9489000000 bromine_95 94.9530100000 bromine_96 95.9590300000 bromine_97 96.9634400000 bromine_98 97.9694600000 bromine 0.50690000 bromine_79 \ + 0.49310000 bromine_81 # krypton: Kr (36) std atomic weight: 83.798(2) krypton_69 68.9651800000 krypton_70 69.9560400000 krypton_71 70.9502700000 krypton_72 71.9420924000 krypton_73 72.9392892000 krypton_74 73.9330840000 krypton_75 74.9309457000 krypton_76 75.9259103000 krypton_77 76.9246700000 krypton_78 77.9203649400 # 0.00355000 krypton_79 78.9200829000 krypton_80 79.9163780800 # 0.02286000 krypton_81 80.9165912000 krypton_82 81.9134827300 # 0.11593000 krypton_83 82.9141271600 # 0.11500000 krypton_84 83.9114977282 # 0.56987000 krypton_85 84.9125273000 krypton_86 85.9106106269 # 0.17279000 krypton_87 86.9133547600 krypton_88 87.9144479000 krypton_89 88.9178355000 krypton_90 89.9195279000 krypton_91 90.9238063000 krypton_92 91.9261731000 krypton_93 92.9311472000 krypton_94 93.9341400000 krypton_95 94.9397110000 krypton_96 95.9430170000 krypton_97 96.9490900000 krypton_98 97.9524300000 krypton_99 98.9583900000 krypton_100 99.9623700000 krypton_101 100.9687300000 krypton 0.00355000 krypton_78 \ + 0.02286000 krypton_80 \ + 0.11593000 krypton_82 \ + 0.11500000 krypton_83 \ + 0.56987000 krypton_84 \ + 0.17279000 krypton_86 # rubidium: Rb (37) std atomic weight: 85.4678(3) rubidium_71 70.9653200000 rubidium_72 71.9590800000 rubidium_73 72.9505300000 rubidium_74 73.9442659000 rubidium_75 74.9385732000 rubidium_76 75.9350730000 rubidium_77 76.9304016000 rubidium_78 77.9281419000 rubidium_79 78.9239899000 rubidium_80 79.9225164000 rubidium_81 80.9189939000 rubidium_82 81.9182090000 rubidium_83 82.9151142000 rubidium_84 83.9143752000 rubidium_85 84.9117897379 # 0.72170000 rubidium_86 85.9111674300 rubidium_87 86.9091805310 # 0.27830000 rubidium_88 87.9113155900 rubidium_89 88.9122783000 rubidium_90 89.9147985000 rubidium_91 90.9165372000 rubidium_92 91.9197284000 rubidium_93 92.9220393000 rubidium_94 93.9263948000 rubidium_95 94.9292600000 rubidium_96 95.9341334000 rubidium_97 96.9371771000 rubidium_98 97.9416869000 rubidium_99 98.9450300000 rubidium_100 99.9500300000 rubidium_101 100.9540400000 rubidium_102 101.9595200000 rubidium_103 102.9639200000 rubidium 0.72170000 rubidium_85 \ + 0.27830000 rubidium_87 # strontium: Sr (38) std atomic weight: 87.62(1) strontium_73 72.9657000000 strontium_74 73.9561700000 strontium_75 74.9499500000 strontium_76 75.9417630000 strontium_77 76.9379455000 strontium_78 77.9321800000 strontium_79 78.9297077000 strontium_80 79.9245175000 strontium_81 80.9232114000 strontium_82 81.9183999000 strontium_83 82.9175544000 strontium_84 83.9134191000 # 0.00560000 strontium_85 84.9129320000 strontium_86 85.9092606000 # 0.09860000 strontium_87 86.9088775000 # 0.07000000 strontium_88 87.9056125000 # 0.82580000 strontium_89 88.9074511000 strontium_90 89.9077300000 strontium_91 90.9101954000 strontium_92 91.9110382000 strontium_93 92.9140242000 strontium_94 93.9153556000 strontium_95 94.9193529000 strontium_96 95.9217066000 strontium_97 96.9263740000 strontium_98 97.9286888000 strontium_99 98.9328907000 strontium_100 99.9357700000 strontium_101 100.9403520000 strontium_102 101.9437910000 strontium_103 102.9490900000 strontium_104 103.9526500000 strontium_105 104.9585500000 strontium_106 105.9626500000 strontium_107 106.9689700000 strontium 0.00560000 strontium_84 \ + 0.09860000 strontium_86 \ + 0.07000000 strontium_87 \ + 0.82580000 strontium_88 # yttrium: Y (39) std atomic weight: 88.90584(2) yttrium_76 75.9585600000 yttrium_77 76.9497810000 yttrium_78 77.9436100000 yttrium_79 78.9373500000 yttrium_80 79.9343561000 yttrium_81 80.9294556000 yttrium_82 81.9269314000 yttrium_83 82.9224850000 yttrium_84 83.9206721000 yttrium_85 84.9164330000 yttrium_86 85.9148860000 yttrium_87 86.9108761000 yttrium_88 87.9095016000 yttrium_89 88.9058403000 # 1.00000000 yttrium_90 89.9071439000 yttrium_91 90.9072974000 yttrium_92 91.9089451000 yttrium_93 92.9095780000 yttrium_94 93.9115906000 yttrium_95 94.9128161000 yttrium_96 95.9158968000 yttrium_97 96.9182741000 yttrium_98 97.9223821000 yttrium_99 98.9241480000 yttrium_100 99.9277150000 yttrium_101 100.9301477000 yttrium_102 101.9343277000 yttrium_103 102.9372430000 yttrium_104 103.9419600000 yttrium_105 104.9454400000 yttrium_106 105.9505600000 yttrium_107 106.9545200000 yttrium_108 107.9599600000 yttrium_109 108.9643600000 yttrium yttrium_89 # zirconium: Zr (40) std atomic weight: 91.224(2) zirconium_78 77.9556600000 zirconium_79 78.9494800000 zirconium_80 79.9404000000 zirconium_81 80.9373100000 zirconium_82 81.9313500000 zirconium_83 82.9292421000 zirconium_84 83.9233269000 zirconium_85 84.9214444000 zirconium_86 85.9162972000 zirconium_87 86.9148180000 zirconium_88 87.9102213000 zirconium_89 88.9088814000 zirconium_90 89.9046977000 # 0.51450000 zirconium_91 90.9056396000 # 0.11220000 zirconium_92 91.9050347000 # 0.17150000 zirconium_93 92.9064699000 zirconium_94 93.9063108000 # 0.17380000 zirconium_95 94.9080385000 zirconium_96 95.9082714000 # 0.02800000 zirconium_97 96.9109512000 zirconium_98 97.9127289000 zirconium_99 98.9166670000 zirconium_100 99.9180006000 zirconium_101 100.9214480000 zirconium_102 101.9231409000 zirconium_103 102.9271910000 zirconium_104 103.9294360000 zirconium_105 104.9340080000 zirconium_106 105.9367600000 zirconium_107 106.9417400000 zirconium_108 107.9448700000 zirconium_109 108.9504100000 zirconium_110 109.9539600000 zirconium_111 110.9596800000 zirconium_112 111.9637000000 zirconium 0.51450000 zirconium_90 \ + 0.11220000 zirconium_91 \ + 0.17150000 zirconium_92 \ + 0.17380000 zirconium_94 \ + 0.02800000 zirconium_96 # niobium: Nb (41) std atomic weight: 92.90637(2) niobium_81 80.9496000000 niobium_82 81.9439600000 niobium_83 82.9372900000 niobium_84 83.9344900000 niobium_85 84.9288458000 niobium_86 85.9257828000 niobium_87 86.9206937000 niobium_88 87.9182220000 niobium_89 88.9134450000 niobium_90 89.9112584000 niobium_91 90.9069897000 niobium_92 91.9071881000 niobium_93 92.9063730000 # 1.00000000 niobium_94 93.9072788000 niobium_95 94.9068324000 niobium_96 95.9080973000 niobium_97 96.9080959000 niobium_98 97.9103265000 niobium_99 98.9116130000 niobium_100 99.9143276000 niobium_101 100.9153103000 niobium_102 101.9180772000 niobium_103 102.9194572000 niobium_104 103.9228925000 niobium_105 104.9249465000 niobium_106 105.9289317000 niobium_107 106.9315937000 niobium_108 107.9360748000 niobium_109 108.9392200000 niobium_110 109.9440300000 niobium_111 110.9475300000 niobium_112 111.9524700000 niobium_113 112.9565100000 niobium_114 113.9620100000 niobium_115 114.9663400000 niobium niobium_93 # molybdenum: Mo (42) std atomic weight: 95.95(1) molybdenum_83 82.9498800000 molybdenum_84 83.9414900000 molybdenum_85 84.9382610000 molybdenum_86 85.9311748000 molybdenum_87 86.9281962000 molybdenum_88 87.9219678000 molybdenum_89 88.9194682000 molybdenum_90 89.9139309000 molybdenum_91 90.9117453000 molybdenum_92 91.9068079600 # 0.14530000 molybdenum_93 92.9068095800 molybdenum_94 93.9050849000 # 0.09150000 molybdenum_95 94.9058387700 # 0.15840000 molybdenum_96 95.9046761200 # 0.16670000 molybdenum_97 96.9060181200 # 0.09600000 molybdenum_98 97.9054048200 # 0.24390000 molybdenum_99 98.9077085100 molybdenum_100 99.9074718000 # 0.09820000 molybdenum_101 100.9103414000 molybdenum_102 101.9102834000 molybdenum_103 102.9130790000 molybdenum_104 103.9137344000 molybdenum_105 104.9169690000 molybdenum_106 105.9182590000 molybdenum_107 106.9221060000 molybdenum_108 107.9240330000 molybdenum_109 108.9284240000 molybdenum_110 109.9307040000 molybdenum_111 110.9356540000 molybdenum_112 111.9383100000 molybdenum_113 112.9433500000 molybdenum_114 113.9465300000 molybdenum_115 114.9519600000 molybdenum_116 115.9554500000 molybdenum_117 116.9611700000 molybdenum 0.14530000 molybdenum_92 \ + 0.09150000 molybdenum_94 \ + 0.15840000 molybdenum_95 \ + 0.16670000 molybdenum_96 \ + 0.09600000 molybdenum_97 \ + 0.24390000 molybdenum_98 \ + 0.09820000 molybdenum_100 # technetium: Tc (43) std atomic weight: [98] technetium_85 84.9505800000 technetium_86 85.9449300000 technetium_87 86.9380672000 technetium_88 87.9337800000 technetium_89 88.9276487000 technetium_90 89.9240739000 technetium_91 90.9184254000 technetium_92 91.9152698000 technetium_93 92.9102460000 technetium_94 93.9096536000 technetium_95 94.9076536000 technetium_96 95.9078680000 technetium_97 96.9063667000 technetium_98 97.9072124000 technetium_99 98.9062508000 technetium_100 99.9076539000 technetium_101 100.9073090000 technetium_102 101.9092097000 technetium_103 102.9091760000 technetium_104 103.9114250000 technetium_105 104.9116550000 technetium_106 105.9143580000 technetium_107 106.9154606000 technetium_108 107.9184957000 technetium_109 108.9202560000 technetium_110 109.9237440000 technetium_111 110.9259010000 technetium_112 111.9299458000 technetium_113 112.9325690000 technetium_114 113.9369100000 technetium_115 114.9399800000 technetium_116 115.9447600000 technetium_117 116.9480600000 technetium_118 117.9529900000 technetium_119 118.9566600000 technetium_120 119.9618700000 technetium technetium_98 # most stable # ruthenium: Ru (44) std atomic weight: 101.07(2) ruthenium_87 86.9506900000 ruthenium_88 87.9416000000 ruthenium_89 88.9376200000 ruthenium_90 89.9303444000 ruthenium_91 90.9267419000 ruthenium_92 91.9202344000 ruthenium_93 92.9171044000 ruthenium_94 93.9113429000 ruthenium_95 94.9104060000 ruthenium_96 95.9075902500 # 0.05540000 ruthenium_97 96.9075471000 ruthenium_98 97.9052868000 # 0.01870000 ruthenium_99 98.9059341000 # 0.12760000 ruthenium_100 99.9042143000 # 0.12600000 ruthenium_101 100.9055769000 # 0.17060000 ruthenium_102 101.9043441000 # 0.31550000 ruthenium_103 102.9063186000 ruthenium_104 103.9054275000 # 0.18620000 ruthenium_105 104.9077476000 ruthenium_106 105.9073291000 ruthenium_107 106.9099720000 ruthenium_108 107.9101880000 ruthenium_109 108.9133260000 ruthenium_110 109.9140407000 ruthenium_111 110.9175700000 ruthenium_112 111.9188090000 ruthenium_113 112.9228440000 ruthenium_114 113.9246136000 ruthenium_115 114.9288200000 ruthenium_116 115.9312192000 ruthenium_117 116.9361000000 ruthenium_118 117.9385300000 ruthenium_119 118.9435700000 ruthenium_120 119.9463100000 ruthenium_121 120.9516400000 ruthenium_122 121.9544700000 ruthenium_123 122.9598900000 ruthenium_124 123.9630500000 ruthenium 0.05540000 ruthenium_96 \ + 0.01870000 ruthenium_98 \ + 0.12760000 ruthenium_99 \ + 0.12600000 ruthenium_100 \ + 0.17060000 ruthenium_101 \ + 0.31550000 ruthenium_102 \ + 0.18620000 ruthenium_104 # rhodium: Rh (45) std atomic weight: 102.90550(2) rhodium_89 88.9505800000 rhodium_90 89.9442200000 rhodium_91 90.9368800000 rhodium_92 91.9323677000 rhodium_93 92.9259128000 rhodium_94 93.9217305000 rhodium_95 94.9158979000 rhodium_96 95.9144530000 rhodium_97 96.9113290000 rhodium_98 97.9107080000 rhodium_99 98.9081282000 rhodium_100 99.9081170000 rhodium_101 100.9061606000 rhodium_102 101.9068374000 rhodium_103 102.9054980000 # 1.00000000 rhodium_104 103.9066492000 rhodium_105 104.9056885000 rhodium_106 105.9072868000 rhodium_107 106.9067480000 rhodium_108 107.9087140000 rhodium_109 108.9087488000 rhodium_110 109.9110790000 rhodium_111 110.9116423000 rhodium_112 111.9144030000 rhodium_113 112.9154393000 rhodium_114 113.9187180000 rhodium_115 114.9203116000 rhodium_116 115.9240590000 rhodium_117 116.9260354000 rhodium_118 117.9303400000 rhodium_119 118.9325570000 rhodium_120 119.9368600000 rhodium_121 120.9394200000 rhodium_122 121.9439900000 rhodium_123 122.9468500000 rhodium_124 123.9515100000 rhodium_125 124.9546900000 rhodium_126 125.9594600000 rhodium rhodium_103 # palladium: Pd (46) std atomic weight: 106.42(1) palladium_91 90.9503200000 palladium_92 91.9408800000 palladium_93 92.9365100000 palladium_94 93.9290376000 palladium_95 94.9248898000 palladium_96 95.9182151000 palladium_97 96.9164720000 palladium_98 97.9126983000 palladium_99 98.9117748000 palladium_100 99.9085050000 palladium_101 100.9082864000 palladium_102 101.9056022000 # 0.01020000 palladium_103 102.9060809000 palladium_104 103.9040305000 # 0.11140000 palladium_105 104.9050796000 # 0.22330000 palladium_106 105.9034804000 # 0.27330000 palladium_107 106.9051282000 palladium_108 107.9038916000 # 0.26460000 palladium_109 108.9059504000 palladium_110 109.9051722000 # 0.11720000 palladium_111 110.9076896800 palladium_112 111.9073297000 palladium_113 112.9102610000 palladium_114 113.9103686000 palladium_115 114.9136590000 palladium_116 115.9142970000 palladium_117 116.9179547000 palladium_118 117.9190667000 palladium_119 118.9233402000 palladium_120 119.9245511000 palladium_121 120.9289503000 palladium_122 121.9306320000 palladium_123 122.9351400000 palladium_124 123.9371400000 palladium_125 124.9417900000 palladium_126 125.9441600000 palladium_127 126.9490700000 palladium_128 127.9518300000 palladium 0.01020000 palladium_102 \ + 0.11140000 palladium_104 \ + 0.22330000 palladium_105 \ + 0.27330000 palladium_106 \ + 0.26460000 palladium_108 \ + 0.11720000 palladium_110 # silver: Ag (47) std atomic weight: 107.8682(2) silver_93 92.9503300000 silver_94 93.9437300000 silver_95 94.9360200000 silver_96 95.9307440000 silver_97 96.9239700000 silver_98 97.9215600000 silver_99 98.9176458000 silver_100 99.9161154000 silver_101 100.9126840000 silver_102 101.9117047000 silver_103 102.9089631000 silver_104 103.9086239000 silver_105 104.9065256000 silver_106 105.9066636000 silver_107 106.9050916000 # 0.51839000 silver_108 107.9059503000 silver_109 108.9047553000 # 0.48161000 silver_110 109.9061102000 silver_111 110.9052959000 silver_112 111.9070486000 silver_113 112.9065730000 silver_114 113.9088230000 silver_115 114.9087670000 silver_116 115.9113868000 silver_117 116.9117740000 silver_118 117.9145955000 silver_119 118.9155700000 silver_120 119.9187848000 silver_121 120.9201250000 silver_122 121.9236640000 silver_123 122.9253370000 silver_124 123.9289300000 silver_125 124.9310500000 silver_126 125.9347500000 silver_127 126.9371100000 silver_128 127.9410600000 silver_129 128.9439500000 silver_130 129.9507000000 silver 0.51839000 silver_107 \ + 0.48161000 silver_109 # cadmium: Cd (48) std atomic weight: 112.414(4) cadmium_95 94.9499400000 cadmium_96 95.9403400000 cadmium_97 96.9351000000 cadmium_98 97.9273890000 cadmium_99 98.9249258000 cadmium_100 99.9203488000 cadmium_101 100.9185862000 cadmium_102 101.9144820000 cadmium_103 102.9134165000 cadmium_104 103.9098564000 cadmium_105 104.9094639000 cadmium_106 105.9064599000 # 0.01250000 cadmium_107 106.9066121000 cadmium_108 107.9041834000 # 0.00890000 cadmium_109 108.9049867000 cadmium_110 109.9030066100 # 0.12490000 cadmium_111 110.9041828700 # 0.12800000 cadmium_112 111.9027628700 # 0.24130000 cadmium_113 112.9044081300 # 0.12220000 cadmium_114 113.9033650900 # 0.28730000 cadmium_115 114.9054375100 cadmium_116 115.9047631500 # 0.07490000 cadmium_117 116.9072260000 cadmium_118 117.9069220000 cadmium_119 118.9098470000 cadmium_120 119.9098681000 cadmium_121 120.9129637000 cadmium_122 121.9134591000 cadmium_123 122.9168925000 cadmium_124 123.9176574000 cadmium_125 124.9212576000 cadmium_126 125.9224291000 cadmium_127 126.9264720000 cadmium_128 127.9278129000 cadmium_129 128.9318200000 cadmium_130 129.9339400000 cadmium_131 130.9406000000 cadmium_132 131.9460400000 cadmium_133 132.9528500000 cadmium 0.01250000 cadmium_106 \ + 0.00890000 cadmium_108 \ + 0.12490000 cadmium_110 \ + 0.12800000 cadmium_111 \ + 0.24130000 cadmium_112 \ + 0.12220000 cadmium_113 \ + 0.28730000 cadmium_114 \ + 0.07490000 cadmium_116 # indium: In (49) std atomic weight: 114.818(1) indium_97 96.9493400000 indium_98 97.9421400000 indium_99 98.9341100000 indium_100 99.9309600000 indium_101 100.9263400000 indium_102 101.9241071000 indium_103 102.9198819000 indium_104 103.9182145000 indium_105 104.9145020000 indium_106 105.9134640000 indium_107 106.9102900000 indium_108 107.9096935000 indium_109 108.9071514000 indium_110 109.9071700000 indium_111 110.9051085000 indium_112 111.9055377000 indium_113 112.9040618400 # 0.04290000 indium_114 113.9049179100 indium_115 114.9038787760 # 0.95710000 indium_116 115.9052599900 indium_117 116.9045157000 indium_118 117.9063566000 indium_119 118.9058507000 indium_120 119.9079670000 indium_121 120.9078510000 indium_122 121.9102810000 indium_123 122.9104340000 indium_124 123.9131820000 indium_125 124.9136050000 indium_126 125.9165070000 indium_127 126.9174460000 indium_128 127.9204000000 indium_129 128.9218053000 indium_130 129.9249770000 indium_131 130.9269715000 indium_132 131.9330010000 indium_133 132.9383100000 indium_134 133.9445400000 indium_135 134.9500500000 indium 0.04290000 indium_113 \ + 0.95710000 indium_115 # tin: Sn (50) std atomic weight: 118.710(7) tin_99 98.9485300000 tin_100 99.9385000000 tin_101 100.9352600000 tin_102 101.9302900000 tin_103 102.9281050000 tin_104 103.9231052000 tin_105 104.9212684000 tin_106 105.9169574000 tin_107 106.9157137000 tin_108 107.9118943000 tin_109 108.9112921000 tin_110 109.9078450000 tin_111 110.9077401000 tin_112 111.9048238700 # 0.00970000 tin_113 112.9051757000 tin_114 113.9027827000 # 0.00660000 tin_115 114.9033446990 # 0.00340000 tin_116 115.9017428000 # 0.14540000 tin_117 116.9029539800 # 0.07680000 tin_118 117.9016065700 # 0.24220000 tin_119 118.9033111700 # 0.08590000 tin_120 119.9022016300 # 0.32580000 tin_121 120.9042426000 tin_122 121.9034438000 # 0.04630000 tin_123 122.9057252000 tin_124 123.9052766000 # 0.05790000 tin_125 124.9077864000 tin_126 125.9076590000 tin_127 126.9103900000 tin_128 127.9105070000 tin_129 128.9134650000 tin_130 129.9139738000 tin_131 130.9170450000 tin_132 131.9178267000 tin_133 132.9239134000 tin_134 133.9286821000 tin_135 134.9349086000 tin_136 135.9399900000 tin_137 136.9465500000 tin_138 137.9518400000 tin 0.00970000 tin_112 \ + 0.00660000 tin_114 \ + 0.00340000 tin_115 \ + 0.14540000 tin_116 \ + 0.07680000 tin_117 \ + 0.24220000 tin_118 \ + 0.08590000 tin_119 \ + 0.32580000 tin_120 \ + 0.04630000 tin_122 \ + 0.05790000 tin_124 # antimony: Sb (51) std atomic weight: 121.760(1) antimony_103 102.9396900000 antimony_104 103.9364800000 antimony_105 104.9312760000 antimony_106 105.9286380000 antimony_107 106.9241506000 antimony_108 107.9222267000 antimony_109 108.9181411000 antimony_110 109.9168543000 antimony_111 110.9132182000 antimony_112 111.9124000000 antimony_113 112.9093750000 antimony_114 113.9092900000 antimony_115 114.9065980000 antimony_116 115.9067931000 antimony_117 116.9048415000 antimony_118 117.9055321000 antimony_119 118.9039455000 antimony_120 119.9050794000 antimony_121 120.9038120000 # 0.57210000 antimony_122 121.9051699000 antimony_123 122.9042132000 # 0.42790000 antimony_124 123.9059350000 antimony_125 124.9052530000 antimony_126 125.9072530000 antimony_127 126.9069243000 antimony_128 127.9091460000 antimony_129 128.9091470000 antimony_130 129.9116620000 antimony_131 130.9119888000 antimony_132 131.9145077000 antimony_133 132.9152732000 antimony_134 133.9205357000 antimony_135 134.9251851000 antimony_136 135.9307459000 antimony_137 136.9355500000 antimony_138 137.9414500000 antimony_139 138.9465500000 antimony_140 139.9528300000 antimony 0.57210000 antimony_121 \ + 0.42790000 antimony_123 # tellurium: Te (52) std atomic weight: 127.60(3) tellurium_105 104.9433000000 tellurium_106 105.9375000000 tellurium_107 106.9350120000 tellurium_108 107.9293805000 tellurium_109 108.9273045000 tellurium_110 109.9224581000 tellurium_111 110.9210006000 tellurium_112 111.9167279000 tellurium_113 112.9158910000 tellurium_114 113.9120890000 tellurium_115 114.9119020000 tellurium_116 115.9084600000 tellurium_117 116.9086460000 tellurium_118 117.9058540000 tellurium_119 118.9064071000 tellurium_120 119.9040593000 # 0.00090000 tellurium_121 120.9049440000 tellurium_122 121.9030435000 # 0.02550000 tellurium_123 122.9042698000 # 0.00890000 tellurium_124 123.9028171000 # 0.04740000 tellurium_125 124.9044299000 # 0.07070000 tellurium_126 125.9033109000 # 0.18840000 tellurium_127 126.9052257000 tellurium_128 127.9044612800 # 0.31740000 tellurium_129 128.9065964600 tellurium_130 129.9062227480 # 0.34080000 tellurium_131 130.9085222130 tellurium_132 131.9085467000 tellurium_133 132.9109688000 tellurium_134 133.9113940000 tellurium_135 134.9165557000 tellurium_136 135.9201006000 tellurium_137 136.9255989000 tellurium_138 137.9294722000 tellurium_139 138.9353672000 tellurium_140 139.9394990000 tellurium_141 140.9458000000 tellurium_142 141.9502200000 tellurium_143 142.9567600000 tellurium 0.00090000 tellurium_120 \ + 0.02550000 tellurium_122 \ + 0.00890000 tellurium_123 \ + 0.04740000 tellurium_124 \ + 0.07070000 tellurium_125 \ + 0.18840000 tellurium_126 \ + 0.31740000 tellurium_128 \ + 0.34080000 tellurium_130 # iodine: I (53) std atomic weight: 126.90447(3) iodine_107 106.9467800000 iodine_108 107.9434800000 iodine_109 108.9380853000 iodine_110 109.9350890000 iodine_111 110.9302692000 iodine_112 111.9280050000 iodine_113 112.9236501000 iodine_114 113.9218500000 iodine_115 114.9180480000 iodine_116 115.9168100000 iodine_117 116.9136480000 iodine_118 117.9130740000 iodine_119 118.9100740000 iodine_120 119.9100870000 iodine_121 120.9074051000 iodine_122 121.9075888000 iodine_123 122.9055885000 iodine_124 123.9062090000 iodine_125 124.9046294000 iodine_126 125.9056233000 iodine_127 126.9044719000 # 1.00000000 iodine_128 127.9058086000 iodine_129 128.9049837000 iodine_130 129.9066702000 iodine_131 130.9061263000 iodine_132 131.9079935000 iodine_133 132.9077970000 iodine_134 133.9097588000 iodine_135 134.9100488000 iodine_136 135.9146040000 iodine_137 136.9180282000 iodine_138 137.9227264000 iodine_139 138.9265060000 iodine_140 139.9317300000 iodine_141 140.9356900000 iodine_142 141.9412000000 iodine_143 142.9456500000 iodine_144 143.9513900000 iodine_145 144.9560500000 iodine iodine_127 # xenon: Xe (54) std atomic weight: 131.293(6) xenon_109 108.9504300000 xenon_110 109.9442600000 xenon_111 110.9416070000 xenon_112 111.9355590000 xenon_113 112.9332217000 xenon_114 113.9279800000 xenon_115 114.9262940000 xenon_116 115.9215810000 xenon_117 116.9203590000 xenon_118 117.9161790000 xenon_119 118.9154110000 xenon_120 119.9117840000 xenon_121 120.9114530000 xenon_122 121.9083680000 xenon_123 122.9084820000 xenon_124 123.9058920000 # 0.00095200 xenon_125 124.9063944000 xenon_126 125.9042983000 # 0.00089000 xenon_127 126.9051829000 xenon_128 127.9035310000 # 0.01910200 xenon_129 128.9047808611 # 0.26400600 xenon_130 129.9035093490 # 0.04071000 xenon_131 130.9050840600 # 0.21232400 xenon_132 131.9041550856 # 0.26908600 xenon_133 132.9059108000 xenon_134 133.9053946600 # 0.10435700 xenon_135 134.9072278000 xenon_136 135.9072144840 # 0.08857300 xenon_137 136.9115577800 xenon_138 137.9141463000 xenon_139 138.9187922000 xenon_140 139.9216458000 xenon_141 140.9267872000 xenon_142 141.9299731000 xenon_143 142.9353696000 xenon_144 143.9389451000 xenon_145 144.9447200000 xenon_146 145.9485180000 xenon_147 146.9542600000 xenon_148 147.9581300000 xenon 0.00095200 xenon_124 \ + 0.00089000 xenon_126 \ + 0.01910200 xenon_128 \ + 0.26400600 xenon_129 \ + 0.04071000 xenon_130 \ + 0.21232400 xenon_131 \ + 0.26908600 xenon_132 \ + 0.10435700 xenon_134 \ + 0.08857300 xenon_136 # caesium: Cs (55) std atomic weight: 132.90545196(6) # IUPAC spelling caesium_112 111.9503090000 caesium_113 112.9444291000 caesium_114 113.9412960000 caesium_115 114.9359100000 caesium_116 115.9333700000 caesium_117 116.9286170000 caesium_118 117.9265600000 caesium_119 118.9223770000 caesium_120 119.9206770000 caesium_121 120.9172270000 caesium_122 121.9161080000 caesium_123 122.9129960000 caesium_124 123.9122578000 caesium_125 124.9097280000 caesium_126 125.9094460000 caesium_127 126.9074174000 caesium_128 127.9077487000 caesium_129 128.9060657000 caesium_130 129.9067093000 caesium_131 130.9054649000 caesium_132 131.9064339000 caesium_133 132.9054519610 # 1.00000000 caesium_134 133.9067185030 caesium_135 134.9059770000 caesium_136 135.9073114000 caesium_137 136.9070892300 caesium_138 137.9110171000 caesium_139 138.9133638000 caesium_140 139.9172831000 caesium_141 140.9200455000 caesium_142 141.9242960000 caesium_143 142.9273490000 caesium_144 143.9320760000 caesium_145 144.9355270000 caesium_146 145.9403440000 caesium_147 146.9441560000 caesium_148 147.9492300000 caesium_149 148.9530200000 caesium_150 149.9583300000 caesium_151 150.9625800000 caesium caesium_133 # American spelling cesium_112 111.9503090000 cesium_113 112.9444291000 cesium_114 113.9412960000 cesium_115 114.9359100000 cesium_116 115.9333700000 cesium_117 116.9286170000 cesium_118 117.9265600000 cesium_119 118.9223770000 cesium_120 119.9206770000 cesium_121 120.9172270000 cesium_122 121.9161080000 cesium_123 122.9129960000 cesium_124 123.9122578000 cesium_125 124.9097280000 cesium_126 125.9094460000 cesium_127 126.9074174000 cesium_128 127.9077487000 cesium_129 128.9060657000 cesium_130 129.9067093000 cesium_131 130.9054649000 cesium_132 131.9064339000 cesium_133 132.9054519610 # 1.00000000 cesium_134 133.9067185030 cesium_135 134.9059770000 cesium_136 135.9073114000 cesium_137 136.9070892300 cesium_138 137.9110171000 cesium_139 138.9133638000 cesium_140 139.9172831000 cesium_141 140.9200455000 cesium_142 141.9242960000 cesium_143 142.9273490000 cesium_144 143.9320760000 cesium_145 144.9355270000 cesium_146 145.9403440000 cesium_147 146.9441560000 cesium_148 147.9492300000 cesium_149 148.9530200000 cesium_150 149.9583300000 cesium_151 150.9625800000 cesium cesium_133 # barium: Ba (56) std atomic weight: 137.327(7) barium_114 113.9506600000 barium_115 114.9473700000 barium_116 115.9412800000 barium_117 116.9381400000 barium_118 117.9330600000 barium_119 118.9306600000 barium_120 119.9260500000 barium_121 120.9240500000 barium_122 121.9199040000 barium_123 122.9187810000 barium_124 123.9150940000 barium_125 124.9144720000 barium_126 125.9112500000 barium_127 126.9110910000 barium_128 127.9083420000 barium_129 128.9086810000 barium_130 129.9063207000 # 0.00106000 barium_131 130.9069410000 barium_132 131.9050611000 # 0.00101000 barium_133 132.9060074000 barium_134 133.9045081800 # 0.02417000 barium_135 134.9056883800 # 0.06592000 barium_136 135.9045757300 # 0.07854000 barium_137 136.9058271400 # 0.11232000 barium_138 137.9052470000 # 0.71698000 barium_139 138.9088411000 barium_140 139.9106057000 barium_141 140.9144033000 barium_142 141.9164324000 barium_143 142.9206253000 barium_144 143.9229549000 barium_145 144.9275184000 barium_146 145.9302840000 barium_147 146.9353040000 barium_148 147.9381710000 barium_149 148.9430800000 barium_150 149.9460500000 barium_151 150.9512700000 barium_152 151.9548100000 barium_153 152.9603600000 barium 0.00106000 barium_130 \ + 0.00101000 barium_132 \ + 0.02417000 barium_134 \ + 0.06592000 barium_135 \ + 0.07854000 barium_136 \ + 0.11232000 barium_137 \ + 0.71698000 barium_138 # lanthanum: La (57) std atomic weight: 138.90547(7) lanthanum_116 115.9563000000 lanthanum_117 116.9499900000 lanthanum_118 117.9467300000 lanthanum_119 118.9409900000 lanthanum_120 119.9380700000 lanthanum_121 120.9331500000 lanthanum_122 121.9307100000 lanthanum_123 122.9263000000 lanthanum_124 123.9245740000 lanthanum_125 124.9208160000 lanthanum_126 125.9195130000 lanthanum_127 126.9163750000 lanthanum_128 127.9155920000 lanthanum_129 128.9126940000 lanthanum_130 129.9123690000 lanthanum_131 130.9100700000 lanthanum_132 131.9101190000 lanthanum_133 132.9082180000 lanthanum_134 133.9085140000 lanthanum_135 134.9069840000 lanthanum_136 135.9076350000 lanthanum_137 136.9064504000 lanthanum_138 137.9071149000 # 0.00088810 lanthanum_139 138.9063563000 # 0.99911190 lanthanum_140 139.9094806000 lanthanum_141 140.9109660000 lanthanum_142 141.9140909000 lanthanum_143 142.9160795000 lanthanum_144 143.9196460000 lanthanum_145 144.9218080000 lanthanum_146 145.9258750000 lanthanum_147 146.9284180000 lanthanum_148 147.9326790000 lanthanum_149 148.9353500000 lanthanum_150 149.9394700000 lanthanum_151 150.9423200000 lanthanum_152 151.9468200000 lanthanum_153 152.9503600000 lanthanum_154 153.9551700000 lanthanum_155 154.9590100000 lanthanum 0.00088810 lanthanum_138 \ + 0.99911190 lanthanum_139 # cerium: Ce (58) std atomic weight: 140.116(1) cerium_119 118.9527100000 cerium_120 119.9465400000 cerium_121 120.9433500000 cerium_122 121.9378700000 cerium_123 122.9352800000 cerium_124 123.9303100000 cerium_125 124.9284400000 cerium_126 125.9239710000 cerium_127 126.9227270000 cerium_128 127.9189110000 cerium_129 128.9181020000 cerium_130 129.9147360000 cerium_131 130.9144290000 cerium_132 131.9114640000 cerium_133 132.9115200000 cerium_134 133.9089280000 cerium_135 134.9091610000 cerium_136 135.9071292100 # 0.00185000 cerium_137 136.9077623600 cerium_138 137.9059910000 # 0.00251000 cerium_139 138.9066551000 cerium_140 139.9054431000 # 0.88450000 cerium_141 140.9082807000 cerium_142 141.9092504000 # 0.11114000 cerium_143 142.9123921000 cerium_144 143.9136529000 cerium_145 144.9172650000 cerium_146 145.9188020000 cerium_147 146.9226899000 cerium_148 147.9244240000 cerium_149 148.9284270000 cerium_150 149.9303840000 cerium_151 150.9342720000 cerium_152 151.9366000000 cerium_153 152.9409300000 cerium_154 153.9438000000 cerium_155 154.9485500000 cerium_156 155.9518300000 cerium_157 156.9570500000 cerium 0.00185000 cerium_136 \ + 0.00251000 cerium_138 \ + 0.88450000 cerium_140 \ + 0.11114000 cerium_142 # praseodymium: Pr (59) std atomic weight: 140.90766(2) praseodymium_121 120.9553200000 praseodymium_122 121.9517500000 praseodymium_123 122.9459600000 praseodymium_124 123.9429400000 praseodymium_125 124.9377000000 praseodymium_126 125.9352400000 praseodymium_127 126.9307100000 praseodymium_128 127.9287910000 praseodymium_129 128.9250950000 praseodymium_130 129.9235900000 praseodymium_131 130.9202350000 praseodymium_132 131.9192550000 praseodymium_133 132.9163310000 praseodymium_134 133.9156970000 praseodymium_135 134.9131120000 praseodymium_136 135.9126770000 praseodymium_137 136.9106792000 praseodymium_138 137.9107540000 praseodymium_139 138.9089408000 praseodymium_140 139.9090803000 praseodymium_141 140.9076576000 # 1.00000000 praseodymium_142 141.9100496000 praseodymium_143 142.9108228000 praseodymium_144 143.9133109000 praseodymium_145 144.9145182000 praseodymium_146 145.9176800000 praseodymium_147 146.9190080000 praseodymium_148 147.9221300000 praseodymium_149 148.9237360000 praseodymium_150 149.9266765000 praseodymium_151 150.9283090000 praseodymium_152 151.9315530000 praseodymium_153 152.9339040000 praseodymium_154 153.9375300000 praseodymium_155 154.9405090000 praseodymium_156 155.9446400000 praseodymium_157 156.9478900000 praseodymium_158 157.9524100000 praseodymium_159 158.9558900000 praseodymium praseodymium_141 # neodymium: Nd (60) std atomic weight: 144.242(3) neodymium_124 123.9522000000 neodymium_125 124.9489000000 neodymium_126 125.9431100000 neodymium_127 126.9403800000 neodymium_128 127.9352500000 neodymium_129 128.9331000000 neodymium_130 129.9285060000 neodymium_131 130.9272480000 neodymium_132 131.9233210000 neodymium_133 132.9223480000 neodymium_134 133.9187900000 neodymium_135 134.9181810000 neodymium_136 135.9149760000 neodymium_137 136.9145620000 neodymium_138 137.9119500000 neodymium_139 138.9119540000 neodymium_140 139.9095500000 neodymium_141 140.9096147000 neodymium_142 141.9077290000 # 0.27152000 neodymium_143 142.9098200000 # 0.12174000 neodymium_144 143.9100930000 # 0.23798000 neodymium_145 144.9125793000 # 0.08293000 neodymium_146 145.9131226000 # 0.17189000 neodymium_147 146.9161061000 neodymium_148 147.9168993000 # 0.05756000 neodymium_149 148.9201548000 neodymium_150 149.9209022000 # 0.05638000 neodymium_151 150.9238403000 neodymium_152 151.9246920000 neodymium_153 152.9277180000 neodymium_154 153.9294800000 neodymium_155 154.9331357000 neodymium_156 155.9350800000 neodymium_157 156.9393860000 neodymium_158 157.9419700000 neodymium_159 158.9465300000 neodymium_160 159.9494000000 neodymium_161 160.9542800000 neodymium 0.27152000 neodymium_142 \ + 0.12174000 neodymium_143 \ + 0.23798000 neodymium_144 \ + 0.08293000 neodymium_145 \ + 0.17189000 neodymium_146 \ + 0.05756000 neodymium_148 \ + 0.05638000 neodymium_150 # promethium: Pm (61) std atomic weight: [145] promethium_126 125.9579200000 promethium_127 126.9519200000 promethium_128 127.9487000000 promethium_129 128.9432300000 promethium_130 129.9405300000 promethium_131 130.9356700000 promethium_132 131.9338400000 promethium_133 132.9297820000 promethium_134 133.9283530000 promethium_135 134.9248230000 promethium_136 135.9235850000 promethium_137 136.9204800000 promethium_138 137.9195480000 promethium_139 138.9168000000 promethium_140 139.9160400000 promethium_141 140.9135550000 promethium_142 141.9128900000 promethium_143 142.9109383000 promethium_144 143.9125964000 promethium_145 144.9127559000 promethium_146 145.9147024000 promethium_147 146.9151450000 promethium_148 147.9174819000 promethium_149 148.9183423000 promethium_150 149.9209910000 promethium_151 150.9212175000 promethium_152 151.9235060000 promethium_153 152.9241567000 promethium_154 153.9264720000 promethium_155 154.9281370000 promethium_156 155.9311175000 promethium_157 156.9331214000 promethium_158 157.9365650000 promethium_159 158.9392870000 promethium_160 159.9431000000 promethium_161 160.9460700000 promethium_162 161.9502200000 promethium_163 162.9535700000 promethium promethium_145 # most stable # samarium: Sm (62) std atomic weight: 150.36(2) samarium_128 127.9584200000 samarium_129 128.9547600000 samarium_130 129.9490000000 samarium_131 130.9461800000 samarium_132 131.9408700000 samarium_133 132.9385600000 samarium_134 133.9341100000 samarium_135 134.9325200000 samarium_136 135.9282760000 samarium_137 136.9269710000 samarium_138 137.9232440000 samarium_139 138.9222970000 samarium_140 139.9189950000 samarium_141 140.9184816000 samarium_142 141.9152044000 samarium_143 142.9146353000 samarium_144 143.9120065000 # 0.03070000 samarium_145 144.9134173000 samarium_146 145.9130470000 samarium_147 146.9149044000 # 0.14990000 samarium_148 147.9148292000 # 0.11240000 samarium_149 148.9171921000 # 0.13820000 samarium_150 149.9172829000 # 0.07380000 samarium_151 150.9199398000 samarium_152 151.9197397000 # 0.26750000 samarium_153 152.9221047000 samarium_154 153.9222169000 # 0.22750000 samarium_155 154.9246477000 samarium_156 155.9255360000 samarium_157 156.9284187000 samarium_158 157.9299510000 samarium_159 158.9332172000 samarium_160 159.9353353000 samarium_161 160.9391602000 samarium_162 161.9414600000 samarium_163 162.9455500000 samarium_164 163.9483600000 samarium_165 164.9529700000 samarium 0.03070000 samarium_144 \ + 0.14990000 samarium_147 \ + 0.11240000 samarium_148 \ + 0.13820000 samarium_149 \ + 0.07380000 samarium_150 \ + 0.26750000 samarium_152 \ + 0.22750000 samarium_154 # europium: Eu (63) std atomic weight: 151.964(1) europium_130 129.9636900000 europium_131 130.9578400000 europium_132 131.9546700000 europium_133 132.9492900000 europium_134 133.9464000000 europium_135 134.9418700000 europium_136 135.9396200000 europium_137 136.9354600000 europium_138 137.9337090000 europium_139 138.9297920000 europium_140 139.9280880000 europium_141 140.9249320000 europium_142 141.9234420000 europium_143 142.9202990000 europium_144 143.9188200000 europium_145 144.9162726000 europium_146 145.9172110000 europium_147 146.9167527000 europium_148 147.9180890000 europium_149 148.9179378000 europium_150 149.9197077000 europium_151 150.9198578000 # 0.47810000 europium_152 151.9217522000 europium_153 152.9212380000 # 0.52190000 europium_154 153.9229870000 europium_155 154.9229011000 europium_156 155.9247605000 europium_157 156.9254334000 europium_158 157.9277990000 europium_159 158.9291001000 europium_160 159.9318510000 europium_161 160.9336640000 europium_162 161.9369890000 europium_163 162.9391960000 europium_164 163.9427400000 europium_165 164.9455900000 europium_166 165.9496200000 europium_167 166.9528900000 europium 0.47810000 europium_151 \ + 0.52190000 europium_153 # gadolinium: Gd (64) std atomic weight: 157.25(3) gadolinium_133 132.9613300000 gadolinium_134 133.9556600000 gadolinium_135 134.9524500000 gadolinium_136 135.9473000000 gadolinium_137 136.9450200000 gadolinium_138 137.9402500000 gadolinium_139 138.9381300000 gadolinium_140 139.9336740000 gadolinium_141 140.9321260000 gadolinium_142 141.9281160000 gadolinium_143 142.9267500000 gadolinium_144 143.9229630000 gadolinium_145 144.9217130000 gadolinium_146 145.9183188000 gadolinium_147 146.9191014000 gadolinium_148 147.9181215000 gadolinium_149 148.9193481000 gadolinium_150 149.9186644000 gadolinium_151 150.9203560000 gadolinium_152 151.9197995000 # 0.00200000 gadolinium_153 152.9217580000 gadolinium_154 153.9208741000 # 0.02180000 gadolinium_155 154.9226305000 # 0.14800000 gadolinium_156 155.9221312000 # 0.20470000 gadolinium_157 156.9239686000 # 0.15650000 gadolinium_158 157.9241123000 # 0.24840000 gadolinium_159 158.9263970000 gadolinium_160 159.9270624000 # 0.21860000 gadolinium_161 160.9296775000 gadolinium_162 161.9309930000 gadolinium_163 162.9341769000 gadolinium_164 163.9358300000 gadolinium_165 164.9393600000 gadolinium_166 165.9414600000 gadolinium_167 166.9454500000 gadolinium_168 167.9480800000 gadolinium_169 168.9526000000 gadolinium 0.00200000 gadolinium_152 \ + 0.02180000 gadolinium_154 \ + 0.14800000 gadolinium_155 \ + 0.20470000 gadolinium_156 \ + 0.15650000 gadolinium_157 \ + 0.24840000 gadolinium_158 \ + 0.21860000 gadolinium_160 # terbium: Tb (65) std atomic weight: 158.92535(2) terbium_135 134.9647600000 terbium_136 135.9612900000 terbium_137 136.9560200000 terbium_138 137.9531200000 terbium_139 138.9483300000 terbium_140 139.9458100000 terbium_141 140.9414500000 terbium_142 141.9392800000 terbium_143 142.9351370000 terbium_144 143.9330450000 terbium_145 144.9288200000 terbium_146 145.9272530000 terbium_147 146.9240548000 terbium_148 147.9242820000 terbium_149 148.9232535000 terbium_150 149.9236649000 terbium_151 150.9231096000 terbium_152 151.9240830000 terbium_153 152.9234424000 terbium_154 153.9246850000 terbium_155 154.9235110000 terbium_156 155.9247552000 terbium_157 156.9240330000 terbium_158 157.9254209000 terbium_159 158.9253547000 # 1.00000000 terbium_160 159.9271756000 terbium_161 160.9275778000 terbium_162 161.9294950000 terbium_163 162.9306547000 terbium_164 163.9333600000 terbium_165 164.9349800000 terbium_166 165.9378600000 terbium_167 166.9399600000 terbium_168 167.9434000000 terbium_169 168.9459700000 terbium_170 169.9498400000 terbium_171 170.9527300000 terbium terbium_159 # dysprosium: Dy (66) std atomic weight: 162.500(1) dysprosium_138 137.9625000000 dysprosium_139 138.9595900000 dysprosium_140 139.9540200000 dysprosium_141 140.9512800000 dysprosium_142 141.9461900000 dysprosium_143 142.9439940000 dysprosium_144 143.9392695000 dysprosium_145 144.9374740000 dysprosium_146 145.9328445000 dysprosium_147 146.9310827000 dysprosium_148 147.9271570000 dysprosium_149 148.9273220000 dysprosium_150 149.9255933000 dysprosium_151 150.9261916000 dysprosium_152 151.9247253000 dysprosium_153 152.9257724000 dysprosium_154 153.9244293000 dysprosium_155 154.9257590000 dysprosium_156 155.9242847000 # 0.00056000 dysprosium_157 156.9254707000 dysprosium_158 157.9244159000 # 0.00095000 dysprosium_159 158.9257470000 dysprosium_160 159.9252046000 # 0.02329000 dysprosium_161 160.9269405000 # 0.18889000 dysprosium_162 161.9268056000 # 0.25475000 dysprosium_163 162.9287383000 # 0.24896000 dysprosium_164 163.9291819000 # 0.28260000 dysprosium_165 164.9317105000 dysprosium_166 165.9328139000 dysprosium_167 166.9356610000 dysprosium_168 167.9371300000 dysprosium_169 168.9403100000 dysprosium_170 169.9423900000 dysprosium_171 170.9461200000 dysprosium_172 171.9484600000 dysprosium_173 172.9528300000 dysprosium 0.00056000 dysprosium_156 \ + 0.00095000 dysprosium_158 \ + 0.02329000 dysprosium_160 \ + 0.18889000 dysprosium_161 \ + 0.25475000 dysprosium_162 \ + 0.24896000 dysprosium_163 \ + 0.28260000 dysprosium_164 # holmium: Ho (67) std atomic weight: 164.93033(2) holmium_140 139.9685900000 holmium_141 140.9631100000 holmium_142 141.9600100000 holmium_143 142.9548600000 holmium_144 143.9521097000 holmium_145 144.9472674000 holmium_146 145.9449935000 holmium_147 146.9401423000 holmium_148 147.9377440000 holmium_149 148.9338030000 holmium_150 149.9334980000 holmium_151 150.9316983000 holmium_152 151.9317240000 holmium_153 152.9302064000 holmium_154 153.9306068000 holmium_155 154.9291040000 holmium_156 155.9297060000 holmium_157 156.9282540000 holmium_158 157.9289460000 holmium_159 158.9277197000 holmium_160 159.9287370000 holmium_161 160.9278615000 holmium_162 161.9291023000 holmium_163 162.9287410000 holmium_164 163.9302403000 holmium_165 164.9303288000 # 1.00000000 holmium_166 165.9322909000 holmium_167 166.9331385000 holmium_168 167.9355220000 holmium_169 168.9368780000 holmium_170 169.9396250000 holmium_171 170.9414700000 holmium_172 171.9447300000 holmium_173 172.9470200000 holmium_174 173.9509500000 holmium_175 174.9536200000 holmium holmium_165 # erbium: Er (68) std atomic weight: 167.259(3) erbium_142 141.9701000000 erbium_143 142.9666200000 erbium_144 143.9607000000 erbium_145 144.9580500000 erbium_146 145.9524184000 erbium_147 146.9499640000 erbium_148 147.9447350000 erbium_149 148.9423060000 erbium_150 149.9379160000 erbium_151 150.9374490000 erbium_152 151.9350570000 erbium_153 152.9350800000 erbium_154 153.9327908000 erbium_155 154.9332159000 erbium_156 155.9310670000 erbium_157 156.9319490000 erbium_158 157.9298930000 erbium_159 158.9306918000 erbium_160 159.9290770000 erbium_161 160.9300046000 erbium_162 161.9287884000 # 0.00139000 erbium_163 162.9300408000 erbium_164 163.9292088000 # 0.01601000 erbium_165 164.9307345000 erbium_166 165.9302995000 # 0.33503000 erbium_167 166.9320546000 # 0.22869000 erbium_168 167.9323767000 # 0.26978000 erbium_169 168.9345968000 erbium_170 169.9354702000 # 0.14910000 erbium_171 170.9380357000 erbium_172 171.9393619000 erbium_173 172.9424000000 erbium_174 173.9442300000 erbium_175 174.9477700000 erbium_176 175.9499400000 erbium_177 176.9539900000 erbium 0.00139000 erbium_162 \ + 0.01601000 erbium_164 \ + 0.33503000 erbium_166 \ + 0.22869000 erbium_167 \ + 0.26978000 erbium_168 \ + 0.14910000 erbium_170 # thulium: Tm (69) std atomic weight: 168.93422(2) thulium_144 143.9762800000 thulium_145 144.9703900000 thulium_146 145.9668400000 thulium_147 146.9613799000 thulium_148 147.9583840000 thulium_149 148.9528900000 thulium_150 149.9500900000 thulium_151 150.9454880000 thulium_152 151.9444220000 thulium_153 152.9420400000 thulium_154 153.9415700000 thulium_155 154.9392100000 thulium_156 155.9389920000 thulium_157 156.9369440000 thulium_158 157.9369800000 thulium_159 158.9349750000 thulium_160 159.9352630000 thulium_161 160.9335490000 thulium_162 161.9340020000 thulium_163 162.9326592000 thulium_164 163.9335440000 thulium_165 164.9324431000 thulium_166 165.9335610000 thulium_167 166.9328562000 thulium_168 167.9341774000 thulium_169 168.9342179000 # 1.00000000 thulium_170 169.9358060000 thulium_171 170.9364339000 thulium_172 171.9384055000 thulium_173 172.9396084000 thulium_174 173.9421730000 thulium_175 174.9438410000 thulium_176 175.9470000000 thulium_177 176.9490400000 thulium_178 177.9526400000 thulium_179 178.9553400000 thulium thulium_169 # ytterbium: Yb (70) std atomic weight: 173.054(5) ytterbium_148 147.9675800000 ytterbium_149 148.9643600000 ytterbium_150 149.9585200000 ytterbium_151 150.9554000000 ytterbium_152 151.9502700000 ytterbium_153 152.9493200000 ytterbium_154 153.9463960000 ytterbium_155 154.9457830000 ytterbium_156 155.9428250000 ytterbium_157 156.9426450000 ytterbium_158 157.9398705000 ytterbium_159 158.9400550000 ytterbium_160 159.9375570000 ytterbium_161 160.9379070000 ytterbium_162 161.9357740000 ytterbium_163 162.9363400000 ytterbium_164 163.9344950000 ytterbium_165 164.9352700000 ytterbium_166 165.9338747000 ytterbium_167 166.9349530000 ytterbium_168 167.9338896000 # 0.00123000 ytterbium_169 168.9351825000 ytterbium_170 169.9347664000 # 0.02982000 ytterbium_171 170.9363302000 # 0.14090000 ytterbium_172 171.9363859000 # 0.21680000 ytterbium_173 172.9382151000 # 0.16103000 ytterbium_174 173.9388664000 # 0.32026000 ytterbium_175 174.9412808000 ytterbium_176 175.9425764000 # 0.12996000 ytterbium_177 176.9452656000 ytterbium_178 177.9466510000 ytterbium_179 178.9500400000 ytterbium_180 179.9521200000 ytterbium_181 180.9558900000 ytterbium 0.00123000 ytterbium_168 \ + 0.02982000 ytterbium_170 \ + 0.14090000 ytterbium_171 \ + 0.21680000 ytterbium_172 \ + 0.16103000 ytterbium_173 \ + 0.32026000 ytterbium_174 \ + 0.12996000 ytterbium_176 # lutetium: Lu (71) std atomic weight: 174.9668(1) lutetium_150 149.9735500000 lutetium_151 150.9676800000 lutetium_152 151.9641200000 lutetium_153 152.9587500000 lutetium_154 153.9573600000 lutetium_155 154.9543210000 lutetium_156 155.9530330000 lutetium_157 156.9501270000 lutetium_158 157.9493160000 lutetium_159 158.9466360000 lutetium_160 159.9460330000 lutetium_161 160.9435720000 lutetium_162 161.9432830000 lutetium_163 162.9411790000 lutetium_164 163.9413390000 lutetium_165 164.9394070000 lutetium_166 165.9398590000 lutetium_167 166.9382700000 lutetium_168 167.9387360000 lutetium_169 168.9376441000 lutetium_170 169.9384780000 lutetium_171 170.9379170000 lutetium_172 171.9390891000 lutetium_173 172.9389340000 lutetium_174 173.9403409000 lutetium_175 174.9407752000 # 0.97401000 lutetium_176 175.9426897000 # 0.02599000 lutetium_177 176.9437615000 lutetium_178 177.9459580000 lutetium_179 178.9473309000 lutetium_180 179.9498880000 lutetium_181 180.9519100000 lutetium_182 181.9550400000 lutetium_183 182.9573630000 lutetium_184 183.9609100000 lutetium_185 184.9636200000 lutetium 0.97401000 lutetium_175 \ + 0.02599000 lutetium_176 # hafnium: Hf (72) std atomic weight: 178.49(2) hafnium_153 152.9706900000 hafnium_154 153.9648600000 hafnium_155 154.9631100000 hafnium_156 155.9593500000 hafnium_157 156.9582400000 hafnium_158 157.9548010000 hafnium_159 158.9539960000 hafnium_160 159.9506910000 hafnium_161 160.9502780000 hafnium_162 161.9472148000 hafnium_163 162.9471130000 hafnium_164 163.9443710000 hafnium_165 164.9445670000 hafnium_166 165.9421800000 hafnium_167 166.9426000000 hafnium_168 167.9405680000 hafnium_169 168.9412590000 hafnium_170 169.9396090000 hafnium_171 170.9404920000 hafnium_172 171.9394500000 hafnium_173 172.9405130000 hafnium_174 173.9400461000 # 0.00160000 hafnium_175 174.9415092000 hafnium_176 175.9414076000 # 0.05260000 hafnium_177 176.9432277000 # 0.18600000 hafnium_178 177.9437058000 # 0.27280000 hafnium_179 178.9458232000 # 0.13620000 hafnium_180 179.9465570000 # 0.35080000 hafnium_181 180.9491083000 hafnium_182 181.9505612000 hafnium_183 182.9535300000 hafnium_184 183.9554460000 hafnium_185 184.9588620000 hafnium_186 185.9608970000 hafnium_187 186.9647700000 hafnium_188 187.9668500000 hafnium_189 188.9708400000 hafnium 0.00160000 hafnium_174 \ + 0.05260000 hafnium_176 \ + 0.18600000 hafnium_177 \ + 0.27280000 hafnium_178 \ + 0.13620000 hafnium_179 \ + 0.35080000 hafnium_180 # tantalum: Ta (73) std atomic weight: 180.94788(2) tantalum_155 154.9742400000 tantalum_156 155.9720300000 tantalum_157 156.9681800000 tantalum_158 157.9665400000 tantalum_159 158.9630230000 tantalum_160 159.9614880000 tantalum_161 160.9584520000 tantalum_162 161.9572940000 tantalum_163 162.9543370000 tantalum_164 163.9535340000 tantalum_165 164.9507810000 tantalum_166 165.9505120000 tantalum_167 166.9480930000 tantalum_168 167.9480470000 tantalum_169 168.9460110000 tantalum_170 169.9461750000 tantalum_171 170.9444760000 tantalum_172 171.9448950000 tantalum_173 172.9437500000 tantalum_174 173.9444540000 tantalum_175 174.9437370000 tantalum_176 175.9448570000 tantalum_177 176.9444795000 tantalum_178 177.9456780000 tantalum_179 178.9459366000 tantalum_180 179.9474648000 # 0.00012010 tantalum_181 180.9479958000 # 0.99987990 tantalum_182 181.9501519000 tantalum_183 182.9513726000 tantalum_184 183.9540080000 tantalum_185 184.9555590000 tantalum_186 185.9585510000 tantalum_187 186.9603860000 tantalum_188 187.9639160000 tantalum_189 188.9658300000 tantalum_190 189.9693900000 tantalum_191 190.9715600000 tantalum_192 191.9751400000 tantalum 0.00012010 tantalum_180 \ + 0.99987990 tantalum_181 # tungsten: W (74) std atomic weight: 183.84(1) tungsten_157 156.9788400000 tungsten_158 157.9745600000 tungsten_159 158.9726400000 tungsten_160 159.9684600000 tungsten_161 160.9672000000 tungsten_162 161.9634990000 tungsten_163 162.9625240000 tungsten_164 163.9589610000 tungsten_165 164.9582810000 tungsten_166 165.9550310000 tungsten_167 166.9548050000 tungsten_168 167.9518060000 tungsten_169 168.9517790000 tungsten_170 169.9492320000 tungsten_171 170.9494510000 tungsten_172 171.9472920000 tungsten_173 172.9476890000 tungsten_174 173.9460790000 tungsten_175 174.9467170000 tungsten_176 175.9456340000 tungsten_177 176.9466430000 tungsten_178 177.9458830000 tungsten_179 178.9470770000 tungsten_180 179.9467108000 # 0.00120000 tungsten_181 180.9481978000 tungsten_182 181.9482039400 # 0.26500000 tungsten_183 182.9502227500 # 0.14310000 tungsten_184 183.9509309200 # 0.30640000 tungsten_185 184.9534189700 tungsten_186 185.9543628000 # 0.28430000 tungsten_187 186.9571588000 tungsten_188 187.9584862000 tungsten_189 188.9617630000 tungsten_190 189.9630910000 tungsten_191 190.9665310000 tungsten_192 191.9681700000 tungsten_193 192.9717800000 tungsten_194 193.9736700000 tungsten 0.00120000 tungsten_180 \ + 0.26500000 tungsten_182 \ + 0.14310000 tungsten_183 \ + 0.30640000 tungsten_184 \ + 0.28430000 tungsten_186 # rhenium: Re (75) std atomic weight: 186.207(1) rhenium_159 158.9841800000 rhenium_160 159.9818200000 rhenium_161 160.9775700000 rhenium_162 161.9758400000 rhenium_163 162.9720800000 rhenium_164 163.9704530000 rhenium_165 164.9671030000 rhenium_166 165.9657610000 rhenium_167 166.9625950000 rhenium_168 167.9615730000 rhenium_169 168.9587660000 rhenium_170 169.9582200000 rhenium_171 170.9557160000 rhenium_172 171.9554200000 rhenium_173 172.9532430000 rhenium_174 173.9531150000 rhenium_175 174.9513810000 rhenium_176 175.9516230000 rhenium_177 176.9503280000 rhenium_178 177.9509890000 rhenium_179 178.9499890000 rhenium_180 179.9507920000 rhenium_181 180.9500580000 rhenium_182 181.9512100000 rhenium_183 182.9508196000 rhenium_184 183.9525228000 rhenium_185 184.9529545000 # 0.37400000 rhenium_186 185.9549856000 rhenium_187 186.9557501000 # 0.62600000 rhenium_188 187.9581115000 rhenium_189 188.9592260000 rhenium_190 189.9617440000 rhenium_191 190.9631220000 rhenium_192 191.9660880000 rhenium_193 192.9675410000 rhenium_194 193.9707600000 rhenium_195 194.9725400000 rhenium_196 195.9758000000 rhenium_197 196.9779900000 rhenium_198 197.9816000000 rhenium 0.37400000 rhenium_185 \ + 0.62600000 rhenium_187 # osmium: Os (76) std atomic weight: 190.23(3) osmium_161 160.9890300000 osmium_162 161.9844300000 osmium_163 162.9824100000 osmium_164 163.9780200000 osmium_165 164.9766000000 osmium_166 165.9726920000 osmium_167 166.9715490000 osmium_168 167.9678080000 osmium_169 168.9670180000 osmium_170 169.9635780000 osmium_171 170.9631740000 osmium_172 171.9600170000 osmium_173 172.9598080000 osmium_174 173.9570640000 osmium_175 174.9569450000 osmium_176 175.9548060000 osmium_177 176.9549660000 osmium_178 177.9532540000 osmium_179 178.9538170000 osmium_180 179.9523750000 osmium_181 180.9532470000 osmium_182 181.9521100000 osmium_183 182.9531250000 osmium_184 183.9524885000 # 0.00020000 osmium_185 184.9540417000 osmium_186 185.9538350000 # 0.01590000 osmium_187 186.9557474000 # 0.01960000 osmium_188 187.9558352000 # 0.13240000 osmium_189 188.9581442000 # 0.16150000 osmium_190 189.9584437000 # 0.26260000 osmium_191 190.9609264000 osmium_192 191.9614770000 # 0.40780000 osmium_193 192.9641479000 osmium_194 193.9651772000 osmium_195 194.9683180000 osmium_196 195.9696410000 osmium_197 196.9728300000 osmium_198 197.9744100000 osmium_199 198.9780100000 osmium_200 199.9798400000 osmium_201 200.9836400000 osmium_202 201.9859500000 osmium 0.00020000 osmium_184 \ + 0.01590000 osmium_186 \ + 0.01960000 osmium_187 \ + 0.13240000 osmium_188 \ + 0.16150000 osmium_189 \ + 0.26260000 osmium_190 \ + 0.40780000 osmium_192 # iridium: Ir (77) std atomic weight: 192.217(3) iridium_164 163.9919100000 iridium_165 164.9875000000 iridium_166 165.9856600000 iridium_167 166.9816660000 iridium_168 167.9799070000 iridium_169 168.9762980000 iridium_170 169.9749220000 iridium_171 170.9716400000 iridium_172 171.9706070000 iridium_173 172.9675060000 iridium_174 173.9668610000 iridium_175 174.9641500000 iridium_176 175.9636500000 iridium_177 176.9613010000 iridium_178 177.9610820000 iridium_179 178.9591200000 iridium_180 179.9592290000 iridium_181 180.9576250000 iridium_182 181.9580760000 iridium_183 182.9568400000 iridium_184 183.9574760000 iridium_185 184.9566980000 iridium_186 185.9579440000 iridium_187 186.9575420000 iridium_188 187.9588280000 iridium_189 188.9587150000 iridium_190 189.9605412000 iridium_191 190.9605893000 # 0.37300000 iridium_192 191.9626002000 iridium_193 192.9629216000 # 0.62700000 iridium_194 193.9650735000 iridium_195 194.9659747000 iridium_196 195.9683970000 iridium_197 196.9696550000 iridium_198 197.9722800000 iridium_199 198.9738050000 iridium_200 199.9768000000 iridium_201 200.9786400000 iridium_202 201.9819900000 iridium_203 202.9842300000 iridium_204 203.9896000000 iridium 0.37300000 iridium_191 \ + 0.62700000 iridium_193 # platinum: Pt (78) std atomic weight: 195.084(9) platinum_166 165.9948600000 platinum_167 166.9926900000 platinum_168 167.9881300000 platinum_169 168.9865700000 platinum_170 169.9824960000 platinum_171 170.9812450000 platinum_172 171.9773510000 platinum_173 172.9764430000 platinum_174 173.9728200000 platinum_175 174.9724100000 platinum_176 175.9689380000 platinum_177 176.9684700000 platinum_178 177.9656500000 platinum_179 178.9653590000 platinum_180 179.9630320000 platinum_181 180.9630980000 platinum_182 181.9611720000 platinum_183 182.9615970000 platinum_184 183.9599150000 platinum_185 184.9606140000 platinum_186 185.9593510000 platinum_187 186.9606170000 platinum_188 187.9593889000 platinum_189 188.9608310000 platinum_190 189.9599297000 # 0.00012000 platinum_191 190.9616729000 platinum_192 191.9610387000 # 0.00782000 platinum_193 192.9629824000 platinum_194 193.9626809000 # 0.32860000 platinum_195 194.9647917000 # 0.33780000 platinum_196 195.9649520900 # 0.25210000 platinum_197 196.9673406900 platinum_198 197.9678949000 # 0.07356000 platinum_199 198.9705952000 platinum_200 199.9714430000 platinum_201 200.9745130000 platinum_202 201.9756390000 platinum_203 202.9789300000 platinum_204 203.9807600000 platinum_205 204.9860800000 platinum_206 205.9896600000 platinum 0.00012000 platinum_190 \ + 0.00782000 platinum_192 \ + 0.32860000 platinum_194 \ + 0.33780000 platinum_195 \ + 0.25210000 platinum_196 \ + 0.07356000 platinum_198 # gold: Au (79) std atomic weight: 196.966569(5) gold_169 168.9980800000 gold_170 169.9959700000 gold_171 170.9918760000 gold_172 171.9899420000 gold_173 172.9862410000 gold_174 173.9847170000 gold_175 174.9813040000 gold_176 175.9802500000 gold_177 176.9768700000 gold_178 177.9760320000 gold_179 178.9731740000 gold_180 179.9725230000 gold_181 180.9700790000 gold_182 181.9696180000 gold_183 182.9675910000 gold_184 183.9674520000 gold_185 184.9657900000 gold_186 185.9659530000 gold_187 186.9645430000 gold_188 187.9653490000 gold_189 188.9639480000 gold_190 189.9646980000 gold_191 190.9637020000 gold_192 191.9648140000 gold_193 192.9641373000 gold_194 193.9654178000 gold_195 194.9650352000 gold_196 195.9665699000 gold_197 196.9665687900 # 1.00000000 gold_198 197.9682424200 gold_199 198.9687652800 gold_200 199.9707560000 gold_201 200.9716575000 gold_202 201.9738560000 gold_203 202.9751544000 gold_204 203.9778300000 gold_205 204.9798500000 gold_206 205.9847400000 gold_207 206.9884000000 gold_208 207.9934500000 gold_209 208.9973500000 gold_210 210.0025000000 gold gold_197 # mercury: Hg (80) std atomic weight: 200.592(3) mercury_171 171.0035300000 mercury_172 171.9988100000 mercury_173 172.9970900000 mercury_174 173.9928650000 mercury_175 174.9914410000 mercury_176 175.9873610000 mercury_177 176.9862770000 mercury_178 177.9824840000 mercury_179 178.9818310000 mercury_180 179.9782600000 mercury_181 180.9778190000 mercury_182 181.9746890000 mercury_183 182.9744448000 mercury_184 183.9717140000 mercury_185 184.9718990000 mercury_186 185.9693620000 mercury_187 186.9698140000 mercury_188 187.9675670000 mercury_189 188.9681950000 mercury_190 189.9663230000 mercury_191 190.9671570000 mercury_192 191.9656350000 mercury_193 192.9666530000 mercury_194 193.9654491000 mercury_195 194.9667210000 mercury_196 195.9658326000 # 0.00150000 mercury_197 196.9672128000 mercury_198 197.9667686000 # 0.09970000 mercury_199 198.9682806400 # 0.16870000 mercury_200 199.9683265900 # 0.23100000 mercury_201 200.9703028400 # 0.13180000 mercury_202 201.9706434000 # 0.29860000 mercury_203 202.9728728000 mercury_204 203.9734939800 # 0.06870000 mercury_205 204.9760734000 mercury_206 205.9775140000 mercury_207 206.9823000000 mercury_208 207.9857590000 mercury_209 208.9907200000 mercury_210 209.9942400000 mercury_211 210.9993300000 mercury_212 212.0029600000 mercury_213 213.0082300000 mercury_214 214.0120000000 mercury_215 215.0174000000 mercury_216 216.0213200000 mercury 0.00150000 mercury_196 \ + 0.09970000 mercury_198 \ + 0.16870000 mercury_199 \ + 0.23100000 mercury_200 \ + 0.13180000 mercury_201 \ + 0.29860000 mercury_202 \ + 0.06870000 mercury_204 # thallium: Tl (81) std atomic weight: [204.382,204.385] thallium_176 176.0006240000 thallium_177 176.9964310000 thallium_178 177.9948500000 thallium_179 178.9911110000 thallium_180 179.9900570000 thallium_181 180.9862600000 thallium_182 181.9857130000 thallium_183 182.9821930000 thallium_184 183.9818860000 thallium_185 184.9787890000 thallium_186 185.9786510000 thallium_187 186.9759063000 thallium_188 187.9760210000 thallium_189 188.9735880000 thallium_190 189.9738280000 thallium_191 190.9717842000 thallium_192 191.9722250000 thallium_193 192.9705020000 thallium_194 193.9710810000 thallium_195 194.9697740000 thallium_196 195.9704810000 thallium_197 196.9695760000 thallium_198 197.9704830000 thallium_199 198.9698770000 thallium_200 199.9709633000 thallium_201 200.9708220000 thallium_202 201.9721020000 thallium_203 202.9723446000 # 0.29520000 thallium_204 203.9738639000 thallium_205 204.9744278000 # 0.70480000 thallium_206 205.9761106000 thallium_207 206.9774197000 thallium_208 207.9820190000 thallium_209 208.9853594000 thallium_210 209.9900740000 thallium_211 210.9934750000 thallium_212 211.9983400000 thallium_213 213.0019150000 thallium_214 214.0069400000 thallium_215 215.0106400000 thallium_216 216.0158000000 thallium_217 217.0196600000 thallium_218 218.0247900000 thallium 0.29520000 thallium_203 \ + 0.70480000 thallium_205 # lead: Pb (82) std atomic weight: 207.2(1) lead_178 178.0038310000 lead_179 179.0022010000 lead_180 179.9979280000 lead_181 180.9966530000 lead_182 181.9926720000 lead_183 182.9918720000 lead_184 183.9881360000 lead_185 184.9876100000 lead_186 185.9842380000 lead_187 186.9839109000 lead_188 187.9808750000 lead_189 188.9808070000 lead_190 189.9780820000 lead_191 190.9782760000 lead_192 191.9757750000 lead_193 192.9761730000 lead_194 193.9740120000 lead_195 194.9745430000 lead_196 195.9727740000 lead_197 196.9734312000 lead_198 197.9720340000 lead_199 198.9729130000 lead_200 199.9718190000 lead_201 200.9728830000 lead_202 201.9721520000 lead_203 202.9733911000 lead_204 203.9730440000 # 0.01400000 lead_205 204.9744822000 lead_206 205.9744657000 # 0.24100000 lead_207 206.9758973000 # 0.22100000 lead_208 207.9766525000 # 0.52400000 lead_209 208.9810905000 lead_210 209.9841889000 lead_211 210.9887371000 lead_212 211.9918977000 lead_213 212.9965629000 lead_214 213.9998059000 lead_215 215.0047400000 lead_216 216.0080300000 lead_217 217.0131400000 lead_218 218.0165900000 lead_219 219.0217700000 lead_220 220.0254100000 lead 0.01400000 lead_204 \ + 0.24100000 lead_206 \ + 0.22100000 lead_207 \ + 0.52400000 lead_208 # bismuth: Bi (83) std atomic weight: 208.98040(1) bismuth_184 184.0012750000 bismuth_185 184.9976000000 bismuth_186 185.9966440000 bismuth_187 186.9931470000 bismuth_188 187.9922870000 bismuth_189 188.9891950000 bismuth_190 189.9886220000 bismuth_191 190.9857866000 bismuth_192 191.9854690000 bismuth_193 192.9829600000 bismuth_194 193.9827850000 bismuth_195 194.9806488000 bismuth_196 195.9806670000 bismuth_197 196.9788651000 bismuth_198 197.9792060000 bismuth_199 198.9776730000 bismuth_200 199.9781310000 bismuth_201 200.9770100000 bismuth_202 201.9777340000 bismuth_203 202.9768930000 bismuth_204 203.9778361000 bismuth_205 204.9773867000 bismuth_206 205.9784993000 bismuth_207 206.9784710000 bismuth_208 207.9797425000 bismuth_209 208.9803991000 # 1.00000000 bismuth_210 209.9841207000 bismuth_211 210.9872697000 bismuth_212 211.9912860000 bismuth_213 212.9943851000 bismuth_214 213.9987120000 bismuth_215 215.0017700000 bismuth_216 216.0063060000 bismuth_217 217.0093720000 bismuth_218 218.0141880000 bismuth_219 219.0174800000 bismuth_220 220.0223500000 bismuth_221 221.0258700000 bismuth_222 222.0307800000 bismuth_223 223.0345000000 bismuth_224 224.0394700000 bismuth bismuth_209 # polonium: Po (84) std atomic weight: [209] polonium_186 186.0043930000 polonium_187 187.0030410000 polonium_188 187.9994160000 polonium_189 188.9984730000 polonium_190 189.9951010000 polonium_191 190.9945585000 polonium_192 191.9913360000 polonium_193 192.9910260000 polonium_194 193.9881860000 polonium_195 194.9881260000 polonium_196 195.9855260000 polonium_197 196.9856600000 polonium_198 197.9833890000 polonium_199 198.9836670000 polonium_200 199.9817990000 polonium_201 200.9822598000 polonium_202 201.9807580000 polonium_203 202.9814161000 polonium_204 203.9803100000 polonium_205 204.9812030000 polonium_206 205.9804740000 polonium_207 206.9815938000 polonium_208 207.9812461000 polonium_209 208.9824308000 polonium_210 209.9828741000 polonium_211 210.9866536000 polonium_212 211.9888684000 polonium_213 212.9928576000 polonium_214 213.9952017000 polonium_215 214.9994201000 polonium_216 216.0019152000 polonium_217 217.0063182000 polonium_218 218.0089735000 polonium_219 219.0136140000 polonium_220 220.0163860000 polonium_221 221.0212280000 polonium_222 222.0241400000 polonium_223 223.0290700000 polonium_224 224.0321100000 polonium_225 225.0370700000 polonium_226 226.0403100000 polonium_227 227.0453900000 polonium polonium_209 # most stable # astatine: At (85) std atomic weight: [210] astatine_191 191.0041480000 astatine_192 192.0031520000 astatine_193 192.9999270000 astatine_194 193.9992360000 astatine_195 194.9962685000 astatine_196 195.9958000000 astatine_197 196.9931890000 astatine_198 197.9927840000 astatine_199 198.9905277000 astatine_200 199.9903510000 astatine_201 200.9884171000 astatine_202 201.9886300000 astatine_203 202.9869430000 astatine_204 203.9872510000 astatine_205 204.9860760000 astatine_206 205.9866570000 astatine_207 206.9858000000 astatine_208 207.9866133000 astatine_209 208.9861702000 astatine_210 209.9871479000 astatine_211 210.9874966000 astatine_212 211.9907377000 astatine_213 212.9929370000 astatine_214 213.9963721000 astatine_215 214.9986528000 astatine_216 216.0024236000 astatine_217 217.0047192000 astatine_218 218.0086950000 astatine_219 219.0111618000 astatine_220 220.0154330000 astatine_221 221.0180170000 astatine_222 222.0224940000 astatine_223 223.0251510000 astatine_224 224.0297490000 astatine_225 225.0326300000 astatine_226 226.0371600000 astatine_227 227.0402400000 astatine_228 228.0447500000 astatine_229 229.0481200000 astatine astatine_210 # most stable # radon: Rn (86) std atomic weight: [222] radon_193 193.0097080000 radon_194 194.0061440000 radon_195 195.0054220000 radon_196 196.0021160000 radon_197 197.0015850000 radon_198 197.9986790000 radon_199 198.9983900000 radon_200 199.9956900000 radon_201 200.9956280000 radon_202 201.9932640000 radon_203 202.9933880000 radon_204 203.9914300000 radon_205 204.9917190000 radon_206 205.9902140000 radon_207 206.9907303000 radon_208 207.9896350000 radon_209 208.9904150000 radon_210 209.9896891000 radon_211 210.9906011000 radon_212 211.9907039000 radon_213 212.9938831000 radon_214 213.9953630000 radon_215 214.9987459000 radon_216 216.0002719000 radon_217 217.0039280000 radon_218 218.0056016000 radon_219 219.0094804000 radon_220 220.0113941000 radon_221 221.0155371000 radon_222 222.0175782000 radon_223 223.0218893000 radon_224 224.0240960000 radon_225 225.0284860000 radon_226 226.0308610000 radon_227 227.0353040000 radon_228 228.0378350000 radon_229 229.0422570000 radon_230 230.0451400000 radon_231 231.0498700000 radon radon_222 # most stable # francium: Fr (87) std atomic weight: [223] francium_199 199.0072590000 francium_200 200.0065860000 francium_201 201.0038670000 francium_202 202.0033200000 francium_203 203.0009407000 francium_204 204.0006520000 francium_205 204.9985939000 francium_206 205.9986660000 francium_207 206.9969460000 francium_208 207.9971380000 francium_209 208.9959550000 francium_210 209.9964220000 francium_211 210.9955560000 francium_212 211.9962257000 francium_213 212.9961860000 francium_214 213.9989713000 francium_215 215.0003418000 francium_216 216.0031899000 francium_217 217.0046323000 francium_218 218.0075787000 francium_219 219.0092524000 francium_220 220.0123277000 francium_221 221.0142552000 francium_222 222.0175520000 francium_223 223.0197360000 francium_224 224.0233980000 francium_225 225.0255730000 francium_226 226.0295660000 francium_227 227.0318690000 francium_228 228.0358230000 francium_229 229.0382980000 francium_230 230.0424160000 francium_231 231.0451580000 francium_232 232.0493700000 francium_233 233.0526400000 francium francium_223 # most stable # radium: Ra (88) std atomic weight: [226] radium_201 201.0127100000 radium_202 202.0097600000 radium_203 203.0093040000 radium_204 204.0064920000 radium_205 205.0062680000 radium_206 206.0038280000 radium_207 207.0037990000 radium_208 208.0018410000 radium_209 209.0019900000 radium_210 210.0004940000 radium_211 211.0008932000 radium_212 211.9997870000 radium_213 213.0003840000 radium_214 214.0000997000 radium_215 215.0027204000 radium_216 216.0035334000 radium_217 217.0063207000 radium_218 218.0071410000 radium_219 219.0100855000 radium_220 220.0110259000 radium_221 221.0139177000 radium_222 222.0153748000 radium_223 223.0185023000 radium_224 224.0202120000 radium_225 225.0236119000 radium_226 226.0254103000 radium_227 227.0291783000 radium_228 228.0310707000 radium_229 229.0349420000 radium_230 230.0370550000 radium_231 231.0410270000 radium_232 232.0434753000 radium_233 233.0475820000 radium_234 234.0503420000 radium_235 235.0549700000 radium radium_226 # most stable # actinium: Ac (89) std atomic weight: [227] actinium_206 206.0144520000 actinium_207 207.0119660000 actinium_208 208.0115500000 actinium_209 209.0094950000 actinium_210 210.0094360000 actinium_211 211.0077320000 actinium_212 212.0078130000 actinium_213 213.0066090000 actinium_214 214.0069180000 actinium_215 215.0064750000 actinium_216 216.0087430000 actinium_217 217.0093440000 actinium_218 218.0116420000 actinium_219 219.0124210000 actinium_220 220.0147549000 actinium_221 221.0155920000 actinium_222 222.0178442000 actinium_223 223.0191377000 actinium_224 224.0217232000 actinium_225 225.0232300000 actinium_226 226.0260984000 actinium_227 227.0277523000 actinium_228 228.0310215000 actinium_229 229.0329560000 actinium_230 230.0363270000 actinium_231 231.0383930000 actinium_232 232.0420340000 actinium_233 233.0443460000 actinium_234 234.0481390000 actinium_235 235.0508400000 actinium_236 236.0549880000 actinium_237 237.0582700000 actinium actinium_227 # most stable # thorium: Th (90) std atomic weight: 232.0377(4) thorium_208 208.0179000000 thorium_209 209.0177530000 thorium_210 210.0150940000 thorium_211 211.0149290000 thorium_212 212.0129880000 thorium_213 213.0130090000 thorium_214 214.0115000000 thorium_215 215.0117248000 thorium_216 216.0110560000 thorium_217 217.0131170000 thorium_218 218.0132760000 thorium_219 219.0155370000 thorium_220 220.0157480000 thorium_221 221.0181840000 thorium_222 222.0184690000 thorium_223 223.0208119000 thorium_224 224.0214640000 thorium_225 225.0239514000 thorium_226 226.0249034000 thorium_227 227.0277042000 thorium_228 228.0287413000 thorium_229 229.0317627000 thorium_230 230.0331341000 thorium_231 231.0363046000 thorium_232 232.0380558000 # 1.00000000 thorium_233 233.0415823000 thorium_234 234.0436014000 thorium_235 235.0472550000 thorium_236 236.0496570000 thorium_237 237.0536290000 thorium_238 238.0565000000 thorium_239 239.0607700000 thorium thorium_232 # protactinium: Pa (91) std atomic weight: 231.03588(2) protactinium_212 212.0232030000 protactinium_213 213.0211090000 protactinium_214 214.0209180000 protactinium_215 215.0191830000 protactinium_216 216.0191090000 protactinium_217 217.0183250000 protactinium_218 218.0200590000 protactinium_219 219.0199040000 protactinium_220 220.0217050000 protactinium_221 221.0218750000 protactinium_222 222.0237840000 protactinium_223 223.0239630000 protactinium_224 224.0256176000 protactinium_225 225.0261310000 protactinium_226 226.0279480000 protactinium_227 227.0288054000 protactinium_228 228.0310517000 protactinium_229 229.0320972000 protactinium_230 230.0345410000 protactinium_231 231.0358842000 # 1.00000000 protactinium_232 232.0385917000 protactinium_233 233.0402472000 protactinium_234 234.0433072000 protactinium_235 235.0453990000 protactinium_236 236.0486680000 protactinium_237 237.0510230000 protactinium_238 238.0546370000 protactinium_239 239.0572600000 protactinium_240 240.0609800000 protactinium_241 241.0640800000 protactinium protactinium_231 # uranium: U (92) std atomic weight: 238.02891(3) uranium_217 217.0246600000 uranium_218 218.0235230000 uranium_219 219.0249990000 uranium_220 220.0246200000 uranium_221 221.0262800000 uranium_222 222.0260000000 uranium_223 223.0277390000 uranium_224 224.0276050000 uranium_225 225.0293910000 uranium_226 226.0293390000 uranium_227 227.0311570000 uranium_228 228.0313710000 uranium_229 229.0335063000 uranium_230 230.0339401000 uranium_231 231.0362939000 uranium_232 232.0371563000 uranium_233 233.0396355000 uranium_234 234.0409523000 # 0.00005400 uranium_235 235.0439301000 # 0.00720400 uranium_236 236.0455682000 uranium_237 237.0487304000 uranium_238 238.0507884000 # 0.99274200 uranium_239 239.0542935000 uranium_240 240.0565934000 uranium_241 241.0603300000 uranium_242 242.0629300000 uranium_243 243.0669900000 uranium 0.00005400 uranium_234 \ + 0.00720400 uranium_235 \ + 0.99274200 uranium_238 # neptunium: Np (93) std atomic weight: [237] neptunium_219 219.0314300000 neptunium_220 220.0325400000 neptunium_221 221.0320400000 neptunium_222 222.0333000000 neptunium_223 223.0328500000 neptunium_224 224.0342200000 neptunium_225 225.0339110000 neptunium_226 226.0351880000 neptunium_227 227.0349570000 neptunium_228 228.0360670000 neptunium_229 229.0362640000 neptunium_230 230.0378280000 neptunium_231 231.0382450000 neptunium_232 232.0401100000 neptunium_233 233.0407410000 neptunium_234 234.0428953000 neptunium_235 235.0440635000 neptunium_236 236.0465700000 neptunium_237 237.0481736000 neptunium_238 238.0509466000 neptunium_239 239.0529392000 neptunium_240 240.0561650000 neptunium_241 241.0582530000 neptunium_242 242.0616400000 neptunium_243 243.0642800000 neptunium_244 244.0678500000 neptunium_245 245.0708000000 neptunium neptunium_237 # most stable # plutonium: Pu (94) std atomic weight: [244] plutonium_228 228.0387320000 plutonium_229 229.0401440000 plutonium_230 230.0396500000 plutonium_231 231.0411020000 plutonium_232 232.0411850000 plutonium_233 233.0429980000 plutonium_234 234.0433174000 plutonium_235 235.0452860000 plutonium_236 236.0460581000 plutonium_237 237.0484098000 plutonium_238 238.0495601000 plutonium_239 239.0521636000 plutonium_240 240.0538138000 plutonium_241 241.0568517000 plutonium_242 242.0587428000 plutonium_243 243.0620036000 plutonium_244 244.0642053000 plutonium_245 245.0678260000 plutonium_246 246.0702050000 plutonium_247 247.0741900000 plutonium plutonium_244 # most stable # americium: Am (95) americium_230 230.0460900000 americium_231 231.0455600000 americium_232 232.0464500000 americium_233 233.0464400000 americium_234 234.0477300000 americium_235 235.0479080000 americium_236 236.0494300000 americium_237 237.0499960000 americium_238 238.0519850000 americium_239 239.0530247000 americium_240 240.0553000000 americium_241 241.0568293000 americium_242 242.0595494000 americium_243 243.0613813000 americium_244 244.0642851000 americium_245 245.0664548000 americium_246 246.0697750000 americium_247 247.0720900000 americium_248 248.0757500000 americium_249 249.0784800000 # curium: Cm (96) curium_232 232.0498200000 curium_233 233.0507700000 curium_234 234.0501600000 curium_235 235.0515400000 curium_236 236.0513740000 curium_237 237.0528690000 curium_238 238.0530810000 curium_239 239.0549100000 curium_240 240.0555297000 curium_241 241.0576532000 curium_242 242.0588360000 curium_243 243.0613893000 curium_244 244.0627528000 curium_245 245.0654915000 curium_246 246.0672238000 curium_247 247.0703541000 curium_248 248.0723499000 curium_249 249.0759548000 curium_250 250.0783580000 curium_251 251.0822860000 curium_252 252.0848700000 # berkelium: Bk (97) berkelium_234 234.0572700000 berkelium_235 235.0565800000 berkelium_236 236.0574800000 berkelium_237 237.0571000000 berkelium_238 238.0582000000 berkelium_239 239.0582400000 berkelium_240 240.0597600000 berkelium_241 241.0601600000 berkelium_242 242.0619800000 berkelium_243 243.0630078000 berkelium_244 244.0651810000 berkelium_245 245.0663618000 berkelium_246 246.0686730000 berkelium_247 247.0703073000 berkelium_248 248.0730880000 berkelium_249 249.0749877000 berkelium_250 250.0783167000 berkelium_251 251.0807620000 berkelium_252 252.0843100000 berkelium_253 253.0868800000 berkelium_254 254.0906000000 # californium: Cf (98) californium_237 237.0621980000 californium_238 238.0614900000 californium_239 239.0625300000 californium_240 240.0622560000 californium_241 241.0636900000 californium_242 242.0637540000 californium_243 243.0654800000 californium_244 244.0660008000 californium_245 245.0680487000 californium_246 246.0688055000 californium_247 247.0709650000 californium_248 248.0721851000 californium_249 249.0748539000 californium_250 250.0764062000 californium_251 251.0795886000 californium_252 252.0816272000 californium_253 253.0851345000 californium_254 254.0873240000 californium_255 255.0910500000 californium_256 256.0934400000 # einsteinium: Es (99) einsteinium_239 239.0682300000 einsteinium_240 240.0689200000 einsteinium_241 241.0685600000 einsteinium_242 242.0695700000 einsteinium_243 243.0695100000 einsteinium_244 244.0708800000 einsteinium_245 245.0712500000 einsteinium_246 246.0729000000 einsteinium_247 247.0736220000 einsteinium_248 248.0754710000 einsteinium_249 249.0764110000 einsteinium_250 250.0786100000 einsteinium_251 251.0799936000 einsteinium_252 252.0829800000 einsteinium_253 253.0848257000 einsteinium_254 254.0880222000 einsteinium_255 255.0902750000 einsteinium_256 256.0936000000 einsteinium_257 257.0959800000 einsteinium_258 258.0995200000 # fermium: Fm (100) fermium_241 241.0742100000 fermium_242 242.0734300000 fermium_243 243.0744600000 fermium_244 244.0740400000 fermium_245 245.0753500000 fermium_246 246.0753500000 fermium_247 247.0769400000 fermium_248 248.0771865000 fermium_249 249.0789275000 fermium_250 250.0795210000 fermium_251 251.0815400000 fermium_252 252.0824671000 fermium_253 253.0851846000 fermium_254 254.0868544000 fermium_255 255.0899640000 fermium_256 256.0917745000 fermium_257 257.0951061000 fermium_258 258.0970800000 fermium_259 259.1006000000 fermium_260 260.1028100000 # mendelevium: Md (101) mendelevium_245 245.0808100000 mendelevium_246 246.0817100000 mendelevium_247 247.0815200000 mendelevium_248 248.0828200000 mendelevium_249 249.0829100000 mendelevium_250 250.0844100000 mendelevium_251 251.0847740000 mendelevium_252 252.0864300000 mendelevium_253 253.0871440000 mendelevium_254 254.0895900000 mendelevium_255 255.0910841000 mendelevium_256 256.0938900000 mendelevium_257 257.0955424000 mendelevium_258 258.0984315000 mendelevium_259 259.1005100000 mendelevium_260 260.1036500000 mendelevium_261 261.1058300000 mendelevium_262 262.1091000000 # nobelium: No (102) nobelium_248 248.0865500000 nobelium_249 249.0878000000 nobelium_250 250.0875600000 nobelium_251 251.0889400000 nobelium_252 252.0889670000 nobelium_253 253.0905641000 nobelium_254 254.0909560000 nobelium_255 255.0931910000 nobelium_256 256.0942829000 nobelium_257 257.0968878000 nobelium_258 258.0982100000 nobelium_259 259.1010300000 nobelium_260 260.1026400000 nobelium_261 261.1057000000 nobelium_262 262.1074600000 nobelium_263 263.1107100000 nobelium_264 264.1127300000 # lawrencium: Lr (103) lawrencium_251 251.0941800000 lawrencium_252 252.0952600000 lawrencium_253 253.0950900000 lawrencium_254 254.0964800000 lawrencium_255 255.0965620000 lawrencium_256 256.0984940000 lawrencium_257 257.0994180000 lawrencium_258 258.1017600000 lawrencium_259 259.1029020000 lawrencium_260 260.1055000000 lawrencium_261 261.1068800000 lawrencium_262 262.1096100000 lawrencium_263 263.1113600000 lawrencium_264 264.1142000000 lawrencium_265 265.1161900000 lawrencium_266 266.1198300000 # rutherfordium: Rf (104) rutherfordium_253 253.1004400000 rutherfordium_254 254.1000500000 rutherfordium_255 255.1012700000 rutherfordium_256 256.1011520000 rutherfordium_257 257.1029180000 rutherfordium_258 258.1034280000 rutherfordium_259 259.1055960000 rutherfordium_260 260.1064400000 rutherfordium_261 261.1087730000 rutherfordium_262 262.1099200000 rutherfordium_263 263.1124900000 rutherfordium_264 264.1138800000 rutherfordium_265 265.1166800000 rutherfordium_266 266.1181700000 rutherfordium_267 267.1217900000 rutherfordium_268 268.1239700000 # dubnium: Db (105) dubnium_255 255.1070700000 dubnium_256 256.1078900000 dubnium_257 257.1075800000 dubnium_258 258.1092800000 dubnium_259 259.1094920000 dubnium_260 260.1113000000 dubnium_261 261.1119200000 dubnium_262 262.1140700000 dubnium_263 263.1149900000 dubnium_264 264.1174100000 dubnium_265 265.1186100000 dubnium_266 266.1210300000 dubnium_267 267.1224700000 dubnium_268 268.1256700000 dubnium_269 269.1279100000 dubnium_270 270.1313600000 # seaborgium: Sg (106) seaborgium_258 258.1129800000 seaborgium_259 259.1144000000 seaborgium_260 260.1143840000 seaborgium_261 261.1159490000 seaborgium_262 262.1163370000 seaborgium_263 263.1182900000 seaborgium_264 264.1189300000 seaborgium_265 265.1210900000 seaborgium_266 266.1219800000 seaborgium_267 267.1243600000 seaborgium_268 268.1253900000 seaborgium_269 269.1286300000 seaborgium_270 270.1304300000 seaborgium_271 271.1339300000 seaborgium_272 272.1358900000 seaborgium_273 273.1395800000 # bohrium: Bh (107) bohrium_260 260.1216600000 bohrium_261 261.1214500000 bohrium_262 262.1229700000 bohrium_263 263.1229200000 bohrium_264 264.1245900000 bohrium_265 265.1249100000 bohrium_266 266.1267900000 bohrium_267 267.1275000000 bohrium_268 268.1296900000 bohrium_269 269.1304200000 bohrium_270 270.1333600000 bohrium_271 271.1352600000 bohrium_272 272.1382600000 bohrium_273 273.1402400000 bohrium_274 274.1435500000 bohrium_275 275.1456700000 # hassium: Hs (108) hassium_263 263.1285200000 hassium_264 264.1283570000 hassium_265 265.1297930000 hassium_266 266.1300460000 hassium_267 267.1316700000 hassium_268 268.1318600000 hassium_269 269.1337500000 hassium_270 270.1342900000 hassium_271 271.1371700000 hassium_272 272.1385000000 hassium_273 273.1416800000 hassium_274 274.1433000000 hassium_275 275.1466700000 hassium_276 276.1484600000 hassium_277 277.1519000000 # meitnerium: Mt (109) meitnerium_265 265.1360000000 meitnerium_266 266.1373700000 meitnerium_267 267.1371900000 meitnerium_268 268.1386500000 meitnerium_269 269.1388200000 meitnerium_270 270.1403300000 meitnerium_271 271.1407400000 meitnerium_272 272.1434100000 meitnerium_273 273.1444000000 meitnerium_274 274.1472400000 meitnerium_275 275.1488200000 meitnerium_276 276.1515900000 meitnerium_277 277.1532700000 meitnerium_278 278.1563100000 meitnerium_279 279.1580800000 # darmstadtium: Ds (110) darmstadtium_267 267.1437700000 darmstadtium_268 268.1434800000 darmstadtium_269 269.1447520000 darmstadtium_270 270.1445840000 darmstadtium_271 271.1459500000 darmstadtium_272 272.1460200000 darmstadtium_273 273.1485600000 darmstadtium_274 274.1494100000 darmstadtium_275 275.1520300000 darmstadtium_276 276.1530300000 darmstadtium_277 277.1559100000 darmstadtium_278 278.1570400000 darmstadtium_279 279.1601000000 darmstadtium_280 280.1613100000 darmstadtium_281 281.1645100000 # roentgenium: Rg (111) roentgenium_272 272.1532700000 roentgenium_273 273.1531300000 roentgenium_274 274.1552500000 roentgenium_275 275.1559400000 roentgenium_276 276.1583300000 roentgenium_277 277.1590700000 roentgenium_278 278.1614900000 roentgenium_279 279.1627200000 roentgenium_280 280.1651400000 roentgenium_281 281.1663600000 roentgenium_282 282.1691200000 roentgenium_283 283.1705400000 # copernicium: Cn (112) copernicium_276 276.1614100000 copernicium_277 277.1636400000 copernicium_278 278.1641600000 copernicium_279 279.1665400000 copernicium_280 280.1671500000 copernicium_281 281.1697500000 copernicium_282 282.1705000000 copernicium_283 283.1732700000 copernicium_284 284.1741600000 copernicium_285 285.1771200000 # nihonium: Nh (113) nihonium_278 278.1705800000 nihonium_279 279.1709500000 nihonium_280 280.1729300000 nihonium_281 281.1734800000 nihonium_282 282.1756700000 nihonium_283 283.1765700000 nihonium_284 284.1787300000 nihonium_285 285.1797300000 nihonium_286 286.1822100000 nihonium_287 287.1833900000 # flerovium: Fl (114) flerovium_285 285.1836400000 flerovium_286 286.1842300000 flerovium_287 287.1867800000 flerovium_288 288.1875700000 flerovium_289 289.1904200000 # moscovium: Uup (115) moscovium_287 287.1907000000 moscovium_288 288.1927400000 moscovium_289 289.1936300000 moscovium_290 290.1959800000 moscovium_291 291.1970700000 # livermorium: Lv (116) livermorium_289 289.1981600000 livermorium_290 290.1986400000 livermorium_291 291.2010800000 livermorium_292 292.2017400000 livermorium_293 293.2044900000 # tennessine: Uus (117) tennessine_291 291.2055300000 tennessine_292 292.2074600000 tennessine_293 293.2082400000 tennessine_294 294.2104600000 # oganesson: Og (118) oganesson_293 293.2135600000 oganesson_294 294.2139200000 oganesson_295 295.2162400000 units-2.23/getopt1.c0000664000175000017500000001030412301221017013574 0ustar adrianadrian/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 1994 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. */ #ifdef HAVE_CONFIG_H #include #endif #include "getopt.h" #if !defined (__STDC__) && !defined (_MSC_VER) || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #if defined (_LIBC) || !defined (__GNU_LIBRARY__) /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #else char *getenv (); #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* _LIBC or not __GNU_LIBRARY__. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == EOF) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ units-2.23/install-sh0000775000175000017500000003325512320330320014062 0ustar adrianadrian#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: units-2.23/elemcvt.sh0000775000175000017500000003326114547657775014120 0ustar adrianadrian#! /bin/sh # ****************************************************************************** # elemcvt: convert NIST "Linear ASCII" table of elements to units(1) format # Usage: elemcvt [options] [] # Author: Jeff Conrad # Date: 2024-01-06 # ****************************************************************************** # Adjust PATH to suit. # For Windows w/MKS Toolkit, this assumes /bin is a symbolic link to # $ROOTDIR/mksnt. PATH=/bin progname=${0##*[/\\]} progname=${progname%.sh} export TITLEBAR=$progname umsg="Usage: $progname [options] [file] Options: -d Show elements for which no standard atomic mass is given and exit -v Verbose" show_no_std_atomic_mass= # show elements for which no std atomic mass is given verbose= errors= DUALCASE=1 # used in MKS Toolkit to make options case sensitive while getopts :dv arg do case $arg in d) show_no_std_atomic_mass=YES ;; v) verbose=YES ;; :) # OPTARG contains the option missing the argument print -ru2 -- "$progname: option $OPTARG requires an argument" errors=YES ;; [?]) # OPTARG contains the invalid option print -ru2 -- "$progname: unknown option $OPTARG" errors=YES ;; esac done shift $((OPTIND - 1)) unset DUALCASE if [ -n "$errors" ] then print -ru2 -- "$umsg" exit 1 fi awk ' function show_element_info(atomic_number, atomic_symbol, std_atomic_mass_str) { printf("# %s: %s (%d)", names[atomic_number], atomic_symbol, atomic_number) if (std_atomic_mass_str) printf(" std atomic weight: %s", std_atomic_mass_str) print "" } # _ # function show_isotope(name, num) { printf("%-*s%*s%*.*f", max_isotope_len, sprintf("%s_%d", name, num), sepwid, " ", isoprecis + 4, isoprecis, mass[num]) if (composition[num]) printf(" # %.*f", compprecis, composition[num]) print "" } function show_element_name(name) { printf("%-*s%*s", max_name_len, name, sepwid, " ") } # _ function mole_fraction(atomic_number, names, mass_num, mass_wid) { if (composition[mass_num] == 1) { mass_wid = length(int(mass_number[n_isotopes])) # align with 1st digit of atomic mass printf("%*s%s_%d", sepwid + 2 - mass_wid, " ", names[atomic_number], mass_num) } else printf("%.*f %s_%d", compprecis, composition[mass_num], names[atomic_number], mass_num) } # add line continuation and '+' sign function add_continuation() { printf(" \\\n") printf("%-*s+ ", max_name_len + sepwid - 2, " ") } # _ # most stable function use_most_stable(atomic_number, mass, mass_wid) { mass_wid = length(int(mass_number[n_isotopes])) printf("%*s%-*s # most stable", sepwid + 2 - mass_wid, " ", isoprecis + 1 + mass_wid, sprintf("%s_%d", names[atomic_number], mass)) } # _ # standard atomic mass function use_std_mass(atomic_number, mass, mass_wid) { mass_wid = length(int(mass_number[n_isotopes])) printf("%*s%-*s # standard atomic mass", sepwid + 2 - mass_wid, " ", isoprecis + 1 + mass_wid, sprintf("%s_%d", names[atomic_number], mass)) } # show isotopes and the sum of mole fraction-mass products function show_element_data(atomic_number, names) { # isotopes and relative abundances for (ndx = 1; ndx <= n_isotopes; ndx++) { mass_num = mass_number[ndx] show_isotope(names[atomic_number], mass_num) } # show a value for atomic mass if one of these is available; # otherwise, show only isotope masses. if (total_composition > 0 || most_stable_mass || std_atomic_mass) show_element = 1 else show_element = 0 # atomic mass: sum of mole fraction-mass products # element name if (show_element) show_element_name(names[atomic_number]) mass_num = mass_number[1] firstval = 0 # first isotope if (composition[mass_num] > 0) { mole_fraction(atomic_number, names, mass_num) firstval = 1 } if (n_isotopes > 1) { for (ndx = 2; ndx < n_isotopes; ndx++) { mass_num = mass_number[ndx] if (composition[mass_num] > 0) { if (firstval == 1) add_continuation() mole_fraction(atomic_number, names, mass_num) firstval = 1 } } # last isotope mass_num = mass_number[n_isotopes] if (composition[mass_num] > 0) { if (firstval == 1) add_continuation() mole_fraction(atomic_number, names, mass_num) print "" } } else print "" # options if mole fraction is not given for any isotope if (total_composition == 0) { if (most_stable_mass) use_most_stable(atomic_number, most_stable_mass) else if (std_atomic_mass) use_std_mass(atomic_number, std_atomic_mass) } if (! composition[mass_number[n_isotopes]]) print "" } function output(atomic_number) { sepwid = 5 # width of column separation compprecis = 8 # for mole fraction isoprecis = 10 # for isotope mass # NIST show H, D, and T if (atomic_number == 1) atomic_symbol = "H" show_element_info(atomic_number, atomic_symbol, std_atomic_mass_str) if (am_names[atomic_number]) print "# IUPAC spelling" show_element_data(atomic_number, names) # show American spelling if different from IUPAC if (am_names[atomic_number]) { print "# American spelling" show_element_data(atomic_number, am_names) } if (show_element) print "" # blank line between elements most_stable_mass = 0 total_composition = 0 } function gnu_notes() { print "\ # This file is the elements database for use with GNU units, a units\n\ # conversion program by Adrian Mariano adrianm@gnu.org\n\ #\n\ # January 2024 Version 1.0\n\ #\n\ # Copyright (C) 2024\n\ # Free Software Foundation, Inc\n\ #\n\ # This program is free software; you can redistribute it and/or modify\n\ # it under the terms of the GNU General Public License as published by\n\ # the Free Software Foundation; either version 3 of the License, or\n\ # (at your option) any later version.\n\ #\n\ # This data is distributed in the hope that it will be useful,\n\ # but WITHOUT ANY WARRANTY; without even the implied warranty of\n\ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ # GNU General Public License for more details.\n\ #\n\ # You should have received a copy of the GNU General Public License\n\ # along with this program; if not, write to the Free Software\n\ # Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\ # Boston, MA 02110-1301 USA\n" } function nist_notes() { print "# From https://www.nist.gov/pml/atomic-weights-and-isotopic-compositions-relative-atomic-masses\n" # notes from https://www.nist.gov/pml/atomic-weights-and-isotopic-compositions-column-descriptions print "\ # For several elements, the standard atomic weight A_r is given as an\n\ # atomic-weight interval with the symbol [a,b] to denote the set of\n\ # atomic-weight values in normal materials; thus, [a <= A_r(E) <= b].\n\ # The symbols a and b denote the lower and upper bounds of the\n\ # interval [a,b], respectively. The values in parentheses, following\n\ # the last significant digit to which they are attributed, are\n\ # uncertainties.\n\ #\n\ # Brackets [ ] enclosing a single value indicate the mass number of\n\ # the most stable isotope. For radioactive elements with atomic\n\ # numbers 95 or greater, the mass number of the most stable isotope is\n\ # not specified, as the list of studied isotopes is still\n\ # incomplete.\n" } function units_notes() { print "\ # When composition mole fractions of isotopes are given, the atomic mass\n\ # of an element is given as the sum of the product(s) of mole\n\ # fraction(s) and the atomic masses of the relevant isotopes. When composition\n\ # mole fractions are not given, the atomic mass is given as\n\ #\n\ # * the mass of the most stable isotope, if available, or\n\ # * the standard atomic mass of the element, if available.\n\ #\n\ # If neither the most stable isotope nore a standard atomic mass is\n\ # available, no atomic mass for the element is given; the user must\n\ # select the isotope most suitable for their purposes.\n\ #\n\ # If the standard atomic mass is a range, the value given is the\n\ # midpoint of that range, which may differ from the value determined\n\ # from the sum of the products of composition mole fraction and isotope\n\ # atomic mass.\n" } BEGIN { FS = " *= *" show_no_std_atomic_mass = "'"$show_no_std_atomic_mass"'" verbose = "'"$verbose"'" console = "/dev/console" # IUPAC spellings names[1] = "hydrogen" names[2] = "helium" names[3] = "lithium" names[4] = "beryllium" names[5] = "boron" names[6] = "carbon" names[7] = "nitrogen" names[8] = "oxygen" names[9] = "fluorine" names[10] = "neon" names[11] = "sodium" names[12] = "magnesium" names[13] = "aluminium" names[14] = "silicon" names[15] = "phosphorus" names[16] = "sulfur" names[17] = "chlorine" names[18] = "argon" names[19] = "potassium" names[20] = "calcium" names[21] = "scandium" names[22] = "titanium" names[23] = "vanadium" names[24] = "chromium" names[25] = "manganese" names[26] = "iron" names[27] = "cobalt" names[28] = "nickel" names[29] = "copper" names[30] = "zinc" names[31] = "gallium" names[32] = "germanium" names[33] = "arsenic" names[34] = "selenium" names[35] = "bromine" names[36] = "krypton" names[37] = "rubidium" names[38] = "strontium" names[39] = "yttrium" names[40] = "zirconium" names[41] = "niobium" names[42] = "molybdenum" names[43] = "technetium" names[44] = "ruthenium" names[45] = "rhodium" names[46] = "palladium" names[47] = "silver" names[48] = "cadmium" names[49] = "indium" names[50] = "tin" names[51] = "antimony" names[52] = "tellurium" names[53] = "iodine" names[54] = "xenon" names[55] = "caesium" names[56] = "barium" names[57] = "lanthanum" names[58] = "cerium" names[59] = "praseodymium" names[60] = "neodymium" names[61] = "promethium" names[62] = "samarium" names[63] = "europium" names[64] = "gadolinium" names[65] = "terbium" names[66] = "dysprosium" names[67] = "holmium" names[68] = "erbium" names[69] = "thulium" names[70] = "ytterbium" names[71] = "lutetium" names[72] = "hafnium" names[73] = "tantalum" names[74] = "tungsten" names[75] = "rhenium" names[76] = "osmium" names[77] = "iridium" names[78] = "platinum" names[79] = "gold" names[80] = "mercury" names[81] = "thallium" names[82] = "lead" names[83] = "bismuth" names[84] = "polonium" names[85] = "astatine" names[86] = "radon" names[87] = "francium" names[88] = "radium" names[89] = "actinium" names[90] = "thorium" names[91] = "protactinium" names[92] = "uranium" names[93] = "neptunium" names[94] = "plutonium" names[95] = "americium" names[96] = "curium" names[97] = "berkelium" names[98] = "californium" names[99] = "einsteinium" names[100] = "fermium" names[101] = "mendelevium" names[102] = "nobelium" names[103] = "lawrencium" names[104] = "rutherfordium" names[105] = "dubnium" names[106] = "seaborgium" names[107] = "bohrium" names[108] = "hassium" names[109] = "meitnerium" names[110] = "darmstadtium" names[111] = "roentgenium" names[112] = "copernicium" names[113] = "nihonium" names[114] = "flerovium" names[115] = "moscovium" names[116] = "livermorium" names[117] = "tennessine" names[118] = "oganesson" # American spellings am_names[13] = "aluminum" am_names[55] = "cesium" max_name_len = 0 # length of longest element name for (i = 1; i <= 118; i++) { len = length(names[i]) if (len > max_name_len) { max_name_len = len; longestname = names[i] } } max_isotope_len = max_name_len + 4 # allow for "_xxx" suffix if (! show_no_std_atomic_mass) { gnu_notes() nist_notes() units_notes() } if (verbose) printf("Longest element name: %s (%d)\n\n", longestname, max_name_len) n_isotopes = 0 mass_number[1] = 0 } # begin file processing # skip JavaScript and HTML before data NR == 1, $0 ~ /
/ { exit }

# remove trailing space and unpaddable spaces
{ 
  gsub(/ /, "")
  gsub(/ +$/, "")
}

$1 ~ /Atomic Number/ {
    last_atomic_number = atomic_number
    atomic_number = $2 + 0
    if (atomic_number != last_atomic_number && atomic_number > 1) {
	if (show_no_std_atomic_mass) {
	    if (! std_atomic_mass_str)
		print names[last_atomic_number]
	}
	else
	    output(last_atomic_number)
    }
}

$1 ~ /Atomic Symbol/ {
    atomic_symbol = $2
}

$1 ~ /Mass Number/ {
    if (atomic_number != last_atomic_number) {
	for (i = 1; i <= n_isotopes; i++)
	    delete mass_number[i]
	n_isotopes = 0
    }
    mass_number[++n_isotopes] = $2
}

$1 ~ /Relative Atomic Mass/ {
    atomic_mass = $2
    sub(/\([[:digit:]#]+\)/, "", atomic_mass)
    mass[mass_number[n_isotopes]] = atomic_mass
}

$1 ~ /Isotopic Composition/ {
    isotopic_composition = $2
    sub(/\([[:digit:]#]+\)/, "", isotopic_composition)
    composition[mass_number[n_isotopes]] = isotopic_composition
    total_composition += isotopic_composition
}

$1 ~ /Standard Atomic Weight/ {
    std_atomic_mass = std_atomic_mass_str = $2
    gsub(/\([^)]+\)/, "", std_atomic_mass)
    gsub(/[][]/, "", std_atomic_mass)
    if (std_atomic_mass ~ /,/) {
	split(std_atomic_mass, range, /,/)
	std_atomic_mass = (range[1] + range[2]) / 2
    }
    if (std_atomic_mass_str ~ /\[[[:digit:].]+\]/)
	most_stable_mass = std_atomic_mass
    last_atomic_number = atomic_number
}

END {
    if (show_no_std_atomic_mass) {
	if (! std_atomic_mass_str)
	    print names[last_atomic_number]
    }
    else
	output(last_atomic_number)
} ' $*
units-2.23/unitsprog.ico0000664000175000017500000010050612312376060014612 0ustar  adrianadrian  ¨†00¨.	hÖ%00 ¨%>+  ¨æP   ¨Ž] h6n00¨žr( @€€€ÀÀÀ€ÿÿÿóççàÁÁùòòÍššÛ¶¶ @@±cc—..È‘‘„äÉÉèÑÑŒ®]]¦MMéÓÓ‘""“&&ë××¼xx¼yyæÍÍøññ¥JJ‘##æÌÌ«WW™22–--Â……úõõºuuˆªTTêÕÕãÇÇìÙÙþüüΜœ¦LL†—//À³ff’$$üùù°aa¡BB´iiòååš55Ë——‹„		û÷÷áÃÃôééñãã¤HHŠذ°©SSÆŒŒ::Ñ££‚š44ƒ©RRùóó÷îîÎÒ¥¥°``õëëÝ»»ÈåËËàÀÀ+TUVQ4R;SLKMNO=?@8.9
*:;	<,,*0
*12345+67
()
*+,-./

#$%&'

 !"

	
(0`sssXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXppp£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'’H#¢P'£Q'£Q'£Q'£Q'XXX®hC¤R&¤R&¥R'¤R&¤R&¤R&¤R&¤R&£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'¤R'XXX¥R&þüçøÿÿøÿÿøÿÿùÿÿøÿÿøÿÿøÿÿøÿÿíÿÿðÿÿðÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿôÿÿøÿÿþüç¥S&XXX§S%øÿÿøÿÿøÿÿùÿÿùÿÿùÿÿùÿÿùÿÿøÿÿøÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ§S$XXX¨U$ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ¨U#XXXªV"úÿÿùÿÿùÿÿúÿÿùÿÿúÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿøÿÿ«V"XXX¬W!úÿÿúÿÿúÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ­X XXX®Yûÿÿúÿÿúÿÿùÿÿúÿÿúÿÿûÿÿûÿÿúÿÿúÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿúÿÿ¯X XXX±Zûÿÿûÿÿûÿÿùÿÿûÿÿûÿÿûÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿúÿÿ±ZXXX³\ûÿÿûÿÿûÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿîàØÒ±žùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÖ¸§æØÎùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿûÿÿ³[XXXµ]üÿÿûÿÿüÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿìåߪ_8Èœ„ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿΧ’§Y1êáÚùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿûÿÿµ]XXX¸^ýÿÿüÿÿýÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿìåß«a;©\5òñîùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿöø÷«b<ª_8êáÚùÿÿùÿÿùÿÿùÿÿùÿÿûÿÿ¸_XXX¹`ýÿÿýÿÿýÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿçÚѪ`:£Q'ܼ¬ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÞɼ£Q'¨\5áÏÄùÿÿùÿÿùÿÿùÿÿýÿÿº`XXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ÷ûúΧ’¤T*£Q'Ä”zÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÊ¡Š£Q'£Q'Ì£öø÷ùÿÿùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ®hD£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'£Q'«a:õ÷õùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿèÜÓ·yY£Q'£Q'Å–}éÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËäÕËÊŸˆ£Q'£Q'³rPæØÎùÿÿùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿЬ˜£Q'¥V-îß×ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿíçá§Y1£Q'Éž†øýüùÿÿùÿÿùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÜŶ¤T*³pMøýüùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿµvU£Q'ؼ«ùÿÿùÿÿùÿÿùÿÿùÿÿýÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàŶ¤R)Ù¸¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâǺ£Q'Ú¹¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚ¹¨Å’wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËœ…Õ¯›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúøéÕËôëæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöíééÕËöíéÿÿÿÿÿÿÿÿÿíÜÔéÕËõìçÿÿÿÿÿÿÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðâܪ_8£Q'£Q'Í ‰À‡k£Q'ÞÁ²ÿÿÿÒ©•£Q'À‡kÿÿÿÿÿÿâɼ£Q'°iEÿÿÿùóñ£Q'£Q'ñåßÿÿÿëØÏ¦V-£Q'£Q'üúøëÚѯhD£Q'£Q'£Q'¾…gûø÷ÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼b£Q'¤T*º}]¤T*¨Z2£Q'ÞÁ²ÿÿÿÒ©•£Q'À‡kÿÿÿÿÿÿâɼ£Q'°iEÿÿÿùóñ£Q'£Q'ñåßÿÿÿÇ–|£Q'ª_8´rPúõòª_8£Q'«a:º}]¦W/£Q'È–}ÿÿÿÿÿÿ¼aXXX¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨[4£Q'Úº©ÿÿÿèÓÈ£Q'£Q'ÞÁ²ÿÿÿÒ©•£Q'À‡kÿÿÿÿÿÿâɼ£Q'°iEÿÿÿùóñ£Q'£Q'ñåßÿÿÿÀ‡k£Q'ѧ’ÿÿÿÞÀ±£Q'«a:û÷õÿÿÿã˾£Q'ª^7ÿÿÿÿÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ¤R)£Q'èÝÕùÿÿùÿÿ©^7£Q'ÚÁ²ùÿÿÏ©•£Q'¾‡kÿÿÿùÿÿÞɼ£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿøýüêáÚöø÷ßË¿¾‡k£Q'¨[4ùÿÿýÿÿ¼aXXX¼aýÿÿýÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'¾‡kÿÿÿùÿÿÞɼ£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿïëçÂu¤T*£Q'£Q'£Q'ÁŽsùÿÿýÿÿ¼aXXX¾cþÿÿýÿÿýÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'½…gÿÿÿùÿÿÞɼ£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿ±mJ£Q'£Q'£Q'¦W/Ç™€õ÷õýÿÿþÿÿ¾cXXXÀdÿÿÿÿÿÿþÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'´sQÿÿÿùÿÿؼ¬£Q'¯iEùÿÿóóñ£Q'£Q'ìåßùÿÿ¾‡k£Q'ѯ›ùÿÿêáÚ£Q'¤T*Å–}áÎÂðíéõ÷õùÿÿþÿÿþÿÿÀdXXXÄgÿÿÿÿÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'£Q'ÞÁ²÷ûú¼„f£Q'¶xWùÿÿóóñ£Q'£Q'ìåßëâÜ·zZ£Q'Å–}æØÎêáÚ£Q'­e@ôõóöúø¾‡k£Q'ЦÿÿÿÿÿÿÄgXXXÄgÿÿÿÿÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿ£Q'£Q'êàØùÿÿùÿÿ¯iE£Q'ÚÁ²ùÿÿÏ©•£Q'°lH£Q'£Q'£Q'£Q'̤Žùÿÿóóñ£Q'£Q'ìåß¾‡k£Q'£Q'£Q'¨\5øýü°kG£Q'£Q'£Q'£Q'£Q'ê×ÍÿÿÿÿÿÿÄgXXXÄgÿÿÿÿÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿ¹}]¹}]îèâùÿÿùÿÿÁŽs¹}]âÑÆùÿÿÙ¿°¹}]Ù¿°×´¡ª_8£Q'Ä”zöúøùÿÿõ÷õ¹}]¹}]ðìçÍ¥ª_8£Q'®hD½…gùÿÿîè⿉l£Q'£Q'°lHÛ³ÿÿÿÿÿÿÿÿÿÄgXXXÆhÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿ¾‡k£Q'ѯ›ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿÆiXXXÈi
ÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿóóñ£Q'£Q'ìåßùÿÿÑv£Q'ѯ›ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿÉi[[[Ëk
ÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿóóñ£Q'£Q'ìåßùÿÿöúøÈ›ƒÑ¯›ùÿÿùÿÿÿÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿËk
___Íl
ÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿöúøÒ©•Ò©•óóðùÿÿùÿÿùÿÿöø÷ùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÍl
aaaÏn	ÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÏn	aaaÒoÿÿÿÿÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑpaaaÔpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓqaaaÖrÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÞÜÇÖw```¹c²_­]«[ª\ª[ª\ª\ª\ª[ª[ª\ª\ª\ª\ª\ª[ª[ª\ª\ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª[ª\ª[ª[ª[ª[ª[ª[«\­]µbÄt]]]¼e½f¼e¹c¹b¹c¹b¸c¸b¹b¸b¹b¸b¸c¸b¸b¹b¸c¹c¹c¸b¸b¸b¸b¸b¸b¸b¸b¹b¸b¹c¹c¸c¸c¹bÂoÖŽ@¼h	¹bÈy"Ë}'¸b¤e)qj‹’iPÂtÆtYYYÂjÊnÔrØsÙtÙuÙtØuÙwÙuÙvÚyÚ{ÚzÚ{ÙzÚx
ØvÙwÙwØuØuØuØuØuØuØuØuÙtØtÙvÙvØvÙwÙvê›Eø¼|Ý‚Úyí¤Uù¾Øu{r“FpãcqµÈ‚3ÌwiiiÊoÑyã Sê©^íŸEîŸDî¡Iî¢IîŸDíš:îžBï¢Iì—6ì—3ì˜8í?î@ìœ=íœ>íœ>íœ=íœ=íœ=íœ=íœ=íœ=íœ=íœ=ì™8ë“,ì–0í•0ë“-ë“.ê(ë'ë’,ì•0ì“-ì”0ì–1í˜7íš8ÊŒPß‹,ÛŒ1ÐqÒqÕvØz×x	×vÖsÖsÖsÖsÖsÖsÖtÖtÖt×u×u×u×u×u×w×w×w×w×w×w×w×w×w×u×uÖuÖtÖsÖsÖsÖsÖsÖsÖsÖsÖsÖtØwÙx
×v€€( àšIå”6ç’0ç-æ‘+æ,æ’/æ-æ&äŒ$ç+é*ã‘4·>¼g½d¼c
½d
½d¼b¼c¼cÈx(Ês ³o7|WR®”x}}}à´„åà×äÜÏåÝÐåÜÐäÝÐäÜÐãÚËãÚÌçÛÉìÚ½›zZíÜÿÿÿþÿÿÓ¨¨ú÷÷çÐЕf@翘ëÖÖ÷ùùãÐÐõõõêÝÝÞÅÅúÿÿѨ¨Í¡¡ªXXôððÞÃÃ÷ñð’gDªUUòääž<<éÓÓ•++¨PPÍ››§MM¿~~ž==¬YY²ddºuuñââ99±ccÙ²²Æ¹rrÝ»»“''¾||eD徚µii°dd‘""åÓÓ²hhÕ²²Ä¥MMÚ»»œ::ªWW´mm™33㼜úõõâÎÎçÖÖèÚÚñíííääæÕÕùüüßÇÇóíìcE໹wwñìì¯bbøùùýÿþŠbEÏ¥¥Š¹vvÀ……Ÿ@@ž>>ñæåˆ`EøññªTTá¯^^Ò¥¥…^GÛ¹£ýÿÿûüüÉ––üÿÿìÝÝ×´´×²›úõóùõòøõò÷õòº€b”Y9ŒQ2‹Q2‰O1ŽQ3sP?”””~~~„„„˜™šššššššššš›‘’““”“““““““•–—ŒŽŽŽŽŽŽŽŽŽ„…*††‡ˆ‰‰‰‰Š‹†+„0**€*****‚ƒ*„0*7wxyzzzzz{|}~p*77kq7777rstuvdefg4hijklm40123456789:;<=>)**++++*,-.+**/ !!"!!#$%&'(	

€(0` Œ§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ’H#ÿ¢P'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ§¢Q&ݤR&ÿ¤R&ÿ¥R'ÿ¤R&ÿ¤R&ÿ¤R&ÿ¤R&ÿ¤R&ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ¤R'ÿ§¥R&ÿþüçÿøÿÿÿøÿÿÿøÿÿÿùÿÿÿøÿÿÿøÿÿÿøÿÿÿøÿÿÿíÿÿÿðÿÿÿðÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿôÿÿÿøÿÿÿþüçÿ¥S&ÿ§§S%ÿøÿÿÿøÿÿÿøÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿøÿÿÿøÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ§S$ÿ§¨U$ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¨U#ÿ§ªV"ÿúÿÿÿùÿÿÿùÿÿÿúÿÿÿùÿÿÿúÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿøÿÿÿ«V"ÿ§¬W!ÿúÿÿÿúÿÿÿúÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ­X ÿ§®Yÿûÿÿÿúÿÿÿúÿÿÿùÿÿÿúÿÿÿúÿÿÿûÿÿÿûÿÿÿúÿÿÿúÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿ¯X ÿ§±ZÿûÿÿÿûÿÿÿûÿÿÿùÿÿÿûÿÿÿûÿÿÿûÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿêàØÿÒ±žÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÖ¸§ÿæØÎÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿ±Zÿ§³\ÿûÿÿÿûÿÿÿûÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿìåßÿª_8ÿÈœ„ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿΧ’ÿ§Y1ÿêáÚÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿûÿÿÿ³[ÿ§µ]ÿüÿÿÿûÿÿÿüÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿìåßÿ«a;ÿ¨\5ÿòñîÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿöø÷ÿ«b<ÿª_8ÿêáÚÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿûÿÿÿµ]ÿ§¸^ÿýÿÿÿüÿÿÿýÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿçÚÑÿª`:ÿ£Q'ÿؼ¬ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¨\5ÿáÏÄÿùÿÿÿùÿÿÿùÿÿÿûÿÿÿ¸_ÿ§¹`ÿýÿÿÿýÿÿÿýÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ÷ûúÿΧ’ÿ¤T*ÿ£Q'ÿÄ”zÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÊ¡Šÿ£Q'ÿ£Q'ÿÌ£ÿöø÷ÿùÿÿÿýÿÿÿº`ÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ®hDÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ«a:ÿõ÷õÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿèÜÓÿ·yYÿ£Q'ÿ£Q'ÿÅ–}ÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿäÕËÿÊŸˆÿ£Q'ÿ£Q'ÿ³rPÿæØÎÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿЬ˜ÿ£Q'ÿ¥V-ÿéß×ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿíçáÿ§Y1ÿ£Q'ÿÉž†ÿøýüÿùÿÿÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÜŶÿ¤T*ÿ²pMÿøýüÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿµvUÿ£Q'ÿؼ«ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÜŶÿ¤R)ÿÖ¸¦ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÝǺÿ£Q'ÿÖ¹¨ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿýÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚ¹¨ÿÅ’wÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËœ…ÿÕ¯›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüúøÿéÕËÿôëæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöíéÿéÕËÿöíéÿÿÿÿÿÿÿÿÿÿÿÿÿíÜÔÿéÕËÿõìçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðâÜÿª_8ÿ£Q'ÿ£Q'ÿÍ ‰ÿÀ‡kÿ£Q'ÿÞÁ²ÿÿÿÿÿÒ©•ÿ£Q'ÿÀ‡kÿÿÿÿÿÿÿÿÿâɼÿ£Q'ÿ°iEÿÿÿÿÿùóñÿ£Q'ÿ£Q'ÿñåßÿÿÿÿÿëØÏÿ¦V-ÿ£Q'ÿ£Q'ÿüúøÿëÚÑÿ¯hDÿ£Q'ÿ£Q'ÿ£Q'ÿ¾…gÿûø÷ÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼bÿ£Q'ÿ¤T*ÿº}]ÿ¤T*ÿ¨Z2ÿ£Q'ÿÞÁ²ÿÿÿÿÿÒ©•ÿ£Q'ÿÀ‡kÿÿÿÿÿÿÿÿÿâɼÿ£Q'ÿ°iEÿÿÿÿÿùóñÿ£Q'ÿ£Q'ÿñåßÿÿÿÿÿÇ–|ÿ£Q'ÿª_8ÿ´rPÿúõòÿª_8ÿ£Q'ÿ«a:ÿº}]ÿ¦W/ÿ£Q'ÿÈ–}ÿÿÿÿÿÿÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¨[4ÿ£Q'ÿ׺©ÿùÿÿÿãÓÈÿ£Q'ÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ¾‡kÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿΧ’ÿùÿÿÿÚÀ±ÿ£Q'ÿ«a:ÿõ÷õÿùÿÿÿß˾ÿ£Q'ÿ©^7ÿùÿÿÿýÿÿÿ¼aÿ§¼aÿýÿÿÿýÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¤R)ÿ£Q'ÿèÝÕÿùÿÿÿùÿÿÿ©^7ÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ¾‡kÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿøýüÿêáÚÿöø÷ÿßË¿ÿ¾‡kÿ£Q'ÿ¨[4ÿùÿÿÿýÿÿÿ¼aÿ§¾cÿþÿÿÿýÿÿÿýÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ¾‡kÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿïëçÿÂuÿ¤T*ÿ£Q'ÿ£Q'ÿ£Q'ÿÁŽsÿýÿÿÿþÿÿÿ¾cÿ§Àdÿÿÿÿÿÿÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ½…gÿùÿÿÿùÿÿÿÞɼÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿ±mJÿ£Q'ÿ£Q'ÿ£Q'ÿ¦W/ÿÇ™€ÿõ÷õÿþÿÿÿþÿÿÿÀdÿ§Ägÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ´sQÿùÿÿÿùÿÿÿؼ¬ÿ£Q'ÿ¯iEÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿêáÚÿ£Q'ÿ¤T*ÿÅ–}ÿáÎÂÿðíéÿõ÷õÿÿÿÿÿÿÿÿÿÿÿÿÿÄgÿ§Ägÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ£Q'ÿÚÁ²ÿ÷ûúÿ¼„fÿ£Q'ÿ¶xWÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿëâÜÿ·zZÿ£Q'ÿÅ–}ÿæØÎÿêáÚÿ£Q'ÿ­e@ÿôõóÿöúøÿ¾‡kÿ£Q'ÿЦÿÿÿÿÿÿÿÿÿÄgÿ§Ägÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿ£Q'ÿ£Q'ÿêàØÿùÿÿÿùÿÿÿ¯iEÿ£Q'ÿÚÁ²ÿùÿÿÿÏ©•ÿ£Q'ÿ°lHÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ̤Žÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿ¾‡kÿ£Q'ÿ£Q'ÿ£Q'ÿ¨\5ÿøýüÿ°kGÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿ£Q'ÿê×ÍÿÿÿÿÿÿÿÿÿÄgÿ§Æhÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¹}]ÿ¹}]ÿîèâÿùÿÿÿùÿÿÿÁŽsÿ¹}]ÿâÑÆÿùÿÿÿÙ¿°ÿ¹}]ÿÙ¿°ÿÔ´¡ÿª_8ÿ£Q'ÿÄ”zÿöúøÿùÿÿÿõ÷õÿ¹}]ÿ¹}]ÿðìçÿÍ¥ÿª_8ÿ£Q'ÿ®hDÿ½…gÿùÿÿÿîèâÿ¿‰lÿ£Q'ÿ£Q'ÿ°lHÿÛ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÆiÿ©Èi
ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿ¾‡kÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉiÿ¬!Ëk
ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿÑvÿ£Q'ÿѯ›ÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËk
ÿ®"Íl
ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿóóñÿ£Q'ÿ£Q'ÿìåßÿùÿÿÿöúøÿÈ›ƒÿѯ›ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÍl
ÿ®"Ïn	ÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿöúøÿÏ©•ÿÏ©•ÿóóðÿùÿÿÿùÿÿÿùÿÿÿöø÷ÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÏn	ÿ®"ÒoÿÿÿÿÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑpÿ®"ÔpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓqÿ®!ÖrÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÞÜÇÿÖwÿ­¹cÿ²_ÿ­]ÿ«[ÿª\ÿª[ÿª\ÿª\ÿª\ÿª[ÿª[ÿª\ÿª\ÿª\ÿª\ÿª\ÿª[ÿª[ÿª\ÿª\ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿª\ÿª[ÿª[ÿª[ÿª[ÿª[ÿª[ÿ«\ÿ­]ÿµbÿÄtÿª¼eÿ½fÿ¼eÿ¹cÿ¹bÿ¹cÿ¹bÿ¸cÿ¸bÿ¹bÿ¸bÿ¹bÿ¸bÿ¸cÿ¸bÿ¸bÿ¹bÿ¸cÿ¹cÿ¹cÿ¸bÿ¸bÿ¸bÿ¸bÿ¸bÿ¸bÿ¸bÿ¹bÿ¸bÿ¹cÿ¹cÿ¸cÿ¸cÿ¹bÿÂoÿÖŽ@ÿ¼h	ÿ¹bÿÈy"ÿË}'ÿ¸bÿ¤e)ÿqj‹ÿ’iPÿÂtÿÆtÿ¨ÂjÿÊnÿÔrÿØsÿÙtÿÙuÿÙtÿØuÿÙwÿÙuÿÙvÿÚyÿÚ{ÿÚzÿÚ{ÿÙzÿÚx
ÿØvÿÙwÿÙwÿØuÿØuÿØuÿØuÿØuÿØuÿØuÿÙtÿØtÿÙvÿÙvÿØvÿÙwÿÙvÿê›Eÿø¼|ÿÝ‚ÿÚyÿí¤Uÿù¾ÿØuÿ{r“ÿFpãÿcqµÿÈ‚3ÿÌwÿ–ÊoÿÑyÿã Sÿê©^ÿíŸEÿîŸDÿî¡Iÿî¢IÿîŸDÿíš:ÿîžBÿï¢Iÿì—6ÿì—3ÿì˜8ÿí?ÿî@ÿìœ=ÿíœ>ÿíœ>ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿíœ=ÿì™8ÿë“,ÿì–0ÿí•0ÿë“-ÿë“.ÿê(ÿë'ÿë’,ÿì•0ÿì“-ÿì”0ÿì–1ÿí˜7ÿíš8ÿÊŒPÿß‹,ÿÛŒ1ÿÐqÿJÝw1ÒqÿÕvÿØzÿ×x	ÿ×vÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖtÿÖtÿÖtÿ×uÿ×uÿ×uÿ×uÿ×uÿ×wÿ×wÿ×wÿ×wÿ×wÿ×wÿ×wÿ×wÿ×uÿ×uÿÖuÿÖtÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖsÿÖtÿØwÿÙx
ÿ×vÿ²`W€( @€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‰YBxI1wG0wG0wG0wG0wG0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0wH0xI0rE.pE.xH0xH0~L3b_]€€€¡K¦S(¤O$¢N!¢N!¢N!¢N!¢N!¡N" M"¡M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢M"¢N" M" M"¡O$¤S)¤O"\TP€€€´lAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿ÷ÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÉ—sXRO€€€²j@ÿÿÿÿÿÿþÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÇ—zXRO€€€³h:ÿÿÿüÿÿüÿÿÿÿÿûÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿüÿÿÿÿÿÈ”sYRO€€€µi7ÿÿÿýÿÿúÿÿÿÿÿùÿÿûÿÿûÿÿúÿÿúÿÿúÿÿóõôåáÝúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿæãßïïíúÿÿúÿÿúÿÿûÿÿÿÿÿÊ•rYRO€€€·l6ÿÿÿþÿÿûÿÿÿÿÿüÿÿüÿÿûÿÿúÿÿúÿÿôöõ’nZÅ´ªúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿÐŽŒePðñðúÿÿúÿÿûÿÿÿÿÿÌ–qYSO€€€»n5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõñð”o\’mXýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™vchTñíêÿÿÿÿÿÿÿÿÿΗnYSO€€€»n5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÍÆ†\FyJ2ʸ®ÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍÞÓÍξµzL3ƒW@ÖÈÁÿÿÿÿÿÿΗnYSO€€€¾o1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèàÛ€T=xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0xI0~R:ÞÒÌÿÿÿЙmYSO€€€Áp0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõñð¡€nyJ2×ÊÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÔÎzL3˜taòîìÿÿÿÿÿÿÒšlYSO€€€Ãr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±–‡ƒW@öóñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûùùˆ_I«~ýýýÿÿÿÿÿÿÿÿÿÕ›kYSO€€€Æs-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­·žÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚qÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿÿÿÿ¬xI0›xeű¦¤„sÿÿÿƲ¨{iÿÿÿÿÿÿ§‰y¹¡”ÿÿÿ§‰y¹¡”ÿÿÿȵ«xI0—s`ùöõ£ƒrxI0~R:¸ “ÿÿÿÿÿÿלjZSO€€€Æs-ÿÿÿæÝØxI0”o\¯”…zL3…[Dÿÿÿ²—‰|O6ÿÿÿÿÿÿŠbL¢‚qÿÿÿŠbL¢‚qÿÿÿ™ub…[DƲ¨­yJ2³™‹¥†vxI0ÙËÄÿÿÿלjZSO€€€Æs-ÿÿÿÕÆ¾xI0ØÊÃÿÿÿšwe…[Dÿÿÿ²—‰|O6ÿÿÿÿÿÿŠbL¢‚qÿÿÿŠbL¢‚qÿÿÿjU{iÿÿÿâØÓ̺±ùöõÈ´ªxI0Ʋ¨ÿÿÿלjZSO€€€Æs-ÿÿÿÕÆ¾xI0á×Òúÿÿ¥ˆx…[Dùÿÿ°—‰{M5úÿÿúÿÿŠbL¡‚qúÿÿŠbL¡‚qúÿÿjU|júÿÿóõô¢ƒrxI0xI0}O7æãßÿÿÿלjZSO€€€Év,ÿÿÿÕÆ¾xI0ãÙÓùÿÿ¦ˆx…[Düÿÿ°—‰xI0óöôúÿÿ„YC¡‚qúÿÿŠbL¡‚qúÿÿjU|júÿÿ²›xI0’nZ½ªžìëèüÿÿÿÿÿÙiZTO€€€Ëw*ÿÿÿÕÆ¾xI0ãÙÓüÿÿ¦ˆx…[Dûÿÿ°—‰xI0®”†Ë½´yJ2©Ž~úÿÿŠbL¡‚qÖÍÆ„YCŠcMʼ³©Ž~„YCÛÓͱ™‹‰aKðêèÿÿÿÛžhZTO€€€Íx'ÿÿÿÔÆ¾xI0ãÙÓùÿÿ¥ˆx…[Dúÿÿ°—‰„YC™wexI0zL3ÚÒËúÿÿŠbL¡‚q°—‰xI0xI0™wdßÙÓ€T=xI0xI0 pÿÿÿÿÿÿÝ¡fZTO€€€Ðz&ÿÿÿÿÿÿùÿÿÿÿÿùÿÿùÿÿúÿÿúÿÿúÿÿúÿÿúÿÿÝÖÐìëèúÿÿúÿÿùÿÿùÿÿúÿÿjU|júÿÿûÿÿ÷öõÛÓÍæÞÚùÿÿÿÿÿÿÿÿߢe[TO€€€Ò{$ÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿùÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿùÿÿŠbL¡‚qùÿÿ¯–ˆ|júÿÿúÿÿûÿÿùÿÿûÿÿùÿÿûÿÿÿÿÿà£b[TO€€€×$ÿÿÿÿÿÿúÿÿÿÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿúÿÿ¦‰y·¡”úÿÿúÿÿãßÛúÿÿúÿÿúÿÿúÿÿúÿÿýÿÿÿÿÿÿÿÿâ£b[TO€€€Þ†*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç©c[TO€€€Ô}ÜßÎÚÕ½ÙÒ¹ÙÒ¹ÙÒ¹ÚÓ¹ÚÓ¹ÚÒ¹ÚÓ¹ÚÓ¹ÚÓ¹ÚÓ¹ÙÒ¹ÙÓ¹ÙÒ¹ÚÒ¹ÚÒ¹ÚÒ¹ÙÒ¹ÙÓ¸ØÏ¶ÖͳÙÑ·ØÏµØÏ´ÝÑ´ãÒªÞÜÃÔ7^][€€€³Y©L¢FŸCŸEŸEŸDŸEŸCŸCŸCŸDŸCŸC EŸCŸDŸEŸEŸEžC¤IªS@¦J¦I B‰I KºY```€€€¾fËkÒmÑkÑnÑnÐnÑnÑmÒqÒrÒrÑqÑnÑnÏmÑlÑnÑoÏoÏiå—@ð«bÏjì¡Qö¢Dœf>.jý~r‡Ïottt€€€Ðu
Û‰*í§Vð=ðœ;ðœ;ð?ñ›7ð˜3ñŸ?î—/î–/ð›8ð›7îš5ðš6ï•-ï’&ð”*í‘'íŽ!ð”+ð˜3í$ò™3õž5è•7À‹_Õ‹;Ùx¨¤žÕz݉*݆!܄܄܂ÜÜ܃ÜÜ€݄݄݆݃Ý…Ü‚܃ÜÛ€Ùz
Ùz
Ü€Ù{
Ú{
ã‚
èƒåâ®pÀ€€( @ 
^ƒ‰ˆˆˆˆˆˆˆˆˆwwwÿwwwÿwwwÿrrrÿ]]]ÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿXXXÿbbbÿ–––ÿ•G ”‰>ê…:ðƒ9ðƒ8ðƒ8ðƒ8ðƒ9ðƒ:ðƒ:ðƒ:ðƒ:ðƒ:ðŠF"ÿŠF"ÿŠF"ÿŠF"ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿxG.ÿa^]ÿ¡Kÿ¦S(ÿ¤O$ÿ¢N!ÿ¢N!ÿ¢N!ÿ¢N!ÿ¡N"ÿ M"ÿ¡M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢M"ÿ¢N"ÿ M"ÿ M"ÿ¡O$ÿ¤S)ÿ¤O"ÿ[PJÿ´lAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿÿ÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÉ—sÿaSKÿ²j@ÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÇ—zÿ^RKÿ³h:ÿÿÿÿÿüÿÿÿüÿÿÿûÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿùõóÿèàÛÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿéâÜÿðïìÿúÿÿÿúÿÿÿúÿÿÿüÿÿÿÿÿÿÿÈ”sÿ\QKÿµi7ÿÿÿÿÿýÿÿÿúÿÿÿùÿÿÿûÿÿÿûÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿõöõÿ¢kNÿ̳¤ÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÖøÿ›aCÿòñïÿúÿÿÿúÿÿÿûÿÿÿÿÿÿÿÊ•rÿ]RKÿ·l6ÿÿÿÿÿþÿÿÿûÿÿÿüÿÿÿüÿÿÿûÿÿÿúÿÿÿúÿÿÿúÿÿÿòñïÿ¢lPÿ¡iLÿùýüÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ¦sXÿeGÿïìèÿúÿÿÿûÿÿÿÿÿÿÿÌ–qÿ^RKÿ»n5ÿÿÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿÛÌÂÿ–Y8ÿ‹F#ÿѶ¨ÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿßÒÉÿÒ¼¯ÿŒH$ÿ“T2ÿØÇ¼ÿûÿÿÿÿÿÿÿΗnÿ^RKÿ¾o1ÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿçßÙÿ‘Q/ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿŠE!ÿN+ÿßÑÈÿÿÿÿÿЙmÿ^RKÿÁp0ÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿòñïÿ¬}dÿ‹F#ÿÝɾÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿßÓÊÿŒH$ÿ¥qVÿðîêÿûÿÿÿÿÿÿÿÒšlÿ_RKÿÃr.ÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ¹“ÿ“T2ÿóóðÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ÷ùøÿ˜\<ÿ´‹tÿùýüÿúÿÿÿûÿÿÿÿÿÿÿÕ›kÿ_TLÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸ŽxÿÀ›ˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˬœÿ¯fÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÿÿÿÿ·ŒvÿŠE!ÿ¨uZÿͯ ÿ°iÿÿÿÿÿα¡ÿªx^ÿÿÿÿÿÿÿÿÿ³†oÿßÿÿÿÿÿ³†oÿßÿÿÿÿÿϳ¥ÿŠE!ÿ¥pTÿúöõÿ¯hÿŠE!ÿN+ÿž‹ÿÿÿÿÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿéÜÕÿŠE!ÿ£lPÿº‘|ÿŒH$ÿ•W7ÿÿÿÿÿ¼•€ÿŽK(ÿÿÿÿÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿ¦rWÿ•W7ÿα¡ÿ¸Žxÿ‹F#ÿ½–‚ÿ±ƒlÿŠE!ÿÞÊÀÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÚźÿŠE!ÿÝÉ¿ÿÿÿÿÿ¨tYÿ•W7ÿÿÿÿÿ¼•€ÿŽK(ÿÿÿÿÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿš^?ÿ¯fÿÿÿÿÿŸfIÿªx^ÿÿÿÿÿæ×ÏÿÓ¹«ÿúöõÿϳ¤ÿŠE!ÿα¡ÿÿÿÿÿÕ›kÿ[UQÿÃr.ÿÿÿÿÿÿÿÿÿÖźÿŠE!ÿâÖÎÿúÿÿÿ±†nÿ•W7ÿúÿÿÿº•€ÿI&ÿÿÿÿÿúÿÿÿ™^?ÿ­fÿúÿÿÿ™^?ÿ­fÿúÿÿÿžfIÿªy_ÿúÿÿÿôõóÿ®hÿŠE!ÿŠE!ÿŽL)ÿéâÜÿÿÿÿÿÕ›kÿ[UQÿÆs-ÿÿÿÿÿÿÿÿÿÖźÿŠE!ÿâØÐÿùÿÿÿ±†nÿ•W7ÿúÿÿÿº•€ÿŠE!ÿùöôÿúÿÿÿ”V5ÿ­fÿúÿÿÿ™^?ÿ­fÿúÿÿÿžfIÿªy_ÿúÿÿÿ¼™…ÿŠE!ÿ¡kNÿƨ—ÿîëçÿúÿÿÿÿÿÿÿלjÿ\UQÿÉv,ÿÿÿÿÿÿÿÿÿןÿŠE!ÿãØÐÿüÿÿÿ²†nÿ•W7ÿúÿÿÿº•€ÿŠE!ÿº’}ÿÑ»®ÿ‹F#ÿ´‹uÿúÿÿÿ™^?ÿ­fÿÛËÁÿ”V5ÿš_@ÿÑ»­ÿ´‹uÿ”V5ÿßÒÉÿ»—ƒÿ™^>ÿïêæÿÿÿÿÿÙiÿ\UQÿËw*ÿÿÿÿÿÿÿÿÿÖźÿŠE!ÿäØÐÿûÿÿÿ±†nÿ•W7ÿúÿÿÿº•€ÿ”V5ÿ¨tYÿŠE!ÿŒH$ÿÞÑÈÿúÿÿÿ™^?ÿ­fÿº•€ÿŠE!ÿŠE!ÿ¦tYÿâØÐÿ‘Q/ÿŠE!ÿŠE!ÿ¬~fÿÿÿÿÿÿÿÿÿÛžhÿ\UQÿÍx'ÿÿÿÿÿþÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿáÕÍÿîëçÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿžfIÿªy_ÿúÿÿÿúÿÿÿõöõÿßÒÉÿåÞ×ÿùÿÿÿÿÿÿÿÿÿÿÿÝ¡fÿ\UQÿÐz&ÿÿÿÿÿÿÿÿÿùÿÿÿùÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ™^?ÿ­fÿúÿÿÿº”€ÿªy_ÿúÿÿÿûÿÿÿýÿÿÿûÿÿÿþÿÿÿùÿÿÿÿÿÿÿÿÿÿÿߢeÿ\UQÿÒ{$ÿÿÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿùÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿúÿÿÿúÿÿÿùÿÿÿùÿÿÿ³†oÿÁŸÿùÿÿÿúÿÿÿæÞØÿúÿÿÿúÿÿÿûÿÿÿùÿÿÿûÿÿÿùÿÿÿûÿÿÿÿÿÿÿà£bÿ\UQÿ×$ÿÿÿÿÿÿÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿÿÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿýÿÿÿÿÿÿÿÿÿÿÿâ£bÿ\UQÿÞ†*ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç©cÿ\UQÿÔ}ÿÜßÎÿÚÕ½ÿÙÒ¹ÿÙÒ¹ÿÚÓ¹ÿÚÓ¹ÿÚÒ¹ÿÚÓ¹ÿÚÓ¹ÿÚÓ¹ÿÚÓ¹ÿÙÒ¹ÿÙÒ¹ÿÙÓ¹ÿÙÒ¹ÿÙÒ¹ÿÚÒ¹ÿÚÒ¹ÿÚÒ¹ÿÙÒ¹ÿÙÓ¸ÿØÏ¶ÿÖͳÿÙÑ·ÿØÏµÿØÏ´ÿÝÑ´ÿãÒªÿÞÜÃÿÔ7ÿ`^]ÿ³Yÿ©Lÿ¢FÿŸCÿŸEÿŸDÿŸEÿŸCÿŸCÿŸCÿŸDÿŸCÿŸCÿŸCÿ EÿŸCÿŸCÿŸDÿŸEÿŸEÿŸEÿžCÿ¤IÿªSÿ@ÿ¦Jÿ¦Iÿ Bÿ‰Iÿ KÿºYÿ```ÿ¾fÿËkÿÒmÿÑkÿÑnÿÐnÿÑnÿÑmÿÒqÿÒrÿÒrÿÑqÿÑnÿÑnÿÑnÿÏmÿÏmÿÑlÿÑnÿÑoÿÏoÿÏiÿå—@ÿð«bÿÏjÿì¡Qÿö¢Dÿœf>ÿ.jýÿ~r‡ÿÏoÿnnnÿÍnòÛ‰*ÿí§Vÿð=ÿðœ;ÿð?ÿñ›7ÿð˜3ÿñŸ?ÿî—/ÿî–/ÿð›8ÿð›7ÿð›7ÿîš5ÿðš6ÿðš6ÿï•-ÿï’&ÿð”*ÿí‘'ÿíŽ!ÿð”+ÿð˜3ÿí$ÿò™3ÿõž5ÿè•7ÿÀ‹_ÿÕ‹;ÿÙxÿ¡˜ÿÚtbÕxýÜ„ÿÜ€þÛ}þÛ{
þÛzþÛz
þÛ|þÛz	þÛy
þÜ|þÜ}þÜ~ÿÜ~ÿÜ€ÿ݆ÿÝ…ÿÜ‚ÿ܃ÿÜÿÛ€ÿÙz
ÿÙz
ÿÜ€ÿÙ{
ÿÚ{
ÿã‚
ÿèƒÿåÿâ¬oÿòòòÿ(  ïïïÿ”””ÿÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ~~~ÿ}}}ÿ„„„ÿ°°°ÿº€bÿ”Y9ÿŒQ1ÿŒQ1ÿ‹Q1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿŒQ1ÿ‰O1ÿŽQ3ÿrP?ÿÿײ›ÿúõóÿùõòÿøõòÿ÷õòÿùõòÿùõòÿùõòÿùõòÿùõòÿùõòÿùõòÿúõóÿùõòÿ…^GÿÿÛ¹£ÿÿÿÿÿýÿÿÿýÿÿÿûüüÿÉ––ÿüÿÿÿüÿÿÿüÿÿÿüÿÿÿìÝÝÿ×´´ÿýÿÿÿþÿÿÿ…^GÿÿݹŸÿÿÿÿÿúÿÿÿôññÿ¨TTÿÝÂÂÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿ­^^ÿÐ¥¥ÿýÿþÿˆ`EÿÿÛµ™ñÿÿÿÿÿÿÿÿÒ¥¥ÿŠÿ»vvÿÂ……ÿÂ……ÿÂ……ÿÂ……ÿÂ……ÿ @@ÿŸ>>ÿóææÿwH'ÛpÞ·—ñÿÿÿÿúÿÿÿúÿÿÿæÕÕÿ¹wwÿúÿÿÿúÿÿÿúÿÿÿúÿÿÿñììÿ¯bbÿøùùÿýÿþÿwH'ÛpḖñúõõÿâÎÎÿçÖÖÿõõõÿèÚÚÿñííÿíääÿæÕÕÿùüüÿßÇÇÿõõõÿÞÃÃÿóíìÿzI&Ûp五ñµiiÿ°ddÿ‘""ÿåÓÓÿ²hhÿÕ²²ÿÄÿ¥MMÿÚ»»ÿœ::ÿªWWÿ´mmÿ™33ÿ}L%Ûp五ñªUUÿñââÿ99ÿéÓÓÿ±ccÿÙ²²ÿÆÿ§MMÿÙ²²ÿ¹rrÿÝ»»ÿ“''ÿ¾||ÿ}L%Ûpæ»’ñªUUÿòääÿž<<ÿéÓÓÿ•++ÿ¨PPÿÍ››ÿ§MMÿ¿~~ÿž==ÿ¬YYÿ²ddÿºuuÿ€N%Ûpæ»’ñëÖÖÿ÷ùùÿãÐÐÿõõõÿêÝÝÿÞÅÅÿúÿÿÿѨ¨ÿÍ¡¡ÿªXXÿôððÿÞÃÃÿ÷ñðÿ€N%ÛpìÀ–ñÿÿÿÿÿÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÓ¨¨ÿú÷÷ÿçÐÐÿþÿÿÿÿÿÿÿÿÿÿÿƒM!ÛpÞ°}ñåà×ÿäÜÏÿåÝÐÿåÜÐÿåÜÐÿäÝÐÿåÜÐÿåÜÐÿäÜÐÿãÚËÿãÚÌÿçÛÉÿìÚ½ÿŠc>Úpºcø½dÿ¼c
ÿ½d
ÿ½d
ÿ½dÿ¼c
ÿ¼bÿ¼cÿ¼cÿÈx(ÿÊs ÿ³o7ÿ|WRÿšzWÍRÖy
ÀäŽ*ñå‰ëå‡ëäˆëä†ëä‰ëä‡ëä…ëâ‚ëå†ëç‡ëáˆ$ìË1ï¿mp	(0`€€€@@@   ÀÀÀAAA€aaa___000```A°°°¿¿¿ÿÿÿàààû÷÷Àöííúõõ÷îîìÙÙ¶mmĉ‰¯^^¨PP @@îÝÝ­ZZÝ»»Ð¡¡Èбbbùóóñãã¾||‘""¦LL©RR“''Ò¥¥èÑÑ‘##Ò¤¤½zzˆþüü“&&âÄÄüùù¥KKœ99êÕÕž<<³ffâÅÅéÓÓøññ¾}}™22΂Û··òååׯ¯”))„		µjjñââ®\\æÍ͉Ù³³‡Ì™™ß¾¾¿Ñ¢¢‹Ù²²£FF†

²ee˜00øððºttãÆÆƒäÈÈàÁÁðááæÌÌ̘˜¯__·ooÔ©©Ë––Ö­­–--›66ΜœÂ……èÐÐíÛÛ†¸qqåËË;;¹ssºuu¼yyäÉÉ‹ذ°Ü¹¹Œõë댷nnÆŒŒË——ÐÐÐ   ~}+{|9!zPl:w/xy!:st?u/v3P@"qr&R#no8]]]]]]]]]]]]]]]]]pW9i[jklm0c@f0ghcIde``ab]^B]B_]$6!Y-C,Z[\&'T@@U-C,V!WX!RE8MNO-C,PQR#SKIJK-C,0:LM+,-C,GH@+,-'C,DEF#+,->?,:@8AB#+,--3456789:;<=+,-)./012 !"#$%!&'()*



		units-2.23/unitsfile.ico0000664000175000017500000005372612314123647014600 0ustar  adrianadrian00¨f  ¨h¶00 ¨%   ¨ÆB hnS(0`çççæææåååäääèèèãããÛÛÛàààÙÙÙÝÝÝÖÖÖÆÆÆÅÅÅÄÄÄÃÃÃÇÇÇÈÈÈÞÞÞÔÔÔÕÕÕûûûÏÏÏÂÂÂÿÿÿÉÉÉ¿¿¿ªªªÑÑÑÔÉȽ½½¦¦¦ÐÐо¾¾¥¥¥ÎÎÎÀÀÀâââÊÊÊÁÁÁ©©©ÌÌÌ®®®¢¢¢¨¨¨¶¶¶ÒÒÒ÷÷÷ËËË¡¡¡‚‚‚yyyzzz¹¹¹øøø¯¯¯   “““ŒŒŒ‰‰‰™™™°°°óóó×××ÚÚÚÍÍÍ´´´«««£££µµµÜÜÜááẺº¼¼¼ßßßÓÓÓëëëêêêÌ‹sÌŠr̉qˈpˈoˇnʆnʆmÊ…lÊ„kÉ„jɃjÉ‚iÈ‚hÈgÈ€fÇeÇ~dÇ~cÆ}bÆ|bÆ|aÆ{`Åz_Åz^Åy^Äx]Äx\Äw[ÄvZÃvZÃuYÃtXÂtWÂsVÂrVÂrUÁqTÁpSÁpRÀoQÀnQÀnP¿mO¿lN¿lM¿kM¾jL¾jK¾iJ½hI½gH½fG¼fF»dD»cC»bB»bAºaA¼dEº`?¹_>¹^=º`@¸\;¹]<·Z9·Z8ùùùúúú¶X5¶W5µV3µU2µT1¸\:¸[9·Y7·X6¶V4ýýýþþþüüüŸ     ŸŸŸŸŸŸ ¡      ”””   “   “““Ÿ›‘’œœ•–žž—˜™™™™™™˜˜—ž–••œ’‘‘›šŒ‹𛑑’œ••–ž—˜˜™™™™™™˜—žž–•œ’’‘›š‹Œšš›‘’œœ•–žž—˜™™™™™™˜——ž–•œ’‘›‡ˆ‰Ž‹‹Œš›‘‘’œ•––ž—˜™™™™™™™˜—ž––•Š……†‡ˆ‰‰Ž‹Œš››‘’œ•–ž——˜™™™™™™˜——‚ƒ„‡ˆ‰ŒŒ‘’’––™™™€€Š…†ˆ‰ŽŒ’—˜|}€‚ƒ„Š…†ˆ‰ŒŒ‘’’•–”xy|}}€ƒ„„…†ˆ‰‹Œ‘’““”uvxyz|}~€ƒ„Š…ˆˆ‰Žqruuvyyz}}~ƒ„Š…†‹Œnoqrsuvwyz{}~€‚ƒ„…†‡ˆˆ‰jkmnoqrsuvyz}}ƒ„…†ggjkknoovwy~‚ƒ„cdfghjklmnqrsuz{€_`abccdefgghijkklmnoopqrsuvwwxyz{{|}~]^^^_`aabcdeefghiijklnoqrstuuvwxyzzYZ[\\]^^__`abccdefgghkklnoopqrsttuvwVVWXYZZ[\]^^^_`aabcdeefghiijklmnnopqrrsRSTTUVWXXYZ[\\]^^__`abccdefghhijkllmnopOPPQRRSTUVVWXYZZ[\]^^^_`abbcdeffghijjkl%MNHH%K	@LLGHA&!IJ@AB$CDE9E(FG.'89:;<2=>? 0-12345367)
*+,-./&'()$%#!"# 



	
ÿÿÿÿÿÿÿÿÿÿÿÿÿðÿðÿðÿðÿðÿðÿðÿðàààààààààààààààààààààÿðÿðÿðÿðÿðÿðÿðÿðÿðÿð?ÿðÿðÿÿðÿÿðÿÿðÿÿðÿÿðÿ( @çççæææåååäääèèèáááüüüÖÖÖâââÔÉÈÇÇÇÿÿÿÛÛÛÈÈÈØØØÍÍͪªª•••ºººòòòÚÚÚ´´´›››………éééßßßÒÒÒÉÉÉÂÂÂîîîïïïðððíííÊ„kɃjÉ‚iÈ€gÈ€fÇ~eÇ}cÆ|bÆ{aÅz_Åx^Äw\Äv[ÃuZÃtXÃsWÂrVÁpTÁoRÁnRÀmP¿lN¿kN¿jL¾hJ½gI½fH½eFÉhÇ~dÇ|bÅy^Åx]ÃtYèËÁ߸ªË…m¾iK¼dF¼cDÈfÆz`ÄvZÂqUÁpSôéåéÐÇÀlOâ¾²ëÓ˽fG»bC»aBÞÞÞÏ{ÇfÀnQ¿jMñâÜëÒÊ¿kỎq»`Aº_?×£‘Ñ”éÍÄöïìäÁµ÷ðííØÑûúùÏ‘{ôèäéÎÅá¼°ìÖÏÊ„løòðè̺^>¹]=õõõ֢В}èÍÃãÀ´äÁ¶Ö¡ŽüûûåźéÎÄÎzöîìóçâÔ›ˆã¶öîëʆnß¶¨óçã¸[:㿳ÃsX÷ïìñáÛêÑÈÞ¶¨îÜÕØ§–¿mO¸Z:·Y8öööÕŸÏzçËÂ⿲ûùøèÍÄðàÛêÐǽgHçÉ¿úöõ·W6÷÷÷Õž‹Ò˜…â¾±ú÷÷¼dEðàÚÒ—„»bBÓ›ˆÔœ‰¶U3àààøøøÍ‹tðÞØãÁµá½°ú÷öèÌÃçËÁìÕÎõìéÕŸŒûûúÞ´¥äĹʅlùùù寻ì×ÏÙ©˜Ø¥”ݱ¢º`@åĹܯ ¹\<º`?æÇ¼ùôóÛ¬œ¶V4¶V5úúú¹^>¹\;·X7·X6ûûû¸Z9ýýýÊÊÊËËËÕÕÕþþþìììÕÕÕÕÙÙÙÙÙÕÕÕÕÙÙÙ









					ÚÖÖÖÖÖÖÖÖÖ×Ö×××רÙ;I<>?JKªbÄtuljÔÑÒÍ­­­Ì¡Ò”“ÐÇ	Õ9:;<=>?§WªbctuГÔѡͭ­­Ì¡ÑÔ“\89]I<=VJ§WXbcÏÇГ”ѡ̭­­ÍÒÑ®ÓP6¿ÀÁµ<ÂUJK¿ÃÄÅÆÇ¬pÈÉÊËÌÍ®Î4°±²k…;³´>?ˆµª‚¶t·¸¹³º»¼½­®¾2£¤6j…9¥¦<=ˆy§ˆsb¨ŽuA©ª«¬­®¯N–—O˜…\™š]Im›VˆyWœcžŸ 4¡¢D|l3sPŠ‹:Œn<ˆyJŽX‘’“”•-wx1yg4z{|}~;m€‚ƒ„…†‡ˆ7‰v+de/fg2hijkl9mnopqrstuvA*+MC./N124Z[6\89]^_=V`aAXbcY(LAB+MCD/NE34OPQRSTUI<>VJKWXY&@()AB,-CD01E34FG78H:;I<>?JK$%&'()*+,-./0123456789:;<=>? !!"#
















	






	ÿÿÿÿÿÿÿÿÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿà?ÿà( ÉÉÉää䟟Ÿûûû¹¹¹öööèèèÔÉÈÀÀÀºººÅÅÅÔÔÔµµµ£££¿¿¿íííéééåååçççɃiÈ€fÇ~dÆ|aÅz_Åx]ÄvZÃtXÁpSÀnP¿lN¾jK¾hIÂrU½fG¼cDº_?¸[:·Y8úúú»aA¹]=·X6·Y7¸[9¹]<º_>øøøþþþÿÿÿüüüýýýÞÞÞ¤¤¤¥¥¥4566722311111'011/ "#($)%&*+,-. #$% #$%&' #$% ! "# 
	
ààààààààð(0` 	&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&	VsssssssssssssssssssssssssssssssV&ýýýÿþþþÿþþþÿþþþÿþþþÿþþþÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ýýýÿýýýÿýýýÿýýýÿýýýÿýýýÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&üüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&úúúÿúúúÿúúúÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ùùùÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&&ùùùÿùùùÿùùùÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿýýýÿûûûÿûûûÿûûûÿûûûÿÿÿÿÿ&¸[9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·Y7ÿ·X6ÿ¶X5ÿ¶W5ÿ¶V4ÿ¶V4ÿµV3ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµU2ÿµV3ÿ¶V4ÿ¶W5ÿ¶X5ÿ¶X5ÿ·X6ÿ·Y7ÿ·Z8ÿ·Z9ÿ·Z9ÿ¸[9ÿ¸\:ÿ¸\;ÿ¹]<ÿ¹^=ÿ¹^=ÿ¹^=ÿ¹_>ÿº`?ÿûûûÿûûûÿûûûÿ&¹]<ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸[9ÿ·Z9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·X6ÿ¶X5ÿ¶X5ÿ¶W5ÿ¶V4ÿµV3ÿµU2ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµV3ÿ¶V4ÿ¶V4ÿ¶W5ÿ¶X5ÿ·X6ÿ·Y7ÿ·Z8ÿ·Z8ÿ·Z9ÿ¸[9ÿ¸\:ÿ¸\;ÿ¸\;ÿ¹]<ÿûûûÿûûûÿûûûÿ&º`?ÿ¹_>ÿ¹^=ÿ¹^=ÿ¹^=ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸\:ÿ¸[9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·Y7ÿ·X6ÿ¶X5ÿ¶W5ÿ¶V4ÿ¶V4ÿµV3ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµV3ÿµV3ÿ¶V4ÿ¶W5ÿ¶X5ÿ·X6ÿ·X6ÿ·Y7ÿ·Z8ÿ·Z9ÿ¸[9ÿûûûÿûûûÿûûûÿ&»bBÿ»bAÿºaAÿº`@ÿº`?ÿº`?ÿ¹_>ÿ¹^=ÿ¹^=ÿ¹]<ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸[9ÿ·Z9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·X6ÿ¶X5ÿ¶W5ÿ¶W5ÿ¶V4ÿµV3ÿµU2ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµT1ÿµU2ÿµV3ÿ¶V4ÿ¶W5ÿ¶W5ÿ¶X5ÿ·X6ÿûûûÿûûûÿûûûÿ&	¼dEÿ»dDÿ»dDÿ½hIÿˇoÿÃtWÿºaAÿºaAÿº`@ÿº`?ÿ¹_>ÿ¹^=ÿ¹^=ÿ¹^=ÿ¹]<ÿ¸\;ÿ¸\:ÿ¸[9ÿ¸[9ÿ·Z9ÿ·Z8ÿ·Y7ÿ·X6ÿ·X6ÿ¶X5ÿ¶W5ÿ½gHÿÆ~cÿ¼gGÿµU2ÿµT1ÿµT1ÿÃuYÿÆ|bÿ½fGÿµT1ÿµU2ÿµV3ÿµV3ÿûûûÿûûûÿûûûÿ&
½gHÿ½fGÿÆ~dÿöïíÿûûûÿûûûÿÞ·¨ÿçÌÂÿûûûÿÒ˜„ÿ»bAÿÚ­ÿûûûÿçËÀÿ¹_>ÿ¹_>ÿÎxÿûûûÿòåáÿ¸\;ÿ¼gHÿûûûÿûûûÿÁrVÿ·Z8ÿÆ~cÿù÷öÿûûûÿûûûÿ¸\;ÿÅz`ÿòåáÿûûûÿûûûÿûûûÿæÉ¿ÿ¸[9ÿµT1ÿµT1ÿûûûÿûûûÿûûûÿ&
¾iJÿ¾iJÿêÓÊÿûûûÿúùøÿìÖÎÿúùøÿøóòÿûûûÿÒš†ÿ»dDÿÛ®žÿûûûÿçËÁÿ»bAÿºaAÿÎzÿûûûÿòæáÿ¹_>ÿ½hJÿûûûÿûûûÿÃtXÿ¸\;ÿἯÿûûûÿöïìÿîÝ×ÿ»cCÿöîìÿûûûÿõìéÿêÒÊÿùõôÿûûûÿß¹«ÿµV3ÿµU2ÿûûûÿûûûÿûûûÿ&
¿lMÿ¿kMÿ÷óñÿûûûÿÖ¤‘ÿ¾iJÿÍvÿûûûÿûûûÿÓœˆÿ½fGÿÛ¯ŸÿûûûÿçÌÂÿ¼dEÿ»dDÿÏ“}ÿûûûÿòæâÿ»bAÿ¾kMÿûûûÿûûûÿÃvZÿ¹_>ÿæÊÀÿûûûÿÚ­œÿ¸\;ÿЖÿûûûÿõíêÿºbBÿ·Z8ÿËŠsÿûûûÿöïìÿ¶X5ÿ¶W5ÿûûûÿûûûÿúúúÿ&
ÀnQÿÀnPÿûúúÿûûûÿˈoÿ¿kMÿ¿kMÿöðîÿûûûÿÔ‰ÿ½hIÿܰ¡ÿûûûÿèÍÃÿ½fGÿ¼fFÿЕÿûûûÿòæâÿ»dDÿ¿mOÿûûûÿûûûÿÅy]ÿºaAÿçËÁÿûûûÿا–ÿ¹_>ÿ¹^=ÿº`?ÿÄy^ÿ¼cCÿÌ‹tÿæÉ¿ÿûûûÿ÷òðÿ·Z9ÿ·Z8ÿùùùÿùùùÿúúúÿ&
ÁpSÿÁpRÿûûûÿûûûÿˇpÿÀnPÿ¿mOÿóçãÿûûûÿÔŸ‹ÿ¿kMÿܱ¢ÿûûûÿèÎÄÿ¾iJÿ½hIÿЖÿûûûÿóçãÿ½fGÿÀpRÿûûûÿûûûÿÅz`ÿ»dDÿçÌÂÿûûûÿÙ©—ÿ»bAÿºaAÿÁrUÿä÷ÿúùøÿûûûÿûûûÿûûûÿäøÿ¸\;ÿ¸\;ÿûûûÿûûûÿûûûÿ&
ÂsVÿÂrVÿûûûÿûûûÿˉqÿÁpSÿÁpRÿóèäÿûûûÿÕ ÿÀnPÿݳ¤ÿûûûÿéÑÇÿ¿kMÿ¿kMÿÑ—ƒÿûûûÿóçãÿ½hIÿÁrUÿûûûÿûûûÿÆ|bÿ¼fFÿçÌÂÿûûûÿÙª™ÿ»dDÿ»cCÿñãÞÿûûûÿûûûÿûûûÿùöôÿà»®ÿ½gHÿ¹_>ÿ¹^=ÿûûûÿûûûÿûûûÿ&
ÃuYÿÃtXÿûûûÿûûûÿÌ‹tÿÂrVÿÂrUÿóèäÿûûûÿÖ¡ÿÁpRÿÝ´¥ÿûûûÿïßÚÿÀnPÿ¿mOÿÖ£ÿûûûÿóçãÿ¿kMÿÂtXÿûûûÿûûûÿÇdÿ½hIÿèÍÃÿûûûÿÚ«›ÿ½fGÿÇ€eÿûûûÿúùøÿ⿲ÿÍŽwÿÂrVÿ¾iKÿ»bAÿ»bAÿºaAÿûûûÿûûûÿûûûÿ&
Äx\ÿÄw[ÿûûûÿûûûÿÍŽwÿÃuYÿÃtXÿóéåÿûûûÿÖ£‘ÿÂrVÿÞµ§ÿûûûÿûûûÿÖ¡ÿÂsVÿêÒÉÿûûûÿîÜÕÿÀnPÿÃvZÿûûûÿûûûÿÈ€gÿɃjÿíÙÒÿûûûÿãÁ´ÿˉqÿÈhÿûûûÿôêæÿÀnQÿ¾kLÿçÌÂÿûûûÿܱ¢ÿ»dDÿ»cCÿûûûÿûûûÿûûûÿ&
Åz^ÿÅz^ÿûûûÿûûûÿÎyÿÄw[ÿÄw[ÿóéåÿûûûÿ×¥“ÿÃtXÿß¶¨ÿûûûÿòæâÿûûûÿûûûÿûûûÿûûûÿß¹«ÿÁpRÿÄx\ÿûûûÿûûûÿɃiÿèÏÅÿûûûÿûûûÿûûûÿ÷òðÿ¿lNÿòåáÿûûûÿûûûÿûûûÿûûûÿûûûÿˉqÿ½fGÿ¼fFÿûûûÿûûûÿûûûÿ&
Æ|bÿÆ|aÿîÛÔÿîÛÔÿÌ‹tÿÅz^ÿÅy^ÿèÍÃÿíÚÔÿÓ›†ÿÄw[ÿا•ÿíÚÓÿا•ÿÛ¯Ÿÿ÷ðîÿûûûÿåǼÿÄw[ÿÂrVÿÅx]ÿíÙÑÿíØÑÿÇeÿ߸©ÿöðîÿûûûÿóèäÿéÑÈÿ¿mOÿÇeÿèÍÃÿûûûÿûûûÿòåàÿÓ‰ÿ¾iJÿ½hIÿ½hIÿûûûÿûûûÿûûûÿ&
ÇeÿÇ~dÿÇ~cÿÆ}bÿÆ|bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz^ÿÅz^ÿÅy^ÿÄx]ÿÄx\ÿÄw[ÿÄw[ÿÄvZÿÃvZÿÃuYÿÃtXÿÃtXÿÂtWÿÂsVÿÂrVÿÂrUÿéÐÇÿûûûÿܰ ÿÁpRÿÀoQÿÀoQÿÀnQÿÀnPÿ¿mOÿ¿lNÿ¿lNÿ¿lMÿ¿kMÿ¾jLÿûûûÿûûûÿûûûÿ&
ÈgÿÈ€fÿÈ€fÿÈ€fÿÇeÿÇ~dÿÇ~cÿÇ~cÿÆ}bÿÆ|bÿÆ|aÿÆ{`ÿÆ{`ÿÅz_ÿÅz^ÿÅy^ÿÄx]ÿÄx]ÿÄx\ÿÄw[ÿÈeÿûûûÿûûûÿˉqÿÃtXÿæÉ¿ÿûûûÿܲ¢ÿÂrVÿÂrUÿÁqTÿÁpSÿÁpSÿÁpRÿÀoQÿÀnQÿÀnPÿ¿mOÿ¿mOÿûûûÿûûûÿûûûÿ&
É„jÿɃjÿÉ‚iÿÈ‚hÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÇeÿÇeÿÇ~dÿÇ~cÿÆ}bÿÆ|bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz^ÿÅz^ÿÉ‚hÿûûûÿûûûÿÌ‹sÿÄw[ÿÆz_ÿã¶ÿݳ¤ÿÃtXÿÃtXÿÂtWÿÂsVÿÂrVÿÂrUÿÁqTÿÁqTÿÁpSÿÁpRÿÀoQÿûûûÿûûûÿûûûÿ&
ʆmÿʆmÿÊ…lÿÊ„kÿÉ„jÿɃjÿɃjÿÉ‚iÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÈ€fÿÇeÿÇ~dÿÇ~cÿÇ~cÿÆ}bÿÆ|bÿÆ|aÿÈeÿຬÿ๬ÿɃiÿÅy^ÿÄx]ÿÄx]ÿÆ}bÿÄw[ÿÄvZÿÃvZÿÃuYÿÃuYÿÃtXÿÂtWÿÂsVÿÂrVÿÂrVÿÂrUÿûûûÿûûûÿûûûÿ&	ˈpÿˈoÿˇnÿˇnÿʆnÿʆmÿÊ…lÿÊ„kÿÊ„kÿÉ„jÿɃjÿÉ‚iÿÈ‚hÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÇeÿÇeÿÇ~dÿÇ~cÿÆ}bÿÆ|bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz^ÿÅy^ÿÅy^ÿÄx]ÿÄx\ÿÄw[ÿÄvZÿÄvZÿÃvZÿÃuYÿÃtXÿÂtWÿûûûÿûûûÿûûûÿ&Ì‹sÿÌŠrÿÌŠrÿ̉qÿˈpÿˈpÿˈoÿˇnÿʆnÿʆmÿʆmÿÊ…lÿÊ„kÿÉ„jÿɃjÿɃjÿÉ‚iÿÈ‚hÿÈgÿÈ€fÿÈ€fÿÈ€fÿÇeÿÇ~dÿÇ~cÿÆ}bÿÆ}bÿÆ|bÿÆ|aÿÆ{`ÿÅz_ÿÅz_ÿÅz^ÿÅy^ÿÄx]ÿÄx\ÿÄx\ÿÄw[ÿÄvZÿûûûÿûûûÿûûûÿ&&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ&&ûûûÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿâââÿëëëÿêêêÿèèèÿçççÿäääÿãããÿáááÿáááÿâââÿãããÿçççÿ&&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÞÞÞÿçççÿäääÿßßßÿÙÙÙÿ×××ÿÓÓÓÿÑÑÑÿÑÑÑÿÓÓÓÿÖÖÖÿÜÜÜÿ#&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÛÛÛÿáááÿÚÚÚÿÑÑÑÿÊÊÊÿÃÃÃÿ¾¾¾ÿºººÿ¼¼¼ÿ¿¿¿ÿÆÆÆÿÑÑÑÿ&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ×××ÿÚÚÚÿÍÍÍÿÀÀÀÿ´´´ÿ«««ÿ£££ÿ   ÿ£££ÿ©©©ÿµµµÿÜÜÜÑ&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÒÒÒÿÑÑÑÿÁÁÁÿ¯¯¯ÿ   ÿ“““ÿŒŒŒÿ‰‰‰ÿÿ™™™ÿ°°°ôóóó&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÐÐÐÿËËËÿ¶¶¶ÿ¡¡¡ÿÿ‚‚‚ÿyyyÿzzzÿ‚‚‚ÿ¹¹¹ÿøøøãËËË2&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿÌÌÌÿÅÅÅÿ®®®ÿªªªÿ¢¢¢ÿ¨¨¨ÿ¶¶¶ÿÒÒÒÿ÷÷÷ÿÿÿÿÿÊÊÊT&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÊÊÊÿÁÁÁÿ©©©ÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌ„&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿÈÈÈÿÀÀÀÿ¦¦¦ÿâââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÎΫ&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÆÆÆÿ¾¾¾ÿ¥¥¥ÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿÎÎÎÅ&ûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿûûûÿÆÆÆÿ½½½ÿ¦¦¦ÿãããÿÿÿÿÿÿÿÿÿÐÐÐÝ&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÉÉÉÿ¿¿¿ÿªªªÿÿÿÿÿÿÿÿÿÑÑÑïzzz&ûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÏÏÏÿÂÂÂÿÈÈÈÿÿÿÿÿÔÔÔ÷3&ÆÆÆÿÅÅÅÿÅÅÅÿÄÄÄÿÄÄÄÿÃÃÃÿÃÃÃÿÃÃÃÿÃÃÃÿÃÃÃÿÄÄÄÿÄÄÄÿÅÅÅÿÅÅÅÿÆÆÆÿÆÆÆÿÇÇÇÿÇÇÇÿÈÈÈÿÄÄÄÿÞÞÞÿÔÔÔÿÈÈÈÿæææÿÕÕÕø3æææÿæææÿåååÿåååÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿäääÿåååÿåååÿæææÿæææÿçççÿçççÿèèèÿäääÿàààÿÙÙÙÿÝÝÝÿÖÖÖô“““2	çççÿæææÿæææÿåååÿåååÿåååÿäääÿäääÿäääÿäääÿåååÿåååÿåååÿæææÿæææÿæææÿçççÿçççÿèèèÿæææÿãããÿçççÿÛÛÛ׈ˆˆÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàààÀàÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÿàÿàÿàÿàÿàÿàÿàÿàÿàÿàÿà?ÿàÿàÿÿàÿÿàÿÿàÿÿàÿ( @ 	&&&&&&&&&&&&&&&&&&	VssssssssssssssssssV3ýýýÿýýýÿýýýÿýýýÿþþþÿþþþÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&3üüüÿüüüÿüüüÿüüüÿüüüÿýýýÿýýýÿýýýÿýýýÿþþþÿþþþÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&3üüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿüüüÿÿÿÿÿ&3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÿÿÿÿ&			




3áááÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿáááÿâââÿáááÿâââÿâââÿâââÿâââÿçççÿìììÿüüüÿÿÿÿÿ&&&&&&3ÊÊÊÿÊÊÊÿÉÉÉÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿÊÊÊÿËËËÿÊÊÊÿËËËÿËËËÿËËËÿËËËÿÕÕÕÿæææÿüüüÿþþþÿ&¿jLÿ¾iKÿ¾hJÿ½fHÿ½eFÿ¼dFÿ¼cDÿ»bBÿ»`Aÿº`@ÿº^>ÿ¹]=ÿ¹\<ÿ¸[:ÿ¸Z9ÿ·X7ÿ·X6ÿ¶V5ÿ¶U3ÿ¶U3ÿ¶U3ÿ¶V4ÿ·W6ÿ·X6ÿ·Y8ÿ¸Z:ÿ¹\;ÿ¹\<ÿâââÿüüüÿýýýÿ&¿lNÿ¿kNÿ¿jLÿ¾hJÿ½gIÿ½fHÿ½eFÿ¼dEÿ»bCÿ»bBÿ»`Aÿº_?ÿº^>ÿ¹]=ÿ¹\;ÿ¸Z:ÿ¸Z9ÿ·X7ÿ·W6ÿ¶V5ÿ¶U3ÿ¶U3ÿ¶U3ÿ¶V4ÿ·W6ÿ·X7ÿ¸Z9ÿ¸Z:ÿáááÿüüüÿüüüÿ&ÀnQÿÀmPÿ¿lNÿ¿jMÿ¾iKÿ¾hJÿ½gIÿ½fGÿ¼dFÿ¼dEÿ»bCÿ»aBÿ»`Aÿº_?ÿ¹^>ÿ¹\<ÿ¹\;ÿ¸Z:ÿ·Y8ÿ·X7ÿ·W6ÿ¶V4ÿ¶U3ÿ¶U3ÿ¶U3ÿ¶V5ÿ·X6ÿ·X7ÿàààÿüüüÿûûûÿ&ÁpSÿÁoRÿ寻ÿüüüÿì×ÏÿÙ©˜ÿèÌÃÿ¾hJÿØ¥”ÿëÓËÿ¼dFÿ¼cDÿ寻ÿݱ¢ÿº`@ÿåĹÿܯ ÿ¹\<ÿÔœ‰ÿüüüÿìÖÏÿº`?ÿæÇ¼ÿüüüÿùôóÿÛ¬œÿ¶V4ÿ¶V5ÿàààÿüüüÿúúúÿ&ÂrVÿÍ‹tÿüüüÿðÞØÿãÁµÿûúùÿöîëÿ¿jLÿá½°ÿú÷öÿ½fHÿ½eFÿóçãÿèÌÃÿ»bBÿóçâÿçËÁÿº^>ÿìÕÎÿõìéÿÕŸŒÿá½°ÿûûúÿÞ´¥ÿäĹÿüüüÿÊ…lÿ¶U3ÿàààÿüüüÿùùùÿ&ÃtXÿÕž‹ÿüüüÿÒ˜…ÿÁoRÿíØÑÿöîëÿ¿lNÿâ¾±ÿú÷÷ÿ¾hJÿ½gIÿóçãÿèÍÃÿ¼dEÿóçãÿèÌÂÿ»`AÿðàÚÿêÑÈÿ¹]=ÿÇ~dÿÒ—„ÿ»bBÿÓ›ˆÿüüüÿÔœ‰ÿ¶U3ÿàààÿüüüÿøøøÿ&ÄvZÿÕŸÿüüüÿÏzÿÂqUÿçËÂÿöîëÿÀnQÿ⿲ÿûùøÿ¿jMÿ¾iKÿôèäÿèÍÄÿ½fGÿóçãÿèÍÃÿ»bCÿðàÛÿêÐÇÿº_?ÿ½gHÿçÉ¿ÿüüüÿüüüÿúöõÿÂrVÿ·W6ÿßßßÿüüüÿ÷÷÷ÿ&Åx]ÿÖ¡ŽÿüüüÿÏ‘{ÿÃsWÿèÌÂÿöîìÿÁpSÿ㿳ÿüüüÿÃsXÿ¿kNÿ÷ïìÿéÎÅÿ¾hJÿóçãÿèÍÃÿ¼dFÿñáÛÿêÑÈÿ»aBÿÞ¶¨ÿüüüÿîÜÕÿا–ÿ¿mOÿ¸Z:ÿ·Y8ÿßßßÿüüüÿöööÿ&Åz_ÿÖ¢ÿüüüÿÐ’}ÿÃuZÿèÍÃÿöïìÿÂrVÿãÀ´ÿüüüÿäÁ¶ÿÖ¡Žÿüûûÿåźÿ¿jLÿôèäÿéÎÄÿÎzÿöîìÿóçâÿÔ›ˆÿã¶ÿöîëÿʆnÿß¶¨ÿóçãÿÁnRÿ¸[:ÿßßßÿüüüÿõõõÿ&Æ|bÿ×£‘ÿüüüÿÑ”ÿÄw\ÿéÍÄÿöïìÿÃtXÿäÁµÿ÷ðíÿíØÑÿüüüÿûúùÿÏ‘{ÿ¿lNÿôèäÿéÎÅÿá¼°ÿüüüÿüüüÿìÖÏÿÊ„lÿøòðÿüüüÿüüüÿèÌÂÿº^>ÿ¹]=ÿßßßÿüüüÿõõõÿ&Ç~dÿÇ}cÿÆ|bÿÆz`ÿÅy^ÿÅx^ÿÄw\ÿÄvZÿÃuZÿÃtXÿÂrVÿÏ{ÿÇfÿÁoRÿÀnQÿÀmPÿ¿lNÿ¿jMÿñâÜÿëÒÊÿ½gIÿ½fGÿ¿kOÿ̉qÿÇ~dÿ»aBÿ»`Aÿº_?ÿÞÞÞÿüüüÿüüüÿ&È€fÿÈfÿÇ~dÿÇ|bÿÆ|bÿÆz`ÿÅy^ÿÅx]ÿÄw\ÿÄvZÿÃtYÿÃsWÿÂrVÿÂqUÿÁpSÿôéåÿéÐÇÿÀlOÿâ¾²ÿëÓËÿ¾iKÿ¾hJÿ½fHÿ½fGÿ¼dFÿ¼cDÿ»bCÿ»aBÿÞÞÞÿüüüÿüüüÿ&É‚iÿÉhÿÈ€fÿÇ~eÿÇ~dÿÇ|bÿÆ{aÿÅz_ÿÅy^ÿÅx]ÿÄv[ÿÃuZÿÃtYÿÃsWÿÂrVÿèËÁÿ߸ªÿÁnRÿÀmPÿË…mÿ¿kNÿ¿jLÿ¾iKÿ¾hJÿ½fHÿ½eFÿ¼dFÿ¼cDÿßßßÿüüüÿüüüÿ"Ê„kÿɃjÿÉ‚iÿÈ€gÿÈ€fÿÇ~eÿÇ}cÿÆ|bÿÆ{aÿÅz_ÿÅx^ÿÄw\ÿÄv[ÿÃuZÿÃtXÿÃsWÿÂrVÿÁpTÿÁoRÿÁnRÿÀmPÿ¿lNÿ¿kNÿ¿jLÿ¾hJÿ½gIÿ½fHÿ½eFÿáááÿüüüÿüüüÿ"3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿîîîÿïïïÿïïïÿðððÿíííÿåååÿèèèÿ"3üüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿüüüÿüüüÿéééÿßßßÿØØØÿÒÒÒÿÉÉÉÿÂÂÂÿÖÖÖÿ3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÚÚÚÿ´´´ÿ›››ÿÿ………ÿÿèèè×3üüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿÔÉÈÿÔÉÈÿüüüÿÔÉÈÿüüüÿüüüÿüüüÿÍÍÍÿªªªÿÿ•••ÿºººÿòòòýÙÙÙT3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØØØ˜3üüüÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿüüüÿüüüÿÇÇÇÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛÏ3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÇÇÇÿÿÿÿÿÿÿÿÿâââò3üüüÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿüüüÿüüüÿüüüÿÇÇÇÿÿÿÿÿáááòuuu3üüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿüüüÿÖÖÖÿâââñuuu3çççÿæææÿåååÿåååÿäääÿäääÿäääÿåååÿæææÿæææÿçççÿèèèÿæææÿáááµÿÀÿÀÿÀÿÀÿÀÿÀÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀ?(  ÞÞÞ®¤¤¤„ŸŸŸˆˆˆŸŸŸˆŸŸŸˆŸŸŸˆŸŸŸˆŸŸŸˆŸŸŸˆ¥¥¥„ŸŸŸˆüüüÿüüüÿûûûÿûûûÿûûûÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ŸŸŸˆúúúÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿÔÉÈÿÔÉÈÿþþþÿÿÿÿÿÿÿÿÿ
ŸŸŸˆøøøÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ
¾jKÿ¾hIÿ½fGÿ¼cDÿ»aAÿº_?ÿ¹]=ÿ¸[:ÿ·Y8ÿ·X6ÿ·Y7ÿ¸[9ÿ¹]<ÿº_>ÿûûûÿ
ûûûÿûûûÿûûûÿ¾hIÿûûûÿ¼cDÿûûûÿº_?ÿûûûÿ¸[:ÿûûûÿûûûÿûûûÿûûûÿûûûÿ
ûûûÿÁpSÿûûûÿ¿lNÿûûûÿ¾hIÿûûûÿ¼cDÿûûûÿº_?ÿûûûÿ¸[:ÿ·Y8ÿûûûÿúúúÿ
ûûûÿÃtXÿûûûÿÁpSÿûûûÿ¿lNÿûûûÿ¾hIÿûûûÿ¼cDÿûûûÿº_?ÿûûûÿ¸[:ÿûûûÿ
ûûûÿÅx]ÿûûûÿÃtXÿûûûÿûûûÿûûûÿ¿lNÿûûûÿ¾hIÿûûûÿûûûÿûûûÿûûûÿûûûÿ
Ç~dÿÆ|aÿÅz_ÿÅx]ÿÄvZÿÃtXÿÂrUÿÁpSÿÀnPÿ¿lNÿûûûÿ¾hIÿ½fGÿ¼cDÿûûûÿ
ɃiÿÈ€fÿÇ~dÿÆ|aÿÅz_ÿÅx]ÿÄvZÿÃtXÿûûûÿÁpSÿÀnPÿ¿lNÿ¾jKÿ¾hIÿûûûÿŸŸŸˆûûûÿÔÉÈÿûûûÿûûûÿÔÉÈÿÔÉÈÿûûûÿíííÿéééÿåååÿçççÿŸŸŸˆûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿÔÔÔÿµµµÿ£££ÿ¿¿¿îŸŸŸˆûûûÿÔÉÈÿÔÉÈÿûûûÿÔÉÈÿÔÉÈÿûûûÿÀÀÀÿºººÿÅÅÅÿÞÞÞpŸŸŸˆûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿûûûÿ¹¹¹ÿöööÿèèè™ÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿÉÉÉÿäää³zzzààààààààðunits-2.23/units.dvi0000664000175000017500000114362414564532666013764 0ustar  adrianadrian÷ƒ’À;è TeX output 2024.02.18:2058‹ÿÿÿÿŸòŽ ƒ33‘G ý|ÌÍïpapersize=8.5in,11in žÎóQÂÖN ¼jcmbx12ëQUnits‘ÆqCon–ÿZv“ersionŽŽŸ‰±ž¸Ÿšª’Æó6Kñ`y
ó3
cmr10áEdition–¦f2.21“for“ó7ßê b>
ó3
cmmi10é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ƒàá5ޤ
33‘!G4.2‘
ó5Aš²!tomic–¦fMasses“of“the“Elemen˜ts‘«ß‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘.'á6Ž¡‘!G4.3‘
ó5Currency–¦fExc²!hange“Rates“and“Consumer“Price“Index‘nf‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ð­á6Ž¡‘!G4.4‘
ó5English–¦fCustomary“Units‘ˆÜ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘$á6Ž¡‘!G4.5‘
ó5Miscellaneous–¦fNotes“on“Unit“DenitionsMj‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ϲá7ŽŸ33‘Gëc5‘32Unit‘ffExpressions‘Ž‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘
ƒùëc8ަ‘!Gá5.1‘
ó5OpMÞerators‘Ï	‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘QPá8Ž¡‘!G5.2‘
ó5Sums–¦fand“Dierences“of“Units‘Ö²‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Xùá10Ž¡‘!G5.3‘
ó5Num²!bMÞers–¦fas“Units‘ê=‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘l„á11Ž¡‘!G5.4‘
ó5Built-in‘¦fF‘ÿeunctions‘a÷‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ä?á11Ž¡‘!G5.5‘
ó5Previous‘¦fResult‘?æ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Â.á12Ž¡‘!G5.6‘
ó5Complicated–¦fUnit“Expressions‘ˆÓ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á14Ž¡‘!G5.7‘
ó5V‘ÿeariables–¦fAssigned“at“Run“Time‘‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘–Lá14Ž¡‘!G5.8‘
ó5Bac•²!kw“ards›¦fCompatibilit“y:‘ÝÝ`â*á'˜and˜`â-á'‘;å‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¾,á16ŽŸ33‘Gëc6‘32Nonlinear–ffUnit“Con•ŒÌv“ersions‘ä‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘	\ëc17ަ‘!Gá6.1‘
ó5T‘ÿeempMÞerature‘¦fCon•²!v“ersions‘Ù©‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘[ñá17Ž¡‘!G6.2‘
ó5US–¦fConsumer“Price“Index‘	U‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘‹á18Ž¡‘!G6.3‘
ó5Other–¦fNonlinear“Units‘¾k‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘@³á19ŽŸ33‘Gëc7‘32Unit›ffLists:‘32Con•ŒÌv“ersion˜to˜Sums˜of˜Units‘½“‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘³ëc21ަ‘!Gá7.1‘
ó5CoMÞoking‘¦fMeasure‘éG‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ká24Ž¡‘!G7.2‘
ó5Unit–¦fList“Aliases‘(‰‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ªÐá24ŽŸ33‘Gëc8‘32AlternativŒÌe–ffUnit“Systemsd‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘öÛëc25ަ‘!Gá8.1‘
ó5CGS‘¦fUnits‘Í‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘O[á25Ž¡‘0G8.1.1‘
ó5SpMÞecifying–¦fCGS“Units;b‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘½©á26Ž¡‘0G8.1.2‘
ó5CGS–¦fUnits“Systemsy°‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ûøá27Ž¡‘0G8.1.3‘
ó5Con•²!v“ersions›¦fBet“w“een˜Dieren“t˜Systems‘ ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¢Gá27Ž¡‘!G8.2‘
ó5Natural‘¦fUnits‘ùÕ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘|á29Ž¡‘!G8.3‘
ó5Prompt‘¦fPrex‘ÆB‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘H‰á30ŽŽŒ‹ÿÿÿþ5Ÿò’½š©áiiŽŽŽ ƒ33 ý†ÌÍ‘Gëc9‘32Logging‘ffCalculations‘ž
‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘“‚ëc30ޤÊù‘G10‘32In•ŒÌv“oking‘ffëgunits‘&‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ëc31Ž¡‘G11‘32Scripting–ffwith“ëgunits‘íÑ‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘	ãIëc36Ž¡‘G12‘32Output‘ffStŒÌyles‘.‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘
#’ëc38Ž¡‘G13‘32Adding–ffY‘þ¦four“Own“Denitions‘g‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘
\øëc40Ž©ÿ‘!Gá13.1‘
ó5Units–¦fData“Files"¸‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¥á40ޤ
33‘!G13.2‘
ó5Dening–¦fNew“Units“and“PrexesE©‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Çñá41Ž¡‘!G13.3‘
ó5Dening–¦fNonlinear“Units‘¿[‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘A£á42Ž¡‘!G13.4‘
ó5Dening–¦fPiecewise“Linear“Units‘SC‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:ޑՋá44Ž¡‘!G13.5‘
ó5Dening–¦fUnit“List“Aliases‘î‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘pZá46ŽŸ~-‘Gëc14‘32Numeric–ffOutput“F‘þ¦format‘+ ‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘
!ëc46ަ‘!Gá14.1‘
ó5F‘ÿeormat‘¦fSpMÞecication‘bç‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘å.á47Ž¡‘!G14.2‘
ó5Flags>‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ÀRá47Ž¡‘!G14.3‘
ó5Field‘¦fWidth‘º•‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘<Ýá48Ž¡‘!G14.4‘
ó5Precision‘üË‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á48ŽŸ~-‘Gëc15‘32Los3calization‘žû‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘
”rëc49ަ‘!Gá15.1‘
ó5LoMÞcale‘fâ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘é*á49Ž¡‘!G15.2‘
ó5Additional‘¦fLoMÞcalizationl¥‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘îíá50ŽŸ~,‘Gëc16‘32En•ŒÌvironmen“t‘ffV‘þ¦fariables‘  ‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘
˜ëc52ޤÊù‘G17‘32Data‘ffFiles‘Ž$‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘
ƒœëc53Ž¡‘G18‘32Unico•s3de‘ffSupp“ort‘™–‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘ëc54Ž¡‘G19‘32Readline‘ffSupps3ort‘îé‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘	äaëc55Ž¡‘G20‘32Ups3dating–VôCurrency›VõExcŒÌhange“Rates˜and“CPI‘È“‘32ëk:Ž‘Q‘32:Ž‘Æ[ëc55ަ‘!Gá20.1‘
ó5Currency–¦fExc²!hange“Rates‘õÜ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘x#á55ޤ
33‘!G20.2‘
ó5US–¦fConsumer“Price“Index‘»v‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘=½á56Ž¡‘!G20.3‘
ó5In•²!v“oking‘¦fâunits_cur‘>ý‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ÁEá56ŽŸ~-‘Gëc21‘32Database–ffCommand“SynŒÌtaxDW‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘9Ïëc57ޤÊù‘G22‘32GNU–ffF‘þ¦free“Dos3cumenŒÌtation“License‘õO‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘	êÆëc59Ž¡‘GIndexq@‘32ëk:Ž–Q‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž“‘32:Ž‘f·ëc66ŽŽŒ‹/ËŸò‘GáUnits‘¦fCon•²!v“ersion’YÞ*1ŽŽŽ ƒ33 ý ÌÍ‘GëZ1‘	¸QOv‘ÿuÂerview–z³of“ó]߆µTG®cmtt12ë]unitsŽŽŸ!MÀ‘GáThe–Íâunits“áprogram“con•²!v“erts›Íquan“tities˜expressed˜in˜v‘ÿdDarious˜systems˜of˜measuremen“t˜to˜theirޤ
33‘Gequiv‘ÿdDalenš²!ts–;in“other‘;systems“of“measuremen˜t.‘›»Lik˜e“man˜y“similar‘;programs,‘`-it“can“handleŽ¡‘Gm•²!ultiplicativ“e–\{scale“cš²!hanges.‘It“can‘\zalso“handle“nonlinear“con˜v˜ersions“suc˜h“as“F‘ÿeahrenheitŽ¡‘Gto–ÙaCelsius;Ÿü¾óÙ“ Rcmr7®1Ž‘	ïQásee›Ù`Section“6.1“[T‘ÿeempMÞerature“Con•²!v“ersions],‘&page˜17.‘vÎThe˜program–Ùacan“alsoŽ¡‘GpMÞerform›Y§con•²!v“ersions–Y¨from˜and˜to“sums˜of˜units,‘isuc²!h˜as“con•²!v“erting˜bMÞet“w“een˜meters‘Y¨and˜feetŽ¡‘Gplus‘¦finc²!hes.Ž©æ·‘!GBasic–JkopMÞeration“is“simple:‘%çyš²!ou“en˜ter“the“units“that“y˜ou“w˜an˜t“to“con˜v˜ert“ó9ý':
ó3
cmti10äfr‘ÿp¹om‘!váand“theŽ¡‘Gunits–€that“yš²!ou“w˜an˜t“to“con˜v˜ert“ätoá.‘ÑY‘ÿeou“can“use“the“program“in˜teractiv˜ely“with“prompts,‘‡¸orŽ¡‘Gy²!ou–¦fcan“use“it“from“the“command“line.ަ‘!GBeyš²!ond–ˆsimple‘‰unit“con˜v˜ersions,‘:âunits›‰ácan“bMÞe˜used“as˜a“general-purpMÞose˜scien²!tic“cal-Ž¡‘Gculator–m(that‘m)kš²!eeps“trac˜k“of“units›m)in“its“calculations.‘ÊÉY‘ÿeou“can“form“arbitrary˜complex“math-Ž¡‘Gematical– Úexpressions“of“dimensions‘ Ûincluding“sums,–?wprošMÞducts,“quotien²!ts,“p˜o•²!w“ers,‘?wand‘ Úev“enŽ¡‘GroMÞots–Χof“dimensions.‘•óThš²!us“y˜ou“can“ensure“accuracy“and“dimensional“consistency“when“w˜ork-Ž¡‘Ging–!Çwith“long›!Èexpressions“that“in•²!v“olv“e‘!Çman“y˜dieren“t–!Çunits“that“ma•²!y˜com“bine–!Çin“complexŽ¡‘Gw•²!a“ys;–¦ffor“an“illustration,“see“Section“5.6“[Complicated“Unit“Expressions],“page“14.ަ‘!GThe–ŸÊunits›ŸËare“dened˜in“sev²!eral˜external“data“les.‘Û©Y‘ÿeou˜can“use˜the“extensiv²!e˜data“lesŽ¡‘Gthat–W=come“with“the“program,‘gor“yš²!ou“can“pro˜vide“y˜our‘W>o˜wn“data“le“to“suit“y˜our“needs.‘ÃzY‘ÿeouŽ¡‘Gcan–¦falso“use“yš²!our“o˜wn“data“le“to“supplemen˜t“the“standard“data“les.ަ‘!GY‘ÿeou–‘Ucan›‘Tc²!hange“the˜default“bMÞeha²!vior˜of“âunits“áwith˜v‘ÿdDarious“options˜giv²!en“on˜the“commandŽ¡‘Gline.‘ÝÝSee–¦fChapter“10“[In•²!v“oking–¦fUnits],“page“31,“for“a“description“of“the“a²!v‘ÿdDailable“options.ŽŸ%g	‘GëZ2‘	¸QIn‘ÿuÂteracting–z³with“ë]unitsŽŽŸ!M¿‘GáT‘ÿeo›_^in•²!v“ok“e˜âunits˜áfor˜in“teractiv“e˜use,‘›t“ypMÞe˜ó=ßêúóprompt,‘¢
t˜ypMÞe“the“quan˜tit˜y‘ ôand“units“that“y˜ou“are‘ ôcon˜v˜erting“äfr‘ÿp¹omá.‘ÜF‘ÿeorŽ¡‘Gexample,‘ˆxif›€üy•²!ou‘€ýw“an“t˜to‘€ýcon“v“ert˜ten–€ýmeters˜to“feet,–ˆxt²!ypMÞe˜è10‘¦fmetersá.‘ÑeNext,“âunits‘€ýáwill˜prin²!tŽ¡‘G`âYou‘¦fwant:á'Ž‘IÊS.‘Z=Y‘ÿeou–z†should‘z‡tš²!ypMÞe“the“units“y˜ou“w˜an˜t“to“con˜v˜ert“ätoá.‘Z>T‘ÿeo“con˜v˜ert“to“feet,‘¯Žy˜ouŽ¡‘Gw•²!ould›ž%t“ypMÞe˜èfeetá.‘ÅIf˜the˜âreadline˜álibrary˜w“as˜compiled˜in,‘Üthen˜âtab˜áwill˜complete˜unitŽ¡‘Gnames.‘º»See–<ÿChapter›<þ19“[Readline“SuppMÞort],‘Rpage“55,‘Rfor“more˜information“abMÞout“âreadlineá.Ž¡‘GT‘ÿeo–¦fquit“the“program“t²!ypMÞe“èquit“áor“èexit“áat“either“prompt.ŽŸ渑!GThe–‡rresult›‡qwill“bMÞe˜displa•²!y“ed‘‡rin˜t“w“o›‡rw“a“ys.‘Ó‹The˜rst–‡qline˜of“output,‘¢whic²!h˜is“mark²!ed˜withŽ¡‘Ga–èL`â*á'›èMto“indicate˜m•²!ultiplication,‘øÆgiv“es–èLthe˜result“of“the˜con•²!v“ersion‘èLy“ou˜ha“v“e‘èLask“ed˜for.‘£TheŽ‘GŸî‰ffŠ=Ÿó/‘ãŸü-=®1ŽŽ‘óo´‹Ç		cmr9¬But–F‘ÿ:«ahrenheit“to“Celsius›is“linear,‘Yíy¾9ou“insist.‘'zNot“so.‘'yA‘¿transformation“ó5ùž"		cmmi9²T‘aå¬is“linear“if˜²T‘Hã¬(²x–»W¬+“²yRª¬)‘B’=ޤ
€‘²T›Hã¬(²x¬)–ƒñ+“²T˜¬(²yRª¬)–Ð1and›Ð0this“fails˜for“²T‘Hã¬(²x¬)–‘Æ=“²ax–ƒñ¬+“²b¬.‘dThis–Ð1transformation˜is“ane,‘Þbut“not˜linear|see“óߤN		cmtt9Éhttps://Ž¡‘en.wikipedia.org/wiki/Linear_map¬.ŽŽŒ‹T¨Ÿò‘GáUnits‘¦fCon•²!v“ersion’YÞ*2ŽŽŽ ƒ33 ý ÌÍ‘Gsecond–#line“of“output,‘Rwhicš²!h“is“mark˜ed“with‘$a“`â/á'“to“indicate“division,‘Rgiv˜es“the“in˜v˜erse“ofޤ
33‘Gthe›¦fcon•²!v“ersion˜factor.‘ÝÝIf˜y“ou˜con“v“ert˜10˜meters˜to˜feet,˜âunits˜áwill˜prin“tŽ©$v‘EøDâ*‘¿ª32.808399Ž¡‘EøD/‘¿ª0.03048ŽŽŸWª‘Gáwhic•²!h›#åtells‘#æy“ou˜that–#æ10˜meters“equals˜abMÞout“32.8˜feet.‘V\The˜second“n•²!um“bMÞer˜giv“es‘#æthe˜con-Ž¡‘Gv²!ersion–g­in“the›g¬oppMÞosite“direction.‘ÈõIn˜this“case,‘t8it“tells“y²!ou“that˜1“foMÞot“is“equal˜to“abMÞout“0.03Ž¡‘Gdek›ÿdDameters–¦fsince“the“dek˜ameter“is“10“meters.‘ÝÝIt“also“tells“y²!ou“that“1/32.8“is“abMÞout“0.03.ަ‘!GThe–¶¸âunits“áprogram“prinš²!ts“the“in˜v˜erse“bMÞecause“sometimes“it“is“a“more“con˜v˜enien˜t“n˜um˜bMÞer.Ž¡‘GIn–åthe›åexample“abMÞo•²!v“e,–±for˜example,“the‘åin•²!v“erse˜v‘ÿdDalue–åis“an˜exact“con•²!v“ersion:‘}-a–åfoMÞot˜is“exactlyŽ¡‘G0.03048–¦fdek‘ÿdDameters.‘ÝÝBut“the“n•²!um“bMÞer›¦fgiv“en˜the˜other˜direction˜is˜inexact.ŽŸ$w‘!GIf–¦fyš²!ou“con˜v˜ert“grains“to“pMÞounds,“y˜ou“will“see“the“follo˜wing:ަ‘.ùœâYou–¿ªhave:“grainsŽ¡‘.ùœYou–¿ªwant:“poundsŽ¡‘\öì*‘¿ª0.00014285714Ž¡‘\öì/‘¿ª7000ŽŽŸ9¾‘GáF‘ÿeromŽ‘.GŠthe–ysecond›xline“of˜the“output,‘3Ay²!ou“can˜immediately˜see“that˜a“grain˜is“equal˜to“a˜sev²!enŽ¡‘Gthousandth–‹Kof›‹La“pMÞound.‘ÔÔThis“is˜not“so“ob²!vious“from˜the“rst“line˜of“the“output.‘ÔÔIf˜y²!ou“ndŽ¡‘Gthe–¦foutput“format“confusing,“try“using“the“â--verbose“áoption:ަ‘.ùœâYou–¿ªhave:“grainŽ¡‘.ùœYou–¿ªwant:“aeginaminaŽ¡‘\öìgrain–¿ª=“0.00010416667“aeginaminaŽ¡‘\öìgrain–¿ª=“(1“/“9600)“aeginaminaŽŽŸ9¾‘GáIf–Õpy²!ou›Õorequest“a˜con•²!v“ersion‘ÕpbMÞet“w“een˜units–Õpthat˜measure“reciproMÞcal“dimensions,‘á1then“âunitsŽ¡‘Gáwill–ÀXdisplaš²!y“the‘ÀYcon˜v˜ersion“results“with“an“extra“note‘ÀYindicating“that“reciproMÞcal“con˜v˜ersionŽ¡‘Ghas–¦fbMÞeen“done:ަ‘.ùœâYou–¿ªhave:“6“ohmsŽ¡‘.ùœYou–¿ªwant:“siemensŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì*‘¿ª0.16666667Ž¡‘\öì/‘¿ª6ŽŽŸFñC‘GáReciproMÞcal›ã¬con•²!v“ersion–ã­can˜bMÞe“suppressed˜b²!y“using˜the˜â--strict“áoption.‘•°As“usual,‘òþuse˜theŽ¡‘Gâ--verbose–¦fáoption“to“get“more“comprehensible“output:ަ‘.ùœâYou–¿ªhave:“texŽ¡‘.ùœYou–¿ªwant:“typpŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì1–¿ª/“tex“=“496.05465“typpŽ¡‘\öì1–¿ª/“tex“=“(1“/“0.0020159069)“typpŽŸff‘.ùœYou–¿ªhave:“20“mphŽ¡‘.ùœYou–¿ªwant:“sec/mileŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì1–¿ª/“20“mph“=“180“sec/mileŽ¡‘\öì1–¿ª/“20“mph“=“(1“/“0.0055555556)“sec/mileŽŽŽŒ‹e9Ÿò‘GáUnits‘¦fCon•²!v“ersion’YÞ*3ŽŽŽ ƒ33 ý ÌÍ‘GIf›—îy•²!ou‘—ïen“ter˜incompatible˜unit˜t“ypMÞes,‘ÔPthe˜âunits‘—ïáprogram˜will˜prin“t˜a‘—ïmessage˜indicatingޤ
33‘Gthat–¦fthe“units“are“not“conformable“and“it“will“displaš²!y“the“reduced“form“for“eac˜h“unit:Ž©Bõ‘.ùœâYou–¿ªhave:“ergs/hourŽ¡‘.ùœYou–¿ªwant:“fathoms“kg^2“/“dayŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì2.7777778e-11–¿ªkg“m^2“/“sec^3Ž¡‘\öì2.1166667e-05–¿ªkg^2“m“/“secŽŽŸFÀ‘GáIf–{yš²!ou“only“w˜an˜t›{to“nd“the“reduced“form“or“denition“of˜a“unit,‘ƒÁsimply˜press“âEnter“áat“theŽ¡‘G`âYou‘¦fwant:á'Ž‘Mp¹prompt.‘ÝÝHere–¦fis“an“example:ަ‘.ùœâYou–¿ªhave:“janskyŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªfluxunit“=“1e-26“W/m^2“Hz“=“1e-26“kg“/“s^2ŽŽŸ+©Z‘GáThe–w­output“from“âunits“áindicates›w®that“the“jansky“is“dened“to“bMÞe“equal˜to“a“
uxunit“whic²!hŽ¡‘Gin–÷¶turn›÷·is“dened“to˜bMÞe“a˜certain“com²!bination“of˜w²!atts,–¦meters,“and˜hertz.‘£¢The˜fully‘÷¶reducedŽ¡‘G(and–lDin“this›lCcase“somewhat“more“cryptic)˜form“appMÞears“on“the˜far“righ²!t.‘/vIf“the“ultimateŽ¡‘Gdenition–¦fand“the“fully“reduced“form“are“idenš²!tical,“the“latter“is“not“sho˜wn:ަ‘.ùœâYou–¿ªhave:“BŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªbyte“=“8“bitŽŽ©+©[‘GáThe–—/fully›—.reduced“form˜äis‘}Gásho²!wn˜if“it˜and“the˜ultimate“denition˜are“equiv‘ÿdDalen²!t˜but“notŽ¡‘Giden²!tical:ŽŸBô‘.ùœâYou–¿ªhave:“NŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªnewton“=“kg“m“/“s^2“=“1“kg“m“/“s^2ŽŽ¦‘GáSome–pnamed“units›pare“treated“as“dimensionless“in“some˜situations.‘ËÄThese˜units“include“theŽ¡‘Gradian–¦and“steradian.‘ÐóThese“units“will“bMÞe“treated›§as“equal“to“1“in“units˜con•²!v“ersions.‘ÐòP“o“w“erŽ¡‘Gis–ËÚequal›ËÛto“torque“times˜angular“v•²!eloMÞcit“y‘ÿe.‘N:This›ËÚcon“v“ersion˜can‘ËÛonly˜b•MÞe˜p“erformed‘ËÛif˜theŽ¡‘Gradian–¦fis“dimensionless.Ž©Bõ‘.ùœâYou–¿ªhave:“(14“ft“lbf)“(12“radians/sec)Ž¡‘.ùœYou–¿ªwant:“wattsŽ¡‘\öì*‘¿ª227.77742Ž¡‘\öì/‘¿ª0.0043902509ŽŽŸ8Ü‘GáIt–y;is“also“pšMÞossible“to“compute“ro˜ots‘y:and“other“non-in²!teger“p˜o•²!w“ers–y;of“dimensionless“units;Ž¡‘Gthis–¦falloš²!ws“computations“suc˜h“as“the“altitude“of“geosync˜hronous“orbit:ަ‘.ùœâYou–¿ªhave:“cuberoot(G“earthmass“/“(circle/siderealday)^2)“-“earthradiusŽ¡‘.ùœYou–¿ªwant:“milesŽ¡‘\öì*‘¿ª22243.267Ž¡‘\öì/‘¿ª4.4957425e-05ŽŽŸ8Ü‘GáNamed–Šdimensionless›‹units“are˜not“treated˜as“dimensionless“in˜other“con²!texts.‘®êThey“cannotŽ¡‘GbšMÞe–¦fused“as“exp˜onen²!ts“so“for“example,“`âmeter^radianá'“is“forbidden.ަ‘!GIf›.›y•²!ou‘.šw“an“t˜a–.šlist˜of“options˜y²!ou“can˜t²!ypMÞe˜è?“áat˜the“`âYou‘¦fwant:á'Ž‘@Aprompt.‘vzThe˜programŽ¡‘Gwill–@ªdispla²!y“a“list›@«of“named“units“that“are“conformable“with“the˜unit“that“yš²!ou“en˜tered“atŽ¡‘Gthe‘C_`âYou‘¦fhave:á'Ž‘>?Ëprompt›C_abMÞo•²!v“e.‘¼ÛConformable˜unit–C`äc‘ÿp¹ombinations‘)wáwill“not˜appMÞear˜on“this˜list.ŽŽŒ‹oŸò‘GáUnits‘¦fCon•²!v“ersion’YÞ*4ŽŽŽ ƒ33 ý ÌÍ‘!GTš²!yping–Dûèhelp‘Düáat“either“prompt“displa˜ys›Düa“short“help“message.‘¹Y‘ÿeou“can˜also“t²!ypMÞe“èhelpޤ
33‘Gáfollo•²!w“ed›é¿b“y˜a˜unit˜name.‘§çThis˜will˜in“v“ok“e˜a˜pager˜on˜the˜units‘é¾data˜base˜at˜the˜pMÞoin“tŽ¡‘Gwhere–¸Athat›¸Bunit“is˜dened.‘oY‘ÿeou˜can“read˜the“denition˜and“commen²!ts˜that“ma•²!y˜giv“e‘¸AmoreŽ¡‘Gdetails–ñ®or›ñ¯historical“information˜abMÞout“the˜unit.‘¡ If“y²!our˜pager“allo•²!ws,‘Óy“ou˜ma“y‘ñ®w“an“t˜to‘ñ®scrollŽ¡‘Gbac•²!kw“ards,–¡e.g.‘7Œwith›nö`âbá',“bMÞecause–nõsometimes˜a˜longer“commen²!t˜abMÞout˜a“unit˜or“group˜ofŽ¡‘Gunits–ˆƒwill“appšMÞear“b˜efore“the“denition.‘ÓçY‘ÿeou“can“generally“quit“out“of“the“pager“b²!y“pressingŽ¡‘G`âqá'.Ž©Ñ"‘!GTš²!yping‘½×èsearch–½Øó:p®0J
ó3
cmsl10åtext‘ú×áwill“displa˜y›½×a“list˜of“all˜of“the˜units“whose˜names“con²!tain˜åtext‘úØáas˜aŽ¡‘Gsubstring–óÍalong“with“their“denitions.‘ÆThis“maš²!y“help“in“the“case“where“y˜ou“aren't“sure“ofŽ¡‘Gthe–¦frigh²!t“unit“name.ŽŸ#;Ý‘GëZ3‘	¸QUsing–z³ë]units“ëZNon-In–ÿuÂteractiv“elyŽŽŸþ‘GáThe–ûtâunits›ûsáprogram“can“pMÞerform“units˜con•²!v“ersions›ûtnon-in“teractiv“ely˜from‘ûsthe˜commandŽ¡‘Gline.‘´þT‘ÿeo–Cqdo“this,›j´t²!ypMÞe“the“command,˜t²!ypMÞe“the“original“unit“expression,˜and“t²!ypMÞe“the“newŽ¡‘Gunits–±Ryš²!ou“w˜an˜t.‘þ¡If“a“units‘±Sexpression“con˜tains“non-alphan˜umeric“c˜haracters,‘´
y˜ou“ma˜y“needŽ¡‘Gto–¦fprotect“it“from“inš²!terpretation“b˜y“the“shell“using“single“or“double“quote“c˜haracters.ަ‘!GIf–¦fyš²!ou“t˜ypMÞeޤÑ!‘.ùœâunits–¿ª"2“liters"“quartsަ‘Gáthen–¦fâunits“áwill“prin²!tŽ¡‘EøDâ*‘¿ª2.1133764ŽŸ
33‘EøD/‘¿ª0.47317647ŽŽŸU‘Gáand–ì]then›ì^exit.‘¯ÃThe“output˜tells“y²!ou˜that“2“liters˜is“abMÞout˜2.1“quarts,‘ýÛor˜alternativ²!ely“thatŽ©
33‘Ga–¦fquart“is“abMÞout“0.47“times“2“liters.Ž¡‘!Gâunits–‰èádoMÞes›‰énot“require˜a“space˜bMÞet•²!w“een‘‰èa˜n“umerical–‰èv‘ÿdDalue˜and“the˜unit,‘›so˜the“previousަ‘Gexample–¦fcan“bMÞe“giv²!en“asŽ©Ñ"‘.ùœâunits–¿ª2liters“quartsŽ¡‘Gáto›¦fa•²!v“oid˜ha“ving˜to˜quote˜the˜rst˜argumen“t.ަ‘!GIf–žæthe“con•²!v“ersion›žåis–žæsuccessful,‘Ó™âunits“áwill“return“success“(zero)“to˜the“calling“en•²!vironmen“t.ޤ
33‘GIf›ì2y•²!ou‘ì1en“ter˜non-conformable˜units,‘othen˜âunits‘ì1áwill˜prin“t˜a–ì1message˜giving˜the“reduced˜formŽ¡‘Gof–¦feacš²!h“unit“and“it“will“return“failure“(nonzero)“to“the“calling“en˜vironmen˜t.ŽŸÑ!‘!GIf–q\the›q[â--conformable“áoption“is˜giv²!en,‘¤only“one“unit˜expression“is“allo•²!w“ed,‘¤and‘q\âunitsŽ¡‘Gáwill–ààprin²!t›àßall“units˜conformable“with˜that“expression;‘~it“is˜equiv‘ÿdDalen²!t“to˜giving“è?˜áat“theŽ¡‘G`âYou‘¦fwant:á'Ž‘Mp¹prompt.‘ÝÝF‘ÿeor‘¦fexample,ަ‘.ùœâunits–¿ª--conformable“gaussŽ¡‘.ùœB_FIELD‘>þteslaŽ¡‘.ùœGs‘-ýPgaussŽ¡‘.ùœT‘3¼úteslaŽ¡‘.ùœgauss‘¾Rabvolt–¿ªsec“/“cm^2Ž¡‘.ùœstT‘(=¦statteslaŽ¡‘.ùœstatT‘¾RstatteslaŽ¡‘.ùœstattesla‘¿ªstatWb/cm^2Ž¡‘.ùœtesla‘¾RWb/m^2ŽŽŽŒ‹{<Ÿò‘GáUnits‘¦fCon•²!v“ersion’YÞ*5ŽŽŽ ƒ33 ý ÌÍ‘GIf›’y•²!ou‘’giv“e˜more˜than–’one˜unit“expression˜with˜the“â--conformable˜áoption,‘Ìûthe˜programޤ
33‘Gwill–ÝÑexit›ÝÐwith“an˜error“message“and˜return“failure.‘„This“option“has˜no“eect˜in“in•²!teractiv“eŽ¡‘GmoMÞde.ŽŸÆ ‘!GIf–߈the›߉â--terse“á(â-tá)˜option“is˜giv²!en“with˜the“â--conformable˜áoption,‘íÑconformable“unitsŽ¡‘Gare–¦fshoš²!wn“without“denitions;“with“the“previous“example,“this“w˜ould“giv˜eŽ©Æ‘.ùœâunits–¿ª--terse“--conformable“gaussŽ¡‘.ùœB_FIELDŽ¡‘.ùœGsŽ¡‘.ùœTŽ¡‘.ùœgaussŽ¡‘.ùœstTŽ¡‘.ùœstatTŽ¡‘.ùœstatteslaŽ¡‘.ùœteslaŽŽŸz_¸‘GáWhen–¡the›¡â--conformable“áoption“is“not˜givš²!en“and“y˜ou‘¡in˜v˜ok˜e“âunits“áwith“only‘¡one“argumen˜t,Ž¡‘Gâunits–ááwill›áprin²!t“the˜denition“of˜the“spMÞecied˜unit.‘­It˜will“return˜failure“if˜the“unit˜is“notŽ¡‘Gdened–¦fand“success“if“the“unit“is“dened.ŽŸ#%Ù‘GëZ4‘	¸QUnit‘z³DenitionsŽŽŸëù‘GáThe›¢¬con•²!v“ersion–¢­information˜is˜read“from˜sev²!eral“units˜data˜les:‘Öjâdefinitions.unitsá,Ž¡‘Gâelements.unitsá,‘
úâcurrency.unitsá,–
ûand›]Dâcpi.unitsá,“whic²!h˜are˜usually˜loMÞcated˜in˜theŽ¡‘Gâ/usr/share/units–ú{ádirectory‘ÿe.‘ÚIf‘úzyš²!ou“in˜v˜ok˜e›úzâunits“áwith“the˜â-V“áoption,‘Oit“will˜prin²!t“theŽ¡‘GloMÞcation–lof“these“les.‘
.ôThe“default“main“le“includes“denitions‘lfor“all“familiar“units,Ž¡‘Gabbreviations–Y|and“metric“prexes.‘÷ It“also“includes“manš²!y“obscure“or‘Y}arc˜haic“units.‘÷Man˜yŽ¡‘Gcommon–¦fspšMÞelled-out“n•²!um“b˜ers–¦f(e.g.,“`âseventeená')“are“recognized.ŽŸÜc‘Gëc4.1‘™Ph•ŒÌysical‘f@Constan“tsŽŽŸ33‘GáMan•²!y›¦fconstan“ts˜of˜nature˜are˜dened,˜including˜these:ަ‘.ùœâpi‘9|¤áratio–¦fof“circumference“of“a“circle“to“its“diameterŽ¡‘.ùœâc‘?a›>sequence“of˜quotienš²!ts.‘¤ÂF‘ÿeor“example,‘cð`âm/s–¦f*“s/dayá'Ž‘IÁis“equiv‘ÿdDalen˜t‘>to“`âm/dayá'.ޤ
33‘GSimilarly‘ÿe,–¦fy²!ou“could“write“`â1/2“*“meterá'Ž‘Hkèto“get“half“a“meter.Ž©ÿ&‘!GThe–+Râunits“áprogram‘+SsuppMÞorts“another“option“for“nš²!umerical“fractions:‘ç¶y˜ou“can“indicateŽ¡‘Gdivision–of“änumb‘ÿp¹ers‘é.áwith‘the“vš²!ertical“bar“(`â|á'),‘#Àso“if“y˜ou“w˜an˜ted“half“a‘meter“y˜ou“could“writeŽ¡‘G`â1|2‘¦fmeterá'Ž‘IÊS.‘¥Y‘ÿeou–‡¨cannot›‡©use“the˜v²!ertical“bar˜to“indicate˜division“of˜non-n²!umerical“unitsŽ¡‘G(e.g.,–¦f`âm|sá'“results“in“an“error“message).ަ‘!GP•²!o“w“ers–KÁof“units‘KÀcan“bšMÞe“sp˜ecied“using‘KÀthe“`â^á'“cš²!haracter,‘uas“sho˜wn“in‘KÀthe“follo˜wing“ex-Ž¡‘Gample,‘Ïor–x©b²!y›x¨simple“concatenation“of“a“unit“and˜its“expMÞonen²!t:‘Æÿ`âcm3á'˜is“equiv‘ÿdDalen²!t“to“`âcm^3á';Ž¡‘Gif–ÅAthe“expMÞonen²!t“is“more“than“one“digit,‘øthe“`â^á'“is“required.‘:nY‘ÿeou“can“also“use“`â**á'“as“anŽ¡‘Gexp•MÞonen²!t‘¦fop“erator.ŽŸÿ'‘.ùœâYou–¿ªhave:“cm^3Ž¡‘.ùœYou–¿ªwant:“gallonsŽ¡‘\öì*‘¿ª0.00026417205Ž¡‘\öì/‘¿ª3785.4118ŽŽŸ7˜¿‘GáConcatenation–Ê%only›Ê&w²!orks“with“a“single˜unit“name:‘%\if“y²!ou“write“`â(m/s)2á',‘Óâunits˜áwill“treatŽ¡‘Git–Üas“mš²!ultiplication“b˜y“2.‘?When“a“unit“includes“a“prex,‘&zexpMÞonen˜t“opMÞerators“apply“to“theŽ¡‘Gcomš²!bination,‘‡¢so–ð`âcentimeter3á'“giv˜es‘ñcubic“cen˜timeters.‘ÑIf‘ñy˜ou“separate›ñthe“prex˜from“theŽ¡‘Gunit–#dwith‘#eanš²!y“m˜ultiplication“opMÞerator›#e(e.g.,‘=—`âcenti‘¦fmeter^3á'),‘=˜the“prex˜is“treated“as˜a“sep-Ž¡‘Garate–unit,‘7Rso“the›ŽexpMÞonen²!t“applies“only“to“the“unit˜without“the“prex.‘¯•The“second“exampleŽ¡‘Gis–Ôequiv‘ÿdDalen²!t›Ôto“`âcenti–¦f*“(meter^3)á',‘ßxand˜giv•²!es‘Ôa˜h“undredth–Ôof“a˜cubic“meter,‘ßxnot˜a“cubicŽ¡‘Gcenš²!timeter.‘.The–¢âunits“áprogram“is“limited‘¡in˜ternally“to“proMÞducts“of“99‘¡units;‘NÀaccordingly‘ÿe,Ž¡‘Gexpressions–wlik²!e›x`âmeter^100á'“or“`âjoule^34á'˜(represenš²!ted“in˜ternally‘xas“`âkg^34–¦fm^68“/“s^68á'Ž‘eK)Ž¡‘Gwill‘¦ffail.ަ‘!GThe–†û`â|á'›†üopMÞerator“has“the˜highest“precedence,‘¿ so˜y²!ou“can“write˜the“square“roMÞot˜of“t•²!w“oŽ¡‘Gthirds–ñøas“`â2|3^1|2á'.‘À”The“`â^á'›ñùopMÞerator“has“the“second˜highest“precedence,‘Ýand“is“ev‘ÿdDaluatedŽ¡‘Grigh²!t–¦fto“left,“as“usual:ަ‘.ùœâYou–¿ªhave:“5“*“2^3^2Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª2560ŽŽ©*eŒ‘GáWith–‹Úa“dimensionless‘‹Ûbase“unit,‘	Å5anš²!y“dimensionless“expMÞonen˜t‘‹Ûis“meaningful“(e.g.,Ž¡‘G`âpi^exp(2.371)á').‘T‰Evš²!en–Íõthough“angle“is“sometimes‘Íôtreated“as“dimensionless,‘ØexpMÞonen˜tsŽ¡‘Gcannot›¦fha•²!v“e˜dimensions˜of˜angle:ŽŸÿ'‘.ùœâYou–¿ªhave:“2^radianŽ¡’³æ^Ž¡‘.ùœExponent–¿ªnot“dimensionlessŽŽ¦‘GáIf–\äthe›\åbase“unit˜is“not˜dimensionless,‘k˜the“expMÞonenš²!t“m˜ust›\åbMÞe“a˜rational“n•²!um“bMÞer˜åpUá/åqŽ‘I3á,‘k˜and‘\ätheŽ¡‘Gdimension–E¹of›E¸the“unit˜m²!ust“bMÞe˜a“pMÞo•²!w“er–E¹of˜åqá,‘mso“`âgallon^2|3á'˜w²!orks“but˜`âacre^2|3á'“fails.Ž¡‘GAn–€oexpšMÞonen²!t“using“the‘€pslash“(`â/á')“op˜erator“(e.g.,‘¶ñ`âgallon^(2/3)á')“is“also‘€pacceptable;‘ístheŽ¡‘Gparen²!theses–:Kare“needed“bMÞecause›:Jthe“precedence“of“`â^á'“is“higher“than˜that“of“`â/á'.‘¹ÔSince“âunitsŽ¡‘Gácannot–ûzrepresenš²!t“dimensions‘û{with“expMÞonen˜ts“greater“than›û{99,‘©a“fully˜reduced“expMÞonenš²!t“m˜ustŽ¡‘Gha•²!v“e‘ì¸åq‘çLâ<‘¦fá100Ž‘&nY.‘ŸøWhen–ì¸raising›ì·a“non-dimensionless˜unit“to˜a“pMÞo•²!w“er,‘Úâunits–ì¸áattempts˜to“con•²!v“ertŽ¡‘Ga–decimal“expMÞonenš²!t“to“a‘rational“n˜um˜bšMÞer“with“åq‘çLâ<‘¦fá100Ž‘&¼.‘«If“this‘is“not“p˜ossible“âunits“ádispla²!ysŽ¡‘Gan–¦ferror“message:ŽŸÿ&‘.ùœâYou–¿ªhave:“ft^1.234Ž¡‘.ùœBase–¿ªunit“not“dimensionless;“rational“exponent“requiredŽŽŽŒ‹
ÁŸò‘GáUnits‘¦fCon•²!v“ersion’Td10ŽŽŽ ƒ33 ý ÌÍ‘GA‘vódecimal›w¬expMÞonen•²!t‘w­m“ust˜matc“h˜its˜rational‘w­represen“tation˜to˜mac“hine˜precision,‘+ýsoޤ
33‘G`âacre^1.5á'–¦fw²!orks“but“`âgallon^0.666á'“doMÞes“not.ŽŸí’‘Gëc5.2‘™Sums–f@and“Dierences“of“UnitsŽŽŸ33‘GáY‘ÿeou–™½maš²!y“sometimes‘™¾w˜an˜t“to“add“v‘ÿdDalues‘™¾of“dieren˜t“units“that›™¾are“outside“the“SI.˜Y‘ÿeou“ma²!yŽ¡‘Galso–jywish›jzto“use“âunits˜áas“a“calculator“that˜kš²!eeps“trac˜k“of›jzunits.‘ÉãSums“of˜conformable“unitsŽ¡‘Gare–¦fwritten“with“the“`â+á'“cš²!haracter,“and“dierences“with“the“`â-á'“c˜haracter.ŽŸ&ê‘.ùœâYou–¿ªhave:“2“hours“+“23“minutes“+“32“secondsŽ¡‘.ùœYou–¿ªwant:“secondsŽ¡‘\öì*‘¿ª8612Ž¡‘\öì/‘¿ª0.00011611705ŽŽ©9Àƒ‘.ùœYou–¿ªhave:“12“ft“+“3“inŽ¡‘.ùœYou–¿ªwant:“cmŽ¡‘\öì*‘¿ª373.38Ž¡‘\öì/‘¿ª0.0026782366ŽŽ¦‘.ùœYou–¿ªhave:“2“btu“+“450“ft“lbfŽ¡‘.ùœYou–¿ªwant:“btuŽ¡‘\öì*‘¿ª2.5782804Ž¡‘\öì/‘¿ª0.38785542ŽŽ¦‘GáThe–fMexpressions›fLthat“are“added˜or“subtracted“m²!ust“reduce˜to“iden²!tical“expressions˜in“prim-Ž¡‘Gitivš²!e–¦funits,“or“an“error“message“will“bMÞe“displa˜y˜ed:Ž©&ê‘.ùœâYou–¿ªhave:“12“printerspoint“-“4“herediumŽ¡’	lØ^Ž¡‘.ùœInvalid–¿ªsum“of“non-conformable“unitsŽŽŸ,P‘GáIf–·ryš²!ou“add‘·qt˜w˜o“v›ÿdDalues“of“v˜astly“dierenš²!t‘·qscale“y˜ou“ma˜y“exceed“the‘·qa˜v‘ÿdDailable“precision“ofŽ¡‘G
oating›Åp•MÞoin²!t‘Å(ab“out˜15–Ådigits).‘9èThe“eect˜is“that˜the“addition˜of“the˜smaller“v‘ÿdDalue˜mak²!esŽ¡‘Gno–gûcš²!hange“to“the“larger“v‘ÿdDalue;‘|Êin“other“w˜ords,‘twthe“smaller“v‘ÿdDalue“is‘gütreated“as“if“it“w˜ere“zero.ŽŸ&é‘.ùœâYou–¿ªhave:“lightyear“+“cmŽŽ¦‘GáNo–&Åwš²!arning‘&Æis“giv˜en,‘FÝho˜w˜ev˜er.‘^üAs“usual,‘FÝthe›&Æprecedence“for“`â+á'˜and“`â-á'˜is“lo•²!w“er˜than‘&ÅthatŽ¡‘Gof–Ùâthe›Ùáother“opMÞerators.‘xPA‘ÙÕfractional“quan•²!tit“y˜suc“h–Ùâas“2“1/2˜cups“can“bMÞe“giv²!en˜as“`â(2+1|2)Ž¡‘Gcupsá';‘Õìthe‘iparenš²!theses–jare“necessary“bMÞecause“m˜ultiplication“has“higher“precedence“thanŽ¡‘Gaddition.‘nKIf›ÖŠy²!ou–Ö‹omit“the˜paren²!theses,‘â”âunits“áattempts˜to“add˜`â2á'“and“`â1|2‘¦fcupsá',‘â“and“y²!ouŽ¡‘Gget–¦fan“error“message:ަ‘.ùœâYou–¿ªhave:“2+1|2“cupsŽ¡’œ3:^Ž¡‘.ùœInvalid–¿ªsum“or“difference“of“non-conformable“unitsŽŽŸ,P‘GáThe–
uexpression“could“also‘
vbMÞe“correctly“written“as“`â(2+1/2)›¦fcupsá'.‘©ãIf“y²!ou“write“`â2‘¿ª1|2˜cupsá'Ž¡‘Gthe–¦fspace“is“in²!terpreted“as“ämultiplic‘ÿp¹ation‘}qáso“the“result“is“the“same“as“`â1“cupá'.ަ‘!GThe–p¥`â+á'“and›p¤`â-á'“c²!haracters“sometimes“appMÞears˜in“expMÞonenš²!ts“lik˜e“`â3.43e+8á'.‘ËñThis“leads“toŽ¡‘Gan›¥ëam•²!biguit“y˜in˜an˜expression˜lik“e‘¥ê`â3e+2‘¦fyCá'.‘Ý´The˜unit˜`âeá'˜is˜a˜small˜unit˜of˜c“harge,‘¦so˜thisŽ¡‘Gcan–iõbMÞe“regarded“as“equiv‘ÿdDalen²!t“to“`â(3e+2)›¦fyCá'“or“`â(3˜e)+(2˜yC)á'.‘ɸThis“am•²!biguit“y–iõis“resolv²!edŽ¡‘Gb•²!y›¦falw“a“ys˜in“terpreting˜`â+á'˜and˜`â-á'˜as˜part˜of˜an˜expMÞonen“t˜if˜pMÞossible.ŽŽŒ‹ÐÀŸò‘GáUnits‘¦fCon•²!v“ersion’Td11ŽŽŽ ƒ33 ý ÌÍ‘Gëc5.3‘™NumŒÌbs3ers–f@as“UnitsŽŽ©33‘GáF‘ÿeor›ıâunitsá,‘ÌCn•²!um“b•MÞers˜are˜just˜another˜kind˜of˜unit.‘8¾They˜can‘İapp“ear˜as˜man•²!y˜times˜as˜y“ouޤ
33‘Glikš²!e–{áand‘{âin“an˜y›{âorder“in˜a“unit˜expression.‘ϱF‘ÿeor“example,‘„bto˜nd“the˜v²!olume“of˜a“bMÞo²!x˜that“isŽ¡‘G2–¦fft“bš²!y“3“ft“b˜y“12“ft“in“steres,“y˜ou“could“do“the“follo˜wing:ŽŸîð‘.ùœâYou–¿ªhave:“2“ft“3“ft“12“ftŽ¡‘.ùœYou–¿ªwant:“stereŽ¡‘\öì*‘¿ª2.038813Ž¡‘\öì/‘¿ª0.49048148ŽŸff‘.ùœYou–¿ªhave:“$“5“/“yardŽ¡‘.ùœYou–¿ªwant:“cents“/“inchŽ¡‘\öì*‘¿ª13.888889Ž¡‘\öì/‘¿ª0.072ŽŽ ƒˆ‡‘GáAnd–Œõthe›Œôsecond“example“sho•²!ws˜ho“w–Œõthe“dollar˜sign“in“the˜units“con•²!v“ersion–Œõcan˜precede“theŽ¡‘Gv²!e.–ÝÝBe›¦fcareful:“âunits˜áwill˜in•²!terpret˜`â$5á'˜with˜no˜space˜as˜equiv‘ÿdDalen“t˜to˜`âdollar^5á'.ŽŸ+™›‘Gëc5.4‘™Built-in‘f@F‘þ¦functionsŽŽ¦‘GáSevš²!eral––^built-in“functions‘–_are“pro˜vided:‘½Í`âsiná',–Ò\`âcosá',“`âtaná',“`âasiná',“`âacosá',“`âataná',“`âsinhá',Ž¡‘G`âcoshá',–aX`âtanhá',›aY`âasinhá',“`âacoshá',“`âatanhá',˜`âexpá',“`âlná',˜`âlogá',“`âabsá',“`âroundá',˜`âfloorá',“`âceilá',Ž¡‘G`âfactorialá',–Äÿ`âGammaá',“`âlnGammaá',‘Å`âerfá',“and–‹­`âerfcá';‘þRthe“function–‹®`âlnGammaá'“is‘‹­the“naturalŽ¡‘Glogarithm–¦fof“the“`âGammaá'“function.Ž©îð‘!GThe–Y¾`âsiná',‘Æ’`âcosá',‘Æ“and“`âtaná'›Y½functions“require˜either“a˜dimensionless“argumen²!t˜or“anŽ¡‘Gargumen²!t–¦fwith“dimensions“of“angle.ަ‘.ùœâYou–¿ªhave:“sin(30“degrees)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª0.5Ž©ff‘.ùœYou–¿ªhave:“sin(pi/2)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1ަ‘.ùœYou–¿ªhave:“sin(3“kg)Ž¡’–s^Ž¡‘.ùœUnit–¿ªnot“dimensionlessŽŽ îí‘GáThe–WDother“functions“on“the“list“require“dimensionless“argumenš²!ts.‘Ã|The“in˜v˜erse“trigonometricŽ¡‘Gfunctions–¦freturn“argumen²!ts“with“dimensions“of“angle.ަ‘!GThe–|u`âlná'›|vand“`âlogá'“functions˜giv²!e“natural“log˜and“log“base“10˜respMÞectiv²!ely–ÿe.‘`T“o‘|uobtainŽ¡‘Glogs–`for“anš²!y“in˜teger“base,‘9ßen˜ter“the“desired“base“immediately“after“`âlogá'.‘?ÌF‘ÿeor“example,‘9ÞtoŽ¡‘Gget–¦flog“base“2“yš²!ou“w˜ould“write“`âlog2á'“and“to“get“log“base“47“y˜ou“could“write“`âlog47á'.ŽŽŒ‹Ü®Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td12ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“log2(32)ޤ
33‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª5Ž¡‘.ùœYou–¿ªhave:“log3(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª3.1546488Ž¡‘.ùœYou–¿ªhave:“log4(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª2.5Ž¡‘.ùœYou–¿ªhave:“log32(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1Ž¡‘.ùœYou–¿ªhave:“log(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1.50515Ž¡‘.ùœYou–¿ªhave:“log10(32)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª1.50515ŽŽ ó=Ý‘!GáIf–Vyš²!ou“wish“to“tak˜e“roMÞots“of‘Wunits,‘'&y˜ou“ma˜y“use“the“`âsqrtá'“or“`âcuberootá'“functions.‘¨ØTheseޤ
33‘Gfunctions–drequire“that“the“argumenš²!t“ha˜v˜e“the“appropriate‘crošMÞot.‘¬2Y‘ÿeou“can“obtain“higher“ro˜otsŽ¡‘Gbš²!y–¦fusing“fractional“expMÞonen˜ts:ŽŸ×y‘.ùœâYou–¿ªhave:“sqrt(acre)Ž¡‘.ùœYou–¿ªwant:“feetŽ¡‘\öì*‘¿ª208.71074Ž¡‘\öì/‘¿ª0.0047913202Ž©ff‘.ùœYou–¿ªhave:“(400“W/m^2“/“stefanboltzmann)^(1/4)Ž¡‘.ùœYou‘¿ªhave:Ž¡‘\öìDefinition:–¿ª289.80882“Kަ‘.ùœYou–¿ªhave:“cuberoot(hectare)Ž¡’Äpà^Ž¡‘.ùœUnit–¿ªnot“a“rootŽŽ ²)›‘Gëc5.5‘™Previous‘f@ResultŽŽŸ33‘GáY‘ÿeou–¿–can“insert“the“result“of“the“previous“con•²!v“ersion‘¿•using–¿–the“underscore“(`â_á').‘)mIt“is“usefulŽ¡‘Gwhen–¦fyš²!ou“w˜an˜t“to“con˜v˜ert“the“same“input“to“sev˜eral“dieren˜t“units,“for“exampleŽŸ×z‘.ùœâYou–¿ªhave:“2.3“tonrefrigerationŽ¡‘.ùœYou–¿ªwant:“btu/hrŽ¡‘\öì*‘¿ª27600Ž¡‘\öì/‘¿ª3.6231884e-005Ž¡‘.ùœYou–¿ªhave:“_Ž¡‘.ùœYou–¿ªwant:“kWŽ¡‘\öì*‘¿ª8.0887615Ž¡‘\öì/‘¿ª0.12362832ŽŽŽŒ‹
彟ò‘GáUnits‘¦fCon•²!v“ersion’Td13ŽŽŽ ƒ33 ý ÌÍ‘GSuppMÞose–´½yš²!ou“w˜an˜t“to“do“some“deep“frying“that“requires‘´¼an“oil“depth“of“2“inc˜hes.‘âY‘ÿeou“ha˜v˜eޤ
33‘G1/2–Žgallon›of“oil,‘(and“w•²!an“t‘Žto˜kno“w–Žthe“largest-diameter“pan˜that“will“main²!tain˜the“requiredŽ¡‘Gdepth.‘™3The–Øgnonlinear›Øfunit“`âcircleareaá'“giv²!es“the“är‘ÿp¹adius‘¾~áof“the“circle“(see˜Section“6.3“[OtherŽ¡‘GNonlinear–cUnits],›Çþpage“19,˜for“a›dmore“detailed˜description)“in“SI‘units;‘íyš²!ou“w˜an˜t‘dthe“ädiameterŽ¡‘Gáin‘¦fäinches‘æá:Ž©fg‘.ùœâYou–¿ªhave:“1|2“gallon“/“2“inŽ¡‘.ùœYou–¿ªwant:“circleareaŽ¡‘\öì0.10890173‘¿ªmŽ¡‘.ùœYou–¿ªhave:“2“_Ž¡‘.ùœYou–¿ªwant:“inŽ¡‘\öì*‘¿ª8.5749393Ž¡‘\öì/‘¿ª0.1166189ŽŽŸc™™‘GáIn–7most“cases,‘#Ùsurrounding“white“space“is›6optional,‘#Úso“the“previous“example˜could“ha•²!v“e‘7usedŽ¡‘G`â2_á'.‘ÝÝIf–¦f`â_á'“folloš²!ws“a“non-n˜umerical“unit“sym˜bMÞol,“ho˜w˜ev˜er,“the“space“is“required:ަ‘.ùœâYou–¿ªhave:“m_Ž¡‘n5ê^Ž¡‘.ùœParse‘¿ªerrorŽŽŸ.ÌÍ‘GáY‘ÿeou–¦fcan“use“the“`â_á'“symš²!bMÞol“an˜y“n˜um˜bMÞer“of“times;“for“example,ަ‘.ùœâYou–¿ªhave:“mŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ª1“mŽ¡‘.ùœYou–¿ªhave:“_“_Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ª1“m^2ŽŽŸVfe‘GáUsing–á`â_á'›âbMÞefore“a˜con•²!v“ersion–áhas˜bšMÞeen“p˜erformed“(e.g.,‘Êñimmediately“after‘âin•²!v“o˜cation)‘ágen-Ž¡‘Gerates–¦fan“error:ަ‘.ùœâYou–¿ªhave:“_Ž¡‘hv@^Ž¡‘.ùœNo–¿ªprevious“result;“
_
“not“setŽŽŸ.ÌÍ‘GáAccordingly‘ÿe,–¦f`â_á'“servš²!es“no“purpMÞose“when“âunits“áis“in˜v˜ok˜ed“non-in˜teractiv˜ely‘ÿe.ަ‘!GIf–Œ3âunits›Œ2áis“in•²!v“ok“ed–Œ3with“the˜â--verbose“áoption“(see“Chapter˜10“[In•²!v“oking–Œ3Units],‘Ä£page“31),Ž¡‘Gthe–¦fv‘ÿdDalue“of“`â_á'“is“not“expanded:ަ‘.ùœâYou–¿ªhave:“mileŽ¡‘.ùœYou–¿ªwant:“ftŽ¡‘\öìmile–¿ª=“5280“ftŽ¡‘\öìmile–¿ª=“(1“/“0.00018939394)“ftŽ¡‘.ùœYou–¿ªhave:“_Ž¡‘.ùœYou–¿ªwant:“mŽ¡‘\öì_–¿ª=“1609.344“mŽ¡‘\öì_–¿ª=“(1“/“0.00062137119)“mŽŽŸpÌÌ‘GáY‘ÿeou–¦fcan“givš²!e“`â_á'“at“the“`âYou“want:á'Ž‘?Øprompt,“but“it“usually“is“not“v˜ery“useful.ŽŽŒ‹ëùŸò‘GáUnits‘¦fCon•²!v“ersion’Td14ŽŽŽ ƒ33 ý ÌÍ‘Gëc5.6‘™Complicated–f@Unit“ExpressionsŽŽŸ33‘GáThe–¸âunits›¸áprogram“is“espMÞecially˜helpful“in˜ensuring“accuracy“and˜dimensional“consistencyޤ
33‘Gwhen›#‘con•²!v“erting‘#length“y˜unit–#expressions.‘U]F‘ÿeor˜example,‘BÛone“form˜of“the˜Darcy{W‘ÿeeisbac²!hŽ¡‘G
uid-
o²!w–¦fequation“isŽŸŠ’ÂaŸéP‘ýá=Ÿø—ž‘ƒ8Ž‘=ÚŸÞȉfeìŸ
téd“ŸüÖ0®2ŽŽŽŽŽ‘ùéf‘-¼LŸø—ž‘33QŸü¾®2ŽŽ‘33ŸÞȉfe
$ˆŸ
t‘z‡édŸüÖ0®5ŽŽŽŽŽŽŸ=БGáwhere–ÜéP‘aòáis“the“pressure›Üœdrop,‘øé“áis˜the“mass“densit²!y‘ÿe,‘øéf‘
Xáis“the“(dimensionless)˜friction“factor,Ž¡‘GéL–Çáis›Æÿthe“length“of“the˜pipMÞe,‘Ï&éQ“áis“the“v•²!olumetric˜
o“w–Çrate,‘Ï&and“éd“áis˜the“pipMÞe“diameter.‘?ªY‘ÿeouŽ¡‘Gmigh•²!t›¦fw“an“t˜to˜ha“v“e˜the˜equation˜in˜the˜formŽŸŠ’ÂÊÛéP‘ýá=‘
§éAŸ¤z®1Ž‘|séf‘-¼LŸø—ž‘33QŸü¾®2ŽŽ‘33ŸÞȉfe
$ˆŸ
t‘z‡édŸüÖ0®5ŽŽŽŽŽŽŸ¢‘Gáthat–.ˆaccepted›.‰the“user's“normal˜units;‘r™for“t²!ypical˜units“used“in˜the“US,“the˜required“con-Ž¡‘Gvš²!ersion–¦fcould“bMÞe“something“lik˜eŽŸz„‘.ùœâYou–¿ªhave:“(8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5)Ž¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽ©8‘GáThe›,øparen•²!theses‘,÷allo“w˜individual–,÷terms˜in˜the“expression˜to“bMÞe˜en²!tered˜naturally‘ÿe,‘N›as˜theyŽ¡‘Gmighš²!t–mbMÞe“read“from‘nthe“form˜ula.‘òAlternativ˜ely‘ÿe,‘ ïthe“m˜ultiplication“could‘nbMÞe“done“with“theŽ¡‘G`â*á'–Q+rather›Q,than“a˜space;‘¦then˜paren²!theses“are˜needed“only“around˜`âft^3/sá'“bMÞecause˜of“itsŽ¡‘GexpMÞonen²!t:ŽŸz…‘.ùœâYou–¿ªhave:“8/pi^2“*“lbm/ft^3“*“ft“*“(ft^3/s)^2“/in^5Ž¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽ¦‘GáWithout–™¡parenš²!theses,‘Öoand“using“spaces‘™¢for“m˜ultiplication,‘Öothe“previous“con˜v˜ersion“w˜ouldŽ¡‘Gneed–¦fto“bMÞe“en²!tered“asŽ©z„‘.ùœâYou–¿ªhave:“8“lb“ft“ft^3“ft^3“/“pi^2“ft^3“s^2“in^5Ž¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŸE“‘Gëc5.7‘™V‘þ¦fariables–f@Assigned“at“Run“TimeŽŽŸ33‘GáUnit–¥Xdenitions“are“xed“once“âunits“áhas“nished“reading“the“units“data“le(s),‘¥Žbut“at“runŽ¡‘Gtime–,y²!ou›,can“assign˜unit“expressions“to˜v‘ÿdDariables“whose“names˜bMÞegin“with˜an“underscore,Ž¡‘Gusing–¦fthe“syn²!taxަ‘.ùœâ_èname–¿ªâ=“<èunit“expressionâ>ŽŸz…‘GáThis–<øcan›<ùhelp“manage˜a“long˜calculation“b•²!y˜sa“ving‘<øin“termediate˜quan“tities–<øas˜v‘ÿdDariables“thatŽ¡‘Gy²!ou–•“can“use–•’later.‘«dF‘ÿeor“example,‘Ñ^to–•“determine“the‘•’shot-noise-limited“signal-to-noise“ratioŽ¡‘G(SNR)–¦fof“an“imaging“system“using“a“helium{neon“laser,“y²!ou“could“doަ‘.ùœâYou–¿ªhave:“_lambda“=“632.8“nm‘Dûø#“laser“wavelengthŽ¡‘.ùœYou–¿ªhave:“_nu“=“c“/“_lambda‘J»¢#“optical“frequencyŽŽŒ‹ôhŸò‘GáUnits‘¦fCon•²!v“ersion’Td15ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“_photon_energy“=“h“*“_nuޤ
33‘.ùœYou–¿ªhave:“_power“=“550“uWŽ¡‘.ùœYou–¿ªhave:“_photon_count“=“_power“*“500“ns“/“_photon_energyŽ¡‘.ùœYou–¿ªhave:“_snr“=“sqrt(_photon_count)Ž¡‘.ùœYou–¿ªhave:“_snrŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªsqrt(_photon_count)“=“29597.922Ž©{Q‘GáExcept–Afor›BbMÞeginning“with“an“underscore,‘:ørun²!time˜v‘ÿdDariables“follo²!w“the“same˜naming“rulesŽ¡‘Gas–l“units.‘Ê—Because“names›l”bMÞeginning“with“`â_á'˜are“reserv²!ed“for˜these“v‘ÿdDariables“and˜unit“namesŽ¡‘Gcannot–}ÓbMÞegin“with“`â_á',‘…ðrunš²!time“v‘ÿdDariables“can“nev˜er“hide“unit‘}Òdenitions.‘ÐWRun˜time“v‘ÿdDariablesŽ¡‘Gare–ƒgundened‘ƒfunš²!til“y˜ou“mak˜e‘ƒfan“assignmen˜t“to“them,‘Šfso“if“y˜ou‘ƒfgiv˜e“a“name‘ƒfbMÞeginning“withŽ¡‘Gan–¦funderscore“and“no“assignmenš²!t“has“bMÞeen“made,“y˜ou“get“an“error“message.ަ‘!GWhen–'™y²!ou“assign›'˜a“unit“expression“to“a˜run²!time“v‘ÿdDariable,‘Gæâunits˜ác•²!hec“ks–'™the“expressionŽ¡‘Gto–Âé˜áis“the˜loMÞcation's“latitude,‘À?and“é‘%+áis“theŽ¡‘GSun's–ˆƒdeclination.‘ÓçThe“length“of‘ˆ‚a“solar“daš²!y“is“obtained“from“a“sidereal“da˜y“b˜y“m˜ultiplyingŽ¡‘Gb²!yަ‘.ùœâsiderealday–¿ª/“dayŽŽŒ‹ÿµŸò‘GáUnits‘¦fCon•²!v“ersion’Td16ŽŽŽ ƒ33 ý ÌÍ‘GBy›{!con•²!v“en“tion,‘¶ûthe˜Sun's˜altitude˜at–{ rise˜or˜set˜is“êá50Ÿü¾º0Ž‘IZáto˜allo²!w˜for“atmospheric˜refraction˜andޤ
33‘Gthe–semidiameter“of“its“disk.‘§½Aš²!t“the“summer“solstice,‘$the“Sun's“declination“is“appro˜ximatelyŽ¡‘G23é:á44Ÿü¾ºŽ‘˜äá;–¦fto“nd“the“length“of“the“longest“daš²!y“of“the“y˜ear“for“a“latitude“of“55Ÿü¾ºŽ‘˜äá,“y˜ou“could“doŽ©”º‘.ùœâYou–¿ªhave:“_alt“=“-50“arcminŽ¡‘.ùœYou–¿ªhave:“_lat“=“55“degŽ¡‘.ùœYou–¿ªhave:“_decl“=“23.44“degŽ¡‘.ùœYou–¿ªhave:“_num“=“sin(_alt)“-“sin(_lat)“sin(_decl)Ž¡‘.ùœYou–¿ªhave:“_denom“=“cos(_lat)“cos(_decl)Ž¡‘.ùœYou–¿ªhave:“_sday“=“2“(acos(_num“/“_denom)“/“circle)“24“hrŽ¡‘.ùœYou–¿ªhave:“_day“=“_sday“siderealday“/“dayŽ¡‘.ùœYou–¿ªhave:“_dayŽ¡‘.ùœYou–¿ªwant:“hmsŽ¡‘\öì17–¿ªhr“+“19“min“+“34.895151“secŽŽ ‡a…‘GáA•²!t›žlthe‘žkwin“ter˜solstice,‘Ó7the–žkSun's˜declination“is˜appro²!ximately“êá23é:á44Ÿü¾ºŽ‘˜äá,‘Ó7so˜y²!ou“could˜calculateŽ¡‘Gthe–¦flength“of“the“shortest“daš²!y“of“the“y˜ear“using:ަ‘.ùœâYou–¿ªhave:“_decl“=“-23.44“degŽ¡‘.ùœYou–¿ªhave:“_dayŽ¡‘.ùœYou–¿ªwant:“hmsŽ¡‘\öì7–¿ªhr“+“8“min“+“40.981084“secŽŽŸ8.R‘GáLatitude–¥zand“declination“eacš²!h“appMÞear“t˜wice“in“the“expression“for‘¥yâ_dayá;‘%the“result“in“theŽ¡‘Gexamples›¦fabMÞo•²!v“e˜is˜upMÞdated˜b“y˜c“hanging˜only˜the˜v‘ÿdDalue˜of˜the˜declination.ަ‘!GIt's–¹impMÞortanš²!t‘¹
to“remem˜bMÞer“that“ev‘ÿdDaluation‘¹
of“run˜time“v‘ÿdDariables‘¹
is“dela˜y˜ed,‘è„so‘¹
y˜ou“cannotŽ¡‘Gmakš²!e–¦fan“assignmen˜t“that“is“self-referen˜tial.‘ÝÝF‘ÿeor“example,“the“follo˜wing“doMÞes“not“w˜ork:ަ‘.ùœâYou–¿ªhave:“_decl“=“23.44“degŽ¡‘.ùœYou–¿ªhave:“_decl“=“-_declŽ¡‘.ùœYou–¿ªhave:“_declŽ¡‘.ùœCircular–¿ªunit“definitionŽŽŸ8.S‘GáA–¥urunš²!time“v‘ÿdDariable‘¥vm˜ust“bšMÞe“assigned‘¥vb˜efore“it“can“b˜e›¥vused“in“an˜assignmen²!t;‘¥Åin“the˜rst“ofŽ¡‘Gthe–*three“examples›*abMÞo•²!v“e,‘Bëgiving–*the“general“equation˜bMÞefore“the“v‘ÿdDalues“for“â_altá,‘Bêâ_latá,‘BëandŽ¡‘Gâ_decl–¦fáhad“bMÞeen“assigned“w²!ould“result“in“an“error“message.ŽŸ’J‘Gëc5.8›™Bac•ŒÌkw“ards‘f@Compatibilit“y:˜`ëg*ëc'–f@and“`ëg-ëc'ŽŽŸ33‘GáThe– ?original› >âunits“áassigned“m²!ultiplication˜a“higher“precedence˜than“division“using˜the“slash.Ž¡‘GThis–3diers“from“the“usual›3€precedence“rules,‘VÈwhic•²!h˜giv“e›3m“ultiplication˜and˜division˜equalŽ¡‘Gprecedence,–¦fand“can“bšMÞe“confusing“for“p˜eople“who“think“of“units“as“a“calculator.ަ‘!GThe–˜star›—ÿopMÞerator“(`â*á')˜included“in˜this“âunits˜áprogram“has,–šáb²!y˜default,“the˜same‘˜prece-Ž¡‘Gdence›§as–§division,‘Ú+and“hence˜follo²!ws˜the“usual˜precedence“rules.‘ˆÅF‘ÿeor“bac•²!kw“ards˜compatibilit“yŽ¡‘Gy•²!ou›jcan‘kin“v“ok“e˜âunits–káwith˜the˜â--oldstar“áoption.‘îêThen˜`â*á'“has˜a˜higher“precedence˜thanŽ¡‘Gdivision,–¦fand“the“same“precedence“as“m²!ultiplication“using“the“space.ަ‘!GHistorically‘ÿe,‘óáthe–Ç@h²!yphen›Ç?(`â-á')“has˜bMÞeen“used“in˜tec²!hnical“publications“to˜indicate“proMÞductsŽ¡‘Gof–ªunits,‘.ûand›«the“original“âunits˜áprogram“treated“it“as˜a“m²!ultiplication“opMÞerator.‘%ªBecauseŽ¡‘Gâunits–r8áproš²!vides“sev˜eral“other“w˜a˜ys“to“obtain‘r7unit“prošMÞducts,‘¥,and“b˜ecause“`â-á'“is“a“subtrac-Ž¡‘Gtion–¹4opMÞerator“in“general“algebraic›¹3expressions,‘½èâunits“átreats“the˜binary“`â-á'“as“a“subtractionŽ¡‘GopMÞerator–È}bš²!y“default.‘D!F‘ÿeor“bac˜kw˜ards“compatibilit˜y‘È|use“the“â--product“áoption,‘Ñwhic˜h“causesŽŽŒ‹óŸò‘GáUnits‘¦fCon•²!v“ersion’Td17ŽŽŽ ƒ33 ý ÌÍ‘Gâunits–§Ñáto“treat›§Òthe“binary“`â-á'“opMÞerator˜as“a“prošMÞduct“op˜erator.‘âWhen“`â-á'‘§Òis“a“m²!ultiplica-ޤ
33‘Gtion–Ì-opMÞerator“it“has“the“same“precedence“as“m²!ultiplication“with“a“space,‘Õžgiving“it“a“higherŽ¡‘Gprecedence–¦fthan“division.Ž©8ä‘!GWhen–Hï`â-á'“is“used“as“a“unary“opšMÞerator“it‘Hðnegates“its“op˜erand.‘ÅxRegardless“of“the“âunitsŽ¡‘Gáoptions,‘ì1if–Þ;`â-á'“appMÞears›Þthe“yš²!ear“plus‘è=the“fractional“part“of“the“y˜ear;‘‰)bMÞecause“of“leap‘è=y˜ears“and“the“dieren˜tŽ¡‘Glengths–i—of“mon²!ths,›uÀcalculating“an“exact“v‘ÿdDalue“for‘i˜the“fractional“part“can“bMÞe“tedious,˜but“forŽ¡‘Gthe–u}purpMÞoses“of›u~CPI,“an“appro²!ximate“v‘ÿdDalue“is“usually˜adequate.‘K"F‘ÿeor“example,‘©C1‘¦fJan²!uaryŽŽ¡‘G2000–Ÿ
is‘Ÿ	2000.0,‘Ý31‘¦fAprilŽ‘+G;2000“is“2000.25,‘Ý21‘¦fJulyŽ‘'$>2000“is“2000.4986,‘Ý2and“1‘¦fOctobMÞerŽ‘9ò2000“isŽ¡‘G2000.75.‘
4Note›b„also–bƒthat“the“CPI‘bdata“upMÞdate“mon²!thly;‘@‘v‘ÿdDalues˜in“bMÞet•²!w“een›bƒmon“ths˜areŽ¡‘Glinearly‘¦fin²!terpMÞolated.ަ‘!GIn–¦fthe“middle“of“1975,“the“CPI“w²!asަ‘.ùœâYou–¿ªhave:“cpi(1975.5)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª53.6ŽŽŸ*>,‘GáThe–B#v‘ÿdDalue›B"of“the˜CPI‘Aûfor“the˜previous“mon²!th˜is“usually“published˜to•²!w“ard–B#the˜the“mon²!th;Ž¡‘Gthe–¦flatest“v›ÿdDalue“of“the“CPI“is“a²!v˜ailable“with“`âcpi_nowá'.‘ÝÝOn“7“Jan²!uaryŽ‘6î»2024,“the“v˜alue“w²!asަ‘.ùœâYou–¿ªhave:“cpi_nowŽ¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªUScpi_now“=“307.051ŽŽŸ*>+‘GáThis–’means“that‘’œthe“CPI‘’`wš²!as“307.015“on“1‘¦fDecem˜bMÞerŽ‘A™I2023.‘¢‚The‘’œ`âcpi_nowá'“v‘ÿdDariable“canŽ¡‘Gonly–n7presenš²!t“the‘n6most“recen˜t“data“a˜v‘ÿdDailable,‘ysso“it“can“lag‘n6the“curren˜t“CPI‘n(b˜y“sev˜eral“w˜eeks.Ž¡‘GThe–¦fdecimal“yš²!ear“of“the“last“upMÞdate“is“a˜v‘ÿdDailable“with“`âcpi_lastdateá'.ަ‘!GThe–5’`âinflation_sinceá'›5“function“pro²!vides˜a“con•²!v“enien“t‘5’w“a“y˜to–5’determine˜the“in
ationŽ¡‘Gfactor–òXfrom“a“spMÞecied“decimal“y²!ear“to“the“latest“v‘ÿdDalue“in‘òWthe“CPI‘òEtable.‘Á³F‘ÿeor“example,‘TonŽ¡‘G7‘¦fJan²!uaryŽ‘EYœ2024:ަ‘.ùœâYou–¿ªhave:“inflation_since(1970)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª8.1445889ŽŽŸ*>,‘GáIn–¦fother“wš²!ords,“go•MÞo“ds–¦fthat“cost“1“US$“in“1970“w˜ould“cost“8.14“US$“on“1“Decem˜bMÞerŽ‘?ÀÜ2023.ŽŽŒ‹&
Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td19ŽŽŽ ƒ33 ý ÌÍ‘!GThe–Á`âinflation_sinceá'“function“can“bMÞe“used“to‘Àdetermine“an“ann²!ual“rate“of“in
ation.ޤ
33‘GThe–Ùjearliest“US–Ù]CPI“data–Ùjare“from“abšMÞout“1913.1;‘òíthe“appro²!ximate“time“b˜et•²!w“een–Ùjthen“andŽ¡‘G7‘¦fJan²!uaryŽ‘D©Ñ2024–ö›is“110.9‘öœyš²!ears.‘£DThe“appro˜ximate“ann˜ual“in
ation“rate“for‘öœthat“p•MÞerio“d–ö›is“thenŽ©5@‘.ùœâYou–¿ªhave:“inflation_since(1913.1)^1|110.9“-“1Ž¡‘.ùœYou–¿ªwant:“%Ž¡‘\öì*‘¿ª3.1548115Ž¡‘\öì/‘¿ª0.31697614ŽŽŸ:ÎÙ‘GáThe–s”in
ation›s“rate“for“an²!y“time˜p•MÞerio“d–s”can“bMÞe“found˜from“the“ratio“of˜the“CPI‘s‡at“the˜end“ofŽ¡‘Gthe›¦fp•MÞerio“d˜to˜that˜of˜the˜b“eginning:ަ‘.ùœâYou–¿ªhave:“(cpi(1982)/cpi(1972))^1|10“-“1Ž¡‘.ùœYou–¿ªwant:“%Ž¡‘\öì*‘¿ª8.6247033Ž¡‘\öì/‘¿ª0.11594602ŽŽŸ:ÎÙ‘GáThe›¦fp•MÞerio“d˜1972{1982˜w²!as˜indeed˜one˜of˜high˜in
ation.ŽŸ5?‘!GThe–ã£`âdollars_iná'›ã¢function“is˜similar“to˜`âinflation_sinceá'“but˜its“output˜is“in˜US$Ž¡‘Grather–¦fthan“dimensionless:ަ‘.ùœâYou–¿ªhave:“dollars_in(1970)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ª8.1445889“US$ŽŽŸ-›¦‘GáA–¦ftš²!ypical“use“migh˜t“bMÞeަ‘.ùœâYou–¿ªhave:“250“dollars_in(1970)Ž¡‘.ùœYou–¿ªwant:“$Ž¡‘\öì*‘¿ª2036.1472Ž¡‘\öì/‘¿ª0.00049112362ŽŽŸ:ÎÙ‘GáBecause–f`âdollars_iná'“includes›ethe“units,‘fy²!ou˜should“not“include“them˜at“the“`âYou‘¦fhave:á'ŽŽ¡‘Gprompt.‘ÝÝY‘ÿeou–¦fcan“also“use“`âdollars_iná'“to“con•²!v“ert›¦fbMÞet“w“een˜t“w“o˜spMÞecied˜y“ears:ަ‘.ùœâYou–¿ªhave:“250“dollars_in(1970)Ž¡‘.ùœYou–¿ªwant:“dollars_in(1950)Ž¡‘\öì*‘¿ª156.49867Ž¡‘\öì/‘¿ª0.0063898305ŽŽŸ:ÎÙ‘Gáwhic•²!h›ÙDsho“ws–ÙEthat˜250˜US$˜in“1970˜w•²!ould˜ha“v“e˜equiv‘ÿdDalen“t‘ÙEpurc“hasing˜pMÞo“w“er˜to˜156‘ÙEUS$˜inŽ¡‘G1950.ŽŸ!ƒ‘Gëc6.3‘™Other–f@Nonlinear“UnitsŽŽŸ33‘GáSome–Άother›Î…examples“of˜nonlinear“units˜are“n•²!umerous˜dieren“t–Άring˜sizes“and˜wire“gauges,Ž¡‘Gthe–Àägrit“sizes“used“for“abrasiv²!es,›Ç„the“decibMÞel“scale,˜shoMÞe“size,˜scales“for“the“densit²!y“of“sugarŽ¡‘G(e.g.,‘ç3baume).‘
F2The–s×standard›sØdata“le˜also“supplies˜units“for˜computing“the˜area“of˜aŽ¡‘Gcircle–øïand›øîthe“v²!olume˜of“a“sphere.‘ÕvSee“the“standard˜units“data˜le“for“more˜details.‘ÕwWireŽ¡‘Ggauges–ù§with“mš²!ultiple“zeroMÞes“are“signied“using“negativ˜e“n˜um˜bMÞers“where“t˜w˜o“zeroMÞes“is“`â-1á'.Ž¡‘GAlternativ•²!ely‘ÿe,›«Ïy“ou–w‡can“use“the“synon²!yms“`âg00á',‘«Î`âg000á',˜and“so“on“that“are“dened“in“theŽ¡‘Gstandard–¦funits“data“le.ŽŽŒ‹2¿Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td20ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“wiregauge(11)ޤ
33‘.ùœYou–¿ªwant:“inchesŽ¡‘\öì*‘¿ª0.090742002Ž¡‘\öì/‘¿ª11.020255Ž©ff‘.ùœYou–¿ªhave:“brwiregauge(g00)Ž¡‘.ùœYou–¿ªwant:“inchesŽ¡‘\öì*‘¿ª0.348Ž¡‘\öì/‘¿ª2.8735632ަ‘.ùœYou–¿ªhave:“1“mmŽ¡‘.ùœYou–¿ªwant:“wiregaugeŽ¡‘\öì18.201919ަ‘.ùœYou–¿ªhave:“grit_P(600)Ž¡‘.ùœYou–¿ªwant:“grit_ansicoatedŽ¡‘\öì342.76923ŽŽ â™˜‘GáThe–òZlast“example“shoš²!ws“the“con˜v˜ersion“from“P‘òFgraded“sand“papMÞer,‘Wwhic˜h“is“the“EuropMÞeanޤ
33‘Gstandard–¦fand“maš²!y“bMÞe“mark˜ed“\P600"“on“the“bac˜k,“to“the“USA“standard.Ž©fg‘!GY›ÿeou–Ëcan“compute“the“area“of“a“circle‘Êusing“the“nonlinear“unit,‘(ä`âcircleareaá'.‘Y˜ou“canŽ¡‘Galso–!þdo›!ÿthis“using˜the“circularinc²!h“or˜circleinc²!h.‘	P¦The“next˜example“shoš²!ws“t˜w˜o‘!ÿw˜a˜ys“toŽ¡‘Gcompute–™Ùthe“area“of“a‘™Úcircle“with“a“vš²!e“inc˜h“radius“and“one“w˜a˜y‘™Úto“compute“the“v˜olume“ofŽ¡‘Ga–¦fsphere“with“a“radius“of“one“meter.ŽŸfh‘.ùœâYou–¿ªhave:“circlearea(5“in)Ž¡‘.ùœYou–¿ªwant:“in2Ž¡‘\öì*‘¿ª78.539816Ž¡‘\öì/‘¿ª0.012732395Ž©ff‘.ùœYou–¿ªhave:“10^2“circleinchŽ¡‘.ùœYou–¿ªwant:“in2Ž¡‘\öì*‘¿ª78.539816Ž¡‘\öì/‘¿ª0.012732395ަ‘.ùœYou–¿ªhave:“spherevol(meter)Ž¡‘.ùœYou–¿ªwant:“ft3Ž¡‘\öì*‘¿ª147.92573Ž¡‘\öì/‘¿ª0.0067601492ŽŽ ºÿÿ‘GáThe›…+in•²!v“erse–…,of˜a˜nonlinear“con•²!v“ersion˜is˜indicated‘…,b“y˜prexing˜a–…,tilde˜(`â~á')˜to“the˜nonlinearŽ¡‘Gunit‘¦fname:ަ‘.ùœâYou–¿ªhave:“~wiregauge(0.090742002“inches)Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª11ŽŽŸ)ÌΑGáY‘ÿeou–¶|can“giv²!e›¶{a“nonlinear“unit“denition˜without“an“argumen²!t“or˜paren²!theses,‘úand“pressŽ¡‘GâEnter–Ã
áat›Ãthe“`âYou‘¦fwant:á'Ž‘?? prompt“to˜get“the“denition“of˜a“nonlinear“unit;‘Ñ\if˜the“denitionŽ¡‘Gis–EÝnot“v›ÿdDalid“for“all“real“n•²!um“bMÞers,‘Y,the–EÝrange“of“v˜aliditš²!y“is“also“giv˜en.‘½¯If“the“denition“requiresŽ¡‘GspMÞecic–¦funits“this“information“is“also“displa•²!y“ed:ŽŽŒ‹<ߟò‘GáUnits‘¦fCon•²!v“ersion’Td21ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“tempCޤ
33‘\öìDefinition:–¿ªtempC(x)“=“x“K“+“stdtempŽ¡’¡òädefined–¿ªfor“x“>=“-273.15Ž¡‘.ùœYou–¿ªhave:“~tempCŽ¡‘\öìDefinition:–¿ª~tempC(tempC)“=“(tempC“+(-stdtemp))/KŽ¡’¡òädefined–¿ªfor“tempC“>=“0“KŽ¡‘.ùœYou–¿ªhave:“circleareaŽ¡‘\öìDefinition:–¿ªcirclearea(r)“=“pi“r^2Ž¡’¡òär–¿ªhas“units“mŽŽŸz‘‘GáT‘ÿeo–†see›‡the“denition˜of“the“in•²!v“erse˜use–†the˜`â~á'“notation.‘þ>In“this˜case“the˜parameter“inޤ
33‘Gthe–¼functional›»denition“will˜usually“bMÞe“the˜name“of˜the“unit.‘ÃÞNote˜that“the˜in•²!v“erse‘¼forŽ¡‘G`âtempCá'–C›shoš²!ws“that“it“requires“units“of“`âKá'“in‘Cœthe“spMÞecication“of“the“allo˜w˜ed“range“of“v‘ÿdDalues.Ž¡‘GNonlinear›xQunit‘xRcon•²!v“ersions˜are–xRdescribMÞed˜in˜more“detail˜in“Section˜13.3“[Dening˜NonlinearŽ¡‘GUnits],–¦fpage“42.ŽŸ#ˆŠ‘GëZ7–	¸QUnit›z³Lists:“Con–ÿuÂv“ersion˜to˜Sums˜of˜UnitsŽŽŸ€‘GáOutside–œÑof“the›œÒSI,“it“is“sometimes˜desirable“to“con•²!v“ert–œÑa˜single“unit“to“a˜sum“of“units|Ž¡‘Gfor–vexample,‘,:feet“to“feet“plus“incš²!hes.‘The“con˜v˜ersion“äfr‘ÿp¹om‘èásums“of“units“w˜as“describMÞed“inŽ¡‘GSection–Æô5.2›Æõ[Sums“and“Dierences˜of“Units],›Ïpage“10,˜and“is“a›Æõsimple“matter“of˜adding“theŽ¡‘Gunits–¦fwith“the“`â+á'“sign:ŽŸ÷w‘.ùœâYou–¿ªhave:“12“ft“+“3“in“+“3|8“inŽ¡‘.ùœYou–¿ªwant:“ftŽ¡‘\öì*‘¿ª12.28125Ž¡‘\öì/‘¿ª0.081424936ŽŽ©8‘‘GáAlthough–VŸy²!ou“can›Vžsimilarly“write“a“sum˜of“units“to“con•²!v“ert˜ätoá,‘‚­the–VŸresult“will˜not“bMÞe“theŽ¡‘Gcon•²!v“ersion–hkto›hlthe“units˜in“the“sum,‘˜íbut“rather˜the“con•²!v“ersion–hkto˜the“particular˜sum“thatŽ¡‘Gy•²!ou›¦fha“v“e˜en“tered:ŽŸ÷x‘.ùœâYou–¿ªhave:“12.28125“ftŽ¡‘.ùœYou–¿ªwant:“ft“+“in“+“1|8“inŽ¡‘\öì*‘¿ª11.228571Ž¡‘\öì/‘¿ª0.089058524ŽŽ¦‘GáThe–šlunit“expression“givš²!en‘škat“the“`âYou‘¦fwant:á'Ž‘>íäprompt“is“equiv‘ÿdDalen˜t‘škto“asking“for“con˜v˜ersionŽ¡‘Gto–¯8m²!ultiples‘¯7of“`â1›¿ªft–¦f+“1˜in“+“1|8˜iná',‘à§whicš²!h–¯8is“1.09375–¯7ft,‘à¨so“the–¯8con˜v˜ersion“in‘¯7the“previousŽ¡‘Gexample–¦fis“equiv‘ÿdDalen²!t“toŽŸ÷x‘.ùœâYou–¿ªhave:“12.28125“ftŽ¡‘.ùœYou–¿ªwant:“1.09375“ftŽ¡‘\öì*‘¿ª11.228571Ž¡‘\öì/‘¿ª0.089058524ŽŽ¦‘GáIn›5Ûcon•²!v“erting˜to–5Üa˜sum˜of˜units“lik²!e˜miles,‘Y¸feet˜and“inc•²!hes,‘Y¸y“ou˜t“ypically‘5Üw“an“t˜the˜largestŽ¡‘Gin²!tegral–¼v‘ÿdDalue›¼for“the˜rst“unit,‘Á†follo•²!w“ed›¼b“y˜the‘¼largest˜in“tegral–¼v‘ÿdDalue˜for“the˜next,‘Á†and˜theŽ¡‘Gremainder›ßcon•²!v“erted˜to˜the˜last˜unit.‘)HY‘ÿeou˜can˜do˜this˜con“v“ersion˜easily˜with˜âunits˜áusingŽ¡‘Ga–üuspMÞecial“synš²!tax‘ütfor“lists“of“units.‘à	Y‘ÿeou“m˜ust“list›ütthe“desired“units“in“order˜from“largest“toŽ¡‘Gsmallest,–¦fseparated“bš²!y“the“semicolon“(`â;á')“c˜haracter:ŽŽŒ‹DåŸò‘GáUnits‘¦fCon•²!v“ersion’Td22ŽŽŽ ƒ33 ý ÌÍ‘.ùœâYou–¿ªhave:“12.28125“ftޤ
33‘.ùœYou–¿ªwant:“ft;in;1|8“inŽ¡‘\öì12–¿ªft“+“3“in“+“3|8“inŽŽŸ*GÛ‘GáThe›ƒhcon•²!v“ersion‘ƒialw“a“ys˜giv“es‘ƒiin“teger˜coMÞecien“ts˜on–ƒithe˜units“in˜the˜list,‘Šhexcept“pMÞossibly˜theޤ
33‘Glast–¦funit“when“the“con•²!v“ersion–¦fis“not“exact:Ž©áu‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“inŽ¡‘\öì12–¿ªft“+“3“in“+“3.00096“*“1|8“inŽŽŸ*GÜ‘GáThe–¦forder“in“whicš²!h“y˜ou“list“the“units“is“impMÞortan˜t:ަ‘.ùœâYou–¿ªhave:“3“kgŽ¡‘.ùœYou–¿ªwant:“oz;lbŽ¡‘\öì105–¿ªoz“+“0.051367866“lbŽŸff‘.ùœYou–¿ªhave:“3“kgŽ¡‘.ùœYou–¿ªwant:“lb;ozŽ¡‘\öì6–¿ªlb“+“9.8218858“ozŽŽŸ_§‘GáListing–jounces‘jbšMÞefore“p˜ounds“pro˜duces“a›jtec²!hnically“correct“result,‘›but“not“a˜v²!ery“usefulŽ¡‘Gone.‘É^Y‘ÿeou›Ÿ’m²!ust–Ÿ‘list“the“units“in“descending˜order“of“size“in“order“to˜get“the“most“usefulŽ¡‘Gresult.ަ‘!GEnding–3a“unit“list“with“the“separator“`â;á'‘4has“the“same“eect“as“repMÞeating“the“last“unitŽ¡‘Gon›±˜the–±™list,‘´dso“`âft;in;1|8‘¦fin;á'˜is˜equiv‘ÿdDalen²!t˜to“`âft;in;1|8–¦fin;1|8“iná'.‘ÿsWith‘±™the˜exampleŽ¡‘GabMÞo•²!v“e,–¦fthis“giv²!esަ‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“in;Ž¡‘\öì12–¿ªft“+“3“in“+“3|8“in“+“0.00096“*“1|8“inŽŽ©*GÛ‘Gáin–©eect“separating›ªthe“in²!teger“and“fractional“parts“of˜the“coMÞecien²!t“for“the“last˜unit.‘­žIf“y²!ouŽ¡‘Ginstead–ÎËprefer“to“round“the“last“coMÞecienš²!t“to“an“in˜teger“y˜ou“can“do“this“with“the“â--roundŽ¡‘Gá(â-rá)–¦foption.‘ÝÝWith“the“previous“example,“the“result“isŽŸáv‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“inŽ¡‘\öì12–¿ªft“+“3“in“+“3|8“in“(rounded“down“to“nearest“1|8“in)ŽŽ¦‘GáWhen–Œy²!ou“use“the“â-r“áoption,‘Ä~repMÞeating“the“last“unit“on“the“list“has‘Œno“eect“(e.g.,‘Ä`âft;in;1|8Ž¡‘Gin;1|8›¦finá'–
is“equiv‘ÿdDalen²!t“to‘
‚`âft;in;1|8˜iná'),‘,and“hence“neither“doMÞes“ending“a‘
‚list“with“a“`â;á'.Ž¡‘GWith–w*a›w+single“unit˜and“the˜â-r“áoption,‘€a“terminal˜`â;á'“ädo‘ÿp¹es‘]Cáha•²!v“e–w*an“eect:‘Æ@it“causes˜âunits“átoŽ¡‘Gtreat–‚)the“single›‚(unit“as“a“list˜and“proMÞduce“a“rounded“v‘ÿdDalue˜for“the“single“unit.‘ÑÈWithout“theŽ¡‘Gextra–83`â;á',‘\¥the“â-r“áoption“has“no›82eect“on“single“unit˜con•²!v“ersions.‘“DThis˜example›83sho“ws˜theŽ¡‘Goutput–¦fusing“the“â-r“áoption:ŽŸáu‘.ùœâYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“inŽ¡‘\öì*‘¿ª147.37512Ž¡‘\öì/‘¿ª0.0067854058ŽŸff‘.ùœYou–¿ªhave:“12.28126“ftŽ¡‘.ùœYou–¿ªwant:“in;Ž¡‘\öì147–¿ªin“(rounded“down“to“nearest“in)ŽŽŽŒ‹PŸò‘GáUnits‘¦fCon•²!v“ersion’Td23ŽŽŽ ƒ33 ý ÌÍ‘GEac²!h–Îunit›Îthat“appMÞears˜in“the˜list“m²!ust˜bMÞe“conformable˜with“the˜rst“unit˜on“the˜list,‘Øandޤ
33‘Gof–иcourse“the“listed“units“mš²!ust“also“bMÞe“conformable‘зwith“the“unit“that“y˜ou“en˜ter“at“theŽ¡‘G`âYou‘¦fhave:á'Ž‘Mp¹prompt.Ž©¾‘.ùœâYou–¿ªhave:“meterŽ¡‘.ùœYou–¿ªwant:“ft;kgŽ¡‘yµ>^Ž¡‘.ùœconformability‘¿ªerrorŽ¡‘\öìft–¿ª=“0.3048“mŽ¡‘\öìkg–¿ª=“1“kgŽŸff‘.ùœYou–¿ªhave:“meterŽ¡‘.ùœYou–¿ªwant:“lb;ozŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì1‘¿ªmŽ¡‘\öì0.45359237‘¿ªkgŽŽ  ñA‘GáIn–Frthe›Fqrst“case,‘nuâunits˜árepMÞorts“the“disagreemen•²!t˜bšMÞet“w“een–Frunits“app˜earing‘Fqon“the“list.‘¾InŽ¡‘Gthe–£÷second“case,‘¤sâunits“árepšMÞorts“disagreemen²!t“b˜et•²!w“een–£÷the“unit“yš²!ou“en˜tered“and“the“desiredŽ¡‘Gcon•²!v“ersion.‘ÝÝThis›¦fconformabilit“y˜error˜is˜based˜on˜the˜rst˜unit˜on˜the˜unit˜list.ަ‘!GOther–¦fcommon“candidates“for“con•²!v“ersion–¦fto“sums“of“units“are“angles“and“time:ަ‘.ùœâYou–¿ªhave:“23.437754“degŽ¡‘.ùœYou–¿ªwant:“deg;arcmin;arcsecŽ¡‘EøD23–¿ªdeg“+“26“arcmin“+“15.9144“arcsecŽŸff‘.ùœYou–¿ªhave:“7.2319“hrŽ¡‘.ùœYou–¿ªwant:“hr;min;secŽ¡‘EøD7–¿ªhr“+“13“min“+“54.84“secŽŽŸ^ñB‘GáSome–»ìapplications›»ëfor“unit˜lists“ma²!y“bMÞe˜less“obš²!vious.‘mSuppMÞose“that“y˜ou‘»ëha˜v˜e“a‘»ëpMÞostal“scaleŽ¡‘Gand–A‹wish“to“ensure“that›AŠit's“accurate“at“1“oz,‘U·but“ha•²!v“e–A‹only˜metric“calibration“w•²!eigh“ts.‘¼?Y‘ÿeouŽ¡‘Gmigh²!t‘¦ftryŽŸ¾‘.ùœâYou–¿ªhave:“1“ozŽ¡‘.ùœYou–¿ªwant:“100“g;50“g;“20“g;10“g;5“g;2“g;1“g;Ž¡‘\öì20–¿ªg“+“5“g“+“2“g“+“1“g“+“0.34952312“*“1“gŽŽŸ*$v‘GáY‘ÿeou–”îmighš²!t“then“place“one“eac˜h‘”ïof“the“20“g,›˜l5“g,‘˜m2“g,˜and“1“g‘”ïw•²!eigh“ts–”îon“the“scale“and“hopMÞeŽ¡‘Gthat–¦fit“indicates“close“toަ‘.ùœâYou–¿ªhave:“20“g“+“5“g“+“2“g“+“1“gŽ¡‘.ùœYou–¿ªwant:“oz;Ž¡‘\öì0.98767093‘¿ªozŽŽŸ*$v‘GáAppMÞending–¥Ý`â;á'“to“`âozá'“forces“a‘¥Þone-line“displaš²!y“that“includes“the“unit;‘¦here“the“in˜teger“partŽ¡‘Gof–¦fthe“result“is“zero,“so“it“is“not“displa•²!y“ed.ަ‘!GIf–Ga›Hnon-empt²!y“list˜item“diers“v‘ÿdDastly˜in“scale“from˜the“quan•²!tit“y˜from›Gwhic“h˜the‘Hlist˜isŽ¡‘Gto–›bMÞe“con•²!v“erted,‘]y“ou››ma“y˜exceed˜the˜a“v‘ÿdDailable˜precision‘›of˜
oating˜pMÞoin“t˜(abMÞout˜15˜digits),Ž¡‘Gin–¦fwhicš²!h“case“y˜ou“will“get“a“w˜arning,“e.g.,ަ‘.ùœâYou–¿ªhave:“lightyearŽ¡‘.ùœYou–¿ªwant:“mile;100“inch;10“inch;mm;micronŽ¡‘\öì5.8786254e+12–¿ªmile“+“390“*“100“inch“(at“15-digit“precision“limit)ŽŽŽŒ‹Z•Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td24ŽŽŽ ƒ33 ý ÌÍ‘Gëc7.1‘™Cos3oking‘f@MeasureŽŽŸ33‘GáIn–§
North“America,‘ç2recipšMÞes“for“co˜oking“tš²!ypically‘§	measure“ingredien˜ts“b˜y“v˜olume,‘ç2and“useޤ
33‘Gunits–êƒthat›ê„are“not˜alw•²!a“ys›êƒcon“v“enien“t˜m“ultiples‘ê„of˜eac“h˜other.‘ª6SuppMÞose˜that˜y“ou‘ê„ha“v“e˜aŽ¡‘GrecipMÞe–ücfor“6“and“yš²!ou“wish“to“mak˜e“a“pšMÞortion“for“1.‘ßÔIf“the“recip˜e“calls“for“2“1/2“cups“of“anŽ¡‘Gingredien•²!t,‘^	y“ou›9Omigh“t˜wish˜to˜kno“w˜the‘9Pmeasuremen“ts˜in˜terms˜of˜measuring˜devices˜y“ouŽ¡‘Gha•²!v“e›¦fa“v‘ÿdDailable,˜y“ou˜could˜use˜âunits˜áand˜en“terŽ©³‘.ùœâYou–¿ªhave:“(2+1|2)“cup“/“6Ž¡‘.ùœYou–¿ªwant:“cup;1|2“cup;1|3“cup;1|4“cup;tbsp;tsp;1|2“tsp;1|4“tspŽ¡‘\öì1|3–¿ªcup“+“1“tbsp“+“1“tspŽŽŸ+‘GáBy–Ü9default,‘)®if“a›Ü:unit“in˜a“list“bMÞegins˜with“fraction“of˜the“form˜1â|åx‘˜áand“its˜m²!ultiplier“isŽ¡‘Gan–¥inš²!teger,‘ä§the“fraction“is“giv˜en“as“the“proMÞduct‘¥of“the“m˜ultiplier“and“the“n˜umerator;‘$NforŽ¡‘Gexample,ަ‘.ùœâYou–¿ªhave:“12.28125“ftŽ¡‘.ùœYou–¿ªwant:“ft;in;1|8“in;Ž¡‘\öì12–¿ªft“+“3“in“+“3|8“inŽŽŸ+‘GáIn‘©man•²!y›©cases,‘©¯suc“h˜as–©the“example˜abMÞo•²!v“e,‘©¯this˜is–©what˜is“w•²!an“ted,‘©¯but˜sometimes–©it˜is“not.Ž¡‘GF‘ÿeor–xbexample,‘•a“co•MÞoking›xarecip“e–xbfor˜6“migh²!t˜call“for“5˜1/4“cup˜of“an˜ingredien•²!t,‘–but˜y“ou‘xbw“an“tŽ¡‘Ga–¦fpMÞortion“for“2,“and“yš²!our“1-cup“measure“is“not“a˜v‘ÿdDailable;“y˜ou“migh˜t“tryަ‘.ùœâYou–¿ªhave:“(5+1|4)“cup“/“3Ž¡‘.ùœYou–¿ªwant:“1|2“cup;1|3“cup;1|4“cupŽ¡‘\öì3|2–¿ªcup“+“1|4“cupŽŽ©+‘GáThis–Ï¿result“mighš²!t“bMÞe“ne“for“a“bak˜er‘ÏÀwho“has“a“1“1/2-cup“measure“(and“recognizes“theŽ¡‘Gequiv‘ÿdDalence),‘ •but–nŒit“ma²!y“not“bMÞe‘nas“useful“to“someone“with“more“limited“set“of“measures,Ž¡‘Gwho–ÝÜdoMÞes“w•²!an“t–ÝÜto“do“additional“calculations,‘+¸and“only“w•²!an“ts–ÝÜto“knoš²!w“\Ho˜w“man˜y“1/2-Ž¡‘Gcup–
measures›	to“I‘¬need“to˜add?"‘	ÈAfter˜all,‘jrthat's˜what“w²!as˜actually“ask²!ed.‘	ÇWith“theŽ¡‘Gâ--show-factor–~ áoption,‘´the›~!factor“will“not˜bMÞe“com²!bined˜with“a“unit•²!y˜n“umerator,‘´so‘~ thatŽ¡‘Gy²!ou‘¦fgetŽŸ²‘.ùœâYou–¿ªhave:“(5+1|4)“cup“/“3Ž¡‘.ùœYou–¿ªwant:“1|2“cup;1|3“cup;1|4“cupŽ¡‘\öì3–¿ª*“1|2“cup“+“1|4“cupŽŽ¦‘GáA‘|¥user-spMÞecied–|ðfractional“unit“with›|ña“n²!umerator“other“than“1“is˜nevš²!er“o˜v˜erridden,‘¸nho˜w˜ev˜er|Ž¡‘Gif–GÂa“unit“list“spMÞecies“`â3|4–¦fcup;1|2“cupá',‘pa–GÂresult“equiv‘ÿdDalenš²!t“to“1“1/2“cups“will“alw˜a˜ys“bMÞeŽ¡‘Gshoš²!wn–¦fas“`â2“*“3|4‘¿ªcupá'“whether“or“not“the“â--show-factor“áoption“is“giv˜en.ŽŸŸ¿‘Gëc7.2‘™Unit–f@List“AliasesŽŽŸ33‘GáA–¦funit“list“suc²!h“asŽ©³‘.ùœâcup;1|2–¿ªcup;1|3“cup;1|4“cup;tbsp;tsp;1|2“tsp;1|4“tspŽŸ²‘Gácan–çIbMÞe›çJtedious“to“en²!ter.‘ ‡The“âunits“áprogram˜pro²!vides“shorthand“names“for˜some“commonŽ¡‘Gcom²!binations:ަ‘.ùœâhms‘3¼úátime:–¦fhours,“min²!utes,“secondsŽ¡‘.ùœâdms‘3¼úáangle:–¦fdegrees,“min²!utes,“secondsŽ¡‘.ùœâtime‘-ýPátime:–¦fyš²!ears,“da˜ys,“hours,“min˜utes“and“secondsŽ¡‘.ùœâusvol‘(=¦áUS–¦fcoMÞoking“v²!olume:“cups“and“smallerŽŽŒ‹dÇŸò‘GáUnits‘¦fCon•²!v“ersion’Td25ŽŽŽ ƒ33 ý ÌÍ‘.ùœâuswt‘-ýPáUS›¦fw•²!eigh“t:˜pMÞounds˜and˜ouncesޤ
33‘.ùœâftin‘-ýPálength:–¦ffeet,“incš²!hes“and“1/8“inc˜hesŽ¡‘.ùœâinchfine‘þ¨álength:–¦fincš²!hes“subMÞdivided“to“1/64“inc˜hީհ‘GUsing–¦fthese“shorthands,“or“åunit“list“aliasesá,“yš²!ou“can“do“the“follo˜wing“con˜v˜ersions:ŽŸÕ±‘.ùœâYou–¿ªhave:“anomalisticyearŽ¡‘.ùœYou–¿ªwant:“timeŽ¡‘\öì1–¿ªyear“+“25“min“+“3.4653216“secŽ¡‘.ùœYou–¿ªhave:“1|6“cupŽ¡‘.ùœYou–¿ªwant:“usvolŽ¡‘\öì2–¿ªtbsp“+“2“tspŽŽŸQÕ¯‘GáY‘ÿeou–ºcan“dene“yš²!our“o˜wn“unit›»list“aliases;‘Âãsee˜Section“13.5“[Dening“Unit“List“Aliases],Ž¡‘Gpage‘¦f46.ަ‘!GY‘ÿeou–6Ùcannot›6Øcom²!bine“a˜unit“list˜alias“with“other˜units:‘þÂit“m²!ust˜appMÞear“alone˜at“theŽ¡‘G`âYou‘¦fwant:á'Ž‘Mp¹prompt.ަ‘!GY‘ÿeou–´tcan“displa²!y›´uthe“denition“of“a“unit“list˜alias“bš²!y“en˜tering“it“at‘´uthe“`âYou‘¦fhave:á'Ž‘=!ôprompt:ŽŸÕ±‘.ùœâYou–¿ªhave:“dmsŽ¡‘\öìDefinition:–¿ªunit“list,“deg;arcmin;arcsecŽŽŸã‘GáWhen–aÊy²!ou›aÉspMÞecify“compact˜output“with˜â--compactá,‘o‚â--terse“áor˜â-t“áand˜pMÞerform“con•²!v“ersionŽ¡‘Gto–/‚a“unit›/list,‘‘Èâunits“álists“the“con•²!v“ersion–/‚factors˜for“eac²!h“unit“in˜the“list,‘‘Èseparated“b²!yŽ¡‘Gsemicolons.ަ‘.ùœâYou–¿ªhave:“yearŽ¡‘.ùœYou–¿ªwant:“day;min;secŽ¡‘.ùœ365;348;45.974678ŽŽŸ*<‘GáUnlik²!e–¦fthe“case“of“regular“output,“zeros“äar‘ÿp¹e‘yáincluded“in“this“output“list:ŽŸÕ±‘.ùœâYou–¿ªhave:“literŽ¡‘.ùœYou–¿ªwant:“cup;1|2“cup;1|4“cup;tbspŽ¡‘.ùœ4;0;0;3.6280454ŽŽŸ;«`‘GëZ8‘	¸QAlternativ‘ÿuÂe–z³Unit“SystemsŽŽŸ&Îð‘Gëc8.1‘™CGS‘f@UnitsŽŽŸ33‘GáThe–ÆSSI|an“extension›ÆRof“the“MKS‘Æ(meter{kilogram{second)˜system|has“largely“supplan²!tedŽ¡‘Gthe–Ú÷older“CGS›Ú¨(cen²!timeter{gram{second)“system,‘(but“CGS˜units“are“still“used“in“a“fewŽ¡‘Gsp•MÞecialized›ª»elds,‘ëÐesp“ecially–ªºin˜ph²!ysics˜where˜they˜lead˜to˜a“more˜elegan•²!t˜form“ulation˜ofŽ¡‘GMaxw•²!ell's›S´equations.‘	åÇCon“v“ersions˜bMÞet“w“een˜SI‘SEand˜CGS‘SFin“v“olving˜mec“hanical˜units˜areŽ¡‘Gstraigh•²!tforw“ard,‘c!in“v“olving›=cpMÞo“w“ers–=bof˜10“(e.g.,‘c"1–¦fm“=“100“cmŽ‘H…H).‘¢ÒCon•²!v“ersions˜in“v“olving‘=belec-Ž¡‘Gtromagnetic–C¾units“are“more“complicated,‘Wyand“âunits“ásuppMÞorts“four“dieren²!t“systems“of“CGSŽ¡‘Gunits:‘ŽZelectrostatic–~¥units“(ESU),›~¤electromagnetic“units˜(EMU),“the“Gaussian˜system“andŽ¡‘Gthe›äHea•²!viside{Loren“tz–åsystem.‘8XThe“dierences˜bMÞet•²!w“een˜these–åsystems˜arise“from˜dieren²!tŽ¡‘Gcš²!hoices–»ámade‘»àfor“propMÞortionalit˜y“constan˜ts“in‘»àelectromagnetic“equations.‘MCoulom˜b's“la˜wŽ¡‘Ggivš²!es–¦felectrostatic“force“bMÞet˜w˜een“t˜w˜o“c˜harges“separated“b˜y“a“distance“érMÞá:ŽŸ]’Í?(éF‘ýá=‘
§ékŸ¤z®CŽŸø—ž‘hŠéqŸ¤z®1Ž‘|séqŸ¤z®2ŽŽ‘hŠŸÞȉfe¿¬Ÿ
t‘‚VérMÞŸüÖ0®2ŽŽŽŽŽ‘é:ŽŽŒ‹q]Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td26ŽŽŽ ƒ33 ý ÌÍ‘GAmpMÞere's›~Àla•²!w‘~¿giv“es˜the˜electromagnetic–~¿force˜pMÞer“unit˜length˜bMÞet•²!w“een‘~¿t“w“o˜curren“t-carryingޤ
33‘Gconductors–¦fseparated“b²!y“a“distance“érMÞá:ŽŸ^‚Ÿø—ž’Ê|œéFŽ’Ê|œŸÞȉfeóŸ
t‘ÿù`ŽŽŽŽ’×Jiá=‘
§2ékŸ¤z®AŽŸø—ž‘šRéIŸ¤z®1Ž‘|séIŸ¤z®2ŽŽ‘šRŸÞȉfe™bŸ
t‘­jérŽŽŽŽ‘fç:ŽŸ!L_‘GáThe›¦ft•²!w“o˜constan“ts,˜ékŸ¤z®CŽ‘	Û½áand˜ékŸ¤z®AŽ‘gá,˜are˜related˜b“y˜the˜square˜of˜the˜spMÞeed˜of˜ligh“t:ŽŸs)’γZékŸ¤z®AŽ‘	qÆá=‘
§ékŸ¤z®CŽ‘5Wé=cŸûz•®2Ž‘|sé:ŽŸHw‘!GáIn–F¿the‘FÀSI,“the“constanš²!ts“ha˜v˜e›FÀdimensions,‘®Õand“an“additional“base˜unit,‘®Õthe“ampMÞere,Ž¡‘Gmeasures–ã>electric›ã=curren²!t.‘”dThe“CGS‘âìsystems˜do“not“dene˜new“base˜units,‘2sbut“expressŽ¡‘Gc•²!harge›D_and‘D^curren“t˜as‘D^deriv“ed˜units–D^in˜terms˜of“mass,–Wúlength,“and–D^time.‘½0In˜the“ESU‘DFsystem,Ž¡‘Gthe–Ìconstanš²!t‘Ìfor“Coulom˜b's‘Ìla˜w“is“c˜hosen›Ìto“bMÞe˜unitš²!y“and“dimensionless,‘Õ…whic˜h‘Ìdenes“theŽ¡‘Gunit–ûŒof“cš²!harge.‘¤êIn“the“EMU‘û`system,‘¸the“constan˜t“for“AmpMÞere's“la˜w“is“c˜hosen“to“bMÞe“unit˜y“andŽ¡‘Gdimensionless,‘¶whic²!h–²çdenes›²æa“unit“of˜curren²!t.‘`The˜Gaussian“system“usually“uses˜the“ESUŽ¡‘Gunits–úIfor›úJc²!harge“and˜curren•²!t;‘$;it˜c“hoMÞoses‘úIanother˜constan“t–úIso˜that“the˜units“for˜the“electricŽ¡‘Gand–ë\magnetic›ë[elds“are“the“same.‘¬¾The˜Hea•²!viside{Loren“tz–ë\system“is“\rationalized"˜so“thatŽ¡‘Gfactors–=4of›=54é‘¡Çádo“not˜appMÞear“in“Maxw²!ell's˜equations.‘ºÌThe“SI‘=system“is˜similarly“rationalized,Ž¡‘Gbut–­àthe“other“CGS›­œsystems“are“not.‘ôJIn“the“Hea•²!viside{Loren“tz–­à(HLU)˜system“the“factorŽ¡‘Gof–,Ø4é‘‘láappMÞears“in“Coulomš²!b's“la˜w›,Ùinstead;‘pthis“system˜diers“from“the“Gaussian˜system“b²!yŽ¡‘Gfactors–¦fof“Ÿö÷7êpŽ‘ÆgŸö÷7‰p Ÿ	Éá4éŽŽŽ‘âzá.Ž©‚‘!GThe–ãdimensions›âof“electrical˜quan²!tities“in˜the“v‘ÿdDarious˜CGS‘¦systems“are˜dieren²!t“fromŽ¡‘Gthe–,üSI‘,Ýdimensions‘,ûfor“the“same“units;‘Utstrictly‘ÿe,‘EDcon•²!v“ersions›,übMÞet“w“een˜these˜systems‘,ûand˜SI‘,ÝareŽ¡‘Gnot–™YpMÞossible.‘ÙƒBut“units›™Xin“dieren²!t“systems˜relate“to˜the“same“ph•²!ysical˜quan“tities,‘›õso‘™YthereŽ¡‘Gis‘­2a›­3äc–ÿp¹orr“esp“ondenc“e‘ÓábMÞet•²!w“een˜these–­2units.‘òCThe“âunits“áprogram˜denes“the˜units“so˜that“y²!ouŽ¡‘Gcan›¦fcon•²!v“ert˜bMÞet“w“een˜correspMÞonding˜units˜in˜the˜v‘ÿdDarious˜systems.ŽŸÕN‘GómÂÖN 
#×cmbx12ëm8.1.1‘d(Spiecifying–íMCGS“UnitsŽŽŸ³3‘GáThe–Ú CGS‘Údenitions“in•²!v“olv“e‘Ú cmŽ‘×ÿŸü¾®1ó	0e—rcmmi7´=®2Ž‘"Céáand›Ú g&îŸü¾®1´=®2Ž‘¸¸á,‘çwhic“h˜is˜problematic˜b•MÞecause˜âunits˜ádo“es˜notŽ¡‘Gnormally–ó¶suppšMÞort“fractional‘ó·ro˜ots“of“base“units.‘ÅÎThe“â--units“á(â-uá)‘ó·option“allo²!ws“selectionŽ¡‘Gof–§a›¨CGS‘unit“system“and˜w²!orks“around“this˜restriction“b•²!y˜in“troMÞducing–§base“units˜for“theŽ¡‘Gsquare–súroMÞots›sùof“length“and˜mass:‘y`âsqrt_cmá'˜and“`âsqrt_gá'.‘F˜The“cen²!timeter˜then“bMÞecomesŽ¡‘G`âsqrt_cm^2á'–D€and“the“gram,‘X`âsqrt_g^2á'.‘½;This“alloš²!ws“w˜orking“from‘Dequations“using“the“unitsŽ¡‘Gin–°the“CGS‘°system,‘²‚and“enforcing“dimensional“conformit²!y“within“that“system.‘úíRecognizedŽ¡‘GCGS‘Òæargumen²!ts–Óto›Óthe“â--units˜áoption“are“`âgauss[ian]á',–ý^`âesuá',“`âemuá',‘ý]`âlhuá';‘Šthe˜argumen²!t‘ÓisŽ¡‘Gcase–³insensitiv²!e.‘®÷Y‘ÿeou›´can“also˜giv²!e“`âsiá'˜whic²!h“just˜enforces“the˜default“SI‘moMÞde˜and“displa²!ysŽ¡‘G`â(SI)á'–½Äat›½Ãthe“`âYou‘¦fhave:á'Ž‘?4”prompt˜to“emphasize“the“units˜mošMÞde.‘#öSome“other“t²!yp˜es‘½Ãof“unitsŽ¡‘Gare–¤also“suppšMÞorted“as“describ˜ed“b˜eloš²!w.‘¬GGiving“an“unrecognized“system“generates“a“w˜arning,Ž¡‘Gand–¦fâunits“áuses“SI“units.ަ‘!GThe–Z´c²!hanges“resulting›Z³from“the“â--units“áoption˜are“actually“conš²!trolled“b˜y‘Z³the“âUNITS_Ž¡‘GSYSTEM›“Æáen•²!vironmen“t˜v‘ÿdDariable.‘רIf‘“Çy“ou˜frequen“tly˜w“ork˜with˜one‘“Çof˜the˜suppMÞorted˜CGS‘“ÂunitsŽ¡‘Gsystems,‘)äy•²!ou›—ma“y‘˜set˜this˜en“vironmen“t–˜v‘ÿdDariable˜rather“than˜giving“the˜â--units“áoption˜atŽ¡‘Geac•²!h›%xin“v“oMÞcation.‘²äAs˜usual,‘?Ban˜option‘%ygiv“en˜on–%ythe˜command“line˜o•²!v“errides–%ythe˜setting“of˜theŽ¡‘Gen•²!vironmen“t–>v‘ÿdDariable.‘¤¿F‘ÿeor“example,‘cîif‘>yš²!ou“w˜ould‘>normally“w˜ork›>with“Gaussian˜units“butŽ¡‘Gmigh•²!t›cîoMÞccasionally‘cïw“ork˜with˜SI,‘cïy“ou˜could˜set˜âUNITS_SYSTEM–cïáto˜`âgaussianá'˜and“spMÞecify˜SIŽŽŒ‹|Пò‘GáUnits‘¦fCon•²!v“ersion’Td27ŽŽŽ ƒ33 ý ÌÍ‘Gwith–áthe“â--units‘àáoption.‘ÑUnlikš²!e“the“argumen˜t“to“the“â--units–àáoption,‘‡–the“v‘ÿdDalue–áof“âUNITS_ޤ
33‘GSYSTEM–_äis‘E!ácase“sensitiv²!e,‘mNso›_	setting“a“v‘ÿdDalue˜of“`âEMUá'“will˜ha•²!v“e–_no“eect˜other“than“to˜giv²!e“anŽ¡‘Gerror–¦fmessage“and“set“SI“units.Ž©æg‘!GThe–CGS‘òdenitions›appMÞear“as“conditional“settings“in“the˜standard“units“data“le,‘*õwhic²!hŽ¡‘Gyš²!ou– can“consult‘Ÿfor“more“information“on“ho˜w›Ÿthese“units“are“dened,‘!.or“on˜ho²!w“to“deneŽ¡‘Gan–¦falternate“units“system.ŽŸ$³5‘Gëm8.1.2‘d(CGS–íMUnits“SystemsŽŽŸ³3‘GáThe–)±ESU‘)‘system“deriv²!es“the›)°electromagnetic“units“from“its“unit“of˜cš²!harge,‘B¢the“statcoulom˜b,Ž¡‘Gwhic²!h–gRis›gSdened“from˜Coulomš²!b's“la˜w.‘È×The“statcoulom˜b‘gSequals“dyneŽ‘7UŸúÞ8®1´=®2Ž‘(œPácmŽ‘:‚or“cmŽ‘e1Ÿü¾®3´=®2Ž‘Ê,ág&îŸü¾®1´=®2Ž‘‹éásŸü¾º®1Ž‘
¼tá.Ž¡‘GThe–"…unit‘"„of“curren²!t,›<åthe“statampMÞere,˜is‘"„statcoulom²!b‘¦fsecŽ‘Nþ{,˜analogous“to“the“relationship‘"„in“SI.Ž¡‘GOther–+electrical“units›+are“then“deriv²!ed“in“a˜manner“similar“to“that“for˜SI‘*àunits;‘mPthe“unitsŽ¡‘Guse–ù.the“SI‘ùnames“prexed“b²!y“`âstat-á',–
àe.g.,“`âstatvoltá'–ù.or“`âstatVá'.‘Ö5The“prex“`âst-á'“is“alsoŽ¡‘Grecognized–¦f(e.g.,“`âstVá').ަ‘!GThe–×EMU‘×system“derivš²!es“the“electromagnetic“units“from“its“unit“of“curren˜t,‘ãAthe“abam-Ž¡‘GpšMÞere,‘Swhic²!h–ýYis“dened“in‘ýZterms“of“Amp˜ere's“la²!w.‘â·The‘ýZabamp˜ere“is“equal“to‘ýZdyneŽ‘Í]ŸúÞ8®1´=®2Ž‘-\€áorŽ¡‘GcmŽ‘ &Ÿü¾®1´=®2Ž‘, ðág&îŸü¾®1´=®2Ž‘¸¸ásŸü¾º®1Ž‘
¼tá.‘nÔThe–Ö¸unit“of–Ö¹cš²!harge,‘âÌthe“abMÞcoulom˜b,›âÌis“abampMÞere‘¦fsecŽ‘D÷,˜again›Ö¸analogous“to˜theŽ¡‘GSI‘µrelationship.‘8%Other–Óelectrical“units“are“then“deriv²!ed“in“a“manner“similar“to“that“for“SIŽ¡‘Gunits;‘@Úthe–
^units“use“the“SI‘
Cnames“prexed“b²!y“`âab-á',–'e.g.,“`âabvoltá'–
^or“`âabVá'.‘ÅThe“magneticŽ¡‘Geld–¦funits“include“the“gauss,“the“oMÞersted“and“the“maxw²!ell.ަ‘!GThe–ýGaussian“units“system,‘;âwhicš²!h“w˜as“also‘ükno˜wn“as“the“Symmetric“System,‘;âuses“theŽ¡‘Gsame–6cš²!harge“and‘5curren˜t“units“as“the“ESU‘Ùsystem“(e.g.,–ii`âstatCá',“`âstatAá');‘Ãit–6diers“b˜yŽ¡‘Gdening–@the“magnetic“eld“so›Athat“it“has“the“same“units“as“the“electric˜eld.‘ÚÐThe“resultingŽ¡‘Gmagnetic–F6eld›F5units“are˜the“same˜ones“used“in˜the“EMU‘Fsystem:‘­Åthe˜gauss,‘Ysthe˜oMÞersted“andŽ¡‘Gthe‘¦fmaxw²!ell.ŽŸæh‘!GThe›²‹Hea•²!viside{Loren“tz˜system‘²ŒappMÞears˜to˜lac“k˜named–²Œunits.‘LW‘ÿee˜dene“v²!e˜basic˜units,Ž¡‘G`âhlu_chargeá',–ý-`âhlu_currentá',‘ý.`âhlu_voltá',“`âhlu_efieldá'–ëÓand›ëÒ`âhlu_bfieldá'“for˜con•²!v“ersionsŽ¡‘Gwith›£this–£system.‘ÜëIt“is˜impMÞortan²!t“to˜remem²!bMÞer“that˜with“all˜of“the˜CGS“systems,‘¤ the˜unitsŽ¡‘Gma²!y–ŸÃloMÞok›ŸÂthe“same˜but“mean˜something“dieren²!t.‘Û¦The“HLU‘ŸÀsystem“and˜Gaussian“systemsŽ¡‘GbMÞoth–¡Ômeasure›¡Ómagnetic“eld“using˜the“same“CGS‘¡Òdimensions,‘¢¾but“the“amoun²!t˜of“magneticŽ¡‘Geld–¦fwith“the“same“units“is“dierenš²!t“in“the“t˜w˜o“systems.ŽŸ$³4‘Gëm8.1.3‘d(Con•–áv“ersions›íMBet“w“een˜Dieren“t˜SystemsŽŽŸ³3‘GáThe–ÞtCGS‘ÞBsystems“dene“units“that“measure“the“same“thing‘Þubut“maš²!y“ha˜v˜e“con
icting“dimen-Ž¡‘Gsions.‘ÊF‘ÿeurthermore,‘vÀthe–j×dimensions“of“the“electromagnetic“CGS‘jÈunits“are“nev²!er“compatibleŽ¡‘Gwith–*ÄSI.“But“if“yš²!ou“measure“c˜harge“in‘*Åt˜w˜o“dieren˜t“systems“y˜ou“ha˜v˜e“measured“the“sameŽ¡‘Gphš²!ysical–|”thing,‘„ñso“there“is“a“äc–ÿp¹orr“esp“ondenc“e‘O5ábMÞet˜w˜een–|”the“units“in“the“dieren˜t“systems,‘„ñandŽ¡‘Gâunits›•ØásuppMÞorts‘•Ùcon•²!v“ersions˜bMÞet“w“een˜correspMÞonding˜units.‘¬4When˜running‘•Ùwith˜SI,˜âunitsŽ¡‘Gádenes–Óÿall›Óþof“the˜CGS‘Óóunits“in˜terms“of˜SI.“When˜y²!ou“select˜a“CGS‘Óósystem,‘ßdâunits“ádenesŽ¡‘Gthe–¦fSI“units“and“the“other“CGS“system“units“in“terms“of“the“system“yš²!ou“ha˜v˜e“selected.ŽŽŒ‹Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td28ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ(Gaussian)–¿ªYou“have:“statAޤ
33‘n5êYou–¿ªwant:“abAŽ¡‘\öì*‘¿ª3.335641e-11Ž¡‘\öì/‘¿ª2.9979246e+10Ž¡‘.ùœ(Gaussian)–¿ªYou“have:“abAŽ¡‘n5êYou–¿ªwant:“sqrt(dyne)Ž¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì2.9979246e+10–¿ªsqrt_cm^3“sqrt_g“/“s^2Ž¡‘\öì1–¿ªsqrt_cm“sqrt_g“/“sŽŽŸzš‘GáIn›ÖÈthe‘ÖÉabMÞo•²!v“e˜example,‘Oâunits˜ácon“v“erts‘ÖÉbMÞet“w“een˜the‘ÖÉcurren“t˜units˜statA–Ö”and‘ÖÉabA“ev²!en˜thoughޤ
33‘Gthe–W¾abA,“from“the‘W¿EMU‘WNsystem,‘Ähas“incompatible“dimensions.‘	ñæThis“w²!orks“bMÞecause“inŽ¡‘GGaussian–5EmošMÞde,‘Xüthe“abA‘5!is“dened“in‘5Dterms“of“the“statA,“so“it“do˜es“not“ha•²!v“e–5Ethe“correctŽ¡‘Gdenition–¦ffor“EMU;“consequenš²!tly‘ÿe,“y˜ou“cannot“con˜v˜ert“the“abA“to“its“EMU“denition.Ž©€‘!GOne–Xºcš²!hallenge‘X»of“con˜v˜ersion“is›X»that“bMÞecause“the˜CGS‘X¦system˜has“few²!er˜base“units,‘hCquan-Ž¡‘Gtities–¯ÿthat“ha•²!v“e›¯ÿdieren“t˜dimensions˜in˜SI‘¯ýma“y˜ha“v“e˜the˜same˜dimension˜in˜a˜CGS‘¯ýsystem.Ž¡‘GAnd–yš²!et,‘2›they“ma˜y“not“ha˜v˜e“the‘‘same“con˜v˜ersion“factor.‘.\F‘ÿeor“example,‘2šthe“unit‘‘for“the“éEŽ¡‘Gáeld–„oand›„néB‘áelds“are˜the“same“in“the˜Gaussian“system,‘»ñbut˜the“con•²!v“ersion–„ofactors˜to“SIŽ¡‘Gare–šqquite›špdieren²!t.‘ÙáThis“means˜that“correct“con•²!v“ersion˜is–šqonly“pMÞossible˜if“yš²!ou“k˜eep‘šptrac˜k“ofŽ¡‘Gwhat›%6quan•²!tit“y˜is˜bMÞeing˜measured.‘ZNY‘ÿeou˜cannot˜con“v“ert˜statV/cm˜to˜SI‘%without˜indicatingŽ¡‘Gwhic•²!h›8¶t“ypMÞe˜of‘8·eld˜the˜unit˜measures.‘¹NT‘ÿeo˜aid˜in˜dimensional˜analysis,‘N§âunits˜ádenes˜v‘ÿdDariousŽ¡‘Gdimension–±òunits›±ósuc²!h“as“`âLENGTHá',‘´Ö`âTIMEá',‘´Õand˜`âCHARGEá'“to˜bMÞe“the“appropriate˜dimension“inŽ¡‘GSI.–&;The›&:electromagnetic“dimensions˜suc²!h“as“`âB_FIELDá'˜or“`âE_FIELDá'“ma²!y˜bMÞe“useful˜aids“bMÞothŽ¡‘Gfor›¿Ocon•²!v“ersion–¿Pand˜dimensional“analysis˜in“CGS.˜Y‘ÿeou“can˜con•²!v“ert–¿Pthem˜to“or˜from“CGS‘¿IinŽ¡‘Gorder–ùŠto“pMÞerform“SI‘ù^con•²!v“ersions›ù‰that–ùŠin“some“cases“will“not“w²!ork˜directly“due“to“dimensionalŽ¡‘Gincompatibilities.‘È€This–fOexample‘fNshoš²!ws“ho˜w“the›fNGaussian“system“uses˜the“same“units˜for“allŽ¡‘Gof–¦fthe“elds,“but“they“all“ha•²!v“e›¦fdieren“t˜con“v“ersion˜factors˜with˜SI.ަ‘.ùœâ(Gaussian)–¿ªYou“have:“statV/cmŽ¡‘n5êYou–¿ªwant:“E_FIELDŽ¡‘\öì*‘¿ª29979.246Ž¡‘\öì/‘¿ª3.335641e-05ŽŽ©4ÌÌ‘.ùœ(Gaussian)–¿ªYou“have:“statV/cmŽ¡‘n5êYou–¿ªwant:“B_FIELDŽ¡‘\öì*‘¿ª0.0001Ž¡‘\öì/‘¿ª10000ŽŽ¦‘.ùœ(Gaussian)–¿ªYou“have:“statV/cmŽ¡‘n5êYou–¿ªwant:“H_FIELDŽ¡‘\öì*‘¿ª79.577472Ž¡‘\öì/‘¿ª0.012566371ŽŽ¦‘.ùœ(Gaussian)–¿ªYou“have:“statV/cmŽ¡‘n5êYou–¿ªwant:“D_FIELDŽ¡‘\öì*‘¿ª2.6544187e-07Ž¡‘\öì/‘¿ª3767303.1ŽŽŸ8›‘GáThe–‰Bnext“example“sho²!ws“that“the“ošMÞersted“cannot“b˜e“con•²!v“erted–‰Bdirectly‘‰Ato“the“SI‘‰unit“ofŽ¡‘Gmagnetic›Q)eld,–{ÚA/m,“b•MÞecause˜the˜dimensions˜con
ict.‘Þ'W‘ÿee˜cannot˜redene‘Q*the˜amp“ere˜toŽ¡‘Gmakš²!e–ôBthis“w˜ork‘ôCbMÞecause“then“it“w˜ould‘ôCnot“con˜v˜ert“with“the–ôCstatampMÞere.‘ÇqBut“y˜ou–ôBcan“stillŽ¡‘Gdo–¦fthis“con•²!v“ersion–¦fas“shoš²!wn“bMÞelo˜w.ŽŽŒ‹Ÿ:Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td29ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ(Gaussian)–¿ªYou“have:“oerstedޤ
33‘n5êYou–¿ªwant:“A/mŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì1–¿ªsqrt_g“/“s“sqrt_cmŽ¡‘\öì29979246–¿ªsqrt_cm“sqrt_g“/“s^2Ž¡‘.ùœ(Gaussian)–¿ªYou“have:“oerstedŽ¡‘n5êYou–¿ªwant:“H_FIELDŽ¡‘\öì*‘¿ª79.577472Ž¡‘\öì/‘¿ª0.012566371ŽŽ ˆ.Œ‘Gëc8.2‘™Natural‘f@UnitsŽŽŸ33‘GáLikš²!e–åGthe“CGS‘äöunits,‘4ÿ\natural"“units“are“an‘åHalternativ˜e“to“the“SI‘äösystem“used“primarilyޤ
33‘Gph•²!ysicists›xôin‘xõdieren“t˜elds,‘í—with˜dieren“t˜systems‘xõtailored˜to˜dieren“t˜elds‘xõof˜study‘ÿe.Ž¡‘GThese–çsystems“are“\natural"“bMÞecause“the‘æbase“measuremenš²!ts“are“dened“using“ph˜ysicalŽ¡‘Gconstanš²!ts–Ýcinstead“of‘Ýbarbitrary“v‘ÿdDalues“suc˜h“as‘Ýbthe“meter“or“second.‘‚ÓIn“dieren˜t‘Ýbbranc˜hes“ofŽ¡‘Gph•²!ysics,‘)Pdieren“t›

ph“ysical˜constan“ts˜are˜more˜fundamen“tal,‘)Owhic“h˜has˜giv“en˜rise˜to˜a˜v‘ÿdDariet“yŽ¡‘Gof–¦fincompatible“natural“unit“systems.Ž©A+‘!GThe–®ÍsuppMÞorted›®Îsystems“are“the“\natural"˜units“(whic²!h“seem˜to“ha•²!v“e–®Íno“bMÞetter˜name)“usedŽ¡‘Gin–‰Õhigh›‰Öenergy“ph²!ysics“and˜cosmology‘ÿe,›¿the“Planc²!k“units,˜often‘‰Öused“bš²!y“scien˜tists‘‰Öw˜orking“withŽ¡‘Ggra•²!vit“y‘ÿe,‘fand–?Æthe“Hartree“atomic‘?Åunits“are“fa•²!v“ored›?Æb“y˜those˜w“orking˜in˜ph“ysical˜c“hemistryŽ¡‘Gand–¦fcondensed“matter“ph²!ysics.ŽŸA,‘!GY‘ÿeou–vcan“select›v‘the“v‘ÿdDarious“natural“units“using˜the“â--units“áoption“in“the˜same“w•²!a“y‘vthatŽ¡‘Gyš²!ou–eÖselect“the“CGS‘e¥units.‘-The“\natural"“units“come“in“t˜w˜o“t˜ypMÞes,‘•²a“rationalized“systemŽ¡‘Gderivš²!ed–cdfrom“the“Hea˜viside{Loren˜tz“units“and‘cean“unrationalized“system“deriv˜ed“from“theŽ¡‘GGaussian–å	system.‘™ÈY‘ÿeou“can“select›å
these“using˜`ânaturalá'“and˜`ânatural-gaussá'“respMÞectiv²!ely‘ÿe.Ž¡‘GF‘ÿeor›¦écon•²!v“ersions˜in˜SI˜moMÞde,‘§
sev“eral–¦êunit˜names˜starting˜with˜`ânaturalá'˜are“a²!v‘ÿdDailable.‘ßfThisŽ¡‘G\natural"–ÎÖsystem›ÎÕis“dened“b²!y˜setting“‘ú†méhŽ‘
óá,‘Øòéc˜áand“the“Boltzman˜constan²!t“to“1.‘W,Only˜a“singleŽ¡‘Gbase–¦funit“remains:‘ÝÝthe“electron“v²!olt.ަ‘!GThe–ê^Planc²!k›ê_units“exist“in˜a“v‘ÿdDariet²!y“of˜forms,‘û\and“âunits“ásuppMÞorts˜t•²!w“o.‘©ÆBoth‘ê^suppMÞortedŽ¡‘Gforms–ðäare“rationalized,‘1in“that“factors“of“4é‘Uwádo“not“appMÞear“in“Maxwš²!ell's“equations.‘¡]Ho˜w˜ev˜er,Ž¡‘GPlancš²!k–!=units“can“also“dier“based“on“ho˜w“the“gra˜vitational“constan˜t“is“treated.‘±zThis“systemŽ¡‘Gis–MÛsimilar“to“the“natural“units‘MÜin“that“écá,‘_‘ú†méhŽ‘	®­á,›_‘and“Boltzman's“constan²!t“are“set“to“1,˜but“in“thisŽ¡‘Gsystem,› Newton's‘Ÿgra•²!vitational‘Ÿconstan“t,˜éGá,˜is–Ÿalso“xed.‘ÛnIn‘Ÿthe“\reduced"“Planc²!k“system,Ž¡‘G8éd“G–žPá=“1–þÿwhereas“in“the“unreduced“system“éG–žPá=“1.‘ç¨The–þÿreduced“system“eliminates“factorsŽ¡‘Gof–8é‘g"áfrom›Žthe“Einstein“eld“equations˜for“gra²!vitation,‘Y˜so“this“is“similar˜to“the“proMÞcessŽ¡‘Gof–æ×forming“rationalized›æØunits“to“simplify“Maxw²!ell's˜equations.‘Ÿ0T‘ÿeo˜obtain“the“unreducedŽ¡‘Gsystem–^Juse“the“name“`âplancká'“and“for“the“reduced“Planc²!k“units,‘ÌC`âplanck-redá'.‘
‰UnitsŽ¡‘Gsuc²!h–lcas›ld`âplanckenergyá'“and“`âplanckenergy_redá'“enable˜yš²!ou“to“con˜v˜ert“the‘ldunreduced“andŽ¡‘Greduced–×Planc²!k“energy“unit“in“SI‘¹mošMÞde“b˜et•²!w“een‘Øthe–×v‘ÿdDarious“systems.‘;0In“Planc²!k“units,‘7óallŽ¡‘Gmeasuremen²!ts–¦fare“dimensionless.ަ‘!GThe–Ÿ~nal“natural“unit‘Ÿsystem“is“the“Hartree“atomic“units.‘É&Likš²!e“the“Planc˜k“units,‘ÝÄallŽ¡‘Gmeasuremen²!ts–ƒin“the“Hartree›ƒunits“are“dimensionless,‘Š*but“this“system˜is“dened“b²!y“denedŽ¡‘Gfrom–F!completely“dieren•²!t›F"ph“ysical‘F!constan“ts:‘Sthe˜electron‘F!mass,‘®Planc“k's˜constan“t,‘®theŽ¡‘Gelectron–ôácš²!harge,‘and“the‘ôâCoulom˜b“constan˜t“are›ôâthe“dening˜phš²!ysical“quan˜tities,‘whic˜h“areŽ¡‘Gall–¦fset“to“unitš²!y–ÿe.‘ÝÝT“o–¦fin˜v˜ok˜e“this“system“with“the“â--units“áoption“use“the“name“`âhartreeá'.ŽŽŒ‹«ÝŸò‘GáUnits‘¦fCon•²!v“ersion’Td30ŽŽŽ ƒ33 ý ÌÍ‘Gëc8.3‘™Prompt‘f@PrexŽŽŸ33‘GáIf–
#a“unit“system“is“spMÞecied“with“the“â--units“áoption,‘¦Òthe“selected“system's“name“isޤ
33‘GprepMÞended–¦fto“the“`âYou“have:á'Ž‘?Øprompt“as“a“reminder,“e.g.,Ž©LÍ‘.ùœâ(Gaussian)–¿ªYou“have:“stCŽ¡‘n5êYou‘¿ªwant:Ž¡‘\öìDefinition:–¿ªstatcoulomb“=“sqrt(dyne)“cm“=“1“sqrt_cm^3“sqrt_g“/“sŽŽŸ+³3‘GáY‘ÿeou–¦fcan“suppressed“the“prex“b²!y“including“a“lineަ‘.ùœâ!promptަ‘Gáwith–i„no“argumen²!t›i…in“a“site“or˜pMÞersonal“units“data“le.‘'8The“prompt˜can“bMÞe“conditionallyŽ¡‘Gsuppressed–¦fbš²!y“including“suc˜h“a“line“within“`â!vará'“...‘ÝÝ`â!endvará'“constructs,“e.g.,ަ‘.ùœâ!var–¿ªUNITS_SYSTEM“gaussian“gaussŽ¡‘.ùœ!promptŽ¡‘.ùœ!endvarŽŽŸ+³3‘GáThis–áÇmigh²!t›áÆbMÞe“appropriate˜if“y²!ou˜normally“use“Gaussian˜units“and˜nd“the˜prex“distractingŽ¡‘Gbut›¦fw•²!an“t˜to˜bMÞe˜reminded˜when˜y“ou˜ha“v“e˜selected˜a˜dieren“t˜CGS˜system.ŽŸ$35‘GëZ9‘	¸QLogging‘z³CalculationsŽŽŸ€‘GáThe–ÃÄâ--log“áoption“alloš²!ws“y˜ou‘ÃÃto“sa˜v˜e“the“results“of“calculations“in“a“le;‘Òrthis“can“bMÞe“usefulŽ¡‘Gif–®æy²!ou›®çneed“a˜pMÞermanen²!t“record˜of“y•²!our˜w“ork.‘÷^F‘ÿeor–®æexample,‘ñthe“
uid-
o•²!w˜con“v“ersion‘®æinŽ¡‘GSection–çä5.6‘çã[Complicated“Unit“Expressions],›8Bpage“14,˜is“lengthš²!y‘ÿe,‘8Cand‘çãif“y˜ou“w˜ere‘çãto“useŽ¡‘Git–U½in“designing“a“piping“system,‘’yš²!ou“migh˜t“w˜an˜t“a“record“of“it“for“the“pro‘›»ject“le.‘ëâIf“theŽ¡‘Gin•²!teractiv“e‘¦fsessionަ‘.ùœâ#–¿ªConversion“factor“A1“for“pressure“dropŽ¡‘.ùœ#–¿ªdP“=“A1“rho“f“L“Q^2/d^5Ž¡‘.ùœYou–¿ªhave:“(8/pi^2)“(lbm/ft^3)ft(ft^3/s)^2(1/in^5)“#“Input“unitsŽ¡‘.ùœYou–¿ªwant:“psiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŸSLÌ‘Gáwš²!ere–¦flogged,“the“log“le“w˜ould“con˜tainަ‘.ùœâ###–¿ªLog“started“Fri“Oct“02“15:55:35“2015ŽŸff‘.ùœ#–¿ªConversion“factor“A1“for“pressure“dropŽ¡‘.ùœ#–¿ªdP“=“A1“rho“f“L“Q^2/d^5Ž¡‘.ùœFrom:–¿ª(8/pi^2)“(lbm/ft^3)ft(ft^3/s)^2(1/in^5)‘>þ#“Input“unitsŽ¡‘.ùœTo:‘>þpsiŽ¡‘\öì*‘¿ª43.533969Ž¡‘\öì/‘¿ª0.022970568ŽŽŸm³2‘GáThe–¦ftime“is“written“to“the“log“le“when“the“le“is“opMÞened.ަ‘!GThe–2ôuse“of“commen²!ts“can›2óhelp“clarify“the“meaning“of“calculations“for“the˜log.‘	ƒ‡TheŽ¡‘Glog–Ñ$includes‘Ñ#conformabilitš²!y“errors“bMÞet˜w˜een“the‘Ñ#units“at“the“`âYou‘¦fhave:á'Ž‘A[Sand“`âYou‘¦fwant:á'ŽŽ¡‘Gprompts,›¿Šbut–…Ónot“other“errors,˜including“lacš²!k“of‘…Ôconformabilit˜y“of“items“in“sums“or“dierencesŽŽŒ‹¼Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td31ŽŽŽ ƒ33 ý ÌÍ‘Gor–#Damong›#Eitems“in“a“unit˜list.‘²'F‘ÿeor“example,‘=~a˜con•²!v“ersion›#DbMÞet“w“een˜zenith˜angle‘#Eand˜elev‘ÿdDationޤ
33‘Gangle–¦fcould“in•²!v“olv“eŽ©»¼‘.ùœâYou–¿ªhave:“90“deg“-“(5“deg“+“22“min“+“9“sec)Ž¡’ø-Ú^Ž¡‘.ùœInvalid–¿ªsum“or“difference“of“non-conformable“unitsŽ¡‘.ùœYou–¿ªhave:“90“deg“-“(5“deg“+“22“arcmin“+“9“arcsec)Ž¡‘.ùœYou–¿ªwant:“dmsŽ¡‘\öì84–¿ªdeg“+“37“arcmin“+“51“arcsecŽ¡‘.ùœYou–¿ªhave:“_Ž¡‘.ùœYou–¿ªwant:“degŽ¡‘\öì*‘¿ª84.630833Ž¡‘\öì/‘¿ª0.011816024Ž¡‘.ùœYou‘¿ªhave:ŽŽ “»º‘GáThe–¦flog“le“wš²!ould“con˜tainަ‘.ùœâFrom:–¿ª90“deg“-“(5“deg“+“22“arcmin“+“9“arcsec)Ž¡‘.ùœTo:‘>þdeg;arcmin;arcsecŽ¡‘\öì84–¿ªdeg“+“37“arcmin“+“51“arcsecŽ¡‘.ùœFrom:‘¿ª_Ž¡‘.ùœTo:‘>þdegŽ¡‘\öì*‘¿ª84.630833Ž¡‘\öì/‘¿ª0.011816024ŽŽŸ^îî‘GáThe–àinitial›àen²!try“error˜(forgetting“that˜minš²!utes“ha˜v˜e“dimension›àof“time,‘½and˜that“arcmin²!utesŽ¡‘Gm²!ust–ºbMÞe›ºused“for˜dimensions“of˜angle)“doMÞes˜not“appMÞear˜in“the˜output.‘îWhen˜con•²!v“erting‘ºtoŽ¡‘Ga–¦funit“list“alias,“âunits“áexpands“the“alias“in“the“log“le.ަ‘!GThe–"l`âFrom:á'›"mand“`âTo:á'˜tags“are˜written“to˜the“log˜le“ev²!en˜if“the˜â--quiet“áoption˜is“giv²!en.Ž¡‘GIf–_the›_log“le˜exists“when˜âunits“áis“in•²!v“ok“ed,‘.the–_new“results˜are“appMÞended˜to“the˜log“le.Ž¡‘GThe–_Þtime›_ßis“written˜to“the“log˜le“eac²!h“time˜the“le˜is“opMÞened.‘ÆZThe˜â--log“áoption˜is“ignoredŽ¡‘Gwhen–¦fâunits“áis“used“non-in•²!teractiv“ely‘ÿe.ŽŸ!‘GëZ10‘	¸QIn–ÿuÂv“oking‘z³ë]unitsŽŽŸÝá‘GáY‘ÿeou›¦fin•²!v“ok“e˜âunits˜álik“e˜this:ަ‘.ùœâunits–¿ª[èoptionsâ]“[èfrom-unit“â[èto-unitâ]]ަ‘GáIf‘$@the–$Aåfrom-unit›a@áand“åto-unit˜áare›$@omitted,‘C·the“program˜will˜use“in•²!teractiv“e˜prompts‘$Ato˜de-Ž¡‘Gtermine–¤üwhicš²!h“con˜v˜ersions›¤ûto“pMÞerform.‘ÙŸSee“Chapter˜2“[In•²!teractiv“e–¤üUse],‘ä¡page“1.‘ÙžIf“bMÞothŽ¡‘Gåfrom-unit–‰²áand‘L±åto-unit“áare–L²givš²!en,‘vDâunits“áwill“prin˜t“the›L±result“of“that“single˜con•²!v“ersion‘L²andŽ¡‘Gthen–]‘exit.‘Å—If“only›]’åfrom-unit‘š‘áappMÞears“on˜the“command˜line,‘l"âunits˜áwill“displa²!y˜the“denitionŽ¡‘Gof–ãhthat“unit“and“exit.‘œÞUnits“spšMÞecied“on“the“command‘ãiline“ma²!y“need“to“b˜e“quoted“to“protectŽ¡‘Gthem–Þ\from“shell›Þ[in²!terpretation“and“to“group˜them“inš²!to“t˜w˜o“argumen˜ts.‘…¾Note“also‘Þ[that“theŽ¡‘Gâ--quiet–_jáoption“is‘_ienabled“bš²!y“default“if“y˜ou“spMÞecify‘_iåfrom-unit‘œjáon“the“command“line.‘èSeeŽ¡‘GChapter–¦f3“[Command“Line“Use],“page“4.ަ‘!GThe–adefault“bšMÞeha²!vior‘`of“âunits“ácan“b˜e‘`cš²!hanged“b˜y“v‘ÿdDarious“options“giv˜en‘`on“the“commandŽ¡‘Gline.‘59In–Ã…most“cases,‘ÊÍthe‘Äoptions“maš²!y“bMÞe“giv˜en“in›Äeither“short“form“(a“single˜`â-á'“follo•²!w“ed‘Ã…b“yŽ¡‘Ga–DÞsingle“cš²!haracter)‘DÝor“long“form“(â--“áfollo˜w˜ed“b˜y‘DÝa“w˜ord“or“h˜yphen-separated“w˜ords).‘½ZShort-Ž¡‘Gform–nsoptions›nrare“cryptic“but˜require“less“t²!yping;‘long-form˜options“require“more˜t²!yping“butŽŽŒ‹ Æ Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td32ŽŽŽ ƒ33 ý ÌÍ‘Gare–µrmore›µqexplanatory“and“ma²!y“bMÞe˜more“mnemonic.‘With“long-form“options“y²!ou˜need“onlyޤ
33‘Gen•²!ter›·{sucien“t˜c“haracters˜to˜uniquely˜iden“tify˜the˜option‘·zto˜the˜program.‘F‘ÿeor˜example,Ž¡‘Gâ--out›¿ª%f–Mšáw²!orks,‘_\but“â--o˜%f›M™áfails“bMÞecause“âunits“áhas˜other“long“options“bMÞeginning˜with“`âoá'.Ž¡‘GHo•²!w“ev“er,–¦fâ--q“áw²!orks“bšMÞecause“â--quiet“áis“the“only“long“option“b˜eginning“with“`âqá'.ŽŸΑ!GSome–<options“require“argumen²!ts“to›;ÿspMÞecify“a“v‘ÿdDalue“(e.g.,‘QHâ-d‘¿ª12˜áor“â--digits‘¿ª12á).‘ºfShort-Ž¡‘Gform–ÓIoptions“that‘ÓHdo“not“takš²!e“argumen˜ts‘ÓHma˜y“bMÞe“concatenated“(e.g.,‘€â-erS“áis“equiv‘ÿdDalen˜tŽ¡‘Gto›>œâ-e–¿ª-r“-Sá);‘
¸the˜last–>option˜in˜suc²!h“a˜list“ma²!y˜bMÞe“one˜that“tak²!es˜an“argumen²!t˜(e.g.,Ž¡‘Gâ-ed‘¿ª12á).‘Š9With›«xshort-form–«yoptions,‘ݧthe“space˜bMÞet•²!w“een–«yan˜option˜and“its˜argumen²!t“is˜optionalŽ¡‘G(e.g.,‘-jâ-d12–iáis“equiv‘ÿdDalenš²!t“to“â-d‘¿ª12á).‘!åLong-form“options“ma˜y“not“bMÞe“concatenated,‘-jand“theŽ¡‘Gspace›ÔŽbMÞet•²!w“een˜a˜long-form‘Ôoption˜and˜its˜argumen“t˜is˜required.‘hVShort-form˜and˜long-formŽ¡‘Goptions–èmaš²!y‘çbMÞe“in˜termixed“on›çthe“command˜line.‘	#bOptions“ma²!y“bMÞe˜giv²!en“in˜an²!y“order,Ž¡‘Gbut–when›Œincompatible“options˜(e.g.,‘,Vâ--output-format“áand˜â--exponentialá)“are˜giv²!en“inŽ¡‘Gcom•²!bination,‘5ÕbMÞeha“vior–åòis“conš²!trolled“b˜y“the“last“option“giv˜en.‘œF‘ÿeor“example,‘5Õâ-o%.12f‘¿ª-eŽ¡‘Gágiv•²!es›¦fexpMÞonen“tial˜format˜with˜the˜default˜eigh“t˜signican“t˜digits).ŽŸÏ‘!GThe–¦ffolloš²!wing“options“are“a˜v‘ÿdDailable:ŽŸˆ›‘Gâ-cŽ¡‘G--check‘“MáChec²!k––ïthat“all›–îunits“and“prexes“dened˜in“units“data“les˜reduce“to“primitiv²!eŽ¡‘Kâ:units.‘·[Displa²!y–îåa“list›îæof“all“units˜that“cannot“bMÞe˜reduced“and“a“list˜of“unitsŽ¡‘Kâ:with–¾˜circular“denitions.‘&sAlso“displa²!y“some“other“diagnostics“abMÞout“suspiciousŽ¡‘Kâ:denitions–@in“the“units›@‘data“le.‘¬[Only“denitions“activ²!e˜in“the“curren²!t“loMÞcaleŽ¡‘Kâ:are›c•²!hec“k“ed.‘û„Y‘ÿeou˜should‘žalw“a“ys˜run˜âunits–žáwith˜this“option˜after“moMÞdifying˜aŽ¡‘Kâ:units–¦fdata“le.ŽŸ¥‘Kâ:Some–.Úerrors“maš²!y“hide“other“errors,‘P÷so“y˜ou“should“run“âunits“áwith“this“optionŽ¡‘Kâ:again–¦fafter“correcting“anš²!y“errors,“and“k˜eep“doing“so“un˜til“there“are“no“errors.ŽŸΑGâ--check-verboseŽ¡‘G--verbose-checkŽ¡‘Kâ:áLikš²!e–íÙthe“â--check“áoption,‘?µthis“option“displa˜ys“a“list“of“units“that“cannot“bMÞeŽ¡‘Kâ:reduced.›Ò»But–øit“also“lists“the“units‘øas“they“are“c•²!hec“k“ed.˜Because–øthe“â--checkŽ¡‘Kâ:áoption›ͪno•²!w‘Í©catc“hes˜circular–Í©unit˜denitions“that˜previously“caused˜âunits“átoŽ¡‘Kâ:hang,‘ˆ›this–[^option“is“no“longer“necessary‘ÿe.‘üÄIt“is“retained‘[]only“for“compatibilit²!yŽ¡‘Kâ:with–¦fprevious“v²!ersions.ŽŸÏ‘Gâ-d‘¦fèndigitsŽ¡‘Gâ--digits‘¦fèndigitsŽ¡‘Kâ:áSet›ŸRthe‘ŸQn•²!um“bMÞer˜of˜signican“t–ŸQdigits˜in˜the˜output“to˜the˜v‘ÿdDalue“spMÞecied˜(whic²!hŽ¡‘Kâ:m²!ust–­bMÞe“greater›­than“zero).‘ñÚF‘ÿeor“example,‘®ºâ-d‘¿ª12“ásets“the˜n•²!um“bMÞer–­of“signican²!tŽ¡‘Kâ:digits›ctto–cu12.‘With“expMÞonen•²!tial˜output˜âunits˜ádispla“ys–cuone˜digit˜to˜the“left˜ofŽ¡‘Kâ:the–˜decimal“pMÞoinš²!tŸü¾®2Ž‘	›áand“elev˜en“digits“to“the‘™righ˜t“of“the“decimal“pMÞoin˜t.‘	FtOnŽ¡‘Kâ:most–¶ãsystems,‘ûthe“maximš²!um“n˜um˜bMÞer‘¶âof“in˜ternally“meaningful“digits‘¶âis“15;‘?!ifŽ¡‘Kâ:y²!ou–Š&spMÞecify›Š'a“greater˜n•²!um“bMÞer–Š&than“y²!our˜system's“maxim²!um,‘Íâunits“áwill˜prin²!t“aŽ¡‘Kâ:wš²!arning–…and‘„set“the“n˜um˜bMÞer›„to“the“largest“meaningful˜v‘ÿdDalue.‘¨=T‘ÿeo“directly˜set“theŽ¡‘Kâ:maxim•²!um›â°v‘ÿdDalue,‘ñÂgiv“e˜an˜argumen“t˜of˜âmax˜á(e.g.,‘ñÂâ-d‘¿ªmaxá).‘’»Be˜a“w“are,‘ñÂof˜course,Ž‘GŸ
êh‰ffŠ=Ÿó/‘ãŸü-=®2ŽŽ‘¬This–védošAÇcumen¾9t“refers“to‘vê\decimal“p˜oinš¾9t,"‘–˜but“strictly‘ÿ:«,‘–™the“ó"”q[˜		cmsl9Íradix‘«¬separates“the‘vêin˜teger“and“fractional“partsޤ
€‘of–…^a‘…_
oating-pAÇoinš¾9t“n˜um˜bšAÇer;‘½cin“English-sp˜eaking–…_coun¾9tries,‘¡`the“radix–…^is“a“p˜oin¾9t›…_(`É.¬'),‘¡`but“in˜most“otherŽ¡‘coun¾9tries–Tit“is“a“comma“(`É,¬').ŽŽŒ‹!Ò]Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td33ŽŽŽ ƒ33 ý ÌÍ‘Kâ:that–åæ\signican²!t"›åçhere“refers˜only“to˜the“ädisplay‘Ýèáof“n•²!um“b•MÞers;‘§if˜results‘åædep“endޤ
33‘Kâ:on›¢¿ph•²!ysical‘¢Àconstan“ts˜not˜kno“wn–¢Àto˜this˜precision,‘áÕthe“ph²!ysically˜meaningfulŽ¡‘Kâ:precision–@Úmaš²!y“bMÞe‘@Ùless“than“that“sho˜wn.‘¼The“â--digits“áoption‘@Ùcon
icts“with“theŽ¡‘Kâ:â--output-format‘¦fáoption.Ž©ÌÏ‘Gâ-eŽ¡‘G--exponentialŽ¡‘Kâ:áSet–!|the›!{n²!umeric“output“format˜to“expMÞonen•²!tial˜(i.e.,‘€Ascien“tic‘!|notation),‘€@lik“eŽ¡‘Kâ:that–ZDused›ZEin“the“Unix˜âunits“áprogram.‘Ä|The˜default“precision“is˜eighš²!t“signican˜tŽ¡‘Kâ:digits–e(sev²!en›eŒdigits“to“the˜righ²!t“of“the˜decimal“pšMÞoin²!t);‘{*this“can“b˜e‘eŒc²!hanged“withŽ¡‘Kâ:the–&žâ--digits“áoption.‘³EThe“â--exponential“áoption“con
icts“with“the“â--output-Ž¡‘Kâ:format‘¦fáoption.ަ‘Gâ-o‘¦fèformatŽ¡‘Gâ--output-format‘¦fèformatŽ¡‘Kâ:áThis–…÷option‘…öaords“complete“conš²!trol“o˜v˜er‘…öthe“n˜umeric“output“format‘…öusing“theŽ¡‘Kâ:spMÞecied–×åformatá.‘.The“format›Öis“a“single˜
oating“pMÞoin•²!t˜n“umeric–×format˜for“theŽ¡‘Kâ:âprintf–Ÿáfunction›Ÿin“the“C‘žÒprogramming“language.‘ÇàAll“compilers˜suppMÞort“theŽ¡‘Kâ:format–P-t²!ypšMÞes“`âgá'“and“`âGá'‘P,to“sp˜ecify“signicanš²!t“digits,‘al`âeá'‘P,and“`âEá'“for“scien˜tic“no-Ž¡‘Kâ:tation,‘Þ6and–¬*`âfá'“for“xed-pMÞoinš²!t“decimal.‘ŠtThe“ISO‘«êC99“standard“in˜troMÞduced“the“`âFá'Ž¡‘Kâ:tš²!yp•MÞe‘âÝfor‘âÞxed-p“oin˜t–âÝdecimal“and›âÞthe“`âaá'“and˜`âAá'“t²!ypMÞes“for˜hexadecimal“
oatingŽ¡‘Kâ:pšMÞoin•²!t;‘}these‘óËt“yp˜es–óËare“allo•²!w“ed–óËwith“compilers“that“supp˜ort“them.‘ÆThe“defaultŽ¡‘Kâ:format–Ëäis›Ëå`â%.8gá';‘Þ¤for“greater˜precision,‘ÕDy²!ou“could˜spMÞecify“â-o‘¿ª%.15gá.‘NYSee“Chap-Ž¡‘Kâ:ter–E14›D[Numeric“Output˜F‘ÿeormat],–Åpage˜46,“and–Ethe˜doMÞcumen²!tation“for˜âprintf“áforŽ¡‘Kâ:more–[detailed›\descriptions“of˜the“format“spMÞecication.‘'¾The“â--output-formatŽ¡‘Kâ:áoption–aords“the›greatest“con²!trol“of“the“output˜appMÞearance,‘Æ©but“requires“atŽ¡‘Kâ:least› rudimen•²!tary‘!kno“wledge˜of–!the˜âprintf“áformat˜synš²!tax.‘¬qIf“y˜ou‘ don't“w˜an˜t‘ toŽ¡‘Kâ:bšMÞother–Õ™with“the“âprintf“ásyn•²!tax,‘áfy“ou–Õ™can“sp˜ecify“greater“precision“more“simplyŽ¡‘Kâ:with–‰Fthe“â--digits“áoption“or“select“expMÞonen²!tial“format“with“â--exponentialá.Ž¡‘Kâ:The–Sàâ--output-format“áoption“is‘Sáincompatible“with“the“â--exponential“áandŽ¡‘Kâ:â--digits‘¦fáoptions.ŽŸÌΑGâ-f‘¦fèfilenameŽ¡‘Gâ--file‘¦fèfilenameŽ¡‘Kâ:áInstruct–âunits›áto“load“the˜units“le“ålenameá.‘ ÎY‘ÿeou“can˜spMÞecify“up“to˜25“unitsŽ¡‘Kâ:les–ÙEon“the“command“line.‘vyWhen“y²!ou“use“this“option,‘%üâunits“áwill“load“äonlyŽ¡‘Kâ:áthe–	ªles›	©y²!ou“list˜on“the˜command“line;‘»Jit“will˜not“load˜the“standard˜le“orŽ¡‘Kâ:yš²!our–a—pMÞersonal“units“le“unless“y˜ou“explicitly“list“them.‘ÆíIf“ålename‘þžáis“the“empt˜yŽ¡‘Kâ:string–k%(â-f‘¦f""Ž‘¥á),‘wthe“default“main›k&units“le˜(or“that˜spMÞecied“b²!y˜âUNITSFILEá)“willŽ¡‘Kâ:bšMÞe–¦floaded“in“addition“to“an²!y“others“sp˜ecied“with“â-fá.ަ‘Gâ-L‘¦fèlogfileŽ¡‘Gâ--log‘¦fèlogfileŽ¡‘Kâ:áSa•²!v“e–4Hthe“results“of›4Gcalculations“in“the“le“ålogle‘á;‘û8this“can“bMÞe˜useful“if“it“isŽ¡‘Kâ:impMÞortan•²!t›Y×to‘YÖha“v“e˜a–YÖrecord˜of˜unit“con•²!v“ersions˜or˜other–YÖcalculations˜that“are˜toŽ¡‘Kâ:bMÞe–+•used›+”extensiv²!ely“or“in“a˜critical“activitš²!y“suc˜h›+”as“a“program“or˜design“pro‘›»ject.Ž¡‘Kâ:If–§]ålogle‘Ddáexits,‘§›the›§^new“results“are“appMÞended“to˜the“le.‘àÂThis˜option“is“ignoredŽ¡‘Kâ:when–œ+âunits›œ,áis“used“non-in•²!teractiv“ely‘ÿe.‘¿-See–œ+Chapter“9˜[Logging“Calculations],Ž¡‘Kâ:page–¦f30,“for“a“more“detailed“description“and“some“examples.ŽŽŒ‹"ã{Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td34ŽŽŽ ƒ33 ý ÌÍ‘Gâ-H‘¦fèfilenameޤ
33‘Gâ--history‘¦fèfilenameŽ¡‘Kâ:áInstruct–â¶âunits“áto›â·sa•²!v“e–â¶history“to“ålenameá,‘	Úso“that“a“record“of˜y²!our“commands“isŽ¡‘Kâ:a²!v–ÿdDailable›àfor‘ßretriev“al˜across‘ßdieren•²!t˜âunits˜áin“v“oMÞcations.‘§°T‘ÿeo˜prev“en“t‘ßthe˜historyŽ¡‘Kâ:from–¤…bMÞeing“sa•²!v“ed–¤…set“ålename‘AŒáto“the“empt²!y“string“(â-H‘¦f""Ž‘¥á).‘Ý=This“option“has“noŽ¡‘Kâ:eect–¦fif“readline“is“not“a²!v‘ÿdDailable.Ž©&g‘Gâ-hŽ¡‘G--help‘R÷áPrin²!t–¦fout“a“summary“of“the“options“for“âunitsá.ަ‘Gâ-mŽ¡‘G--minus‘“MáCauses–;÷`â-á'›;öto“bMÞe“in²!terpreted“as˜a“subtraction“opMÞerator.‘	žThis“is˜the“defaultŽ¡‘Kâ:bMÞeha²!vior.ŽŸ&h‘Gâ-pŽ¡‘G--productŽ¡‘Kâ:áCauses–Ь`â-á'›Ыto“bMÞe˜in²!terpreted“as˜a“m²!ultiplication˜opMÞerator“when˜it“has˜t•²!w“oŽ¡‘Kâ:opšMÞerands.‘|ÂIt‘Û^will–Û]act“as“a“negation“op˜erator“when“it‘Û^has“only“one“op˜erand:Ž¡‘Kâ:`â(-3)á'.‘ÝÝBy–¦fdefault“`â-á'“is“treated“as“a“subtraction“opMÞerator.ަ‘Gâ--oldstarŽ¡‘Kâ:áCauses–[ô`â*á'“to“ha•²!v“e–[ôthe“old-st²!yle“precedence,‘j×higher“than“the“precedence“of“divi-Ž¡‘Kâ:sion–¦fso“that“`â1/2*3á'“will“equal“`â1/6á'.ަ‘Gâ--newstarŽ¡‘Kâ:áF‘ÿeorces–þn`â*á'“to“ha•²!v“e–þnthe“new“(default)“precedence“that“follo²!ws“the“usual“rulesŽ¡‘Kâ:of–4Salgebra:‘ù¸the“precedence›4Tof“`â*á'˜is“the“same˜as“the“precedence˜of“`â/á',‘WÏso“thatŽ¡‘Kâ:`â1/2*3á'–¦fwill“equal“`â3/2á'.ަ‘Gâ-rŽ¡‘G--round‘“MáWhen›)Ícon•²!v“erting˜to˜a˜com“bination˜of˜units˜giv“en˜b“y˜a˜unit˜list,‘B¸round˜the˜v‘ÿdDalueŽ¡‘Kâ:of–¦fthe“last“unit“in“the“list“to“the“nearest“in²!teger.ŽŸ&h‘Gâ-SŽ¡‘G--show-factorŽ¡‘Kâ:áWhen›v‹con•²!v“erting˜to˜a˜com“bination˜of˜units˜spMÞecied‘vŠin˜a˜list,‘ª”alw“a“ys˜sho“w˜aŽ¡‘Kâ:non-unit²!y–^¡factor“bšMÞefore“a“unit“that“b˜egins“with“a“fraction“with“a“unit²!y“denomi-Ž¡‘Kâ:nator.‘ÐBy–|ædefault,‘…3if“the›|çunit“in“a˜list“bMÞegins“with˜fraction“of“the“form˜1â|åx‘>EáandŽ¡‘Kâ:its–¬žmš²!ultiplier‘¬Ÿis“an“in˜teger“other›¬Ÿthan“1,‘®,the“fraction˜is“giv²!en“as“the˜proMÞduct“ofŽ¡‘Kâ:the–ÈÜmš²!ultiplier‘ÈÛand“the“n˜umerator“(e.g.,‘Ñy`â3|8›¿ªiná'‘ÈÛrather“than“`â3–¦f*“1|8˜iná').‘E>InŽ¡‘Kâ:some–0”cases,›Sthis“is“not‘0“what“is“w•²!an“ted;‘uªfor–0”example,˜the“results“for‘0“a“coMÞokingŽ¡‘Kâ:recipMÞe›dþmigh•²!t‘dÿsho“w˜`â3–¦f*“1|2–¿ªcupá'‘dÿas˜`â3|2“cupá'.‘§With˜the‘dÿâ--show-factor˜áop-Ž¡‘Kâ:tion,‘o•a–GXresult›GYequiv‘ÿdDalen²!t“to˜1.5“cups˜will“displa²!y˜as“`â3–¦f*“1|2‘¿ªcupá'˜rather‘GXthanŽ¡‘Kâ:`â3|2‘¿ªcupá'.‘®×A‘–{user-spMÞecied›–ºfractional––¹unit“with˜a“n²!umerator“other“than˜1“isŽ¡‘Kâ:nev•²!er›VÌo“v“erridden,‘‚åho“w“ev“er|if˜a˜unit‘VÍlist˜spMÞecies˜`â3|4–¦fcup;1|2“cupá',‘‚åa˜resultŽ¡‘Kâ:equiv‘ÿdDalenš²!t–õto“1‘ö1/2“cups“will“alw˜a˜ys‘öbMÞe“sho˜wn“as“`â2–¦f*“3|4‘¿ªcupá'‘öwhether–õor“notŽ¡‘Kâ:the–¦fâ--show-factor“áoption“is“giv²!en.ަ‘Gâ--conformableŽ¡‘Kâ:áIn›Õ—non-in•²!teractiv“e˜moMÞde,‘ácsho“w˜all˜units˜conformable˜with˜the˜original˜unit˜ex-Ž¡‘Kâ:pression.‘¼@Only‘A‘one–Aunit“expression“is“allo•²!w“ed;‘c-if›Ay“ou˜giv“e˜more˜than˜one,‘U»âunitsŽ¡‘Kâ:áwill–¦fexit“with“an“error“message“and“return“failure.ŽŽŒ‹#ò®Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td35ŽŽŽ ƒ33 ý ÌÍ‘Gâ-vޤ
33‘G--verboseŽ¡‘Kâ:áGiv•²!e›ñísligh“tly˜more˜v“erbMÞose˜output˜when˜con“v“erting˜units.‘¡µWhen˜com“bined˜withŽ¡‘Kâ:the–š‚â-c“áoption“this“givš²!es“the“same“eect“as“â--check-verboseá.‘ÙæWhen“com˜binedŽ¡‘Kâ:with–ùâ--version“áproMÞduces›úa“more“detailed“output,‘Wequiv‘ÿdDalen²!t˜to“the“â--infoŽ¡‘Kâ:áoption.ŽŸzâ‘Gâ-VŽ¡‘G--versionŽ¡‘Kâ:áPrinš²!t–q0the‘q1program“v˜ersion“n˜um˜bMÞer,‘{Õtell“whether›q1the“âreadline“álibrary˜has“bMÞeenŽ¡‘Kâ:included,‘•tell–eJwhether“UTF-8“suppšMÞort“has“b˜een“included;‘ļgiv²!e“the“lo˜cale,‘•theŽ¡‘Kâ:loMÞcation–—sof“the›—tdefault“main“units“data˜le,‘Ó¶and“the“loMÞcation˜of“the“pMÞersonalŽ¡‘Kâ:units–¦fdata“le;“indicate“if“the“pšMÞersonal“units“data“le“do˜es“not“exist.ŽŸ×‘Kâ:When–¹9givš²!en“in‘¹8com˜bination“with“the“â--terse–¹8áoption,‘½îthe“program–¹9prin˜ts“onlyŽ¡‘Kâ:the–¦fvš²!ersion“n˜um˜bMÞer“and“exits.Ž©×
‘Kâ:When–Ô9givš²!en‘Ô8in“com˜bination“with“the›Ô8â--verbose“áoption,–_­the˜program,“theŽ¡‘Kâ:â--version–¦fáoption“has“the“same“eect“as“the“â--info“áoption“bMÞelo²!w.ŽŸzã‘Gâ-IŽ¡‘G--info‘R÷áPrinš²!t–´division“signs“are‘s?not“shoš²!wn,‘¦tand“there“is“no“leading“whitespace.‘DfIf“y˜ouŽ¡‘Kâ:con•²!v“ert–dto“a“unit“list,‘¤then“the“output“is“a“semicolon“separated“list“of“factors.Ž¡‘Kâ:This–¦fturns“o“the“â--verbose“áoption.ަ‘Gâ-qŽ¡‘G--quietŽ¡‘G--silent‘Ó£áSuppress–the“displaš²!y“of“statistics“abMÞout“the“n˜um˜bMÞer‘of“units“loaded,‘3.an˜y“mes-Ž¡‘Kâ:sages–8Öprinš²!ted“b˜y›8Õthe“units“database,‘]qand“the“prompting“of“the˜user“for“units.Ž¡‘Kâ:This–‘ýoption“doMÞes“not“aect‘‘ühoš²!w“âunits“ádispla˜ys“the“results.‘ºThis“option“is“turnedŽ¡‘Kâ:on›|Êb²!y–|Ëdefault“if˜yš²!ou“in˜v˜ok˜e–|Êâunits“áwith›|Ëa“unit˜expression˜on“the“command˜line.ŽŸ-35‘GëZ11‘	¸QScripting–z³with“ë]unitsŽŽŸ-‘GáDespite–/#its›/$n²!umerous“options,‘QRâunits˜ácannot“co•²!v“er›/#ev“ery˜conceiv‘ÿdDable‘/$unit-con“v“ersion˜task.Ž¡‘GF‘ÿeor–AŸexample,‘UÇsuppMÞose“w•²!e›A ha“v“e–AŸfound“some“m²!ysterious˜scale,‘UÇbut“cannot“gure“out˜the“unitsŽ¡‘Gin–`‚whic²!h›`ƒit“is“repMÞorting.‘Æ‘W‘ÿee˜reacš²!h“in˜to“our‘`ƒp•MÞo“c˜k˜et,‘n|place›`ƒa–`‚3.75-gram“coin˜on“the“scale,‘n}andŽ¡‘Gobservš²!e–1Cthe‘1Bscale“reading“`â0.120á'.‘~sHo˜w“do“w˜e‘1Bquic˜kly“determine“the–1Bunits?‘~tOr“w˜e‘1Cmigh˜tŽ¡‘Gwš²!onder–¦fif“a“unit“has“an˜y“\synon˜yms,"“i.e.,“other“units“with“the“same“v‘ÿdDalue.ŽŸÌÍ‘!GThe–™§capabilities“of“âunits“áare“easily“extended“with‘™¨simple“scripting.‘„HBoth“questions“abMÞo•²!v“eŽ¡‘Gin•²!v“olv“e›­®conformable–­­units;‘±Ron“a˜system“with˜Unix-likš²!e“utilities,‘¯€con˜v˜ersions“to‘­®conformableŽ¡‘Gunits–¦fcould“bMÞe“shoš²!wn“accomplished“with“the“follo˜wing“script:ŽŽŒ‹%¡Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td37ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ#!/bin/shޤff‘.ùœprogname=basename–¿ª$0“.shŽ©
33‘.ùœumsg="Usage:–¿ª$progname“[]“unit"Ž¡‘.ùœif–¿ª[“$#“-lt“1“]ަ‘.ùœthenަ‘EøDecho–¿ª"$progname:“missing“quantity“to“convert"ަ‘EøDecho‘¿ª"$umsg"ަ‘EøDexit‘¿ª1ަ‘.ùœfiŽ¡‘.ùœfor–¿ªunit“in“units“--conformable“"$*"“|“cut“-f“1“-d“
“
ަ‘.ùœdoަ‘EøDecho–¿ª"$*"‘>þ#“have“--“quantity“to“convertަ‘EøDecho–¿ª$unit‘T#“want“--“conformable“unitަ‘.ùœdone–¿ª|“units“--terse“--verboseŽŽ è¸O‘GáWhen–Â.âunits“áis“in•²!v“ok“ed–Â.with“no“non-option“argumenš²!ts,‘	it“reads“åha˜v˜e‘á/åw˜an˜t‘ÿ.ápairs,‘	 on“al-ޤ
33‘Gternating–³olines,‘ö±from“its“standard“input,‘ö°so“the“task“can“bMÞe“accomplished“with“only“t•²!w“oŽ¡‘Gin•²!v“oMÞcations– of›!âunitsá.‘hThis“a•²!v“oids– the˜computational“o•²!v“erhead– of˜needlessly“reproMÞcessingŽ¡‘Gthe–`.units“database‘`-for“eacš²!h“conformable“unit,‘ŽŸas“w˜ell“as“the“inheren˜t‘`-system“o˜v˜erhead“ofŽ¡‘GprošMÞcess‘¦fin•²!v“o˜cation.Ž©… ‘!GBy–ó!itself,‘Othe“script›ó is“not“v²!ery˜useful.‘Ä
But“it“could“bMÞe˜used“in“com²!bination˜with“otherŽ¡‘Gcommands–	to›
address“spMÞecic“tasks.‘	ÇF‘ÿeor“example,‘i2running“the“script“through˜a“simpleŽ¡‘Goutput–X&lter“could‘X'help“solvš²!e“the“scale“problem“abMÞo˜v˜e.‘ÃÈIf“the“script‘X'is“named“âconformableá,Ž¡‘Grunningޤ…‘.ùœâ$–¿ªconformable“3.75g“|“grep“0.120Ž¡‘Gágiv²!esަ‘\öìâ3.75g–¿ª=“0.1205653“apounceޤ
33‘\öì3.75g–¿ª=“0.1205653“fineounceŽ¡‘\öì3.75g–¿ª=“0.1205653“oztŽ¡‘\öì3.75g–¿ª=“0.1205653“tradewukiyehŽ¡‘\öì3.75g–¿ª=“0.1205653“troyounceŽŽŸJQë‘GáSo–¦fwš²!e“migh˜t“conclude“that“the“scale“is“calibrated“in“tro˜y“ounces.Ž¡‘!GW‘ÿee–¦fmigh²!t“runŽ¡‘.ùœâ$–¿ªunits“--verbose“areŽŸ
33‘\öìDefinition:–¿ª100“m^2“=“100“m^2ŽŽŸ"¸S‘Gáand–¦fwš²!onder“if“`âareá'“has“an˜y“synon˜yms,“v‘ÿdDalue.‘ÝÝT‘ÿeo“nd“out,“w˜e“could“runŽ¡‘.ùœâ$–¿ªconformable“are“|“grep“"=“1“"ޤ
33‘\öìare–¿ª=“1“aŽ¡‘\öìare–¿ª=“1“areŽŽŽŒ‹&¬Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td38ŽŽŽ ƒ33 ý ÌÍ‘GëZ12‘	¸QOutput‘z³St‘ÿuÂylesŽŽŸ+™œ‘GáThe–†Eoutput›†Fcan“bMÞe“t•²!w“eak“ed–†Ein˜v‘ÿdDarious“w•²!a“ys–†Eusing“command˜line“options.‘Ó'With˜no“options,ޤ
33‘Gthe–¦foutput“loMÞoks“lik²!e“thisŽ©UV‘.ùœâ$‘¿ªunitsŽ¡‘.ùœCurrency–¿ªexchange“rates“from“FloatRates“(USD“base)“on“2023-07-08Ž¡‘.ùœ3612–¿ªunits,“109“prefixes,“122“nonlinear“unitsŽŸff‘.ùœYou–¿ªhave:“23ftŽ¡‘.ùœYou–¿ªwant:“mŽ¡‘\öì*‘¿ª7.0104Ž¡‘\öì/‘¿ª0.14264521Ž¡‘.ùœYou–¿ªhave:“mŽ¡‘.ùœYou–¿ªwant:“ft;inŽ¡‘\öì3–¿ªft“+“3.3700787“inŽŽ ™UT‘GáThis–¦fis“arguably“a“bit“cryptic;“the“â--verbose“áoption“mak²!es“clear“what“the“output“means:ަ‘.ùœâ$–¿ªunits“--verboseŽ¡‘.ùœCurrency–¿ªexchange“rates“from“FloatRates“(USD“base)“on“2023-07-08Ž¡‘.ùœ3612–¿ªunits,“109“prefixes,“122“nonlinear“unitsŽŸff‘.ùœYou–¿ªhave:“23“ftŽ¡‘.ùœYou–¿ªwant:“mŽ¡‘\öì23–¿ªft“=“7.0104“mŽ¡‘\öì23–¿ªft“=“(1“/“0.14264521)“mŽ¡‘.ùœYou–¿ªhave:“meterŽ¡‘.ùœYou–¿ªwant:“ft;inŽ¡‘\öìmeter–¿ª=“3“ft“+“3.3700787“inŽŽ ™UT‘GáThe–áâ--quiet“áoption“suppresses“the“clutter‘àdispla•²!y“ed–áwhen“âunits“ástarts,‘rÿas“w²!ell“as“theŽ¡‘Gprompts–ì‡to“the–ì†user.‘ŸéThis“option–ì‡is“enabled“bš²!y‘ì†default“when“y˜ou“giv˜e“units‘ì†on“the“commandŽ¡‘Gline.ަ‘.ùœâ$–¿ªunits“--quietŽ¡‘.ùœ23‘¿ªftŽ¡‘.ùœmŽ¡‘\öì*‘¿ª7.0104Ž¡‘\öì/‘¿ª0.14264521ŽŸff‘.ùœ$–¿ªunits“23ft“mŽ¡‘\öì*‘¿ª7.0104Ž¡‘\öì/‘¿ª0.14264521ŽŽŸ~îî‘GáThe–´Lremaining›´Kst²!yle“options˜alloš²!w“y˜ou‘´Kto“displa˜y‘´Konly“n˜umerical›´Kv‘ÿdDalues“without˜the“tab˜orŽ¡‘Gthe–T´mš²!ultiplication“and“division“signs,‘€Gor“to“displa˜y“just“a“single“line“sho˜wing“the“forw˜ardŽ¡‘Gcon•²!v“ersion:ŽŽŒ‹' ÌŸò‘GáUnits‘¦fCon•²!v“ersion’Td39ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ$–¿ªunits“--compact“23ft“mޤ
33‘.ùœ7.0104Ž¡‘.ùœ0.14264521Ž©ff‘.ùœ$–¿ªunits“--compact“m“
ft;in
Ž¡‘.ùœ3;3.3700787ަ‘.ùœ$–¿ªunits“--one-line“23ft“mŽ¡‘\öì*‘¿ª7.0104ަ‘.ùœ$–¿ªunits“--one-line“23ft“1/mŽ¡‘\öìreciprocal‘¿ªconversionŽ¡‘\öì*‘¿ª0.14264521ަ‘.ùœ$–¿ªunits“--one-line“23ft“kgŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘\öì7.0104‘¿ªmŽ¡‘\öì1‘¿ªkgŽŽ +32‘GáNote–¾rthat“when“con•²!v“erting–¾rto“a“unit“list,‘Ätthe“â--compact“áoption“displa²!ys“a“semicolon“sepa-ޤ
33‘Grated–¥ílist›¥ìof“results.‘Ý´Also“bMÞe˜a•²!w“are–¥íthat“the˜âone-line“áoption˜doMÞesn't“liv²!e“up˜to“its˜name“ifŽ¡‘Gy²!ou–Ù
execute›Ùa“reciproMÞcal˜con•²!v“ersion–Ù
or“if˜y²!ou“get˜a“conformabilit²!y“error.‘™jThe“former˜case“canŽ¡‘GbMÞe›Zprev•²!en“ted‘[using˜the˜â--strict˜áoption,‘.]whic“h˜suppresses˜reciproMÞcal‘[con“v“ersions.‘«ÙSimilarlyŽ¡‘Gyš²!ou–-„can“suppress‘-ƒunit“list“con˜v˜ersion“using“â--nolistsá.‘µ‘It“is“impMÞossible“to‘-ƒprev˜en˜t“the“threeŽ¡‘Gline–¦ferror“output.ŽŸJÌΑ.ùœâ$–¿ªunits“--compact“--nolists“m“
ft;in
Ž¡‘.ùœError–¿ªin“
ft;in
:“Parse“errorŽŸff‘.ùœ$–¿ªunits“--one-line“--strict“23ft“1/mŽŽŸrfh‘GáThe–Åv‘ÿdDarious“stš²!yle“options“can“bMÞe“com˜bined“appropriately‘ÿe.‘	úThe“ultimate“com˜bination“isŽ¡‘Gthe‘Aâ--terse–Báoption,‘8wwhicš²!h“com˜bines›Aâ--strictá,–8xâ--quietá,“â--one-lineá,‘8wand‘Bâ--compact˜átoŽ¡‘GprošMÞduce–χthe“minimal“output,‘ÙÏjust‘ψa“single“n•²!um“b˜er–χfor“regular“con•²!v“ersions–χand“a“semicolonŽ¡‘Gseparated–þlist›ÿfor“con•²!v“ersion–þto“unit˜lists.‘¦This“will“lik²!ely˜bšMÞe“the“b˜est“c²!hoice‘ÿfor“programsŽ¡‘Gthat›¦fw•²!an“t˜to˜call˜âunits˜áand˜then˜proMÞcess˜its˜result.ŽŽŒ‹('¬Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td40ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ$–¿ªunits“--terse“23ft“mޤ
33‘.ùœ7.0104Ž©ff‘.ùœ$–¿ªunits“--terse“m“
ft;in
Ž¡‘.ùœ3;3.3700787ަ‘.ùœ$–¿ªunits“--terse“23ft“1/mŽ¡‘.ùœconformability‘¿ªerrorŽ¡‘.ùœ7.0104‘¿ªmŽ¡‘.ùœ1–¿ª/“mަ‘.ùœ$–¿ªunits“--terse“
1“mile
Ž¡‘.ùœ1609.344‘¿ªmަ‘.ùœ$–¿ªunits“--terse“mileŽ¡‘.ùœ5280–¿ªft“=“1609.344“mŽŽ çr5‘GëZ13‘	¸QAdding–z³Y‘þaGour“Own“DenitionsŽŽŸ'V©‘Gëc13.1‘™Units–f@Data“FilesŽŽŸ33‘GáThe–ounits›nand“prexes˜that“âunits“ácan˜con•²!v“ert–oare˜dened“in“the˜units“data˜le,‘ ñt²!ypicallyޤ
33‘Gâ/usr/share/units/definitions.unitsá.‘ÄBIf–ó3y²!ou›ó2can't“nd˜this“le,‘frun˜âunits‘¦f--versionŽŽ¡‘Gáto–Þget“information“on‘Ýthe“le“loMÞcations“for“yš²!our“installation.‘ÿDAlthough“y˜ou“can“extendŽ¡‘Gor–hkmoMÞdify“this‘hldata“le“if“yš²!ou“ha˜v˜e›hlappropriate“user“privileges,‘˜ìit's“usually˜bMÞetter“to“putŽ¡‘Gextensions–¦fin“separate“les“so“that“the“denitions“will“bMÞe“preservš²!ed“if“y˜ou“upMÞdate“âunitsá.Ž©ìO‘!GY‘ÿeou–ˆ™can›ˆšinclude“additional˜data“les˜in“the˜units“database˜using“the˜`â!includeá'“commandŽ¡‘Gin–¦fthe“standard“units“data“le.‘ÝÝF‘ÿeor“exampleŽŸìP‘.ùœâ!include‘þ¨/usr/local/share/units/local.unitsަ‘Gámighš²!t–LbMÞe“appropriate“for‘La“site-wide“supplemen˜tal“data“le.‘¿ÅThe‘LloMÞcation“of“the“`â!includeá'Ž¡‘Gstatemenš²!t–aŠin“the‘a‰standard“units“data“le“is“impMÞortan˜t;‘x~later“denitions‘a‰replace“earlier“ones,Ž¡‘Gso–7ôan²!y›7ódenitions“in“an˜included“le“will“o•²!v“erride˜denitions–7ôbMÞefore“the˜`â!includeá'“state-Ž¡‘Gmen²!t–/ëin›/êthe“standard˜units“data˜le.‘zkWith“normal˜in•²!v“oMÞcation,‘RLno˜w“arning‘/ëis˜giv“en‘/ëabMÞoutŽ¡‘Gredenitions;‘£¯to–¢Sensure“that“yš²!ou“don't“ha˜v˜e“an“unin˜tended“redenition,‘£$run“âunits‘¦f-cŽ‘3(²áafterŽ¡‘Gmaking–¦fcš²!hanges“to“an˜y“units“data“le.ަ‘!GIf–l¨yš²!ou“w˜an˜t‘l§to“add“y˜our“o˜wn›l§units“in“addition“to˜or“in“place“of˜standard“or“site-wideŽ¡‘Gsupplemenš²!tal–‹Þunits“data–‹ßles,‘Ä_y˜ou“can–‹Þinclude“them“in›‹ßthe“â.units“ále“in˜y²!our“home“directory‘ÿe.Ž¡‘GIf–Ædthis›Æele“exists“it˜is“read˜after“the“standard˜units“data“le,‘Îdso˜that“an²!y“denitions˜in“thisŽ¡‘Gle–R/will›R0replace“denitions˜of“the“same˜units“in“the˜standard“data˜le“or“in˜les“includedŽ¡‘Gfrom–¶¿the“standard›¶¾data“le.‘èThis˜le“will“not“bMÞe“read˜if“an²!y“units“les“are˜spMÞecied“on“theŽ¡‘Gcommand–Ø3line.‘™!(Under“Windo²!ws›Ø2the“pMÞersonal˜units“le˜is“named“âunitdef.unitsá.)‘™!RunningŽ¡‘Gâunits‘¦f-VŽ‘A›¹áwill–¦fdisplaš²!y“the“loMÞcation“and“name“of“y˜our“pMÞersonal“units“le.ަ‘!GThe–§Fâunits›§Eáprogram“rst˜tries“to“determine˜y²!our“home“directory˜from“the˜âHOME“áen²!vi-Ž¡‘Gronmenš²!t–%¬v‘ÿdDariable.‘[°On“systems“running‘%­Microsoft“Windo˜ws,‘E}if‘%­âHOME“ádoMÞes“not“exist,‘E~âunitsŽ¡‘Gáattempts–Éto›Ênd“y²!our“home“directory˜from“âHOMEDRIVEá,‘7ââHOMEPATH“áand“âUSERPROFILEá.‘;Y‘ÿeouŽŽŒ‹).ÑŸò‘GáUnits‘¦fCon•²!v“ersion’Td41ŽŽŽ ƒ33 ý ÌÍ‘Gcan–_ÄspMÞecify›_Åan“arbitrary˜le“as˜y²!our“pMÞersonal˜units“data˜le“with˜the“âMYUNITSFILE˜áen²!viron-ޤ
33‘Gmen²!t–Î#v›ÿdDariable;‘9if“this“v˜ariable“exists,‘ùcits“v˜alue“is‘Î"used“without“searcš²!hing“y˜our‘Î"home“directory‘ÿe.Ž¡‘GThe––default“units“data“les“are‘—describMÞed“in“more“detail“in“Chapter“17“[Data“Files],‘-Àpage“53.ŽŸ’J‘Gëc13.2‘™Dening–f@New“Units“and“PrexesŽŽŸ33‘GáA›§°unit–§±is“spMÞecied“on“a˜single“line“b²!y“giving“its˜name“and“an“equiv‘ÿdDalence.‘á½Commen²!ts“startŽ¡‘Gwith–ÍSa›ÍR`â#á'“c•²!haracter,‘ø½whic“h˜can‘ÍSappMÞear˜an“ywhere–ÍSin“a˜line.‘•‚The˜bacš²!kslash“c˜haracter‘ÍR(`â\á')“actsŽ¡‘Gas›Ì?a‘Ì@con•²!tin“uation˜c“haracter–Ì@if˜it“appMÞears˜as˜the“last˜c²!haracter“on˜a˜line,‘Õ¶making“it˜pMÞossibleŽ¡‘Gto–ùuspread›ùtdenitions“out˜o•²!v“er‘ùusev“eral˜lines–ùuif“desired.‘×A‘ù`le˜can“bMÞe˜included“b²!y˜giving“theŽ¡‘Gcommand›2%`â!includeá'‘2&follo•²!w“ed˜b“y–2&the˜le's“name.‘·The˜`â!á'˜m²!ust“bMÞe˜the“rst˜c²!haracter“on˜theŽ¡‘Gline.‘[The–åle“will“bMÞe“sough²!t›æin“the“same“directory“as˜the“parenš²!t“le“unless“y˜ou‘ægiv˜e“a“fullŽ¡‘Gpath.‘ÚThe–šüname›šûof“the“le“to˜bMÞe“included“cannot˜con²!tain“spaces“or“the˜commenš²!t“c˜haracterŽ¡‘G`â#á'.Ž©”º‘!GUnit–3Ánames“cannot“bMÞegin›3Àor“end“with“an“underscore“(`â_á'),‘Wa“comma˜(`â,á')“or“a“decimalŽ¡‘GpMÞoinš²!t–§(`â.á').‘á‚Names“m˜ust“not“con˜tain“an˜y“of“the“opMÞerator“c˜haracters“`â+á',›§ê`â-á',–§ë`â*á',“`â/á',˜`â|á',“`â^á',Ž¡‘G`â;á',‘û­`â~á',‘û®the–êŸcommenš²!t“c˜haracter“`â#á',‘û®or“paren˜theses.‘ªˆT‘ÿeo“facilitate‘ê cop˜ying“and“pasting“fromŽ¡‘GdošMÞcumen•²!ts,‘ ysev“eral‘ÔÛt“yp˜ographical›ÔÜc“haracters˜are˜con“v“erted–ÔÛto˜opMÞerators:‘:Éthe“gure˜dashŽ¡‘G(Uâ+á2012),–}Þmin²!us›RÇ(`êá';‘¨öUâ+á2212),“and˜en–RÆdash˜(`{';‘¨öUâ+á2013)“are˜con•²!v“erted–RÆto˜the“opMÞeratorŽ¡‘G`â-á';‘Wthe–·Îm²!ultiplication“sign“(`êá';‘VUâ+á00D7),›ç†N-ary“times“opMÞerator“(Uâ+á2A09),˜dot“opMÞerator“(`êá';Ž¡‘GUâ+á22C5),‘°›and–®middle“dot“(`êá';›²¦Uâ+á00B7)“are“con•²!v“erted‘®‘to–®the“opMÞerator“`â*á';˜the“division“signŽ¡‘G(`êá';‘`µUâ+á00F7)›=Ûis‘=Ücon•²!v“erted˜to–=Üthe˜opMÞerator˜`â/á';‘`µand“the˜fraction“slash˜(Uâ+á2044)“is˜con•²!v“ertedŽ¡‘Gto–¦fthe“opšMÞerator“`â|á';“accordingly‘ÿe,“none“of“these“c²!haracters“can“app˜ear“in“unit“names.ަ‘!GNames–ÆÇcannot“bMÞegin“with“a“digit,›ó€and“if“a“name‘ÆÆends“in“a“digit“other“than“zero“or“one,˜theŽ¡‘Gdigit–=Âmš²!ust‘=ÁbMÞe“preceded“b˜y›=Áa“string˜bMÞeginning“with“an˜underscore,‘R°and˜afterw²!ards“consistingŽ¡‘Gonly›Õdof–Õcdigits,‘á$decimal“pMÞoin²!ts,–á#or˜commas.‘jÖF‘ÿeor˜example,“`âfoo_2á',“`âfoo_2,1á',“or˜`âfoo_3.14á'Ž¡‘Gare–‰Æv‘ÿdDalid“names›‰Çbut“`âfoo2á'“or“`âfoo_a2á'“are˜in²!v‘ÿdDalid.‘‡ýThe“underscore˜is“necessary“bMÞecauseŽ¡‘Gwithout–\it,‘‰fâunits“ácannot“determine“whether“`âfoo2á'“is‘[ÿa“unit“name“or“represen²!ts“`âfoo^2á'.Ž¡‘GZero–¦fand“one“are“exceptions“bMÞecause“âunits“ánevš²!er“in˜terprets“them“as“expMÞonen˜ts.ަ‘!GY‘ÿeou–¦fcould“dene“nitrous“o²!xide“asަ‘.ùœâN2O‘¾Rnitrogen–¿ª2‘T+“oxygenަ‘Gábut–¦fwš²!ould“need“to“dene“nitrogen“dio˜xide“asŽŸ”¹‘.ùœâNO_2‘þ¨nitrogen–¿ª+“oxygen“2ަ‘GáBe–þcareful›ýto“dene˜new“units“in˜terms“of˜old“ones“so˜that“a“reduction˜leads“to˜the“primitiv²!eŽ¡‘Gunits,‘P§whicš²!h–;8are“mark˜ed‘;7with“`â!á'“c˜haracters.‘º#Dimensionless“units‘;7are“indicated“b˜y‘;7using“theŽ¡‘Gstring–¦f`â!dimensionlessá'“for“the“unit“denition.ަ‘!GWhen–9gadding›9hnew“units,‘O4bMÞe˜sure“to˜use“the“â-c˜áoption“to˜c•²!hec“k–9gthat˜the“new˜units“reduceŽ¡‘GpropMÞerly–DÝand›DÜthat“there˜are“no˜circular“denitions˜that“lead˜to“endless“loMÞops.‘½YBecause“someŽ¡‘Gerrors–á¡maš²!y‘á hide“other“errors,‘ûy˜ou“should›á run“âunits“áwith“the˜â-c“áoption“again˜after“correctingŽ¡‘Ganš²!y–¦ferrors,“and“k˜eep“doing“so“un˜til“no“errors“are“displa˜y˜ed.ަ‘!GIf–Ùyš²!ou“dene‘Øan˜y“units“that“con˜tain“`â+á'“c˜haracters‘Øin“their“denitions,‘ǵcarefully“c˜hec˜kŽ¡‘Gthem–êbMÞecause›ëthe“â-c“áoption“will˜not“catc²!h“non-conformable“sums.‘íjBe“careful˜with“the“`â-á'Ž¡‘GopšMÞerator–øÐas“w²!ell.‘ÕWhen“used“as“a“binary“op˜erator,‘
jthe“`â-á'‘øÏc²!haracter“can“p˜erform“additionŽ¡‘Gor–ùm²!ultiplication“depMÞending›ùon“the“options“used˜to“in•²!v“ok“e–ùâunitsá.‘ÖT‘ÿeo“ensure“consisten²!tŽ¡‘GbšMÞeha²!vior–GÂuse“`â-á'“only“as“a“unary“negation‘GÁop˜erator“when“writing“units“denitions.‘	ÁñT‘ÿeoŽŽŒ‹*:êŸò‘GáUnits‘¦fCon•²!v“ersion’Td42ŽŽŽ ƒ33 ý ÌÍ‘Gm•²!ultiply›šXt“w“o˜units˜lea“v“e˜a˜space˜or˜use‘šWthe˜`â*á'˜opMÞerator˜with˜care,‘œÁrecalling˜that˜it˜has˜t“w“oޤ
33‘GpMÞossible–ðªprecedence“v‘ÿdDalues“and“maš²!y“require“paren˜theses‘ð«to“ensure“consisten˜t“bMÞeha˜vior.‘¼©T‘ÿeoŽ¡‘Gcompute–¦fthe“dierence“of“`âfooá'“and“`âbará'“write“`âfoo+(-bar)á'“or“ev²!en“`âfoo+-bará'.Ž©Iv‘!GY‘ÿeou–4maš²!y“wish“to‘4in˜ten˜tionally“redene“a“unit.‘·ÃWhen‘4y˜ou“do“this,‘Jôand‘4use“the“â-c“áoption,Ž¡‘Gâunits–n¿ádisplaš²!ys“a“w˜arning“message“abMÞout“the“redenition.‘ËPY‘ÿeou“can“suppress“these“w˜arningsŽ¡‘Gb²!y–¯redening›®a“unit˜using“a“`â+á'˜at“the˜bMÞeginning“of“the˜unit“name.‘¯KDo˜not“include˜an²!y“whiteŽ¡‘Gspace›¦fbMÞet•²!w“een˜the˜`â+á'˜and˜the˜redened˜unit˜name.ŽŸIw‘!GHere–¦fis“an“example“of“a“short“data“le“that“denes“some“basic“units:ަ‘.ùœâm‘(=¦!‘V:ö#–¿ªThe“meter“is“a“primitive“unitŽ¡‘.ùœsec‘¾R!‘V:ö#–¿ªThe“second“is“a“primitive“unitŽ¡‘.ùœrad‘¾R!dimensionless‘T#–¿ªA“dimensionless“primitive“unitŽ¡‘.ùœmicro-‘T1e-6‘Dûø#–¿ªDefine“a“prefixŽ¡‘.ùœminute‘T60–¿ªsec‘9|¤#“A“minute“is“60“secondsŽ¡‘.ùœhour‘þ¨60–¿ªmin‘9|¤#“An“hour“is“60“minutesŽ¡‘.ùœinch‘þ¨72–¿ªm‘Dûø#“Inch“defined“incorrectly“terms“of“metersŽ¡‘.ùœft‘"}ü12–¿ªinches‘(=¦#“The“foot“defined“in“terms“of“inchesŽ¡‘.ùœmile‘þ¨5280–¿ªft‘3¼ú#“And“the“mileŽ¡‘.ùœ+inch‘>þ0.0254–¿ªm‘-ýP#“Correct“redefinition,“warning“suppressedŽŽ ‡B‘GáA‘Ôunit›ÔÜthat–ÔÝends“with˜a“`â-á'˜c²!haracter“is˜a“prex.‘iAIf˜a“prex˜denition“con•²!tains˜an“y‘ÔÝ`â/á'Ž¡‘Gc²!haracters,‘«FbMÞe–Cçsure›Cæthey“are“protected˜bš²!y“paren˜theses.‘	¶_If“y˜ou‘Cædene“`âhalf-‘¦f1/2á',‘«FthenŽ¡‘G`âhalfmeterá'–¦fwš²!ould“bMÞe“equiv‘ÿdDalen˜t“to“`â1“/“(2‘¿ªmeter)á'.ŽŸ!e‘Gëc13.3‘™Dening–f@Nonlinear“UnitsŽŽŸ33‘GáSome›unit‘con•²!v“ersions˜of‘in“terest˜are˜nonlinear;‘Crfor˜example,‘)EtempMÞerature‘con“v“ersions˜bMÞe-Ž¡‘Gt•²!w“een–Òôthe“F‘ÿeahrenheit“and›ÒóCelsius“scales“cannot“bMÞe“done“b²!y˜simply“mš²!ultiplying“b˜y“con˜v˜ersionŽ¡‘Gfactors.ŽŸIw‘!GWhen–óòyš²!ou“giv˜e“a‘óñlinear“unit“denition“suc˜h“as“`âinch‘¦f2.54‘¿ªcmá'‘óñy˜ou“are“pro˜viding“in-Ž¡‘Gformation–<Çthat“âunits“áuses“to“con•²!v“ert–<Çv‘ÿdDalues“in‘<Èincš²!hes“in˜to“primitiv˜e“units“of“meters.‘¡F‘ÿeorŽ¡‘Gnonlinear–¦funits,“yš²!ou“giv˜e“a“functional“denition“that“pro˜vides“the“same“information.ަ‘!GNonlinear–±¨units“are›±§represen²!ted“using“a“functional“notation.‘ÿ¢It“is“bMÞest˜to“regard“thisŽ¡‘Gnotation–?not“as›@a“function“call“but“as˜a“w•²!a“y–?of“adding˜units“to“a“n•²!um“bMÞer,‘vm“uc“h–?the“sameŽ¡‘Gw•²!a“y–©$that“writing“a“linear“unit“name“after“a‘©%n•²!um“bšMÞer–©$adds“units“to“that“n•²!um“b˜er.‘æIn“ternally‘ÿe,Ž¡‘Gnonlinear–ÿðunits“are“dened‘ÿñbš²!y“a“pair“of“functions“that“con˜v˜ert“to‘ÿñand“from“linear“units“inŽ¡‘Gthe–¦fdatabase,“so“that“an“ev•²!en“tual›¦fcon“v“ersion˜to˜primitiv“e˜units˜is˜pMÞossible.ŽŸIw‘!GHere–¦fis“an“example“nonlinear“unit“denition:ަ‘.ùœâtempF(x)–¿ªunits=[1;K]“domain=[-459.67,)“range=[0,)“\Ž¡‘sõ”(x+(-32))–¿ªdegF“+“stdtemp“;“(tempF+(-stdtemp))/degF“+“32ŽŽŸ|ª‘GáA‘ynonlinear–¢unit›£denition“comprises˜a“unit˜name,‘#ca“formal˜parameter“name,‘#dt•²!w“o‘¢functions,Ž¡‘Gand–’Zoptional‘’YspMÞecications“for“units,›–\the“domain,˜and“the›’Yrange“(the“domain“of˜the“in•²!v“erseŽ¡‘Gfunction).‘SäThe–;functions›ͽtell“âunits“áho²!w˜to“con•²!v“ert–;to“and˜from“the“new˜unit.‘SäT‘ÿeo“proMÞduceŽ¡‘Gv‘ÿdDalid–»(results,‘ÀXthe“argumen²!ts›»'of“these“functions“need˜to“ha•²!v“e–»(the“correct˜dimensions“and“bMÞeŽ¡‘Gwithin–¦fthe“domains“for“whic²!h“the“functions“are“dened.ަ‘!GThe–=%denition“bMÞegins“with“the“unit‘=&name“follo•²!w“ed–=%immediately“(with“no“spaces)“b²!yŽ¡‘Ga–zÓ`â(á'“cš²!haracter.‘
[$In“the“paren˜theses“is“the“name“of“the“formal“parameter.‘
[$Next“is“anŽŽŒ‹+M[Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td43ŽŽŽ ƒ33 ý ÌÍ‘Goptional–ØÒspMÞecication“of›ØÓthe“units“required“b²!y“the“functions˜in“the“denition.‘™WIn“the“exampleޤ
33‘GabšMÞo•²!v“e,‘/—the–ä`âunits=[1;K]á'“sp˜ecication“indicates“that“the“`âtempFá'‘ãfunction“requires“an“inputŽ¡‘Gargumen²!t–+conformable›+with“`â1á'˜(i.e.,‘L>the˜argumen²!t“is“dimensionless),‘L?and“that˜the“in•²!v“erseŽ¡‘Gfunction–DHrequires›DIan“input“argumen²!t˜conformable“with“`âKá'.‘	·„F‘ÿeor“normal˜nonlinear“unitsŽ¡‘Gdenition,‘ÝËthe–Ò·forwš²!ard“function“will‘Ò¶alw˜a˜ys“tak˜e“a“dimensionless“argumen˜t;‘èßin“general,‘ÝËtheŽ¡‘Gin•²!v“erse–Çïfunction›Çîwill“need“units˜that“matcš²!h“the“quan˜tit˜y‘Çîmeasured“b˜y“y˜our‘Çînonlinear“unit.Ž¡‘GSpšMÞecifying–$äthe“units‘$ãenables“âunits“áto“p˜erform“error‘$ãc•²!hec“king–$äon“function“argumen²!ts,‘DƒandŽ¡‘Galso–¦fto“assign“units“to“domain“and“range“spšMÞecications,“whic²!h“are“describ˜ed“later.ީב!GNext–¬the›«function“denitions“appMÞear.‘û®In“the“example˜abMÞo•²!v“e,‘]}the–¬`âtempFá'˜function“isŽ¡‘Gdened‘¦fb²!yŽŸ×
‘.ùœâtempF(x)–¿ª=“(x+(-32))“degF“+“stdtempŽŽ¦‘GáThis–‚ßgivš²!es“a‘‚àrule“for“con˜v˜erting“`âxá'“in“the›‚àunits“`âtempFá'“to“linear“units˜of“absolute“tempMÞera-Ž¡‘Gture,–¦fwhicš²!h“mak˜es“it“pMÞossible“to“con˜v˜ert“from“tempF“to“other“units.ŽŸ×
‘!GT›ÿeo–V›enable“con•²!v“ersions‘Vœto‘V›F˜ahrenheit,‘‚¨y“ou›V›m“ust‘Vœgiv“e˜a˜rule˜for‘Vœthe˜in“v“erse˜con“v“ersions.Ž¡‘GThe›@ªin•²!v“erse–@©will˜bMÞe˜`âx(tempF)á'“and˜its˜denition˜appMÞears“after˜a˜`â;á'“c²!haracter.‘	¬¨In˜ourŽ¡‘Gexample,–¦fthe“in•²!v“erse‘¦fisަ‘.ùœâx(tempF)–¿ª=“(tempF+(-stdtemp))/degF“+“32ŽŽ¦‘GáThis›*\in•²!v“erse˜denition‘*]tak“es˜an˜absolute˜tempMÞerature˜as‘*]its˜argumen“t˜and˜con“v“erts‘*]it˜to˜theŽ¡‘GF‘ÿeahrenheit›tempMÞerature.‘øThe‘in•²!v“erse˜can˜bMÞe‘omitted˜b“y˜lea“ving–out˜the˜`â;á'“c²!haracter˜andŽ¡‘Gthe›ùÂin•²!v“erse˜denition,‘˜but˜then˜con“v“ersions–ùÁäto‘ª´áthe˜unit˜will˜not“b•MÞe˜p“ossible.‘×ðIf˜the˜in•²!v“erseŽ¡‘Gdenition–#µis“omitted,‘=Øthe“â--check“áoption“will“displaš²!y“a“w˜arning.‘²LIt“is“up“to“y˜ou“to“calculateŽ¡‘Gand–¾¸enš²!ter‘¾¹the“correct“in˜v˜erse›¾¹function“to“obtain˜propMÞer“con•²!v“ersions;‘Játhe˜â--check‘¾¸áoptionŽ¡‘Gtests›çthe‘èin•²!v“erse˜at‘èone˜pMÞoin“t‘èand˜prin“ts–èan˜error˜if“it˜is“not˜v‘ÿdDalid“there,‘>Gbut“this˜is“not˜aŽ¡‘Gguaranš²!tee–¦fthat“y˜our“in˜v˜erse“is“correct.ޤ×
‘!GWith–¦fsome“denitions,“the“units“ma²!y“v‘ÿdDary–ÿe.‘ÝÝF“or–¦fexample,“the“denitionަ‘.ùœâsquare(x)‘(=¦x^2ŽŽ¡‘Gácan›Eha•²!v“e‘Fan“y˜arbitrary–Funits,‘9½and˜can˜also“tak²!e˜dimensionless“argumen•²!ts.‘?{In˜suc“h‘Fa˜case,ޤ
33‘Gyš²!ou–¿îshould“änot‘ÉØáspMÞecify“units.‘*vIf“a“denition“tak˜es“a“roMÞot“of‘¿ïits“argumen˜ts,‘ÆPthe“denition“isŽ¡‘Gv‘ÿdDalid–¦fonly“for“units“that“yield“suc²!h“a“roMÞot.‘ÝÝF‘ÿeor“example,ަ‘.ùœâsquirt(x)‘(=¦sqrt(x)ŽŽ¦‘Gáis–¦fv‘ÿdDalid“for“a“dimensionless“argumenš²!t,“and“for“argumen˜ts“with“ev˜en“pMÞo˜w˜ers“of“units.ŽŸ×
‘!GSome–qúdenitions“ma²!y›qùnot“bMÞe“v‘ÿdDalid“for“all˜real“n•²!um“bMÞers.‘ÌdIn›qúsuc“h˜cases,‘|uâunits˜ácan˜handleŽ¡‘Gerrors–§ÚbšMÞetter“if“y²!ou“sp˜ecify›§Ùan“appropriate“domain“and“range.‘â9Y‘ÿeou˜spMÞecify“the“domain“andŽ¡‘Grange–¦fas“shoš²!wn“bMÞelo˜w:ަ‘.ùœâbaume(d)–¿ªunits=[1;g/cm^3]“domain=[0,130.5]“range=[1,10]“\Ž¡‘b¶–(145/(145-d))–¿ªg/cm^3“;“(baume+-g/cm^3)“145“/“baumeŽŽŸ
=‘GáIn–äJthis“example“the“domain“is“spšMÞecied‘äIafter“`âdomain=á'“with“the“endp˜oinš²!ts“giv˜en“in“brac˜k˜ets.Ž¡‘GIn–Ãcaccord›Ãdwith“mathematical˜con•²!v“en“tion,‘ðÊsquare‘Ãcbrac“k“ets˜indicate–Ãca˜closed“in²!terv‘ÿdDal˜(one“thatŽ¡‘Gincludes–ÞÛits“endpMÞoinš²!ts),‘Äand“paren˜theses“indicate“an“opMÞen“in˜terv‘ÿdDal‘ÞÜ(one“that“doMÞes“not“includeŽ¡‘Gits–ÿendpMÞoinš²!ts).‘çÊAn“in˜terv‘ÿdDal“can‘ÿ
bšMÞe“op˜en“or›ÿ
closed“on˜one“or“bMÞoth˜ends;‘+]an“in²!terv‘ÿdDal˜that“isŽ¡‘Gunš²!bMÞounded–Y™on“either“end“is“indicated‘Yšb˜y“omitting“the“limit“on“that“end.‘÷vF‘ÿeor“example,‘†faŽ¡‘Gquan•²!tit“y–Ëto“whicš²!h“decibMÞel“(dB)‘Ë4is“applied“ma˜y‘Ë€ha˜v˜e“an˜y“v‘ÿdDalue“greater“than“zero,‘Åso“theŽ¡‘Grange–¦fis“indicated“b²!y“`â(0,)á':ަ‘.ùœâdecibel(x)–¿ªunits=[1;1]“range=(0,)“10^(x/10);“10“log(decibel)ŽŽŽŒ‹,]%Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td44ŽŽŽ ƒ33 ý ÌÍ‘GIf–¦fthe“domain“or“range“is“givš²!en,“the“second“endpMÞoin˜t“m˜ust“bMÞe“greater“than“the“rst.Ž©x‘!GThe–êmdomain“and›êlrange“spMÞecications“can˜appšMÞear“indep˜endenš²!tly“and“in“an˜y‘êlorder“alongޤ
33‘Gwith–xthe›yunits“spMÞecication.‘¬8The˜v‘ÿdDalues“for“the“domain˜and“range“endpMÞoin²!ts“are˜attac²!hed“toŽ¡‘Gthe–»Uunits›»Vgiv²!en“in˜the“units˜spMÞecication,‘À‘and“if˜necessary‘ÿe,‘À‘the˜parameter“v‘ÿdDalue˜is“adjustedŽ¡‘Gfor–p‘comparison›pwith“the“endpMÞoin²!ts.‘<]F‘ÿeor“example,‘£if“a“denition˜includes“`âunits=[1;ft]á'Ž¡‘Gand–‚ý`ârange=[3,)á',‘º#the›‚þrange“will“bMÞe˜takš²!en“as“3‘¦fftŽ‘À§to“innit˜y‘ÿe.‘s£If›‚þthe“function“is˜passed“aŽ¡‘Gparameter–4of‘3`â900‘¦fmmá'Ž‘+|A,‘Y'that›3v‘ÿdDalue“will“bMÞe˜adjusted“to“2.9527559‘¦fftŽ‘?Á,‘Y&whic²!h“is˜outside“theŽ¡‘GspMÞecied–Ÿrange.‘ŠIf“y²!ou› omit“the˜units“spMÞecication˜from“the“previous˜example,‘,nâunits“ácanŽ¡‘Gnot–åtell‘æwhether“yš²!ou“in˜tend“the‘ælo˜w˜er“endpMÞoin˜t“to›æbMÞe“3‘¦fftŽ‘Èvor“3‘¦fmicrofurlongsŽ‘Nª,‘and˜can“notŽ¡‘Gadjust–°›the“parameter“v›ÿdDalue“of“900‘¦fmmŽ‘/´lfor“comparison.‘ü{Without“units,‘ó(n²!umerical“v˜aluesŽ¡‘Gother–WBthan›WCzero“or˜plus“or˜minš²!us“innit˜y“for›WCdomain“or˜range“endpMÞoin²!ts˜are“meaningless,Ž¡‘Gand–þìaccordingly“they“are“not“allo•²!w“ed.‘çoIf›þìy“ou˜giv“e˜other˜v‘ÿdDalues˜without˜units,‘U
then˜theŽ¡‘Gdenition–¦fwill“bMÞe“ignored“and“y²!ou“will“get“an“error“message.ŽŸx‘!GAlthough–Bsthe“units,–Vpdomain,“and–Bsrange“spšMÞecications“are“optional,‘Vpit's“b˜est“to“giv²!e“themŽ¡‘Gwhen–±#they“are›±$applicable;‘¶‚doing“so“allo²!ws“âunits˜áto“pšMÞerform“b˜etter“error‘±$c•²!hec“king–±#and“giv²!eŽ¡‘Gmore–1êhelpful“error“messages.‘·
Giving“the“domain“and“range“also‘1ëenables“the“â--check“áoptionŽ¡‘Gto–¦fnd“a“pšMÞoin²!t“in“the“domain“to“use“for“its“p˜oinš²!t“c˜hec˜k“of“y˜our“in˜v˜erse“denition.ަ‘!GY‘ÿeou–Ï¡can“makš²!e“synon˜yms‘Ï¢for“nonlinear“units“b˜y“pro˜viding“bMÞoth‘Ï¢the“forw˜ard“and“in˜v˜erseŽ¡‘Gfunctions;‘s®in•²!v“erse›ZSfunctions–ZRcan“bMÞe“obtained“using˜the“`â~á'“opMÞerator.‘ÄSo“to˜create“a“synon²!ymŽ¡‘Gfor–¦f`âtempFá'“y²!ou“could“writeŽŸx‘.ùœâfahrenheit(x)–¿ªunits=[1;K]“tempF(x);“~tempF(fahrenheit)ŽŽ¦‘GáThis–‚is›ƒuseful“for˜creating“a˜nonlinear“unit“denition˜that“diers˜sligh²!tly“from˜an“existingŽ¡‘Gdenition–¦fwithout“ha²!ving“to“repMÞeat“the“original“functions.‘ÝÝF‘ÿeor“example,ŽŸx‘.ùœâdBW(x)‘¾Runits=[1;W]–¿ªrange=[0,)“dB(x)“W“;‘T~dB(dBW/W)ަ‘GáIf–•yš²!ou“wish“a“synon˜ym‘•to“refer“to“an“existing“nonlinear“unit“without“moMÞdication,‘˜y˜ou“canŽ¡‘Gdo–± so“more›±Ÿsimply“b²!y“adding“the˜synonš²!ym“with“appMÞended“paren˜theses‘±Ÿas“a“new“unit,‘´nwithŽ¡‘Gthe–Îexisting“nonlinear›Îunit|without“paren²!theses|as“the“denition.‘•ÅSo“to˜create“a“synon²!ymŽ¡‘Gfor–¦f`âtempFá'“y²!ou“could“writeޤx‘.ùœâfahrenheit()‘TtempFަ‘GáThe–¦fdenition“mš²!ust“bMÞe“a“nonlinear“unit;“for“example,“the“synon˜ymަ‘.ùœâfahrenheit()‘TmeterŽ¡‘Gáwill–¦fresult“in“an“error“message“when“âunits“ástarts.ަ‘!GY‘ÿeou–%ma²!y›%oMÞccasionally“wish“to˜dene“a“function“that˜opMÞerates“on“units.‘²¼This“can˜bMÞe“doneޤ
33‘Gusing–Áa›Ánonlinear“unit˜denition.‘-ÚF‘ÿeor“example,‘ºthe˜denition“bMÞelo•²!w˜pro“vides‘Ácon“v“ersionŽ¡‘GbMÞet•²!w“een–ö#radius“and›ö"the“area“of“a“circle.‘ÍThis“denition“requires“a“length˜as“input“andŽ¡‘GproMÞduces–
an›
area“as“output,‘+²as“indicated˜b²!y“the“`âunits=á'˜sp•MÞecication.‘ª¼Sp“ecifying˜the‘
rangeŽ¡‘Gas–¦fthe“nonnegativš²!e“n˜um˜bMÞers“can“prev˜en˜t“cryptic“error“messages.ŽŸx‘.ùœâcirclearea(r)–¿ªunits=[m;m^2]“range=[0,)‘>þpi“r^2“;“sqrt(circlearea/pi)ŽŽŸçI‘Gëc13.4‘™Dening–f@Piecewise“Linear“UnitsŽŽŸ33‘GáSometimes–yyš²!ou“ma˜y“bMÞe‘xin˜terested“in“a“piecewise“linear“unit“suc˜h‘xas“man˜y“wire“gauges.Ž¡‘GPiecewise–*?linear“units“can“bšMÞe“dened“b²!y“sp˜ecifying“con•²!v“ersions–*?to“linear“units“on“a“list“ofŽŽŒ‹-nšŸò‘GáUnits‘¦fCon•²!v“ersion’Td45ŽŽŽ ƒ33 ý ÌÍ‘GpšMÞoin•²!ts.‘ÂCon“v“ersion‘R÷at–Røother“p˜oin²!ts“will‘R÷b˜e“done“bš²!y‘R÷linear“in˜terpMÞolation.‘ÂA‘Râpartial“denitionŽ©
33‘Gof–¦fzinc“gauge“isޤˆ‰‘.ùœâzincgauge[in]–¿ª1“0.002,“10“0.02,“15“0.04,“19“0.06,“23“0.1ŽŽ¡‘GáIn–þêthis›þëexample,‘ i`âzincgaugeá'“is˜the“name“of˜the“piecewise“linear˜unit.‘¦	The“denition˜of“suc²!hަ‘Ga–ëunit“is‘êindicated“bš²!y“the“em˜bMÞedded“`â[á'‘êc˜haracter.‘5lAfter“the“brac˜k˜et,‘5‹y˜ou“should“indicateަ‘Gthe–Úunits›Ú	to“bMÞe“attac²!hed“to˜the“n•²!um“bMÞers–Úin“the˜table.‘xÃNo˜spaces“can“appšMÞear“b˜efore‘Ú	the“`â]á'ަ‘Gcš²!haracter,‘ˆ)so–€ša‘€™denition“lik˜e“`âfoo[kg‘¦fmeters]á'“is–€™in˜v‘ÿdDalid;‘4instead“write‘€š`âfoo[kg*meters]á'.ަ‘GThe–îÃdenition“of“the“unit“consists“of“a“list‘îÄof“pairs“optionally“separated“b²!y“commas.‘¶ôThisަ‘Glist–D›denes“a›Dšfunction“for“con•²!v“erting–D›from˜the“piecewise“linear“unit“to˜linear“units.‘½DThe“rstަ‘Gitem–ÍŒin›Íeac²!h“pair“is“the˜function“argumen²!t;‘áthe˜second“item“is˜the“v‘ÿdDalue“of“the˜function“atަ‘Gthat–ÑÎargumen²!t›ÑÍ(in“the˜units“spMÞecied˜in“brac•²!k“ets).‘`In–ÑÎthis“example,‘ܧw²!e˜dene“`âzincgaugeá'ަ‘Gat–}vš²!e“pMÞoin˜ts.‘aíF‘ÿeor“example,‘²Âw˜e“set“`âzincgauge(1)á'“equal“to“`â0.002‘¦finá'Ž‘6vx.‘aíDenitions“lik˜eަ‘Gthis–¦fmaš²!y“bMÞe“more“readable“if“written“using“con˜tin˜uation“c˜haracters“asŽŸˆŠ‘.ùœâzincgauge[in]‘¿ª\ަ‘K·î1‘¿ª0.002‘T\ަ‘EøD10‘¿ª0.02‘>þ\ަ‘EøD15‘¿ª0.04‘>þ\ަ‘EøD19‘¿ª0.06‘>þ\ަ‘EøD23‘¿ª0.1ŽŽŸVˆˆ‘GáWith–¦fthe“preceding“denition,“the“folloš²!wing“con˜v˜ersion“can“bšMÞe“p˜erformed:Ž¡‘.ùœâYou–¿ªhave:“zincgauge(10)ަ‘.ùœYou–¿ªwant:“inަ‘EøD*‘¿ª0.02ަ‘EøD/‘¿ª50ަ‘.ùœYou–¿ªhave:“.01“inchަ‘.ùœYou–¿ªwant:“zincgaugeަ‘EøD5ŽŽŸc»»‘GáIf–Zy²!ou“dene›Za“piecewise“linear“unit˜that“is“not“strictly“monotonic,‘iHthen“the˜in•²!v“erse–Zwill“notަ‘GbMÞe–Æwš²!ell‘Ådened.‘"üIf“the“in˜v˜erse›Åis“requested“for˜suc²!h“a“unit,‘-Ýâunits“áwill“return˜the“smallestަ‘Gin•²!v“erse.ŽŸˆŠ‘!GAfter–†fadding›†enonlinear“units˜denitions,‘¾ey²!ou“should˜normally“run˜`âunits‘¦f--checká'Ž‘WÄtoަ‘Gc•²!hec“k–;†for“errors.‘º=If›;‡the“`âunitsá'“k•²!eyw“ord–;†is“not“giv²!en,‘Pæthe“â--check˜áoption“c•²!hec“ks–;†a“nonlinearަ‘Gunit–¿Ñdenition›¿Ðusing“a“dimensionless˜argumen²!t,‘Æ,and“then˜c•²!hec“ks–¿Ñusing“an˜arbitrary“com²!bi-ަ‘Gnation–"ûof“units,‘B as“wš²!ell“as“the‘"úsquare“and“cubMÞe“of“that“com˜bination;‘aEa“w˜arning“is“giv˜en“ifަ‘Gan²!y–¦fof“these“tests“fail.‘ÝÝF‘ÿeor“example,Ž¡‘.ùœâWarning:–¿ªfunction“
squirt(x)
“defined“as“
sqrt(x)
ަ‘b¶–failed–¿ªfor“some“test“inputs:ަ‘b¶–squirt(7(kg–¿ªK)^1):“Unit“not“a“rootަ‘b¶–squirt(7(kg–¿ªK)^3):“Unit“not“a“rootŽŽŸ<""‘GáRunning‘`âunits‘¦f--checká'Ž‘Võèwill–prinš²!t‘a“w˜arning“if“a“non-monotonic“piecewise‘linear“unit“isަ‘Gencounš²!tered.‘ÒÇF‘ÿeor–…$example,‘‹Ëthe“relationship“bMÞet˜w˜een“ANSI‘…coated“abrasiv˜e“designation“andަ‘Gmean–¦fparticle“size“is“non-monotonic“in“the“vicinit²!y“of“800“grit:ŽŽŒ‹.!Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td46ŽŽŽ ƒ33 ý ÌÍ‘.ùœâansicoated[micron]‘¿ª\ޤ
33‘K·î.–¿ª.“.Ž¡‘EøD600–¿ª10.55“\Ž¡‘EøD800–¿ª11.5“\Ž¡‘EøD1000–¿ª9.5“\ŽŽŸE¾­‘GáRunning–¦f`âunits“--checká'Ž‘V€w•²!ould›¦fgiv“e˜the˜error˜messageŽ©ñà‘.ùœâTable–¿ª
ansicoated
“lacks“unique“inverse“around“entry“800ŽŽŸñá‘GáAlthough–Ÿ‘the“in•²!v“erse–Ÿ‘is“not“w²!ell“dened›Ÿin“this“region,‘ÝÜit's˜not“really“an“error.‘É^Viewingޤ
33‘Gsuc²!h–Aerror›Amessages“can“bMÞe˜tedious,‘UUand“if˜there“are“enough˜of“them,‘UUthey“can˜distract“fromŽ¡‘Gtrue–(°errors.‘d¼Error“c•²!hec“king–(°for“nonlinear“unit“denitions“can“bMÞe‘(±suppressed“b²!y“giving“theŽ¡‘G`ânoerrorá'›¦fk•²!eyw“ord;˜for˜the˜examples˜abMÞo“v“e,˜this˜could˜bMÞe˜done˜asަ‘.ùœâsquirt(x)–¿ªnoerror“domain=[0,)“range=[0,)“sqrt(x);“squirt^2Ž¡‘.ùœansicoated[micron]–¿ªnoerror“\Ž¡‘K·î.–¿ª.“.ŽŽŸ+XG‘GáUse–߉the“`ânoerrorá'“k•²!eyw“ord–߉with“caution.‘‰FThe“safest“approac²!h“after“adding“a“nonlinearŽ¡‘Gunit–VPdenition›VQis“to“run“`âunits‘¦f--checká'Ž‘UdUand“conrm“that˜there“are“no“actual˜errors“bMÞeforeŽ¡‘Gadding–¦fthe“`ânoerrorá'“k•²!eyw“ord.ŽŸ‘Gëc13.5‘™Dening–f@Unit“List“AliasesŽŽŸ33‘GáUnit–«Ûlist›«Úaliases“are“treated˜dieren²!tly“from˜unit“denitions,‘­8bMÞecause˜they“are“a˜data“en²!tryŽ¡‘Gshorthand–5Ärather“than“a“true‘5Ådenition“for“a“new“unit.‘‹÷A‘5 unit“list“alias“denition“bMÞeginsŽ¡‘Gwith–Á`â!unitlistá'“and›Àincludes“the“alias“and“the˜denition;‘<£for“example,‘'{the“aliases“includedŽ¡‘Gin–¦fthe“standard“units“data“le“areަ‘.ùœâ!unitlist‘>þhms‘¾Rhr;min;secŽ¡‘.ùœ!unitlist‘>þtime‘þ¨year;day;hr;min;secŽ¡‘.ùœ!unitlist‘>þdms‘¾Rdeg;arcmin;arcsecŽ¡‘.ùœ!unitlist‘>þftin‘þ¨ft;in;1|8‘¿ªinŽ¡‘.ùœ!unitlist–>þusvol“cup;3|4–¿ªcup;2|3“cup;1|2“cup;1|3“cup;1|4“cup;\Ž¡’¡òätbsp;tsp;1|2–¿ªtsp;1|4“tsp;1|8“tspŽŽŸRñà‘GáUnit–šTlist›šSaliases“are“only˜for“unit˜lists,‘œ¾so“the˜denition“m²!ust“include˜a“`â;á'.‘Ù×Unit˜list“aliasesŽ¡‘Gcan–Þnevš²!er‘ßbMÞe“com˜bined›ßwith“units˜or“other“unit˜list“aliases,‘9úso“the˜denition“of˜`âtimeá'“sho²!wnŽ¡‘GabšMÞo•²!v“e–¦fcould“änot‘°Páha•²!v“e–¦fb˜een“shortened“to“`âyear;day;hmsá'.ަ‘!GAs–ìusual,‘=ƒbMÞe“sure›ìto“run“`âunits‘¦f--checká'Ž‘Xãto“ensure˜that“the“units˜listed“in˜unit“listŽ¡‘Galiases–¦fare“conformable.ŽŸ#}[‘GëZ14‘	¸QNumeric–z³Output“F‘þaGormatŽŽŸo<‘GáBy–Sbdefault,‘~ âunits“áshoš²!ws“results“to‘Saeigh˜t“signican˜t“digits.‘äÐY‘ÿeou“can“c˜hange‘Sathis“with“theŽ¡‘Gâ--exponentialá,‘žqâ--digitsá,‘žrand›lÕâ--output-format–lÖáoptions.‘1,The“rst“sets˜an“expMÞonen²!tialŽ¡‘Gformat–
½(i.e.,‘g‘scienš²!tic“notation)‘
¼lik˜e“that›
¼used“in˜the“original˜Unix“âunits˜áprogram,‘g’theŽ¡‘Gsecond›Šallo•²!ws‘‰y“ou˜to‘‰spMÞecify˜a˜dieren“t‘‰n“um“bMÞer˜of‘‰signican“t˜digits,‘	’and˜the‘‰last˜allo“wsŽ¡‘Gy•²!ou›ddto‘decon“trol˜the–deoutput˜appMÞearance“using˜the“format˜for“the˜âprintf“áfunction˜in“the˜CŽ¡‘Gprogramming–…ålanguage.‘}²If“yš²!ou“only‘…æw˜an˜t“to“c˜hange“the“n˜um˜bMÞer“of“signican˜t“digits“or“spMÞecifyŽŽŒ‹/‹ÇŸò‘GáUnits‘¦fCon•²!v“ersion’Td47ŽŽŽ ƒ33 ý ÌÍ‘GexpMÞonenš²!tial–Eûformat“t˜ypMÞe,‘mßuse“the“â--digits‘Eúáand“â--exponential“áoptions.‘¼›The“â--output-ޤ
33‘Gformat–÷áoption“aords“the‘÷€greatest“con²!trol“of“the“output“appMÞearance,‘Æbut“requires“at“leastŽ¡‘Grudimen•²!tary›ø8kno“wledge˜of˜the˜âprintf˜áformat˜syn“tax.‘ÓTSee˜Chapter˜10˜[In“v“oking˜Units],Ž¡‘Gpage–¦f31,“for“descriptions“of“these“options.Ž©#¦h‘Gëc14.1‘™F‘þ¦format‘f@Sps3ecicationŽŽŸ33‘GáThe–Üformat“spMÞecication“recognized“with“the‘Ýâ--output-format“áoption“is“a“subset“of“thatŽ¡‘Gfor–:Iâprintfá.‘™„The“format›:HspMÞecication“has“the˜form“â%á[ä
ags‘æá][äwidth›×á][â.äpr–ÿp¹e“cision˜á]ätyp“e‘Ò¡á;‘„9it‘:Im²!ustŽ¡‘GbšMÞegin–)Áwith“`â%á',‘J—and“m²!ust‘)Àend“with“a“
oating-p˜oinš²!t“t˜yp•MÞe›)Àsp“ecier:‘ä“`âgá'–)Áor“`âGá'˜to“spMÞecify“theŽ¡‘Gn•²!um“bMÞer›Oñof‘Oðsignican“t˜digits,‘a;`âeá'–Oðor˜`âEá'“for˜scien²!tic˜notation,‘a;and“`âfá'˜for“xed-pMÞoin²!t˜decimal.Ž¡‘GThe–¢ýISO‘¢üC99“standard“added“the“`âFá'“t²!ypšMÞe“for“xed-p˜oinš²!t“decimal“and“the“`âaá'“and“`âAá'“t˜ypMÞesŽ¡‘Gfor–ó¢hexadecimal“
oating“pMÞoinš²!t;‘@these“t˜ypMÞes“are“allo˜w˜ed“with“compilers“that“suppMÞort“them.Ž¡‘GT²!yp•MÞe›!length‘"mo“diers˜(e.g.,‘j`âLá'˜to–"indicate˜a“long˜double)˜are“inapplicable˜and“are˜notŽ¡‘Gallo•²!w“ed.ŽŸ¢#‘!GThe–Öôdefault“format›Öófor“âunits“áis“`â%.8gá';‘for“greater“precision,‘qy²!ou˜could“spMÞecify“â-o‘¿ª%.15gá.Ž¡‘GThe–çx`âgá'›çwand“`âGá'“format“t²!ypMÞes˜use“expMÞonen²!tial“format˜whenevš²!er“the“expMÞonen˜t“w˜ould‘çwbMÞe“lessŽ¡‘Gthan–Rüêá4,‘~!so“the“v‘ÿdDalue“0.000013“displaš²!ys“as“`â1.3e-005á'.‘ãžThese“t˜ypšMÞes“also“use“exp˜onen²!tialŽ¡‘Gnotation–)when“the“expMÞonen²!t‘)is“greater“than“or“equal“to“the“precision,‘IÇso“with“the“defaultŽ¡‘Gformat,‘nthe–`	v›ÿdDalue“5–â2ê“á10Ÿü¾®7Ž‘Ü|ádispla²!ys–`	as“`â50000000á'“and“the“v˜alue“5‘â3ê‘â2á10Ÿü¾®8Ž‘Ü|ádispla²!ys“as“`â5e+008á'.Ž¡‘GIf–Ìyš²!ou‘Ëprefer“xed-pMÞoin˜t‘Ëdispla˜y‘ÿe,‘<åy˜ou“migh˜t‘ËspMÞecify“â-o‘¿ª%.8fá;‘Zþho˜w˜ev˜er,‘<åsmall‘Ën˜um˜bMÞers“willŽ¡‘Gdispla•²!y›¼v“ery‘½few˜signican“t–½digits,‘&«and˜v‘ÿdDalues“less˜than“5–/šê“á10Ÿü¾º®8Ž‘
Ã0áwill–½sho²!w˜nothing“but˜zeros.ŽŸ¢$‘!GThe–P—format“spMÞecication›P˜ma²!y“include“one“or˜more“optional“
ags:‘²ö`â+á',›aÁ`‘¿ª'“(space),‘aÀ`â#á',˜`â-á',Ž¡‘Gor–Jô`â0á'›Jó(the“digit“zero).‘ˆThe˜digit-grouping“
ag“`â
á'˜(apMÞostrophe)“is“allo•²!w“ed˜with‘JôcompilersŽ¡‘Gthat–-¬suppMÞort“it.‘	s¯Flags“are“follo•²!w“ed›-¬b“y‘-«an˜optional˜v‘ÿdDalue˜for˜the˜minim“um˜eld˜width,Ž¡‘Gand–µan›¶optional“precision“spMÞecication˜that“bMÞegins“with˜a“p•MÞerio“d–µ(e.g.,‘^É`â.6á').‘þËThe“eldŽ¡‘Gwidth–I6includes›I7the“digits,–±édecimal˜pMÞoin²!t,“the˜expMÞonen²!t,“thousands–I6separators˜(with“theŽ¡‘Gdigit-grouping–¦f
ag),“and“the“sign“if“anš²!y“of“these“are“sho˜wn.ަ‘Gëc14.2‘™FlagsŽŽŸ33‘GáThe–Vå`â+á'“
ag›Væcauses“the“output“to˜ha•²!v“e–Våa“sign“(`â+á'˜or“`â-á').‘ï[The“space“
ag“`‘¿ª'˜is“similar“toŽ¡‘Gthe›ô´`â+á'–ôµ
ag,‘Gexcept“that˜when˜the“v‘ÿdDalue˜is˜pMÞositiv²!e,‘Hit˜is˜prexed“with˜a˜space“rather˜thanŽ¡‘Ga›Àsplus–Àrsign;‘Mythis“
ag˜is˜ignored“if˜the“`â+á'˜
ag“is˜also˜giv²!en.‘,The˜`â+á'˜or“`‘¿ª'˜
ag“could˜bMÞeŽ¡‘Guseful›"úif‘"ûcon•²!v“ersions˜migh“t˜include‘"ûpMÞositiv“e˜and˜negativ“e‘"ûresults,‘Band˜y“ou˜w“an“ted‘"ûto˜alignŽ¡‘Gthe–‰Ædecimal›‰ÇpMÞoin²!ts“in˜expMÞonen²!tial“notation.‘ÔSThe“`â#á'“
ag˜causes“the˜output“v‘ÿdDalue˜to“con²!tainŽ¡‘Ga–#rdecimal›#qpMÞoin²!t“in˜all“cases;‘a÷b²!y“default,‘B´the“output˜con²!tains“a“decimal˜pMÞoin²!t“only˜if“thereŽ¡‘Gare–À{digits“(whicš²!h“can“bMÞe“trailing“zeros)“to“the“righ˜t“of“the“pMÞoin˜t.‘,With“the“`âgá'“or“`âGá'“t˜ypMÞes,Ž¡‘Gthe–M`â#á'›M

ag“also“prev•²!en“ts˜the–Msuppression“of“trailing˜zeros.‘ÀThe“digit-grouping“
ag˜`â
á'“sho²!wsŽ¡‘Ga–1°thousands“separator“in“digits“to“the“left“of“the“decimal“pšMÞoin²!t.‘»This“can“b˜e“useful“whenŽ¡‘Gdisplaš²!ying–¦flarge“n˜um˜bšMÞers“in“xed-p˜oin²!t“decimal;“for“example,“with“the“format“`â%fá',ŽŸ¢#‘.ùœâYou–¿ªhave:“mileŽ¡‘.ùœYou–¿ªwant:“microfurlongŽ¡‘\öì*‘¿ª8000000.000000Ž¡‘\öì/‘¿ª0.000000ŽŽŒ‹0˜AŸò‘GáUnits‘¦fCon•²!v“ersion’Td48ŽŽŽ ƒ33 ý ÌÍ‘Gthe–Ö«magnitude“of“the“rst“result“maš²!y‘Öªnot“bMÞe“immediately“ob˜vious“without“coun˜ting“theޤ
33‘Gdigits–ºto“the“left“of“the“decimal“pMÞoin²!t.‘=ÙIf“the“thousands“separator“is“the“comma“(`â,á'),‘9theŽ¡‘Goutput–¦fwith“the“format“`â%
fá'“migh²!t“bMÞeŽ©°\‘.ùœâYou–¿ªhave:“mileŽ¡‘.ùœYou–¿ªwant:“microfurlongŽ¡‘\öì*‘¿ª8,000,000.000000Ž¡‘\öì/‘¿ª0.000000ŽŸ°[‘Gámaking–c-the›c,magnitude“readily“apparen²!t.‘1Unfortunately‘ÿe,‘’^few“compilers“suppMÞort˜the“digit-Ž¡‘Ggrouping‘¦f
ag.ަ‘!GWith–¹Óthe“`â-á'“
ag,‘é#the“output“v‘ÿdDalue“is“left‘¹Òaligned“within“the“spMÞecied“eld“width.‘If“a“eldŽ¡‘Gwidth–ú"greater›ú!than“needed˜to“sho²!w˜the“output˜v‘ÿdDalue“is˜spMÞecied,‘the˜`â0á'“(zero)˜
ag“causesŽ¡‘Gthe–ÁKoutput›ÁJv‘ÿdDalue“to˜bMÞe“left˜padded“with˜zeros“un²!til˜the“spMÞecied“eld˜width“is˜reac²!hed;‘νforŽ¡‘Gexample,–¦fwith“the“format“`â%011.6fá',ަ‘.ùœâYou–¿ªhave:“troypoundŽ¡‘.ùœYou–¿ªwant:“grainŽ¡‘\öì*‘¿ª5760.000000Ž¡‘\öì/‘¿ª0000.000174ŽŸ°[‘GáThe–¦f`â0á'“
ag“has“no“eect“if“the“`â-á'“(left“align)“
ag“is“giv²!en.ŽŸ»½‘Gëc14.3‘™Field‘f@WidthŽŽŸ33‘GáBy–Ó2default,‘Þfthe“output›Ó3v‘ÿdDalue“is˜left“aligned“and˜sho²!wn“with˜the“minim²!um˜width“necessaryŽ¡‘Gfor–dothe›dnspMÞecied“(or˜default)“precision.‘÷If˜a“eld“width˜greater“than˜this“is“spMÞecied,‘“ðtheŽ¡‘Gv‘ÿdDalue–Çdshoš²!wn‘Çeis“righ˜t›Çealigned,‘£and“padded˜on“the˜left“with“enough˜spaces“to˜pro²!vide“theŽ¡‘GspšMÞecied‘°Eeld–°Dwidth.‘ûyA‘°width“sp˜ecication–°Eis“t²!ypically‘°Dused“with“xed-p˜oin²!t‘°Ddecimal“toŽ¡‘Gha•²!v“e–Tcolumns›Tof“n•²!um“bMÞers–Talign˜at“the“decimal“pMÞoin²!t;‘oŠthis“arguably˜is“less“useful˜with“âunitsŽ¡‘Gáthan–üwith“long“columnar“output,‘k¡but‘ûit“maš²!y“nonetheless“assist“in“quic˜kly“assessing“theŽ¡‘Grelativ²!e–¦fmagnitudes“of“results.‘ÝÝF‘ÿeor“example,“with“the“format“`â%12.6fá',ަ‘.ùœâYou–¿ªhave:“kmŽ¡‘.ùœYou–¿ªwant:“inŽ¡‘\öì*‘¿ª39370.078740Ž¡‘\öì/‘¾R0.000025ŽŽ©4ÌÌ‘.ùœYou–¿ªhave:“kmŽ¡‘.ùœYou–¿ªwant:“rodŽ¡‘\öì*‘>þ198.838782Ž¡‘\öì/‘¾R0.005029ŽŽ¦‘.ùœYou–¿ªhave:“kmŽ¡‘.ùœYou–¿ªwant:“furlongŽ¡‘\öì*‘¾R4.970970Ž¡‘\öì/‘¾R0.201168ŽŽŸEUV‘Gëc14.4‘™PrecisionŽŽŸ33‘GáThe–g%meaning›g$of“\precision"˜depMÞends“on˜the“format˜t²!ypMÞe.‘ With˜`âgá'“or˜`âGá',‘—Tit˜spMÞecies“theŽ¡‘Gn•²!um“bMÞer–Ô§of“signicanš²!t‘Ô¨digits“(lik˜e“the“â--digits“áoption);‘ëÈwith“`âeá',–à7`âEá',›à8`âfá',“or–Ô§`âFá',˜it“spMÞeciesŽ¡‘Gthe–¦fmaximš²!um“n˜um˜bšMÞer“of“digits“to“b˜e“sho²!wn“after“the“decimal“p˜oin²!t.ŽŽŒ‹1©€Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td49ŽŽŽ ƒ33 ý ÌÍ‘!GWith–/ñthe›/ò`âgá'“and“`âGá'˜format“t²!ypMÞes,›’Ttrailing“zeros“are“suppressed,˜so“the‘/òresults“ma²!yޤ
33‘Gsometimes›Yha•²!v“e˜few“er˜digits˜than‘Zthe˜sp•MÞecied˜precision˜(as˜indicated˜ab“o•²!v“e,‘Çthe˜`â#á'˜
agŽ¡‘Gcauses–¦ftrailing“zeros“to“bMÞe“displa•²!y“ed).Ž©‘!GThe–‘\default“precision›‘]is“6,‘•‘so“`â%gá'“is˜equiv‘ÿdDalenš²!t“to“`â%.6gá',‘•‘and“w˜ould“sho˜w‘‘]the“output“toŽ¡‘Gsix›ž"signican²!t–ž!digits.‘ÛSimilarly‘ÿe,‘ŸÉ`â%eá'“or˜`â%fá'“w•²!ould˜sho“w–ž!the˜output˜with“six˜digits“after˜theŽ¡‘Gdecimal‘¦fpMÞoin²!t.ŽŸ‘!GThe–©7C‘¨ôâprintf“áfunction“allo²!ws›©6a“precision“of“arbitrary“size,‘éêwhether“or“not˜all“of“theŽ¡‘Gdigits–D{are“meaningful.‘¸With“most‘Dzcompilers,‘lthe“maximš²!um“in˜ternal“precision“with“âunitsŽ¡‘Gáis–ŒP15“decimal“digits“(or“13“hexadecimal“digits).‘Õ+With“the“â--digits“áoption,‘‘ˆy²!ou“are“limitedŽ¡‘Gto–øÛthe‘øÜmaximš²!um“in˜ternal“precision;‘"with‘øÜthe“â--output-format“áoption,‘
yy˜ou“ma˜y‘øÜspMÞecify“aŽ¡‘Gprecision–žgreater“than“this,‘ "but“it“ma²!y“not“bšMÞe“meaningful.‘Û@In‘ž‘some“cases,‘ !sp˜ecifying“excessŽ¡‘Gprecision–a'can“result“in‘a&rounding“artifacts.‘ÆÈF‘ÿeor“example,›oa“pMÞound“is“exactly“7000“grains,˜butŽ¡‘Gwith–¦fthe“format“`â%.18gá',“the“output“migh²!t“bMÞeަ‘.ùœâYou–¿ªhave:“poundŽ¡‘.ùœYou–¿ªwant:“grainŽ¡‘\öì*‘¿ª6999.9999999999991Ž¡‘\öì/‘¿ª0.00014285714285714287ަ‘GáWith–¦fthe“format“`â%.25gá'“yš²!ou“migh˜t“get“the“follo˜wing:ަ‘.ùœâYou–¿ªhave:“1/3Ž¡‘.ùœYou‘¿ªwant:Ž¡‘\öìDefinition:‘¿ª0.333333333333333314829616256247ŽŸ‘GáIn–{çthis“case“the›{ædispla•²!y“ed–{çv‘ÿdDalue“includes“a“series“of“digits“that˜represen²!t“the“underlying“binaryŽ¡‘G
oating-pMÞoin•²!t›s¬appro“ximation˜to˜1/3˜but˜are‘s«not˜meaningful˜for˜the˜desired˜computation.Ž¡‘GIn–œgeneral,‘ž-the“result“with‘œ excess“precision“is“system“depMÞenden²!t.‘ÚpThe“precision“aects“onlyŽ¡‘Gthe–9„ädisplay‘1†áof“n•²!um“bMÞers;‘ƒif–9…a›9„result“relies˜on“ph•²!ysical˜constan“ts–9…that˜are“not˜kno²!wn“to˜theŽ¡‘GspšMÞecied–precision,‘6òthe“n•²!um“b˜er–of“phš²!ysically“meaningful‘digits“ma˜y“bMÞe“less“than“the“n˜um˜bMÞerŽ¡‘Gof–¦fdigits“sho²!wn.ަ‘!GSee–Vthe“došMÞcumen²!tation“for“âprintf“áfor“more“detailed“descriptions“of“the“format“sp˜eci-Ž¡‘Gcation.ަ‘!GThe–65â--output-format›64áoption“is˜incompatible“with“the˜â--exponential“áor˜â--digits“áop-Ž¡‘Gtions;‘Pyif–%‚the“former“is“givš²!en“in“com˜bination“with“either“of‘%ƒthe“latter,‘?Ithe“format“is“con˜trolledŽ¡‘Gbš²!y–¦fthe“last“option“giv˜en.ŽŸ!·¹‘GëZ15‘	¸QLo‘Š=calizationŽŽŸ~€‘GáSome–øsunits“ha•²!v“e›øsdieren“t‘øtv‘ÿdDalues˜in˜dieren“t˜lo•MÞcations.‘ÔThe˜lo“calization˜feature˜accommo-Ž¡‘Gdates–
this“b•²!y›
allo“wing–
a“units“data“le˜to“spšMÞecify“denitions“that“dep˜end‘
on“the“user'sŽ¡‘GloMÞcale.ŽŸ·¹‘Gëc15.1‘™Los3caleŽŽŸ33‘GáA‘ñloMÞcale–ûis“a“subset“of“a“user's“en•²!vironmen“t–ûthat‘úindicates“the“user's“language“and“coun²!try‘ÿe,Ž¡‘Gand–H÷some“attendanš²!t“preferences,‘±›suc˜h“as“the“formatting“of‘Hødates.‘	ÅThe“âunits“áprogramŽ¡‘Gattempts–ršto›r™determine“the˜loMÞcale“from“the˜POSIX‘reâsetlocale“áfunction;‘سif“this˜cannot“bMÞeŽ¡‘Gdone,‘Ïâunits››¨áexamines–›©the“en•²!vironmen“t˜v‘ÿdDariables–›©âLC_CTYPE“áand“âLANGá.‘ÚHOn“POSIX‘›¦systems,ŽŽŒ‹2´$Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td50ŽŽŽ ƒ33 ý ÌÍ‘Ga–ÈtloMÞcale›Èuis“of“the˜form“ålanguage‘â_åcoun²!tryá,‘ôØwhere“ålanguage‘e{áis˜the“t•²!w“o-c“haracter–ÈtcoMÞde˜from“ISOޤ
33‘G639-1–•and›”åcoun²!try‘þ­áis“the˜t•²!w“o-c“haracter–•coMÞde“from˜ISO‘z3166-1;‘B¬ålanguage‘«œáis“lo•²!w“er˜case‘•andŽ¡‘Gåcoun²!try‘–~áis–¦fuppšMÞer“case.‘ÝÝF‘ÿeor“example,“the“POSIX“lo˜cale“for“the“United“Kingdom“is“âen_GBá.Ž©ÖŽ‘!GOn–Bsystems“running“Microsoft“Windoš²!ws,‘hðthe“v‘ÿdDalue“returned“b˜y“âsetlocale“áis“dieren˜tŽ¡‘Gfrom–þthat›þon“POSIX‘ýÃsystems;‘©öâunits“áattempts˜to“map˜the“Windo²!ws˜v‘ÿdDalue“to˜a“POSIXŽ¡‘Gv‘ÿdDalue–Zöb²!y“means“of“a›Zõtable“in“the“le“âlocale_map.txt“áin“the“same˜directory“as“the“otherŽ¡‘Gdata–zKles.‘Y‹The›zJle“includes“en²!tries˜for“manš²!y“com˜binations›zJof“language“and˜coun²!try‘ÿe,‘¯DandŽ¡‘Gcan–mEbMÞe“extended“to“include“other“comš²!binations.‘2yThe“âlocale_map.txt“ále“comprises“t˜w˜oŽ¡‘Gtab-separated–¦fcolumns;“eacš²!h“en˜try“is“of“the“formަ‘.ùœåWindo²!ws-lo•MÞcale‘9POSIX-lo“caleަ‘Gáwhere–’åPOSIX-lošMÞcale‘™áis“as“describ˜ed‘“ab˜o•²!v“e,‘¸\and‘“åWindo“ws-lo˜cale‘™át“ypically–’sp˜ells“out“b˜othŽ¡‘Gthe–¦flanguage“and“counš²!try–ÿe.‘ÝÝF“or–¦fexample,“the“en˜try“for“the“United“States“isަ‘.ùœâEnglish_United‘¿ªStates‘>þen_USަ‘GáY‘ÿeou–¦fcan“force“âunits“áto“run“in“a“desired“loMÞcale“b²!y“using“the“â-l“áoption.ަ‘!GIn–y&order›y'to“create˜unit“denitions˜for“a˜particular“loMÞcale˜y²!ou“bMÞegin˜a“bloMÞc²!k˜of“denitionsŽ¡‘Gin–a›ÿunit“datale˜with“`â!localeá'“follo•²!w“ed˜b“y–a“loMÞcale˜name.‘	8ªThe“`â!á'˜m²!ust“bMÞe˜the“rstŽ¡‘Gcš²!haracter–1™on“the“line.‘¶îThe‘1˜âunits“áprogram“reads“the“follo˜wing“denitions‘1˜only“if“the“curren˜tŽ¡‘GlošMÞcale–Úímatc²!hes.‘š
Y‘ÿeou‘Úîend“the“blo˜c²!k“of“lo˜calized›Úîunits“with“`â!endlocaleá'.‘š
Here˜is“an“example,Ž¡‘Gwhic²!h–¦fdenes“the“British“gallon.ަ‘.ùœâ!locale‘¿ªen_GBŽ¡‘.ùœgallon‘(=¦4.54609‘¿ªliterŽ¡‘.ùœ!endlocaleŽŽŸ9Ûn‘Gëc15.2‘™Additional‘f@Los3calizationŽŽŸ33‘GáSometimes–c¾the›c¿loMÞcale“isn't˜sucien²!t“to˜determine“unit“preferences.‘ǦThere“could˜bMÞe“regionalŽ¡‘Gpreferences,‘¯Åor–z²a“companš²!y“could“ha˜v˜e“spMÞecic“preferences.‘ZÂThough“probably“uncommon,Ž¡‘Gsuc²!h–Ú€dierences›Úcould“arise˜with“the“c²!hoice˜of“English“customary˜units“outside˜of“English-Ž¡‘GspMÞeaking–ÙÀcounš²!tries.‘wëT‘ÿeo“address“this,‘&—âunits“áallo˜ws“spšMÞecifying“denitions“that“dep˜end“onŽ¡‘Gen•²!vironmen“t–7ñv›ÿdDariable“settings.‘’}The“en•²!vironmen“t–7ñv˜ariables“can“bMÞe‘7ðcon²!trolled“based“on“theŽ¡‘Gcurren²!t–¦floMÞcale,“or“the“user“can“set“them“to“force“a“particular“group“of“denitions.ަ‘!GA‘ç¨conditional–èreferring˜to–y4its“relationship˜with“the˜foMÞot.‘ÎÌByŽ¡‘Gthe–‘”20th‘‘•cenš²!tury‘ÿe,‘Ì_the“inc˜h‘‘•w˜as“ocially“dened‘‘•in“English-spMÞeaking“coun˜tries‘‘•relativ˜e“toŽ¡‘Gthe–Y¹yš²!ard,‘†but“un˜til–Y¸1959,‘†Žthe“y˜ard–Y¹diered“sligh˜tly“among‘Y¸those“coun˜tries.‘÷ÕIn“F‘ÿerance“theŽ¡‘Gcustomary›‰inc•²!h,‘Žíwhic“h˜w“as˜displaced˜in˜1799˜b“y˜the˜meter,‘Žíhad˜a˜dieren“t˜length˜based˜onŽ¡‘Ga–¦ffrenc²!h“fošMÞot.‘ÝÝThese“customary“denitions“could“b˜e“accommo˜dated“as“follo²!ws:ŽŽŒ‹3ÁíŸò‘GáUnits‘¦fCon•²!v“ersion’Td51ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ!var–¿ªINCH_UNIT“usaޤ
33‘.ùœyard‘9|¤3600|3937‘¿ªmŽ¡‘.ùœ!endvarŽŽ¤'™™‘.ùœ!var–¿ªINCH_UNIT“canadaޤ
33‘.ùœyard‘9|¤0.9144‘¿ªmeterŽ¡‘.ùœ!endvarŽŽ¡‘.ùœ!var–¿ªINCH_UNIT“ukޤ
33‘.ùœyard‘9|¤0.91439841‘¿ªmeterŽ¡‘.ùœ!endvarŽŽ¡‘.ùœ!var–¿ªINCH_UNIT“canada“uk“usaޤ
33‘.ùœfoot‘9|¤1|3‘¿ªyardŽ¡‘.ùœinch‘9|¤1|12‘¿ªfootŽ¡‘.ùœ!endvarŽŽŸ4ÌÌ‘.ùœ!var–¿ªINCH_UNIT“franceޤ
33‘.ùœfoot‘9|¤144|443.296‘¿ªmŽ¡‘.ùœinch‘9|¤1|12‘¿ªfootŽ¡‘.ùœline‘9|¤1|12‘¿ªinchŽ¡‘.ùœ!endvarŽŽŸAÿÿ‘.ùœ!varnot–¿ªINCH_UNIT“usa“uk“france“canadaޤ
33‘.ùœ!message–¿ªUnknown“value“for“INCH_UNITŽ¡‘.ùœ!endvarŽŽŸ\fh‘GáWhen–ÏJâunits›ÏKáreads“the“abMÞo•²!v“e˜denitions–ÏJit“will˜c•²!hec“k–ÏJthe“en•²!vironmen“t˜v‘ÿdDariable‘ÏJâINCH_UNITޤ
33‘Gáand–6,load“only“the“denitions“for“the“appropriate“section.‘¸tIf“âINCH_UNIT“áis“unset“or“is“not“setŽ¡‘Gto–Ìwone“of›Ìxthe“four“v‘ÿdDalues“listed,‘Õüthen“âunits“áwill˜run“the“last“bloMÞc²!k.‘PIn“this˜case“that“bloMÞc²!kŽ¡‘Guses–~the“`â!messageá'“command“to“displaš²!y“a“w˜arning“message.‘®;Alternativ˜ely“that“bloMÞc˜k“couldŽ¡‘Gset–¦fdefault“v‘ÿdDalues.Ž©B‘!GIn–;Ñorder›;Òto“create“default“v‘ÿdDalues˜that“are“o•²!v“erridden‘;Ñb“y˜user–;Ñsettings“the“data˜le“canŽ¡‘Guse–"¦the“`â!setá'“command,‘A¶whicš²!h‘"§sets“an“en˜vironmen˜t“v‘ÿdDariable“äonly›]:if–]9it“is“not˜alr–ÿp¹e“ady‘]9set‘	êá;Ž¡‘Gthese–N‹settings“are›NŠonly“for“the“curren²!t˜âunits“áin•²!v“oMÞcation–N‹and“do˜not“pMÞersist.‘	ÖKSo“if“theŽ¡‘Gexample›T˜abMÞo•²!v“e˜w“ere˜preceded˜b“y˜`â!set–¦fINCH_UNIT“franceá',‘dõthen˜this˜w•²!ould˜mak“e˜`âfranceá'Ž¡‘Gthe–ƒ¢default“v›ÿdDalue“for“âINCH_UNITá.‘ÒGIf“the“user“had“set“the‘ƒ£v˜ariable“in“the“en•²!vironmen“t‘ƒ¢bMÞeforeŽ¡‘Gin•²!v“oking–¦fâunitsá,“then“âunits“áw²!ould“use“the“user's“v‘ÿdDalue.ަ‘!GT‘ÿeo–£ïlink›£ðthese“settings˜to˜the“user's“loMÞcale˜y•²!ou˜com“bine–£ïthe˜`â!setá'“command“with˜theŽ¡‘G`â!localeá'–ßcommand.‘¯[If“yš²!ou“w˜an˜ted‘àto“com˜bine“the“abMÞo˜v˜e“example“with‘àsuitable“loMÞcales“y˜ouŽ¡‘Gcould–¦fdo“bš²!y“äpr–ÿp¹e“c“e“ding‘žgáthe–¦fabMÞo˜v˜e“denition“with“the“follo˜wing:ŽŽŒ‹4ÒÖŸò‘GáUnits‘¦fCon•²!v“ersion’Td52ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ!locale‘¿ªen_USޤ
33‘.ùœ!set–¿ªINCH_UNIT“usaŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!locale‘¿ªen_GBŽ¡‘.ùœ!set–¿ªINCH_UNIT“ukŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!locale‘¿ªen_CAŽ¡‘.ùœ!set–¿ªINCH_UNIT“canadaŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!locale‘¿ªfr_FRŽ¡‘.ùœ!set–¿ªINCH_UNIT“franceŽ¡‘.ùœ!endlocaleŽ¡‘.ùœ!set–¿ªINCH_UNIT“franceŽŽ ¯Ãã‘GáThese–5‘denitions›5set“the“o•²!v“erall˜default–5‘for“âINCH_UNIT“áto˜`âfranceá'“and“set˜default“v‘ÿdDaluesޤ
33‘Gfor–š four“loMÞcales›š!appropriately‘ÿe.‘ÙÆThe“o•²!v“erall–š default“setting˜comes“last“so“that˜it“only“appliesŽ¡‘Gwhen–¦fâINCH_UNIT“áwš²!as“not“set“b˜y“one“of“the“other“commands“or“b˜y“the“user.ŽŸ]€‘!GIf–†the›…v‘ÿdDariable“giv²!en“after“`â!vará'˜or“`â!varnotá'“is“undened,‘-then“âunits“áprin²!ts˜an“errorŽ¡‘Gmessage–srand“ignores“the“denitions“that“folloš²!w.‘EUse“`â!setá'“to“create“defaults“to“prev˜en˜tŽ¡‘Gthis–;êsituation“from“arising.‘º_The“â-c“áoption“only“c•²!hec“ks–;êthe“denitions‘;ëthat“are“activ²!e“for“theŽ¡‘Gcurren•²!t›”Ven“vironmen“t˜and–”UloMÞcale,‘—óso˜when˜adding“new˜denitions˜tak²!e˜care˜to“c•²!hec“k˜that˜allŽ¡‘Gcases–¦fgivš²!e“rise“to“a“w˜ell“dened“set“of“denitions.ŽŸ$T˜‘GëZ16‘	¸QEn–ÿuÂvironmen“t‘z³V‘þaGariablesŽŽŸ²‘GáThe–¦fâunits“áprogram“uses“the“folloš²!wing“en˜vironmen˜t“v‘ÿdDariables:ŽŸò¦‘GâHOME‘"ÒKáSpšMÞecies–±6the“lo˜cation›±7of“y²!our“home“directory;‘	¶it“is“used˜b²!y“âunits“átoŽ¡‘Kâ:nd–Ï
a“pMÞersonal‘Ïunits“data“le“`â.unitsá'.‘WÊOn“systems“running“MicrosoftŽ¡‘Kâ:Windo²!ws,›â!the–<–le“is“`âunitdef.unitsá',‘â and“if“âHOME“ádoMÞes“not“exist,˜âunitsŽ¡‘Kâ:átries–„¬to›„«determine“y²!our˜home“directory˜from“the˜âHOMEDRIVE“áand˜âHOMEPATHŽ¡‘Kâ:áen•²!vironmen“t–ü‡v›ÿdDariables;‘§—if“these“v˜ariables“do“not“exist,‘Òunits“nally“triesŽ¡‘Kâ:âUSERPROFILEá|tš²!ypically–âC:\Users\èusername“á(Windo˜ws“Vista‘and“Windo˜ws“7)Ž¡‘Kâ:or–¦fâC:\Documents“and“Settings\èusernameŽ’ÆŽØá(Windo²!ws‘¦fXP).Ž©]‘GâLC_CTYPE,‘¦fLANGŽ¡‘Kâ:áChec•²!k“ed–fto“determine“the“lošMÞcale“if“âunits“ácannot“obtain“it“from“the“op˜eratingŽ¡‘Kâ:system.‘iSections–‹	of“the“default“main“units“data“le“are“spšMÞecic“to“certain“lo˜cales.ŽŸ]€‘GâMYUNITSFILEŽ¡‘Kâ:áSp•MÞecies›±¶y²!our‘±µp“ersonal˜units–±µdata˜le.‘ÿÌIf“this˜v‘ÿdDariable˜exists,‘ô‰âunits“áuses˜itsŽ¡‘Kâ:v‘ÿdDalue–¶irather‘¶hthan“searcš²!hing“y˜our›¶hhome“directory“for˜`â.unitsá'.‘
åThe“pMÞersonalŽ¡‘Kâ:units–¦fle“will“not“bMÞe“loaded“if“anš²!y“data“les“are“giv˜en“using“the“â-f“áoption.ަ‘GâPAGER‘¡áSpMÞecies–¸ÿthe“pager“to“use“for“help‘¸þand“for“displa²!ying“the“conformable“units.Ž¡‘Kâ:The–ø–help›ø—function“bro²!wses˜the“units˜database“and“calls˜the“pager˜using“theŽ¡‘Kâ:`â+ná'ån–Ôásyn²!tax›Õfor“spMÞecifying˜a“line˜n•²!um“bMÞer.‘­¬The˜default–Ôpager˜is“âmoreá;‘FâPAGER“ácanŽ¡‘Kâ:bšMÞe–¦fused“to“sp˜ecify“alternativš²!es“suc˜h“as“âlessá,“âpgá,“âemacsá,“or“âviá.ŽŽŒ‹5Û¢Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td53ŽŽŽ ƒ33 ý ÌÍ‘GâUNITS_ENGLISHޤ
33‘Kâ:áSet–›»to“either“`âUSá'“or“`âGBá'“to‘›ºcš²!hoMÞose“United“States“or“British“v˜olume“denitions,Ž¡‘Kâ:o•²!v“erriding–¦fthe“default“from“y²!our“loMÞcale.Ž©«¬‘GâUNITSFILEŽ¡‘Kâ:áSpMÞecies–lthe›munits“data˜le“to“use˜(instead“of˜the“default).‘®5Y‘ÿeou“can˜only“spMÞecifyŽ¡‘Kâ:a–-vsingle“units“data›-wle“using“this“en•²!vironmen“t–-vv‘ÿdDariable.‘s
If˜units“data“les“areŽ¡‘Kâ:givš²!en–M]using“the“â-f“áoption,‘_+the“le“spMÞecied“b˜y“âUNITSFILE“áwill“bšMÞe“not“b˜e“loadedŽ¡‘Kâ:unless–¦fthe“â-f“áoption“is“givš²!en“with“the“empt˜y“string“(`âunits“-f“""á'Ž‘A).ŽŸ«­‘GâUNITSLOCALEMAPŽ¡‘Kâ:áWindo²!ws–MÆonly;‘¡uthis›MÅv‘ÿdDariable“has˜no“eect“on˜Unix-lik²!e“systems.‘ÓûSpMÞecies“theŽ¡‘Kâ:units–OcloMÞcale›Obmap“le“to“use˜(instead“of“the“default).‘ÀÜThis“v‘ÿdDariable˜seldom“needsŽ¡‘Kâ:to–¶°bMÞe›¶±set,‘ºÃbut“y²!ou˜can“use˜it“to˜ensure“that˜the“loMÞcale˜map“le˜will“bMÞe˜found“ifŽ¡‘Kâ:y²!ou–
GspšMÞecify‘
Ha“lo˜cation“for“the›
Hunits“data“le“using˜either“the“â-f“áoption˜or“theŽ¡‘Kâ:âUNITSFILE›L)áen•²!vironmen“t˜v‘ÿdDariable,‘u™and˜that˜lo•MÞcation˜do“es˜not˜also˜con²!tain˜theŽ¡‘Kâ:loMÞcale–¦fmap“le.ަ‘GâUNITS_SYSTEMŽ¡‘Kâ:áThis›`en•²!vironmen“t–`v‘ÿdDariable˜is“used˜in“the˜default˜main“data˜le“to˜selectŽ¡‘Kâ:CGS‘·ðmeasuremen•²!t›¸ysystems.‘Curren“tly–¸xsuppMÞorted˜systems“are˜`âesuá',‘<ü`âemuá',Ž¡‘Kâ:`âgauss[ian]á',–ߤ`âhluá',“`ânaturalá',‘ߥ`ânatural-gaussá',“`âplancká',“`âplanck-redá',Ž¡‘Kâ:`âhartreeá'–¦fand“`âsiá'.‘ÝÝThe“default“is“`âsiá'.ŽŸ xz‘GëZ17‘	¸QData‘z³FilesŽŽŸ`b‘GáThe–Dâunits“áprogram“uses“four‘D€default“data“les:‘the“main“data“le,‘lâdefinitions.unitsá;Ž¡‘Gthe–	©aatomic›	©bmasses“of˜the“elemen•²!ts,‘*âelements.unitsá;‘ªÝcurrency˜exc“hange‘	©arates,Ž¡‘Gâcurrency.unitsá,‘´and–Ùthe›ØUS‘[Consumer“Price˜Index,‘´âcpi.unitsá.‘
”5The˜last“three˜lesŽ¡‘Gare–~4loaded“bš²!y“means“of“`â!includeá'“directiv˜es“in“the“main“le“(see“Chapter“21“[DatabaseŽ¡‘GCommand–jùSyn²!tax],‘œpage“57).‘+–The“program“can“also‘jøuse“an“optional“pMÞersonal“units“dataŽ¡‘Gle–¼ðâ.units›¼ñá(âunitdef.units“áunder˜Windo²!ws)“loMÞcated˜in“the˜user's“home˜directory‘ÿe.‘!|TheŽ¡‘GpšMÞersonal–›…units‘›„data“le“is“describ˜ed››„in“more“detail˜in“Section“13.1“[Units˜Data“Files],Ž¡‘Gpage‘¦f40.Ž©op‘!GOn–Mnon-ASCIMÞI‘ç
denitions“are›ç=loaded“only“if“the˜platform“and“the“lo•MÞcale˜supp“ort‘ç>UTF-8Ž‘#L
.Ž¡‘GPlatform–ýsuppšMÞort“is“determined‘ýwhen“âunits“áis“compiled;‘¨Qthe“lo˜cale‘ýis“c•²!hec“k“ed–ýat“ev²!eryŽ¡‘Gin•²!v“oMÞcation›Ý‚of–݃âunitsá.‘ƒ2T‘ÿeo“see˜if˜yš²!our“v˜ersion›Ý‚of“âunits˜áincludes“Unico•MÞde˜supp“ort,‘ëJin•²!v“ok“e˜theŽ¡‘Gprogram–¦fwith“the“â--version“áoption.ަ‘!GWhen–¹´UnicošMÞde“supp˜ort‘¹³is“aš²!v‘ÿdDailable,‘¾‡âunits“ác˜hec˜ks“ev˜ery“line“within“UTF-8‘¹³bloMÞc˜ks“in“allŽ¡‘Gof–tÓthe›tÒunits“data“les“for˜inš²!v‘ÿdDalid“or“non-prin˜ting“UTF-8‘tÒsequences;‘…Zif“suc˜h‘tÒsequences“oMÞccur,Ž¡‘Gâunits–¶áignores›µthe“en²!tire“line.‘°MIn“addition˜to“c•²!hec“king›¶v‘ÿdDalidit“y‘ÿe,‘9âunits˜ádetermines‘µthe˜displa“yŽ¡‘Gwidth–ƒnof“non-ASCIšMÞI‘ƒ5c²!haracters“to“ensure“prop˜er“p˜ositioning‘ƒmof“the“p˜oin²!ter“in“some“errorŽ¡‘Gmessages–¦fand“to“align“columns“for“the“`âsearchá'“and“`â?á'“commands.ŽŸƒ‘!GAs–@of›?early“2019,‘kõMicrosoft“Windo•²!ws˜pro“vides–@limited“suppMÞort˜for“UTF-8˜in“consoleŽ¡‘Gapplications,‘ÀZand–»)accordingly‘ÿe,‘À[âunits“ádošMÞes“not‘»*supp˜ort“Unico˜de“on‘»*Windo²!ws.‘'The“UTF-16Ž¡‘Gand–¦fUTF-32“encošMÞdings“are“not“supp˜orted“on“an²!y“platforms.ަ‘!GIf›ì!Unico•MÞde‘ì supp“ort˜is–ì a²!v‘ÿdDailable˜and“denitions˜that˜con²!tain“non-ASCIMÞI‘ëñUTF-8˜c²!haractersŽ¡‘Gare–Vadded“to›Va“units“data“le,‘Áÿthose˜denitions“should“bMÞe“enclosed˜within“`â!utf8á'‘ÿø.–§‘.“.ŽŽ¡‘G`â!endutf8á'–Ãto“ensure“that‘Äthey“are“only“loaded“when“UnicošMÞde“supp˜ort“is‘Äa²!v‘ÿdDailable.‘õôAsŽ¡‘Gusual,‘4Ëthe–P`â!á'›Qm²!ust“appMÞear˜as“the˜rst“c²!haracter˜on“the˜line.‘3œAs˜discussed“in˜Section“13.1Ž¡‘G[Units–'FData“Files],‘G~page“40,‘G}it's“usually“bMÞest“to“put“sucš²!h“denitions“in“supplemen˜tal“dataŽ¡‘Gles–¦flinkš²!ed“b˜y“an“`â!includeá'“command“or“in“a“pMÞersonal“units“data“le.ŽŸƒ‘!GWhen–@¤UnicošMÞde“supp˜ort‘@¥is“not“aš²!v‘ÿdDailable,‘g4âunits“ámak˜es“no‘@¥assumptions“abMÞout“c˜haracterŽ¡‘GencošMÞding,‘§úexcept–§©that“c²!haracters“in‘§ªthe“range“00{7F“hexadecimal“corresp˜ond“to“ASCI˜I“en-Ž¡‘Gco•MÞding.‘¥®Non-ASCI“I‘ý¯c²!haracters–ýÚare›ýÙsimply“sequences˜of“b•²!ytes,‘and˜ha“v“e–ýÚno˜spMÞecial“meanings;Ž¡‘Gfor–ÃÆdenitions“in“supplemenš²!tary“units“data“les,‘Ëy˜ou“can“use“an˜y“encoMÞding“consisten˜t“withŽ¡‘Gthis–‚tassumption.‘ÑâF‘ÿeor“example,‘‰¥if“y²!ou›‚uwish“to“use˜non-ASCIMÞI‘‚kc²!haracters“in˜denitions“whenŽ¡‘Grunning–+âunits“áunder›*Windo•²!ws,‘7Ðy“ou–+can“use“a“c²!haracter˜set“sucš²!h“as“Windo˜ws‘*\ANSI"‘(coMÞdeŽ¡‘Gpage–ý²1252›ý³in“the“US‘ýœand˜W‘ÿeestern“EuropMÞe);‘)Yif“this“is˜done,‘…the˜console“coMÞde“page˜m²!ust“bMÞeŽ¡‘Gset–Û‡to›Û†the“same˜encoMÞding“for“the˜c²!haracters“to˜displa²!y“propMÞerly–ÿe.‘}?Y“ou˜can–Û‡ev²!en˜use“UTF-8,Ž¡‘Gthough–some“messages‘ma²!y“bšMÞe“improp˜erly“aligned,‘4„and“âunits“áwill“not‘detect“in²!v‘ÿdDalid“UTF-8Ž¡‘Gsequences.‘ß0If–ü,y²!ou›ü-use“UTF-8˜encošMÞding“when“Unico˜de‘ü-supp˜ort“is“not‘ü-a•²!v‘ÿdDailable,‘žy“ou‘ü,shouldŽ¡‘Gplace–Q´anš²!y“denitions‘Q³with“non-ASCIMÞI‘Qˆc˜haracters“äoutside‘$Uá`â!utf8á'‘û—.–§‘.“.Ž‘6`â!endutf8á'“bloMÞc˜ks|Ž¡‘Gotherwise,–¦fthey“will“bMÞe“ignored.ަ‘!GExcept–"ùfor‘"øcošMÞde“examples,‘=Bt²!yp˜eset›"ømaterial“usually“uses˜the“UnicošMÞde“sym²!b˜ols‘"øfor“mathe-Ž¡‘Gmatical–q{opMÞerators.‘våT‘ÿeo“facilitate›q|cop²!ying“and“pasting˜from“suc•²!h˜sources,‘¯Dsev“eral‘q{t“ypMÞographicalŽ¡‘Gc•²!haracters›Ë«are‘˪con“v“erted˜to‘˪the˜ASCI•MÞI‘Ë¡op“erators˜used–˪in˜âunitsá:‘(fthe˜gure“dash˜(Uâ+á2012),Ž¡‘Gmin²!us–…(`êá';‘3Uâ+á2212),‘‹Ãand“en›…dash“(`{';‘4Uâ+á2013)˜are“con•²!v“erted˜to–…the˜opMÞerator“`â-á';‘3the“m²!ul-Ž¡‘Gtiplication–¶Allo“w“able–Æ®base“currencies“are“listed“on“theŽ¡‘'¿«FloatRates›¦fw•²!ebsite.‘ÝÝExc“hange˜rates˜upMÞdate˜daily‘ÿe.ަ‘ØêŽ‘'¿«áThe–¦fEuropMÞean“Cen²!tral“Bank“(âhttps://www.ecb.europa.euá).Ž¡‘'¿«The–	base›	currency“is“alw•²!a“ys˜the–	euro“(`âEURá').‘©gExc²!hange˜rates“upMÞdate“daily‘ÿe.‘©fThis“sourceŽ¡‘'¿«oers–¦fa“more“limited“list“of“currencies“than“the“others.ŽŸww‘ØêŽ‘'¿«áFixer‘¦f(âhttps://fixer.ioá).Ž¡‘'¿«Registration–Éwfor›Éxa“free˜API‘Énk²!ey˜is“required.‘GWith“a˜free“API‘Éok²!ey‘ÿe,‘ÒdoMÞcumen“tation:‘³a˜free˜program˜should‘>come˜with˜man“ualsŽ¡‘'¿«pro²!viding–urthe›ussame“freedoms˜that“the˜soft•²!w“are–urdoMÞes.‘ÍŒBut˜this“License˜is“not˜limited“toŽ¡‘'¿«soft•²!w“are›­âman“uals;‘±¡it–­ãcan˜bMÞe“used˜for“an²!y˜textual“w²!ork,‘¯Áregardless“of˜sub‘›»ject“matter˜orŽ¡‘'¿«whether–Ç2it“is“published“as“a“prin²!ted“b•MÞo“ok.‘@BW‘ÿee–Ç2recommend“this“License“principally“forŽ¡‘'¿«w²!orks–¦fwhose“purpMÞose“is“instruction“or“reference.ަ‘-1.Ž‘'¿«APPLICABILITY–¦fAND“DEFINITIONSŽŸP‘'¿«This–Ì>License‘Ì=applies“to“anš²!y“man˜ual‘Ì=or“other“w˜ork,‘³in“an˜y–Ì=medium,‘´that“con˜tains‘Ì>aŽ¡‘'¿«notice–ýplaced›ýb²!y“the˜cop•²!yrigh“t‘ýholder˜sa“ying–ýit˜can“bMÞe˜distributed“under˜the“termsŽ¡‘'¿«of–€†this“License.‘l=Sucš²!h“a“notice“gran˜ts“a“w˜orld-wide,‘·
ro˜y˜alt˜y-free“license,‘·unlimited“inŽ¡‘'¿«duration,‘â
to–o·use›o¶that“w²!ork“under˜the“conditions“stated˜herein.‘
9ÏThe“\DoMÞcumen²!t",Ž¡‘'¿«bMÞeloš²!w,‘tkrefers–gìto“an˜y“suc˜h‘gíman˜ual“or“w˜ork.‘É
An˜y“mem˜bMÞer“of“the‘gípublic“is“a“licensee,‘tkandŽ¡‘'¿«is–ÿaddressed“as“\yš²!ou".‘¦@Y‘ÿeou“accept“the“license“if“y˜ou“cop˜y‘ÿe,‘ îmoMÞdify“or“distribute“the“w˜orkŽ¡‘'¿«in–¦fa“w•²!a“y–¦frequiring“pMÞermission“under“cop•²!yrigh“t‘¦fla“w.ަ‘'¿«A‘¦\MošMÞdied–ÀV‘ÿeersion"‘Áof“the“Do˜cumenš²!t“means‘Áan˜y“w˜ork“con˜taining“the‘ÁDoMÞcumen˜t“orŽ¡‘'¿«a–‚hpMÞortion›‚gof“it,‘¹heither˜copied“v²!erbatim,‘¹hor˜with“moMÞdications“and/or˜translated“in²!toŽ¡‘'¿«another‘¦flanguage.ަ‘'¿«A‘ž\Secondary–ÀSection"“is›Áa“named˜appMÞendix“or˜a“fron²!t-matter˜section“of˜the“DoMÞcumen²!tŽ¡‘'¿«that–Ž/deals“exclusiv²!ely›Ž0with“the“relationship“of˜the“publishers“or“authors˜of“the“DoMÞcumen²!tŽ¡‘'¿«to–z
the‘zDoMÞcumenš²!t's“o˜v˜erall›zsub‘›»ject“(or˜to“related“matters)˜and“con²!tains˜nothing“thatŽ¡‘'¿«could–Ø®fall›دdirectly“within“that“o•²!v“erall˜sub‘›»ject.‘tµ(Th“us,‘%@if˜the›Ø®DoMÞcumen“t˜is˜in‘دpart˜aŽ¡‘'¿«textb•MÞo“ok›Õ†of–Õ…mathematics,‘ÿMa“Secondary˜Section˜ma²!y˜not“explain˜an²!y˜mathematics.)‘˜=TheŽ¡‘'¿«relationship–GÞcould“bMÞe“a“matter“of“historical“connection“with“the“sub‘›»ject“or“with“relatedŽ¡‘'¿«matters,–jor‘Bøof›B÷legal,“commercial,‘jphilosophical,“ethical˜or˜p•MÞolitical‘Bøp“osition˜regardingŽ¡‘'¿«them.ަ‘'¿«The›r\In•²!v‘ÿdDarian“t–sSections"˜are˜certain˜Secondary“Sections˜whose˜titles˜are“designated,‘0ÖasŽ¡‘'¿«bMÞeing–2Dthose›2Cof“In•²!v‘ÿdDarian“t–2DSections,‘I}in“the“notice˜that“sa²!ys˜that“the“DoMÞcumen²!t˜is“releasedŽŽŒ‹<=zŸò‘GáUnits‘¦fCon•²!v“ersion’Td60ŽŽŽ ƒ33 ý ÌÍ‘'¿«under–S5this“License.‘Â"If›S4a“section“doMÞes“not“t˜the“abMÞo•²!v“e–S5denition“of“Secondary˜then“it“isޤ
33‘'¿«not›Óallo•²!w“ed˜to‘ÓŽbMÞe˜designated˜as˜In“v‘ÿdDarian“t.‘eSThe˜DoMÞcumen“t˜ma“y‘ÓŽcon“tain˜zero˜In“v‘ÿdDarian“tŽ¡‘'¿«Sections.‘¢ÄIf–õthe“DošMÞcumen²!t“do˜es‘õnot“idenš²!tify“an˜y“In˜v‘ÿdDarian˜t“Sections“then‘õthere“are“none.Ž©&g‘'¿«The›f­\Co•²!v“er–f¬T‘ÿeexts"˜are˜certain˜short“passages˜of˜text˜that“are˜listed,‘–¾as˜F‘ÿeron•²!t-Co“v“erŽ¡‘'¿«T›ÿeexts–-or“Bac•²!k-Co“v“er‘,T˜exts,‘"8in–-the“notice“that‘,saš²!ys“that“the“DoMÞcumen˜t‘,is“released“underŽ¡‘'¿«this›’License.‘¯AA‘nF‘ÿeron•²!t-Co“v“er˜T‘ÿeext˜ma“y˜bMÞe˜at˜most˜5›‘w“ords,‘6Šand˜a›’Bac“k-Co“v“er˜T‘ÿeext˜ma“yŽ¡‘'¿«bMÞe–¦fat“most“25“w²!ords.ŽŸ&h‘'¿«A‘C¦\T‘ÿeransparen•²!t"›CÎcop“y˜of‘CÏthe˜DoMÞcumen“t˜means˜a‘CÏmac“hine-readable˜cop“y‘ÿe,‘k(represen“tedŽ¡‘'¿«in–Jma“format›Jnwhose“spMÞecication“is“a²!v‘ÿdDailable“to“the˜general“public,‘snthat˜is“suitable“forŽ¡‘'¿«revising–Îàthe‘ÎßdoMÞcumenš²!t“straigh˜tforw˜ardly“with›Îßgeneric“text˜editors“or“(for˜images“com-Ž¡‘'¿«pMÞosed–ÚÃof›ÚÄpixels)“generic˜pain²!t“programs˜or“(for˜dra²!wings)“some˜widely“a•²!v‘ÿdDailable˜dra“wingŽ¡‘'¿«editor,‘…úand–}ßthat“is“suitable“for“input“to‘}àtext“formatters“or“for“automatic“translation“toŽ¡‘'¿«a–9Ov‘ÿdDariet²!y“of›9Nformats“suitable“for“input“to“text˜formatters.‘¹A‘93cop²!y“made˜in“an“otherwiseŽ¡‘'¿«T‘ÿeransparen²!t–„æle“format›„åwhose“markup,‘¼†or“absence˜of“markup,‘¼†has˜bMÞeen“arranged“toŽ¡‘'¿«th•²!w“art–0ûor›0üdiscourage“subsequen²!t“moMÞdication˜b²!y“readers“is˜not“T‘ÿeransparen²!t.‘¶ºAn“imageŽ¡‘'¿«format– Éis“not“T‘ÿeransparenš²!t“if“used‘ Èfor“an˜y“substan˜tial“amoun˜t“of“text.‘MA‘ ©cop˜y“that“isŽ¡‘'¿«not–¦f\T‘ÿeransparen²!t"“is“called“\Opaque".ަ‘'¿«Examples–ÚZof›ÚYsuitable“formats˜for“T‘ÿeransparen²!t“copies˜include“plain˜ASCIMÞI‘ÙÉwithoutŽ¡‘'¿«markup,›	kT‘ÿeexinfo–õinput“format,˜LaT‘þ,³Ÿ[wEŽ‘B	X“input“format,˜SGML›õ‰or“XML˜using“a“publiclyŽ¡‘'¿«aš²!v‘ÿdDailable–
íDTD,“and“standard-conforming“simple“HTML,“P˜ostScript“or“PDF‘
ÓdesignedŽ¡‘'¿«for–EÑhš²!uman“moMÞdication.‘¼Examples‘EÒof“transparen˜t“image“formats“include“PNG,“X˜CFŽ¡‘'¿«and–½ÜJPG.›½ÝOpaque“formats“include“proprietary˜formats“that“can“bMÞe˜read“and“editedŽ¡‘'¿«only–õbš²!y‘õ‘proprietary“w˜ord“proMÞcessors,‘	[SGML›õ|or“XML˜for“whic²!h‘õ‘the“DTD˜and/or“pro-Ž¡‘'¿«cessing–ltoMÞols›mare“not˜generally“a²!v‘ÿdDailable,‘(and˜the“mac²!hine-generated˜HTML,“P²!ostScriptŽ¡‘'¿«or–¦fPDF“proMÞduced“bš²!y“some“w˜ord“prošMÞcessors“for“output“purp˜oses“only‘ÿe.ަ‘'¿«The–Ü\Title›ÛP²!age"“means,‘<ùfor˜a“prin²!ted˜b•MÞo“ok,‘<ùthe–Ütitle˜page“itself,‘<ùplus˜sucš²!h“follo˜wingŽ¡‘'¿«pages–RÃas“are“needed“to“hold,–c}legibly‘ÿe,“the–RÃmaterial“this‘RÂLicense“requires“to“appMÞear“in“theŽ¡‘'¿«title–1.page.‘¶ÊF‘ÿeor“w²!orks›1-in“formats˜whic²!h“do“not˜ha•²!v“e‘1.an“y˜title–1.page“as˜sucš²!h,‘HŸ\Title“P˜age"Ž¡‘'¿«means–­Žthe“text“near›­the“most“prominen²!t“appMÞearance“of“the˜w²!ork's“title,‘¯Xpreceding“theŽ¡‘'¿«bšMÞeginning–¦fof“the“b˜o˜dy“of“the“text.ަ‘'¿«The–)—\publisher"“means‘)˜anš²!y“pMÞerson“or“en˜tit˜y“that“distributes‘)˜copies“of“the“DoMÞcumen˜tŽ¡‘'¿«to–¦fthe“public.ŽŸ&h‘'¿«A›ísection–ò\En²!titled“XYZ"˜means“a“named›ósubunit“of“the“DoMÞcumen²!t˜whose“title“eitherŽ¡‘'¿«is–Uªprecisely‘U©XYZ›U•or“con²!tains“XYZ˜in“paren•²!theses›U©follo“wing–Uªtext“that˜translates“XYZ‘U•inŽ¡‘'¿«another–þ¯language.‘¥ö(Here“XYZ‘þ„stands“for“a“spšMÞecic“section“name“men²!tioned“b˜elo•²!w,‘ :suc“hŽ¡‘'¿«as›aa\Ac•²!kno“wledgemen“ts",–o/\Dedications",“\Endorsemen²!ts",“or˜\History".)‘ÆÛT‘ÿeo˜\Preserv²!eŽ¡‘'¿«the–›Title"›šof“suc²!h˜a“section“when˜y²!ou“moMÞdify˜the“DoMÞcumen²!t“means˜that“it˜remains“aŽ¡‘'¿«section–¦f\En²!titled“XYZ"“according“to“this“denition.ަ‘'¿«The–SuDoMÞcumenš²!t“ma˜y“include“W‘ÿearran˜t˜y“Disclaimers“next‘Svto“the“notice“whic˜h“states“thatŽ¡‘'¿«this–¹License“applies‘ºto“the“DoMÞcumenš²!t.‘×These“W‘ÿearran˜t˜y“Disclaimers‘ºare“considered“toŽ¡‘'¿«bMÞe–„ýincluded›„þb²!y“reference“in“this˜License,‘¼£but“only“as“regards˜disclaiming“w•²!arran“ties:Ž¡‘'¿«an²!y–nother›n‘implication“that˜these“W‘ÿearran•²!t“y˜Disclaimers‘nma“y˜ha“v“e‘nis˜v“oid–nand˜has“noŽ¡‘'¿«eect–¦fon“the“meaning“of“this“License.ަ‘-2.Ž‘'¿«VERBA‘ÿeTIM‘¦fCOPYINGŽŽŒ‹=NŸò‘GáUnits‘¦fCon•²!v“ersion’Td61ŽŽŽ ƒ33 ý ÌÍ‘'¿«Y‘ÿeou–’ùmaš²!y“cop˜y“and“distribute“the“DoMÞcumen˜t“in“an˜y“medium,‘Îeither“commercially“orޤ
33‘'¿«noncommercially‘ÿe,›zªpro²!vided–that‘this“License,˜the‘cop•²!yrigh“t–notices,˜and‘the“licenseŽ¡‘'¿«notice–Ksa²!ying›K
this“License˜applies“to˜the“DoMÞcumen²!t“are˜reproMÞduced“in˜all“copies,‘t7andŽ¡‘'¿«that–1'yš²!ou“add“no‘1(other“conditions“whatsoMÞev˜er“to“those“of“this“License.‘¶ÉY‘ÿeou“ma˜y“not“useŽ¡‘'¿«tec²!hnical–ò“measures›ò”to“obstruct˜or“con²!trol˜the“reading˜or“further˜cop²!ying“of˜the“copiesŽ¡‘'¿«y•²!ou›òÇmak“e‘òÈor˜distribute.‘¡þHo“w“ev“er,‘´y“ou˜ma“y˜accept‘òÈcompMÞensation˜in˜exc“hange‘òÈfor˜copies.Ž¡‘'¿«If–Þy²!ou›Þdistribute“a“large˜enough“n•²!um“bMÞer˜of–Þcopies“y•²!ou˜m“ust–Þalso“follo²!w˜the“conditionsŽ¡‘'¿«in–¦fsection“3.Ž©"#‘'¿«Y‘ÿeou–}ìma²!y“also›}ëlend“copies,‘¹7under“the“same“conditions“stated˜abMÞo•²!v“e,‘¹8and˜y“ou›}ìma“y˜publiclyŽ¡‘'¿«displa²!y‘¦fcopies.ަ‘-3.Ž‘'¿«COPYING–¦fIN“QUANTITYަ‘'¿«If–Ãyš²!ou‘Âpublish“prin˜ted›Âcopies“(or˜copies˜in“media“that˜commonly“ha•²!v“e˜prin“ted˜co“v“ers)‘ÃofŽ¡‘'¿«the‘Ñ.DošMÞcumen•²!t,‘Ûßn“um“b˜ering–Ñ.more“than–Ñ-100,‘Ûàand“the–Ñ.Do˜cumen²!t's“license‘Ñ-notice“requiresŽ¡‘'¿«Co•²!v“er›ÜT‘ÿeexts,‘<ùy“ou‘Ûm“ust˜enclose˜the˜copies‘Ûin˜co“v“ers˜that˜carry–ÿe,‘<ùclearly‘Ûand˜legibly“,‘<ùallŽ¡‘'¿«these›´@Co•²!v“er˜T–ÿeexts:‘ùF“ron•²!t-Co“v“er˜T‘ÿeexts˜on˜the˜fron“t˜co“v“er,‘÷µand˜Bac“k-Co“v“er˜T‘ÿeexts˜onŽ¡‘'¿«the›öbac•²!k‘õco“v“er.‘Ñ
Both˜co“v“ers˜m“ust–õalso˜clearly˜and˜legibly“iden•²!tify˜y“ou˜as‘õthe˜publisherŽ¡‘'¿«of›,these–+copies.‘H/The“fron•²!t˜co“v“er˜m“ust˜presen“t–+the˜full˜title“with˜all˜w²!ords˜of“the˜titleŽ¡‘'¿«equally–³xprominenš²!t“and‘³yvisible.‘Y‘ÿeou“ma˜y›³yadd“other“material“on“the˜co•²!v“ers–³xin“addition.Ž¡‘'¿«Cop•²!ying›Y4with‘Y3c“hanges˜limited–Y3to˜the“co•²!v“ers,‘…ças–Y3long˜as“they˜preserv²!e“the˜title“of˜theŽ¡‘'¿«DošMÞcumen²!t–uand“satisfy“these“conditions,‘¨Åcan“b˜e“treated‘uas“vš²!erbatim“cop˜ying“in“otherŽ¡‘'¿«respMÞects.ަ‘'¿«If–î|the“required›î}texts“for“either“co•²!v“er–î|are“toMÞo˜vš²!oluminous“to“t“legibly‘ÿe,‘‚y˜ou“should“putŽ¡‘'¿«the–òrst›òones“listed“(as“man²!y˜as“t“reasonably)“on˜the“actual“co•²!v“er,‘ùand˜con“tin“ue‘òtheŽ¡‘'¿«rest–¦fonš²!to“adjacen˜t“pages.ŽŸ""‘'¿«If–?|y²!ou›?{publish“or˜distribute“Opaque˜copies“of˜the“DoMÞcumen•²!t˜n“um“bMÞering–?|more˜than“100,Ž¡‘'¿«y•²!ou›\3m“ust˜either‘\4include˜a˜mac“hine-readable˜T‘ÿeransparen“t˜cop“y˜along‘\4with˜eac“h˜OpaqueŽ¡‘'¿«cop²!y‘ÿe,‘[>or›7state–7in“or˜with“eacš²!h“Opaque“cop˜y‘7a“computer-net˜w˜ork“loMÞcation‘7from“whic˜hŽ¡‘'¿«the›éSgeneral‘éRnet•²!w“ork-using˜public˜has‘éRaccess˜to˜do“wnload˜using‘éRpublic-standard˜net“w“orkŽ¡‘'¿«protoMÞcols–¬=a“complete‘¬>T‘ÿeransparenš²!t“cop˜y“of“the“DoMÞcumen˜t,‘í³free“of“added“material.‘ïcIfŽ¡‘'¿«yš²!ou–ªuse“the‘ªlatter“option,‘êùy˜ou“m˜ust‘ªtak˜e“reasonably“pruden˜t“steps,‘êøwhen“y˜ou“bMÞeginŽ¡‘'¿«distribution–—lof›—mOpaque“copies˜in“quan•²!tit“y‘ÿe,‘Ó®to–—lensure“that˜this“T‘ÿeransparen•²!t˜cop“y‘—lwillŽ¡‘'¿«remain– Cthš²!us“accessible‘ Dat“the“stated“loMÞcation“un˜til‘ Dat“least“one“y˜ear“after‘ Dthe“last“timeŽ¡‘'¿«yš²!ou–k‘distribute‘k’an“Opaque“cop˜y‘k’(directly“or“through“y˜our‘k’agen˜ts“or“retailers)‘k’of“thatŽ¡‘'¿«edition–¦fto“the“public.ަ‘'¿«It–&Nis“requested,‘FHbut“not“required,‘FGthat“yš²!ou“con˜tact“the“authors“of“the“DoMÞcumen˜t“w˜ellŽ¡‘'¿«bMÞefore–oÅredistributing‘oÄanš²!y“large“n˜um˜bMÞer›oÄof“copies,‘z²to˜giv²!e“them˜a“c²!hance“to˜proš²!vide“y˜ouŽ¡‘'¿«with–¦fan“upšMÞdated“v²!ersion“of“the“Do˜cumen²!t.ަ‘-4.Ž‘'¿«MODIFICA‘ÿeTIONSަ‘'¿«Y‘ÿeou–*maš²!y“cop˜y“and›)distribute“a“MoMÞdied“V‘ÿeersion“of“the˜DoMÞcumen²!t“under“the“conditionsŽ¡‘'¿«of–…šsections›…›2“and˜3“abMÞo•²!v“e,‘¿]pro“vided˜that‘…šy“ou˜release–…šthe˜MoMÞdied“V‘ÿeersion˜under“preciselyŽ¡‘'¿«this–{ÞLicense,‘„`with“the›{ßMoMÞdied“V‘ÿeersion“lling˜the“role“of˜the“DoMÞcumen•²!t,‘„`th“us‘{ÞlicensingŽ¡‘'¿«distribution–¸and“mošMÞdication‘¹of“the“Mo˜died“V‘ÿeersion“to“who˜ev²!er‘¹p˜ossesses“a“cop²!y“ofŽ¡‘'¿«it.‘ÝÝIn–¦faddition,“yš²!ou“m˜ust“do“these“things“in“the“MoMÞdied“V‘ÿeersion:ަ‘*òÄA.Ž‘=nUse–ípin“the“Title“Pš²!age“(and“on“the“co˜v˜ers,‘ÿ2if“an˜y)“a“title“distinct“from“that“of“theŽ¡‘=nDoMÞcumenš²!t,‘+and–ˆfrom“those“of“previous“v˜ersions‘‡(whic˜h“should,‘+if“there“w˜ere“an˜y‘ÿe,ŽŽŒ‹>`Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td62ŽŽŽ ƒ33 ý ÌÍ‘=nbšMÞe–Âølisted“in“the“History‘Â÷section“of“the“Do˜cumenš²!t).‘3“Y‘ÿeou“ma˜y‘Â÷use“the“same“title“asޤ
33‘=na–¦fprevious“vš²!ersion“if“the“original“publisher“of“that“v˜ersion“giv˜es“pMÞermission.Ž©€‘+gB.Ž‘=nList–ª\on“the“Title›ª[P²!age,‘«Zas“authors,‘«Yone“or“more“pMÞersons˜or“en²!tities“respMÞonsible“forŽ¡‘=nauthorship–"of›"the“moMÞdications“in˜the“MoMÞdied˜V‘ÿeersion,‘<|together“with“at˜least“v²!eŽ¡‘=nof–߸the“principal“authors“of“the“DoMÞcumenš²!t“(all“of“its“principal“authors,‘uif“it“has“few˜erŽ¡‘=nthan–¦fvš²!e),“unless“they“release“y˜ou“from“this“requiremen˜t.ŽŸ€‘+@¢C.Ž‘=nState–±Óon›±Òthe“Title˜page“the˜name“of˜the“publisher˜of“the˜MoMÞdied“V‘ÿeersion,‘´­as“theŽ¡‘=npublisher.ަ‘*ËÕD.Ž‘=nPreservš²!e–¦fall“the“cop˜yrigh˜t“notices“of“the“DoMÞcumen˜t.ަ‘+µoE.Ž‘=nAdd–Äean›Ädappropriate“cop•²!yrigh“t˜notice‘Äefor˜y“our‘ÄemoMÞdications˜adjacen“t–Äeto˜the“otherŽ¡‘=ncop•²!yrigh“t‘¦fnotices.ŽŸ€‘,LF.Ž‘=nInclude,›hSimmediately–XÎafter“the“cop•²!yrigh“t–XÎnotices,˜a“license“notice“giving“the“publicŽ¡‘=npMÞermission–ïËto›ïÊuse“the˜MoMÞdied“V‘ÿeersion“under˜the“terms˜of“this“License,‘Pin˜the“formŽ¡‘=nshoš²!wn–¦fin“the“Addendum“bMÞelo˜w.ަ‘*‘nG.Ž‘=nPreserv²!e–¼min›¼lthat“license˜notice“the˜full“lists˜of“In•²!v‘ÿdDarian“t˜Sections–¼mand˜required“Co•²!v“erŽ¡‘=nT‘ÿeexts–¦fgivš²!en“in“the“DoMÞcumen˜t's“license“notice.ަ‘*òÄH.Ž‘=nInclude–¦fan“unaltered“cop²!y“of“this“License.ŽŸ€‘/4çI.Ž‘=nPreservš²!e–Ú†the‘Ú‡section“En˜titled‘Ú‡\History",‘çŽPreserv˜e“its›Ú‡Title,‘çŽand“add˜to“it˜an“itemŽ¡‘=nstating–_at›_least“the˜title,–mQy²!ear,“new˜authors,“and–_publisher˜of“the˜MoMÞdied“V‘ÿeersionŽ¡‘=nas–ÄXgivš²!en“on‘ÄWthe“Title“P˜age.‘7³If‘ÄWthere“is“no“section“En˜titled“\History"‘ÄWin“the“DoMÞcu-Ž¡‘=nmenš²!t,‘O#create‘-eone–-dstating“the“title,‘O$y˜ear,–O#authors,“and‘-epublisher–-dof“the“DoMÞcumen˜tŽ¡‘=nas–Wgivš²!en“on“its“Title“P˜age,‘ƒFthen“add“an“item“describing“the“MoMÞdied“V‘ÿeersion“asŽ¡‘=nstated–¦fin“the“previous“sen²!tence.ަ‘-ˆ¢J.Ž‘=nPreservš²!e–æthe“net˜w˜ork“loMÞcation,‘õúif“an˜y‘ÿe,‘õúgiv˜en“in“the“DoMÞcumen˜t‘æfor“public“access“toŽ¡‘=na–½…T‘ÿeransparenš²!t“cop˜y‘½†of“the“DoMÞcumen˜t,‘ÃMand“lik˜ewise“the“net˜w˜ork‘½†loMÞcations“giv˜en“inŽ¡‘=nthe–Í„DoMÞcumenš²!t‘̓for“previous“v˜ersions‘̓it“w˜as“based“on.‘S6These‘̓ma˜y“bMÞe“placed‘̓in“theŽ¡‘=n\History"–8section.‘¦ÎY‘ÿeou›9ma²!y“omit˜a“net•²!w“ork–8loMÞcation˜for“a˜w²!ork“that˜w²!as“publishedŽ¡‘=nat–Kleast“four‘Ky²!ears“bšMÞefore“the“Do˜cumen²!t“itself,‘t@or“if“the“original‘Kpublisher“of“theŽ¡‘=nvš²!ersion–¦fit“refers“to“giv˜es“pMÞermission.ަ‘*¤åK.Ž‘=nF‘ÿeor–Ùranš²!y“section“En˜titled“\Ac˜kno˜wledgemen˜ts"“or“\Dedications",‘oPreserv˜e“the“TitleŽ¡‘=nof›/Rthe–/Qsection,‘G#and“preserv²!e˜in˜the“section˜all˜the“substance˜and“tone˜of˜eac²!h“of˜theŽ¡‘=ncon•²!tributor›¦fac“kno“wledgemen“ts˜and/or˜dedications˜giv“en˜therein.ަ‘,Q*L.Ž‘=nPreservš²!e–?Ôall‘?Óthe“In˜v‘ÿdDarian˜t›?ÓSections“of˜the“DoMÞcumen²!t,‘f/unaltered˜in“their˜text“andŽ¡‘=nin›PÜtheir–PÝtitles.‘Ý@Section“n•²!um“bMÞers˜or‘PÝthe˜equiv‘ÿdDalen“t–PÝare˜not“considered˜part“of˜theŽ¡‘=nsection‘¦ftitles.ŽŸ€‘)M.Ž‘=nDelete–°5anš²!y“section“En˜titled‘°4\Endorsemen˜ts".‘ûJSuc˜h“a“section‘°4ma˜y“not“bMÞe“includedŽ¡‘=nin–¦fthe“MoMÞdied“V‘ÿeersion.ަ‘*òÄN.Ž‘=nDo–g!not›g"retitle“an²!y˜existing“section“to˜bMÞe“Enš²!titled“\Endorsemen˜ts"›g"or“to˜con
ict“inŽ¡‘=ntitle–¦fwith“anš²!y“In˜v‘ÿdDarian˜t“Section.ަ‘*¤åO.Ž‘=nPreserv•²!e›¦fan“y˜W‘ÿearran“t“y˜Disclaimers.ŽŸÌΑ'¿«If–Øthe›×MoMÞdied“V‘ÿeersion˜includes“new˜fron²!t-matter“sections˜or“appMÞendices˜that“qualifyŽ¡‘'¿«as–XSecondary›X	Sections“and“con²!tain“no˜material“copied“from˜the“DoMÞcumen•²!t,‘g´y“ou˜ma“y‘XatŽ¡‘'¿«y²!our–ãkoption›ãldesignate“some˜or“all“of˜these“sections˜as“in•²!v‘ÿdDarian“t.‘”íT‘ÿeo˜do–ãkthis,‘ò­add“theirŽŽŒ‹?rPŸò‘GáUnits‘¦fCon•²!v“ersion’Td63ŽŽŽ ƒ33 ý ÌÍ‘'¿«titles–@«to“the“list›@¬of“In•²!v‘ÿdDarian“t–@«Sections“in“the“MoMÞdied“V‘ÿeersion's“license˜notice.‘¬¬Theseޤ
33‘'¿«titles–¦fmš²!ust“bMÞe“distinct“from“an˜y“other“section“titles.Ž©(ö‘'¿«Y‘ÿeou–pmaš²!y‘qadd“a“section“En˜titled‘q\Endorsemen˜ts",‘s²pro˜vided“it“con˜tains‘qnothing“butŽ¡‘'¿«endorsemen•²!ts›‘of‘‘y“our˜MoMÞdied˜V‘ÿeersion˜b“y‘‘v‘ÿdDarious˜parties|for˜example,‘•Zstatemen“ts˜ofŽ¡‘'¿«pšMÞeer–D
review“or‘Dthat“the“text“has“b˜een‘Dappro•²!v“ed›D
b“y˜an˜organization‘Das˜the˜authoritativ“eŽ¡‘'¿«denition–¦fof“a“standard.ŽŸ(÷‘'¿«Y‘ÿeou–f,ma²!y›f-add“a˜passage“of˜up“to˜vš²!e“w˜ords›f-as“a˜F›ÿeron•²!t-Co“v“er–f,T˜ext,‘sand›f-a“passage˜of“upŽ¡‘'¿«to–@25“wš²!ords‘@Žas“a“Bac˜k-Co˜v˜er“T‘ÿeext,‘Tìto›@Žthe“end“of“the˜list“of“Co•²!v“er–@T‘ÿeexts˜in“the“MoMÞdiedŽ¡‘'¿«V›ÿeersion.‘Õ+Only–N+one‘N*passage“of“F˜ron•²!t-Co“v“er‘N*T˜ext–N+and“one‘N*of“Bac•²!k-Co“v“er‘N+T˜ext‘N*ma“y‘N+bMÞeŽ¡‘'¿«added–NÁbš²!y“(or“through“arrangemen˜ts“made“b˜y)‘NÂan˜y“one“en˜tit˜y‘ÿe.‘À¦If“the“DoMÞcumen˜t“alreadyŽ¡‘'¿«includes›Éa‘Èco•²!v“er˜text–Èfor˜the˜same“co•²!v“er,‘/!previously˜added˜b“y‘Èy“ou˜or‘Èb“y˜arrangemen“tŽ¡‘'¿«made–:Çbš²!y“the“same“en˜tit˜y“y˜ou“are“acting“on“bMÞehalf“of,‘_ßy˜ou“ma˜y‘:Ènot“add“another;‘„÷butŽ¡‘'¿«y•²!ou›)ma“y˜replace–*the˜old˜one,‘2on˜explicit˜pMÞermission˜from˜the“previous˜publisher˜thatŽ¡‘'¿«added–¦fthe“old“one.ަ‘'¿«The–^author(s)›]and“publisher(s)˜of“the“DoMÞcumen²!t˜do“not“b²!y˜this“License˜giv²!e“pMÞermissionŽ¡‘'¿«to–¤juse“their›¤knames“for“publicit²!y“for“or˜to“assert“or“imply“endorsemen²!t˜of“an²!y“MoMÞdiedŽ¡‘'¿«V‘ÿeersion.ŽŸ(÷‘-5.Ž‘'¿«COMBINING‘¦fDOCUMENTSަ‘'¿«Y‘ÿeou›¦Çma•²!y‘¦Ècom“bine˜the˜DoMÞcumen“t–¦Èwith˜other“doMÞcumen²!ts˜released˜under“this˜License,Ž¡‘'¿«under–—sthe“terms›—tdened“in“section“4˜abšMÞo•²!v“e–—sfor“mo˜died“v•²!ersions,‘Ó·pro“vided–—sthat“y²!ouŽ¡‘'¿«include–	in›	the“com²!bination“all“of˜the“In•²!v‘ÿdDarian“t–	Sections˜of“all“of“the˜original“doMÞcumen²!ts,Ž¡‘'¿«unmoMÞdied,‘L3and–5¦list›5§them“all˜as“In•²!v‘ÿdDarian“t–5¦Sections˜of“yš²!our“com˜bined‘5§w˜ork“in‘5§its“licenseŽ¡‘'¿«notice,–¦fand“that“yš²!ou“preserv˜e“all“their“W‘ÿearran˜t˜y“Disclaimers.ަ‘'¿«The–¢@comš²!bined“w˜ork“need“only“con˜tain“one“cop˜y“of“this“License,‘£and“m˜ultiple“iden˜ticalŽ¡‘'¿«In•²!v‘ÿdDarian“t–æÝSections“maš²!y“bMÞe“replaced“with“a“single‘æÜcop˜y‘ÿe.‘ŸBIf“there“are“m˜ultiple“In˜v‘ÿdDarian˜tŽ¡‘'¿«Sections–6Çwith›6Èthe“same˜name“but˜dierenš²!t“con˜ten˜ts,‘Mmak˜e›6Èthe“title˜of“eac•²!h˜suc“h‘6ÇsectionŽ¡‘'¿«unique–bb²!y›cadding“at˜the“end˜of“it,‘1"in“paren²!theses,‘1!the˜name“of˜the“original˜author“orŽ¡‘'¿«publisher–of“that›~section“if“kno²!wn,‘!­or“else“a“unique˜n•²!um“bMÞer.‘¦‘Mak“e˜the–same“adjustmen²!tŽ¡‘'¿«to–î‡the›î†section“titles“in˜the“list“of˜In•²!v‘ÿdDarian“t–î‡Sections“in“the˜license“notice“of˜the“com²!binedŽ¡‘'¿«w²!ork.ŽŸ(÷‘'¿«In›ö"the‘ö#com•²!bination,‘Jy“ou˜m“ust‘ö#com“bine˜an“y‘ö#sections˜En“titled–ö#\History"˜in“the˜v‘ÿdDari-Ž¡‘'¿«ous–ÜÛoriginal›ÜÚdoMÞcumen²!ts,‘êxforming“one˜section“Enš²!titled“\History";‘ølik˜ewise‘ÜÚcom˜bine“an˜yŽ¡‘'¿«sections–ÑEnš²!titled“\Ac˜kno˜wledgemen˜ts",‘Û¿and“an˜y“sections“En˜titled“\Dedications".‘]çY‘ÿeouŽ¡‘'¿«mš²!ust–¦fdelete“all“sections“En˜titled“\Endorsemen˜ts."ަ‘-6.Ž‘'¿«COLLECTIONS–¦fOF“DOCUMENTSŽŸ(÷‘'¿«Y‘ÿeou–Ò¤maš²!y“mak˜e“a“collection“consisting“of‘Ò£the“DoMÞcumen˜t“and“other“doMÞcumen˜ts“releasedŽ¡‘'¿«under–this“License,‘sÚand“replace“the“individual“copies“of“this“License“in“the“v‘ÿdDariousŽ¡‘'¿«doMÞcumenš²!ts–Dwith‘Ca“single“cop˜y›Cthat“is˜included“in“the˜collection,‘y»pro²!vided˜that“y²!ouŽ¡‘'¿«follo²!w–t”the›t•rules“of˜this“License˜for“v•²!erbatim˜cop“ying‘t”of˜eac“h–t”of˜the“doMÞcumen²!ts˜in“allŽ¡‘'¿«other‘¦frespMÞects.ަ‘'¿«Y‘ÿeou–Æ=maš²!y“extract“a“single“doMÞcumen˜t“from“suc˜h“a“collection,‘Î2and“distribute“it“individu-Ž¡‘'¿«ally–4under›4this“License,‘Wnpro•²!vided˜y“ou–4insert“a“cop²!y˜of“this“License“in²!to˜the“extractedŽ¡‘'¿«doMÞcumen•²!t,‘ùøand›éBfollo“w–éAthis˜License“in“all˜other“respMÞects˜regarding“v•²!erbatim˜cop“ying‘éAofŽ¡‘'¿«that‘¦fdoMÞcumen²!t.ŽŽŒ‹@‚Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td64ŽŽŽ ƒ33 ý ÌÍ‘-7.Ž‘'¿«Aš²!GGREGA‘ÿeTION–¦fWITH“INDEPENDENT“W˜ORKSŽ©(ö‘'¿«A‘]Æcompilation–]Øof“the“DoMÞcumenš²!t‘]Ùor“its“deriv‘ÿdDativ˜es“with“other‘]Ùseparate“and“indepMÞenden˜tޤ
33‘'¿«doMÞcumen•²!ts›ÿhor‘ÿiw“orks,‘©in˜or˜on‘ÿia˜v“olume–ÿiof˜a“storage˜or˜distribution“medium,‘©is˜calledŽ¡‘'¿«an–\aggregate"“if“the›
cop•²!yrigh“t–resulting“from“the“compilation“is“not˜used“to“limit“theŽ¡‘'¿«legal–1	righ²!ts›1of“the“compilation's˜users“bMÞey²!ond˜what“the“individual˜w²!orks“pMÞermit.‘¶¾WhenŽ¡‘'¿«the–žDošMÞcumen²!t“is“included‘žin“an“aggregate,‘Ûðthis“License“do˜es“not‘žapply“to“the“otherŽ¡‘'¿«wš²!orks–¦fin“the“aggregate“whic˜h“are“not“themselv˜es“deriv‘ÿdDativ˜e“w˜orks“of“the“DoMÞcumen˜t.ŽŸ(÷‘'¿«If–»Vthe“Co•²!v“er–»VT‘ÿeext“requiremenš²!t“of“section“3‘»Uis“applicable“to“these“copies“of“the“DoMÞcumen˜t,Ž¡‘'¿«then–°Dif›°Ethe“DoMÞcumen²!t“is“less˜than“one“half“of˜the“en²!tire“aggregate,‘á~the˜DoMÞcumenš²!t's“Co˜v˜erŽ¡‘'¿«T‘ÿeexts–0maš²!y“bMÞe“placed“on“co˜v˜ers“that“brac˜k˜et“the“DoMÞcumen˜t“within“the‘0aggregate,‘G°or“theŽ¡‘'¿«electronic–5qequiv‘ÿdDalenš²!t‘5pof“co˜v˜ers›5pif“the˜DoMÞcumen²!t“is“in˜electronic“form.‘ŠüOtherwise“theyŽ¡‘'¿«mš²!ust–¦fappMÞear“on“prin˜ted“co˜v˜ers“that“brac˜k˜et“the“whole“aggregate.ަ‘-8.Ž‘'¿«TRANSLA‘ÿeTIONŽŸ(÷‘'¿«T‘ÿeranslation–̯is›̰considered“a˜kind“of“moMÞdication,‘Aso˜yš²!ou“ma˜y‘̰distribute“translationsŽ¡‘'¿«of–Tþthe›TýDoMÞcumen²!t“under˜the“terms˜of“section“4.‘	é£Replacing“In•²!v‘ÿdDarian“t˜Sections‘TþwithŽ¡‘'¿«translations–v²requires‘v³spšMÞecial“p˜ermission“from“their›v³cop•²!yrigh“t‘v²holders,‘êÄbut˜y“ou‘v²ma“yŽ¡‘'¿«include–ðktranslations“of“some›ðjor“all“In•²!v‘ÿdDarian“t–ðkSections“in“addition˜to“the“original“v²!ersionsŽ¡‘'¿«of›Æthese‘ÆIn•²!v‘ÿdDarian“t˜Sections.‘=Y‘ÿeou‘Æma“y˜include–Æa˜translation˜of“this˜License,‘Î
and“all˜theŽ¡‘'¿«license–òúnotices›òûin“the“DoMÞcumen•²!t,‘Fand˜an“y›òúW‘ÿearran“t“y˜Disclaimers,‘Fpro“vided‘òûthat˜y“ouŽ¡‘'¿«also–Ïinclude›Îÿthe“original“English˜v²!ersion“of“this“License˜and“the“original˜v²!ersions“ofŽ¡‘'¿«those–notices“and“disclaimers.‘5åIn“case“of“a“disagreemen•²!t‘bMÞet“w“een–the“translation“andŽ¡‘'¿«the–:•original›:”v²!ersion“of˜this“License˜or“a˜notice“or˜disclaimer,‘_ the“original˜v²!ersion“willŽ¡‘'¿«prev‘ÿdDail.ަ‘'¿«If–pèa“section“in‘péthe“DoMÞcumenš²!t“is“En˜titled“\Ac˜kno˜wledgemen˜ts",–{›\Dedications",“or‘pè\His-Ž¡‘'¿«tory",‘A¿the–(•requiremenš²!t“(section“4)“to“Preserv˜e“its“Title“(section“1)“will“t˜ypically“requireŽ¡‘'¿«c²!hanging–¦fthe“actual“title.ަ‘-9.Ž‘'¿«TERMINA‘ÿeTIONŽŸ(÷‘'¿«Y‘ÿeou–”maš²!y“not‘”cop˜y–ÿe,›—¾moMÞdify“,˜sublicense,˜or–”distribute“the“DoMÞcumen²!t‘”except“as“expresslyŽ¡‘'¿«proš²!vided–¡ðunder‘¡ñthis“License.‘Ð|An˜y›¡ñattempt“otherwise˜to“cop²!y–ÿe,›àÓmoMÞdify“,‘àÒsublicense,˜orŽ¡‘'¿«distribute–¦fit“is“vš²!oid,“and“will“automatically“terminate“y˜our“righ˜ts“under“this“License.ަ‘'¿«Ho•²!w“ev“er,‘ó·if›äAy“ou–ä@cease˜all“violation˜of“this“License,‘ó¸then“y²!our˜license“from˜a“particularŽ¡‘'¿«cop•²!yrigh“t–Jholder“is‘Jreinstated“(a)“proš²!visionally‘ÿe,‘sšunless“and“un˜til‘Jthe“cop˜yrigh˜t“holderŽ¡‘'¿«explicitly–á_and“nally“terminates“yš²!our“license,‘0and“(b)“pMÞermanen˜tly‘ÿe,‘0if“the“cop˜yrigh˜tŽ¡‘'¿«holder–"fails“to“notify“yš²!ou“of“the“violation‘"b˜y“some“reasonable“means“prior“to“60“da˜ysŽ¡‘'¿«after–¦fthe“cessation.ŽŸ(÷‘'¿«Moreo•²!v“er,‘Ï8y“our–Ç
license›Çfrom“a˜particular˜cop•²!yrigh“t–Ç
holder˜is˜reinstated“pMÞermanen²!tly˜ifŽ¡‘'¿«the›V`cop•²!yrigh“t˜holder‘Vanoties˜y“ou˜of˜the˜violation‘Vab“y˜some˜reasonable˜means,‘fbthis˜is˜theŽ¡‘'¿«rst–Wtime“y•²!ou‘Wha“v“e›Wreceiv“ed˜notice˜of˜violation‘Wof˜this˜License˜(for˜an“y‘Ww“ork)˜from˜thatŽ¡‘'¿«cop•²!yrigh“t–Õúholder,‘áÞand“yš²!ou“cure“the“violation“prior‘Õùto“30“da˜ys“after“y˜our‘Õùreceipt“of“theŽ¡‘'¿«notice.ަ‘'¿«T‘ÿeermination–Nuof“yš²!our“righ˜ts“under“this“section‘NtdoMÞes“not“terminate“the“licenses“of“partiesŽ¡‘'¿«who›•qha•²!v“e˜receiv“ed˜copies˜or˜righ“ts˜from˜y“ou‘•punder˜this˜License.‘ªþIf˜y“our˜righ“ts˜ha“v“eŽ¡‘'¿«bšMÞeen–Îterminated“and“not‘Íp˜ermanenš²!tly“reinstated,‘:¹receipt“of“a“cop˜y“of“some‘Íor“all“of“theŽ¡‘'¿«same–¦fmaterial“doMÞes“not“givš²!e“y˜ou“an˜y“righ˜ts“to“use“it.ŽŽŒ‹A“ÔŸò‘GáUnits‘¦fCon•²!v“ersion’Td65ŽŽŽ ƒ33 ý ÌÍ‘‡“10.Ž‘'¿«FUTURE–¦fREVISIONS“OF“THIS“LICENSEŽ©33‘'¿«The›ÿaF‘ÿeree‘ÿbSoft•²!w“are˜F‘ÿeoundation‘ÿbma“y˜publish–ÿbnew,‘UŸrevised“v²!ersions˜of“the˜GNU‘ÿ	F‘ÿereeޤ
33‘'¿«DoMÞcumenš²!tation–ÙâLicense‘Ùãfrom“time“to“time.‘xRSuc˜h“new‘Ùãv˜ersions“will“bMÞe“similar‘Ùãin“spiritŽ¡‘'¿«to– æthe“presenš²!t“v˜ersion,‘?…but“ma˜y“dier“in“detail“to“address‘ ånew“problems“or“concerns.Ž¡‘'¿«See‘¦fâhttp://www.gnu.org/copyleft/á.ަ‘'¿«Eac•²!h›ˆ×v“ersion˜of˜the˜License˜is˜giv“en˜a˜distinguishing˜v“ersion˜n“um“b•MÞer.‘ÔIf˜the˜Do“cumen²!tŽ¡‘'¿«spšMÞecies–r”that“a“particular“n•²!um“b˜ered›r”v“ersion˜of˜this˜License˜\or˜an“y˜later˜v“ersion"Ž¡‘'¿«applies‘æQto–æPit,‘öLyš²!ou“ha˜v˜e–æQthe“option‘æPof“follo˜wing“the“terms›æPand“conditions“either˜of“thatŽ¡‘'¿«spMÞecied–Žvš²!ersion“or“of“an˜y“later“v˜ersion“that‘Žhas“bMÞeen“published“(not“as“a“draft)“b˜yŽ¡‘'¿«the›î!F‘ÿeree‘î"Soft•²!w“are˜F‘ÿeoundation.‘µIf‘î"the˜DošMÞcumen“t‘î"do˜es–î!not“sp˜ecify›î"a“v•²!ersion˜n“um“bMÞer‘î!ofŽ¡‘'¿«this–$œLicense,‘D)yš²!ou“ma˜y“c˜hoMÞose‘$an˜y“v˜ersion“ev˜er“published“(not“as“a“draft)“b˜y“the“F‘ÿereeŽ¡‘'¿«Soft•²!w“are–ÖUF‘ÿeoundation.‘m©If“the“DošMÞcumen²!t“sp˜ecies“that“a“proš²!xy‘ÖTcan“decide“whic˜h“futureŽ¡‘'¿«v²!ersions–é)of›é*this“License˜can“bMÞe“used,‘ùÚthat˜proš²!xy's“public“statemen˜t›é*of“acceptance˜of“aŽ¡‘'¿«v•²!ersion›¦fpMÞermanen“tly˜authorizes˜y“ou˜to˜c“hoMÞose˜that˜v“ersion˜for˜the˜DoMÞcumen“t.ަ‘‡“11.Ž‘'¿«RELICENSINGަ‘'¿«\Massivš²!e–{"Multiauthor‘{#CollabMÞoration“Site"“(or“\MMC‘zìSite")“means“an˜y‘{#W‘ÿeorld“WideŽ¡‘'¿«W‘ÿeeb–Leservš²!er“that“publishes“cop˜yrigh˜table‘Lfw˜orks“and“also“pro˜vides“prominen˜t“facilitiesŽ¡‘'¿«for›M an²!yb•MÞo“dy˜to˜edit˜those˜w•²!orks.‘ÀEA‘MŠpublic˜wiki˜that‘MŸan“yb•MÞo“dy˜can˜edit˜is˜an˜example˜ofŽ¡‘'¿«sucš²!h–Ya“serv˜er.‘µA‘?\Massiv˜e‘XMultiauthor“CollabMÞoration"“(or“\MMC")‘>con˜tained“in“theŽ¡‘'¿«site–¦fmeans“anš²!y“set“of“cop˜yrigh˜table“w˜orks“th˜us“published“on“the“MMC“site.ަ‘'¿«\CC-BY-SA"‘8¤means–8Éthe‘8ÊCreativš²!e“Commons“A˜ttribution-Share‘8ÊAlik˜e“3.0‘8Êlicense“pub-Ž¡‘'¿«lished›8b•²!y‘8Creativ“e˜Commons–8CorpMÞoration,‘N(a˜not-for-prot“corpMÞoration˜with“a˜principalŽ¡‘'¿«place–òof“business“in“San“F‘ÿerancisco,‘7£California,‘7¢as“wš²!ell“as“future“cop˜yleft“v˜ersions“of“thatŽ¡‘'¿«license–¦fpublished“b²!y“that“same“organization.ަ‘'¿«\IncorpšMÞorate"–­zmeans“to“publish‘­yor“republish“a“Do˜cumen²!t,›¯?in“whole“or‘­yin“part,˜as“partŽ¡‘'¿«of–¦fanother“DoMÞcumen²!t.ަ‘'¿«An–&\MMC‘&‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘´¬33Ž¡’óáðÉ--minus–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬34Ž¡’óáðÉ--newstar–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬34Ž¡’óáðÉ--oldstar–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬34Ž¡’óáðÉ--one-line–T¬(option“for“Éunits¬)‘x—‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘9t¬36Ž¡’óáðÉ--output-format–T¬(option“for“Éunits¬)‘ýð‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¾Í¬33Ž¡’óáðÉ--product–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬34Ž¡’óáðÉ--quiet–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬36Ž¡’óáðÉ--silent–T¬(option“for“Éunits¬)…‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Èb¬36Ž¡’óáðÉ--strict–T¬(option“for“Éunits¬)…‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Èb¬36Ž¡’óáðÉ--terse–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬36Ž¡’óáðÉ--units–T¬(option“for“Éunits¬)V‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘õ¬35Ž¡’óáðÉ--unitsfile–T¬(option“for“Éunits¬)‘*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘êá¬35Ž¡’óáðÉ--verbose–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬35ŽŽŽŽŒ‹C²“Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td67ŽŽŽ ƒ33 ý ÌÍ‘GÉ--verbose-check–T¬(option“for“Éunits¬)‘ýð‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¾Í¬32ޤ
õÌ‘GÉ--version–T¬(option“for“Éunits¬)‘Ç*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆ¬35Ž©
õË‘GÉ-1–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬36Ž¡‘GÉ-c–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬32ަ‘GÉ-d–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬32Ž¡‘GÉ-e–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬33Ž¡‘GÉ-f–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬33ަ‘GÉ-h–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬34Ž¡‘GÉ-H–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬34ަ‘GÉ-I–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬35Ž¡‘GÉ-l–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬35Ž¡‘GÉ-L–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬33ަ‘GÉ-m–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬34Ž¡‘GÉ-o–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬33Ž¡‘GÉ-p–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬34ަ‘GÉ-q–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬36Ž¡‘GÉ-s–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬36ަ‘GÉ-t–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬36Ž¡‘GÉ-u–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬35Ž¡‘GÉ-U–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬35ަ‘GÉ-v–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬35Ž¡‘GÉ-V–T¬(option“for“Éunits¬)‘Þ÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÔ¬35ŽŸ(R£‘šßëc?ޤd9‘G¬`É?¬'–Tfor“unit“completion“with“Éreadline‘ƒ'‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘D¬55ަ‘G`É?¬'–Tto“sho¾9w“conformable“units‘ýB‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¾¬3ŽŸ&(t‘½4‰£ÙÜ+ŽŽ¡‘G`É_¬'–Tto“use“result“of“previous“con•¾9v“ersion=ã‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þÀ¬12ŽŸ(Ÿp‘šßól!",šff
cmsy10ëljŽ¡‘G¬`É|¬'‘TopAÇerator‘!‡‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘âd¬8ŽŸ'³ë‘šßëcAŽ¡‘G¬abrasiv¾9e–Tgrit“size‘¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~ì¬20ŽŸ
õÌ‘Gaddition–Tof“units‘-†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘îb¬10ަ‘Gadditional–Tunits“data“les‘‰+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘J¬40ŽŸ&(t‘šßëcBŽ¡‘G¬bac•¾9kw“ards‘Tcompatibilit“y‘ð0‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘±
¬16ŽŸ
õÌ‘GBritish–TImpAÇerial“measure‘
q‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÎN¬7ަ‘Gbuilt-in‘Tfunctions‘òÛ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³·¬11ŽŽ ý ÌÍ’ókˆëcCŽŸÜ'’óáð¬CGS–TUnits“Systems‘÷	‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘·æ¬27ޤ{’óáðCGS–Tunits,“prompt“prex‘aY‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘"5¬30Ž¡’óáðCGS–Tunits,“spAÇecifying‘S‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ß/¬26Ž¡’óáðCGS–Tunits,“using8Œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ùh¬25Ž¡’óáðcircle,–Tarea“of‘o©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘0…¬20Ž¡’óáðcommand,–T`É!¬'“to“indicate“primitiv¾9e“units6ô‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘÷Ь41Ž¡’óáðcommand,‘T`É!endlocale¬'‘“>‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘T¬49Ž©z’óáðcommand,‘T`É!endutf8¬'‘0d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñA¬54Ž¡’óáðcommand,‘T`É!endvar¬'‘~÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘?Ô¬49Ž¡’óáðcommand,‘T`É!include¬'‘0d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñA¬40Ž¡’óáðcommand,‘T`É!locale¬'‘~÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘?Ô¬49Ž¡’óáðcommand,‘T`É!message¬'‘0d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñA¬49Ž¡’óáðcommand,‘T`É!set¬'\x‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U¬49Ž¡’óáðcommand,‘T`É!unitlist¬'‘áÑ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¢®¬46Ž¡’óáðcommand,‘T`É!utf8¬'
å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ά54Ž¡’óáðcommand,‘T`É!var¬'\x‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U¬49Ž¡’óáðcommand,‘T`É!varnot¬'‘~÷‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘?Ô¬49Ž¡’óáðcommand-line‘Toptions‘ˆ£‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘I¬31Ž¡’óáðcommand-line–Tunit“con•¾9v“ersion‘)ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘êÕ¬4Ž¡’óáðcommands–Tin“units“database‘Ä^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…:¬57Ž¡’óáðcompatibilit¾9y‘Ø‹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘™h¬16Ž¡’óáðcompatibilitš¾9y–Twith“earlier“v˜ersions‘ºó‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘{Ь16Ž¡’óáðcompletion,–Tunit,“using“`É?¬'“(Éreadline“¬only)‘û¯‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¼Œ¬55Ž¡’óáðconformable–Tunits,“`É?¬'“to“sho¾9w‘´_‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘u<¬3ަ’óáðConsumer–TPrice“Index‘üè‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘½Å¬18Ž¡’óáðCPI‘éB‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ª¬18Ž¡’óáðCPI,‘TupAÇdating‘†˜‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Gt¬55Ž¡’óáðcurrency‘ÿ:«,‘TupAÇdating‘쌑ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘­i¬55ŽŸ*àM’ókˆëcDŽŸÜ'’óáð¬Darcy{W‘ÿ:«eisbac¾9h‘Tequation‘øè‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¹Å¬14Ž¡’óáðdata‘Tles‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Åñ¬53Ž¡’óáðdata–Tles,“additional‘¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P›¬40Ž¡’óáðdatabase–Tsyn¾9tax“summaryxБÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘9­¬57Ž¡’óáðdening–Tnonlinear“units‘JÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸¬42Ž¡’óáðdening–Tpiecewise“linear“units‘,‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Â	¬44Ž¡’óáðdening‘Tprexes‘îÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¯¸¬41Ž¡’óáðdening–Tunit“list“aliases‘@^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬46ަ’óáðdening‘Tunits‘1‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Í
¬41Ž¡’óáðdening–Tunits“with“`-'‘Mø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ô¬17Ž¡’óáðdierences–Tof“units‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Âì¬10Ž¡’óáðdimensionless‘Tunits2®‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ó‹¬3Ž¡’óáðdimensionless–Tunits,“dening‘¼ç‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘}ì41Ž¡’óáðdivision–Tof“n•¾9um“bAÇers‘§d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘h@¬8Ž¡’óáðdivision–Tof“units‘‚€‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘C]¬8Ž¡’óáðdomain,–Tnonlinear“unit“denitions‘	‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Éñ¬43ŽŽŽŽŒ‹DÜ>Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td68ŽŽŽ ƒ33 ý ÌÍ‘šßëcEŽŸr­‘G¬en•¾9vironmen“t›TdepAÇenden“t˜denitions‘퇑ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘®d¬49ޤ
§á‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“HOME‘Áã‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‚À¬52Ž¡‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“LANG‘²š‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘sv¬52Ž©
§â‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“LC‘¥Æ‰c4ÆgŽ‘óCTYPE‘Ç"‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‡ÿ¬52Ž¡‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“MYUNITSFILEyç‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘:ì40,‘T52Ž¡‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“P‘ÿ:«A¾9GER‘û}‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¼Z¬52Ž¡‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITS‘¥Æ‰c4ÆgŽ‘óENGLISH‘m‹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘.g¬53ަ‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITS‘¥Æ‰c4ÆgŽ‘óSYSTEM‘ás‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¢P¬53Ž¡‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITSFILE‘>à‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÿ¼¬53Ž¡‘Gen•¾9vironmen“t–Tv‘ÿ|rariable,“UNITSLOCALEMAPH©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘	…¬53Ž¡‘Gen•¾9vironmen“t‘Tv‘ÿ|rariables‘Ä2‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…¬52ަ‘Gexc¾9hange–Trates,“upAÇdating‘¥ù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘fÕ¬55Ž¡‘Gexp•AÇonen¾9t‘Top“eratorq‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÆM¬9ŽŸ!O±‘šßëcFŽŸr­‘G¬les,‘Tdata‘Êj‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‹F¬53Ž¡‘G
ags,–Toutput“formate†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&c¬47Ž¡‘Gformat–TspAÇecication,“output‘	†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Êc¬47Ž¡‘Gfractions,‘Tn¾9umerical‘H£‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘	¬8ަ‘Gfunctions–Tof“units‘‰œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Jy¬44Ž¡‘Gfunctions,–Tbuilt“in‘©ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘jÔ¬11Ž©!O±‘šßëcHŽŸr­‘G¬help‘7‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P¬3,‘T52Ž¡‘GHOME›Ten•¾9vironmen“t˜v‘ÿ|rariable‘üŽ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘½k¬52Ž¡‘Ghš¾9yphen–Tas“m˜ultiplication“opAÇerator‘j‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇG¬16ަ‘šßëcIŽŸr­‘G¬ImpAÇerial‘Tmeasure‘
C‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Î¬7Ž¡‘Ginclude‘Tles‘Éø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŠÕ¬41Ž©
§â‘Gincluding–Tadditional“units“data“les‘¹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Í•¬40Ž¡‘Gincompatible‘Tunits‘¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P›¬3Ž¡‘Gin•¾9teractiv“e‘Tuse‘­‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘mñ¬1Ž¡‘Gin¾9ternational‘Tmile‘0Œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ñi¬6ަ‘Gin•¾9ternational‘Ty“ard‘ªÅ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘k¢¬6Ž¡‘Gin•¾9v“oking‘Tunits†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Æc¬31ŽŸ!O±‘šßëcLŽŸr­‘G¬LANG›Ten•¾9vironmen“t˜v‘ÿ|rariable‘û}‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¼Y¬52Ž¡‘GLC‘¥Æ‰c4ÆgŽ‘óCTYPE›Ten•¾9vironmen“t˜v‘ÿ|rariable‘Í‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ª¬52Ž¡‘Glength–Tmeasure,“English“customary‘	Z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ê6¬6Ž¡‘Glength–Tmeasure,“UK‘¦U‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘g1¬6ަ‘Glinear‘Tin¾9terpAÇolationâ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Æ¿¬44Ž¡‘GloAÇcale‘°‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘p÷¬49Ž¡‘GÉlocale_map.txt‘¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά50Ž¡‘GloAÇcalization‘uá‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘6½¬49ަ‘Glog‘Tle‘Ðþ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‘Ú¬30Ž¡‘Glogging‘Tcalculations‘Ni‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘F¬30Ž¡‘GlogsGM‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘*¬11ŽŽ ý ÌÍ’ókˆëcMŽŸ
ÿ’óáð¬measure,‘TImpAÇerial‘Ä`‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…<¬7ޤ
‚›’óáðmile,‘Tin¾9ternational‘õá‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¶¾¬6Ž¡’óáðmin¾9us–T(`É-¬')“opAÇerator,“subtraction‘2˜‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘óu¬10Ž¡’óáðm¾9ultiplication–Tof“unitsGM‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘*¬8Ž¡’óáðm•¾9ultiplication,‘Th“yphen‘uo‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘6L¬16Ž¡’óáðMYUNITSFILE›Ten•¾9vironmen“t˜v‘ÿ|rariable‘ÂÊ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ƒ¦¬40,˜52ŽŸ@ë’ókˆëcNŽ©
ÿ’óáð¬Natural–Tunits,“using_ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ý¬29Ž¡’óáðnon-conformable‘Tunits#N‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ä*¬3Ž¡’óáðnon-in•¾9teractiv“e–Tunit“con•¾9v“ersion‘GÀ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘œ¬4ŽŸ
‚š’óáðnonlinear–Tunit“con•¾9v“ersions‘ º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘á–¬17,‘T42Ž¡’óáðnonlinear–Tunits,“deningù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÂÕ¬42Ž¡’óáðnonlinear–Tunits,“other‘H1‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘	¬19Ž¡’óáðn•¾9um“bAÇers–Tas“unitsWí‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ɬ11Ž¡’óáðn¾9umeric–Toutput“format‘Ë©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Œ…¬46Ž¡’óáðn¾9umerical‘Tfractions‘ƒN‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘D*¬8ŽŸBC’ókˆëcOަ’óáð¬opAÇerator‘Tprecedence‘¦U‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘g1¬8Ž¡’óáðopAÇerator,‘T(`É**¬')
Ÿ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Î|¬9Ž©
‚š’óáðopAÇerator,–Tcaret“(`É^¬')‘k‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ßH¬9Ž¡’óáðopAÇerator,–Thš¾9yphen“(`É-¬')“as“m˜ultiplication‘º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Á—¬16Ž¡’óáðopAÇerator,–Th¾9yphen“(`É-¬')“as“subtraction‘C‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ò ¬10Ž¡’óáðopAÇerator,–Tmin¾9us“(`É-¬')‘ú‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ºì¬10Ž¡’óáðopAÇerator,‘T`Éper¬'‘I¶‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘
“¬8Ž¡’óáðopAÇerator,–Tplus“(`É+¬')‘—e‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘XB¬10Ž¡’óáðopAÇerator,–Tslash“(`É/¬')‘V&‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¬8Ž¡’óáðopAÇerator,–Tsolidus“(`É/¬')‘—í‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Xʬ8Ž¡’óáðopAÇerator,‘Tspace 2‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘á¬8ަ’óáðopAÇerator,–Tstar“(`É*¬')‘Z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ì¬8Ž¡’óáðopAÇerator,–Tv¾9ertical“bar“(`É|¬')Vl‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘H¬8Ž¡’óáðopAÇerators‘«M‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘l*¬8Ž¡’óáðoutput–Teld“width©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ì…¬48Ž¡’óáðoutput‘Tformat‘öÄ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘·¡¬46Ž¡’óáðoutput–Tformat“
ags‘®i‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘oF¬47Ž¡’óáðoutput–Tformat“spAÇecicationD1‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¬47Ž¡’óáðoutput‘Tprecision‘ÎÛ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸¬48ŽŸ@ë’ókˆëcPŽŸ
ÿ’óáð¬P‘ÿ:«A•¾9GER›Ten“vironmen“t˜v‘ÿ|rariable‘6(‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘÷¬52ަ’óáðparen¾9theses‘dº‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘%–¬8,–T9,“10,“14,“41,“42Ž¡’óáð`Éper¬'‘TopAÇerator‘„a‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘E>¬8Ž¡’óáðpAÇersonal–Tunits“data“le‘ŸÖ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘`³¬40Ž¡’óáðpiecewise–Tlinear“units‘º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:ޑɖ¬44Ž¡’óáðplus–T(`É+¬')“opAÇerator‘àH‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¡%¬10Ž¡’óáðpAÇo•¾9w“ers‘¦Ü‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘g¸¬9Ž¡’óáðprecision,‘Toutput‘…ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘FÕ¬48Ž¡’óáðprexes‘)ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘êÕ¬7ަ’óáðprexes–Tand“expAÇonen¾9ts‘Ce‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘A¬9Ž¡’óáðprexes,–Tdenition“of‘…‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Eò¬41Ž¡’óáðprevious‘Tresult‘Þó‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ŸÏ¬12Ž¡’óáðprimitiv¾9e‘Tunits‘Ç¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆœ¬41Ž¡’óáðproAÇducts–Tof“unitsÖ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘@²¬8ŽŽŽŽŒ‹E'»Ÿò‘GáUnits‘¦fCon•²!v“ersion’Td69ŽŽŽ ƒ33Ÿµ’ ýë<;‘G¬prompt–Tprex“with“CGS“unitsZ=‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¬30ޤ:Å<‘šßëcQŽ©4Ô‘G¬quotien¾9ts–Tof“units‘ª‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘jë¬8Ž¡‘šßëcRަ‘G¬range,–Tnonlinear“unit“denitions‘Ä2‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…¬43ޤÞ=‘GÉreadline¬,–Tuse“with“Éunits‘+*‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ì¬55ŽŸÞ>‘GreciproAÇcal‘Tcon•¾9v“ersion‘À‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Äœ¬2Ž¡‘GroAÇots‘ð0‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘±
¬12Ž¡‘Grun¾9time‘Tv‘ÿ|rariables‘Ë¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Œœ¬14ŽŸ:"6‘šßëcSަ‘G¬scripting–Twith“Éunits‘Q‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P-¬36Ž¡‘GsetloAÇcale‘Tfunction‘M‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P*¬50Ž©Þ>‘Gslash–T(`É/¬')“opAÇerator‘Ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Q®¬8Ž¡‘Gsolidus–T(`É/¬')“opAÇerator‘Ò˜‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘“u¬8Ž¡‘Gsphere,–Tv¾9olume“of‘kN‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘,*¬20Ž¡‘Gsquare‘TroAÇots‘Å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†y¬12Ž¡‘Gstar–T(`É*¬')“opAÇerator‘”»‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U—¬8Ž¡‘GState–TPlane“CoAÇordinate“System,“US‘œw‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘]S¬6ަ‘Gstrict‘Tcon•¾9v“ersion‘怑ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘§]¬2Ž¡‘Gsubtraction–Tof“units‘$G‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘å$¬10Ž¡‘Gsums–Tand“dierences“of“units‘ôç‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘µÄ¬10Ž¡‘Gsums–Tof“units[	‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘å¬10,‘T21Ž¡‘Gsurv¾9ey–TfoAÇot,“US‘B‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘N¬6ަ‘Gsurv¾9ey–Tmeasure,“US‘AZ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘6¬6Ž¡‘Gsurv¾9ey–Tmile,“US‘	C‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ê¬6Ž¡‘Gsyn¾9tax–Tof“units“database‘Ä^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘…:¬57ŽŸ:Å<‘šßëcTŽŸ4Ô‘G¬tempAÇerature‘Tcon•¾9v“ersions‘e‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÄA¬17ŽŽ ýë<;’ókˆëcUŽŸ
ù’óáð¬Unico•AÇde‘Tsupp“ort‘*˜‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ët¬54ޤ
€¨’óáðunit–Tcompletion“using“`É?¬'“(Éreadline“¬only)‘=‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘@¬55Ž©
€§’óáðunit‘TdenitionsFÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸¬5Ž¡’óáðunit‘Texpressions‘™B‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Z¬8Ž¡’óáðunit–Texpressions,“complicatedC‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:ޑ֬14ަ’óáðunit–Tlist“aliases9´‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ú¬24Ž¡’óáðunit–Tlist“aliases,“dening‘³‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ƭ46ަ’óáðunit‘Tlists‘‚€‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘C]¬21Ž¡’óáðunit–Tname“completion‘ÐŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‘i¬55ަ’óáðunits–Tdata“le,“pAÇersonal‘e+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&¬40Ž¡’óáðunits–Tdata“les,“additional@H‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘$¬40ަ’óáðunits–Tdenitions,“adding@H‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘$¬41Ž¡’óáðunits–Tdenitions,“c¾9hangingd‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àA¬41ަ’óáðunits‘Tfunctions‘£d‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d@¬44Ž¡’óáðunits‘Tquotien¾9ts‘ÃÖ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘„²¬8ަ’óáðunits–Tsystems,“CGS‘Rò‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ά27Ž¡’óáðunits,–Tdenition“of‘°¢‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘q¬41Ž¡’óáðunits,–TEnglish“customary‘
Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Î5¬6ަ’óáðunits,–TlošAÇokup“metho˜d‘òi‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³F¬7Ž¡’óáðunits,–Tpiecewise“linear‘¿×‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘€³¬44ަ’óáðunits,‘Tprimitiv¾9e‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Mñ¬41Ž¡’óáðunits,–Tsums“and“dierences‘Ô‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘”à¬10ަ’óáðunits,–Tsums“of[	‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘å¬21Ž¡’óáðunits,–TUS“customary‘Èç‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‰Ã¬6ަ’óáðUNITS‘¥Æ‰c4ÆgŽ‘óENGLISH›Ten•¾9vironmen“t˜v‘ÿ|rariable‘¨6‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘i¬53Ž¡’óáðUNITS‘¥Æ‰c4ÆgŽ‘óSYSTEM›Ten•¾9vironmen“t˜v‘ÿ|rariable‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Üû¬53ަ’óáðUNITSFILE›Ten•¾9vironmen“t˜v‘ÿ|rariabley‹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘:g¬53Ž¡’óáðUNITSLOCALEMAP›Ten•¾9vironmen“t˜v‘ÿ|rariable‘‘Œ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Rh¬53ަ’óáðUS–TConsumer“Price“Index‘“P‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘T,¬18Ž¡’óáðUS–TState“Plane“CoAÇordinate“System‘×"‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘—þ¬6Ž¡’óáðUS–Tsurv¾9ey“foAÇot‘Çí‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆÊ¬6ަ’óáðUS–Tsurv¾9ey“measure|‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘<á¬6Ž¡’óáðUS–Tsurv¾9ey“mileCî‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ʬ6ަ’óáðUTF-8|‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘@X¬54ŽŸZ’ókˆëcVŽŸ
ù’óáð¬v‘ÿ|rariables–Tassigned“at“run“time‘×í‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘˜Ê¬14Ž¡’óáðv¾9erbAÇose‘Toutput‘¦j‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘gG¬2Ž¡’óáðv¾9ertical–Tbar“(`É|¬')“opAÇerator‘ŸO‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘`+¬8ަ’óáðv¾9olume–Tmeasure,“English“customary‘K!‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ý¬6ŽŸõ’ókˆëcWŽŸ
ù’óáð¬white›Tspace£‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:ޑŀ¬8,˜13ަ’óáðwire‘Tgauge‘Íâ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘޾¬19ŽŸö’ókˆëcYŽŸ
ù’óáð¬y•¾9ard,‘Tin“ternational‘p‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘0÷¬6ŽŽŽŽŽŒø‚—ƒ’À;è‡33ïÿIómÂÖN 
#×cmbx12ól!",šff
cmsy10ók·ág£ffcmmi12óg߆µTffcmtt12ócÂÖN ffcmbx12ó]߆µTG®cmtt12óZÂÖN G®cmbx12óQÂÖN ¼jcmbx12óFßê b>
ó3
cmmi10ó=ßê' to set a
different installation location.  You may also choose to use
'--sharedstatedir=' to change the location for the currency
file.  

Building for a Relocatable Installation
---------------------------------------
By default, the location of the units data file is compiled into the
program as an absolute path name, so its location cannot be changed.  If
you invoke configure by typing './configure --enable-relocation', the
data file location will be compiled into the program as
'definitions.units', and units will search for the data file in the
following places:

 *  In the directory that contains the units executable, typical for
    installations on Windows.

 *  In /bin/../share/units, where /bin is the
    directory that contains the units executable, typical for
    installations on Unix-like systems.  For example, the default
    installation typically places the executable in /usr/local/bin and
    the data file in /usr/local/share/units; if you wished, you could
    change these locations to /usr/me/bin and /usr/me/share/units
    without recompiling the program.

If configure is run with '--enable-relocation', you can run units
without installing without giving the '-f' option.

If units is invoked with the '-f' option or the environment variable
UNITSFILE is set, that path is used, and it makes no difference whether
configure was run with the '--enable-relocation' option.

GNU readline Library
--------------------
For full functionality you should have the GNU readline library
installed to provide history and editing of data entry.

Note that MacOS comes with editline, which is similar to GNU readline,
but not similar enough.  When compiling under MacOS the configure
script looks for GNU readline in /opt/local.  If you have installed it
somewhere else then invoke configure as follows:
       ./configure -I -L
Then the configure script should detect readline and compile it in.        

If you are installing on Windows, readline may not be available;
however, command history and intraline editing are available via the
standard Windows console facilities described in the documentation for
doskey.

Currency Conversion Updates
---------------------------
You can update currency conversions using the units_cur Python script;
see the user manual for details.

Building on Windows
===================
units can be built from the Windows command prompt using Visual Studio;
see UnitsWin.pdf for details.

units can also be built from the MKS Korn shell using Visual Studio;
see UnitsMKS.pdf for details.

Documentation
=============
The documentation is provided in texinfo, roff, and text format.  The
roff manual page source units.man is generated automatically from the
texinfo documentation; this produces a readable man page when run
through nroff, but most equations are not included.  The manual page
formats well for printing or as PDF with groff.  A printed manual can
also be generated using 'units.dvi'; use this if you encounter problems
with groff.

Icons
=====
The distribution includes three icons that may be useful for
installation in a GUI.  Use the icotool command to extract the png files
from the .ico files.  The icon_ms.png file is suitable for use as a
small button.

Incompatibilities with Unix 'units'
===================================
This program has the following incompatibilities with unix 'units':
  * The '-' character is a subtraction operator rather than a multiply
      operator by default.
  * Exponentiation in numbers requires an 'e', so you must write 2.5e-2
      instead of 2.5-2.
  * Prefixes are listed in the units file.
  * GNU 'units' tries the -s, -es, and -ies plural forms.
  * The default output format is slightly different.
  * The units database is much larger and more informative, but with some
      differences. (e.g. 'g' is for gravity in unix 'units' and grams in
      GNU 'units'.)  The comment character has been changed to '#'.

GNU 'units' Extensions
======================
GNU 'units' includes the following extensions:
  * Multiplication can be written with a '*' if desired.
  * Exponents can be written with '^' or '**' in units.
  * Exponents can be larger than 9 if written with '^' or '**'.
  * Sums of units can be converted.
  * The units data file is extensively commented. 
  * Units which measure reciprocal dimensions can be converted.
  * Parentheses for grouping are supported.
  * Functions such as sin, cos, and log are supported.
  * Roots of units and rational exponents can be computed.
  * Nonlinear units conversions are supported. 
  * Conversion to lists of units (e.g. feet and inches) is supported

Windows Binary Distribution
===========================
A binary distribution for Windows is available at
http://ftp.gnu.org/gnu/units/windows/. The executable was built with
Microsoft Visual Studio using Makefile.Win and the same source
files included in the source distribution.  The binary version is
usually the same as that of the current source distribution.  There is
currently no support for UTF-8 or readline; however, command history and
intraline editing are available via the standard Windows console
facilities described in the documentation for doskey.

Other Ports
===========
A port of units 1.87 to Windows is available from the
http://gnuwin32.sourceforge.net/packages/units.htm 
This port includes readline support.

A Java version of units by Roman Redziejowski 
is available on SourceForge at http://units-in-java.sourceforge.net/

Two versions are available for Android.  Steve Pomeroy has a version
based on the above Java version that you can obtain at http://
staticfree.info/projects/units/ and Keith Flowers has compiled the C
code for Android: http://apps.keithflower.org/?page_id=6

A Perl version was written by Bob Walton  and can be
accessed either as a units converting web form or as perl source code
from:  http://bwalton.com/cgi-bin/myunitscgi.pl

A project called Frink uses a (modified) version of the units
database to supply a units-aware programming language.
https://futureboy.us/frinkdocs/

Jillian England has created a units definition file that changes
energy to mass and seconds to meters:
https://github.com/NinerXrayBravoTwoTwo/MassEnergyUnits

-----------------------------------------------------------------------------

When updating from 1.x to 2.x:

The name of the personal units file has changed from $HOME/units.dat
to $HOME/.units ($HOME/unitdef.units under Windows).

The format for nonlinear unit definitions has changed.  Run 'units -c'
and add the "units=" keyword in front of any bracketed unit
specifications.  

-----------------------------------------------------------------------------
 
Ideas the future (may or may not happen):

  * Bundle up the units conversion stuff into a library. 
  * Inflation adjusted currency?
  * Allow multiple definitions of the same unit and resolve the
      correct definition by a conformability check.  (This has
      exponential growth behavior in the number of units typed in!)
  * When a nonconformable units error is given list units the user
      might have meant (e.g. britainpound for pound) by a
      conformability check and string pattern match of some sort. 
      "spelling advice"
  * Allow some way of having units like '$' that don't require a trailing
      space so you can write '$5'.  This could be handled by having a 
      command in the units database that specifies units which automatically
      get a space inserted  after their name.   
  * Have a metacommand in the units datafile that specifies how plurals should
      be tried for this file.  This would allow expansion into other 
      languages.  (Of course, the real work of expanding into other languages
      is writing a units file that is appropriate for the language in question
      and includes local units.  It's not just a translation task.)
      Another thing that could be accomplished here would be translation of
      English words like "cubic" and "per" into their symbolic meanings.
      A command in the units file could indicate that "per" should be 
      substituted into a '/' and "cubic" means the cube the next unit.
      As it stands, "per" is hard coded into the parser.
  * Represent uncertainties in values in the database.

Acknowledgements
================
    This program owes a lot to Jeff Conrad who made many helpful suggestions,
    found numerous bugs, and helped me to find the definitions of obscure
    units.  Chris Madsen also made some valuable contributions. 

    The documentation has greatly benefited from the suggestions made by
    Robert Chassell who kindly read several drafts.

    The following people have been particularly helpful in fixing portability
    problems: Kaveh Ghazi, Eric Backus, and Marcus Daniels.

Bug reports and suggestions for improvements should be sent to the author:
Adrian Mariano (adrianm@gnu.org).  
units-2.23/parse.tab.c0000664000175000017500000020675314557020501014121 0ustar  adrianadrian/* A Bison parser, made by GNU Bison 3.8.2.  */

/* Bison implementation for Yacc-like parsers in C

   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
   Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see .  */

/* As a special exception, you may create a larger work that contains
   part or all of the Bison parser skeleton and distribute that work
   under terms of your choice, so long as that work isn't itself a
   parser generator using the skeleton or a modified version thereof
   as a parser skeleton.  Alternatively, if you modify or redistribute
   the parser skeleton itself, you may (at your option) remove this
   special exception, which will cause the skeleton and the resulting
   Bison output files to be licensed under the GNU General Public
   License without this special exception.

   This special exception was added by the Free Software Foundation in
   version 2.2 of Bison.  */

/* C LALR(1) parser skeleton written by Richard Stallman, by
   simplifying the original so-called "semantic" parser.  */

/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
   especially those whose name start with YY_ or yy_.  They are
   private implementation details that can be changed or removed.  */

/* All symbols defined below should begin with yy or YY, to avoid
   infringing on user name space.  This should be done even for local
   variables, as they might otherwise be expanded by user macros.
   There are some unavoidable exceptions within include files to
   define necessary library symbols; they are noted "INFRINGES ON
   USER NAME SPACE" below.  */

/* Identify Bison output, and Bison version.  */
#define YYBISON 30802

/* Bison version string.  */
#define YYBISON_VERSION "3.8.2"

/* Skeleton name.  */
#define YYSKELETON_NAME "yacc.c"

/* Pure parsers.  */
#define YYPURE 2

/* Push parsers.  */
#define YYPUSH 0

/* Pull parsers.  */
#define YYPULL 1

/* Substitute the type names.  */
#define YYSTYPE         UNITSSTYPE
/* Substitute the variable and function names.  */
#define yyparse         unitsparse
#define yylex           unitslex
#define yyerror         unitserror
#define yydebug         unitsdebug
#define yynerrs         unitsnerrs

/* First part of user prologue.  */
#line 24 "parse.y"

#include
#include
#include "units.h"

struct commtype {
   int location;
   const char *data;
   struct unittype *result;
   int errorcode;
};

static int err;  /* value used by parser to store return values */

/* 
   The CHECK macro aborts parse if an error has occurred.  It optionally
   destroys a variable.  Call with CHECK(0) if no variables need destruction 
   on error. 
*/
 
#define CHECK(var) if (err) { comm->errorcode=err; \
                              if (var) destroyunit(var); \
                              YYABORT; }
 
int yylex();
void yyerror(struct commtype *comm, char *);

#define MAXMEM 100
int unitcount=0;    /* Counts the number of units allocated by the parser */

struct function { 
   char *name; 
   double (*func)(double); 
   int type;
}; 

#define DIMENSIONLESS 0
#define ANGLEIN 1
#define ANGLEOUT 2
#define NATURAL 3

struct unittype *
getnewunit()
{
  struct unittype *unit;

  if (unitcount>=MAXMEM)
    return 0;
  unit = (struct unittype *) 
    mymalloc(sizeof(struct unittype),"(getnewunit)");
  if (!unit)
    return 0;
  initializeunit(unit);
  unitcount++;
  return unit;
}


void
destroyunit(struct unittype *unit)
{
  freeunit(unit);
  free(unit);
  unitcount--;
}  
 

struct unittype *
makenumunit(double num,int *myerr)
{
  struct unittype *ret;
  ret=getnewunit();
  if (!ret){
    *myerr = E_PARSEMEM;
    return 0;  
  }
  ret->factor = num;
  *myerr = 0;
  return ret;
}

int
logunit(struct unittype *theunit, int base)
{  
  if ((err=unit2num(theunit)))
    return err;
  if (base==2)
    theunit->factor = log2(theunit->factor);
  else if (base==10)
    theunit->factor = log10(theunit->factor);
  else
    theunit->factor = log(theunit->factor)/log((double)base);
  if (errno)
    return E_FUNC;
  return 0;
}
 
int
funcunit(struct unittype *theunit, struct function const *fun)
{
  struct unittype angleunit;
  if (fun->type==ANGLEIN){
    err=unit2num(theunit);
    if (err==E_NOTANUMBER){
      initializeunit(&angleunit);
      angleunit.denominator[0] = dupstr("radian");
      angleunit.denominator[1] = 0;
      err = multunit(theunit, &angleunit);
      freeunit(&angleunit);
      if (!err)
        err = unit2num(theunit);
    }
    if (err)
      return err;
  } else if (fun->type==ANGLEOUT || fun->type == DIMENSIONLESS || fun->type == NATURAL) {
    if ((err=unit2num(theunit)))
      return err;
    if (fun->type==NATURAL && (theunit->factor<0 || trunc(theunit->factor)!=theunit->factor))
      return E_NOTINDOMAIN;
  } else 
     return E_BADFUNCTYPE;
  errno = 0;
  theunit->factor = (*(fun->func))(theunit->factor);
  if (errno)
    return E_FUNC;
  if (fun->type==ANGLEOUT) {
    theunit->numerator[0] = dupstr("radian");
    theunit->numerator[1] = 0;
  }
  return 0;
}



#line 212 "parse.tab.c"

# ifndef YY_CAST
#  ifdef __cplusplus
#   define YY_CAST(Type, Val) static_cast (Val)
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val)
#  else
#   define YY_CAST(Type, Val) ((Type) (Val))
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
#  endif
# endif
# ifndef YY_NULLPTR
#  if defined __cplusplus
#   if 201103L <= __cplusplus
#    define YY_NULLPTR nullptr
#   else
#    define YY_NULLPTR 0
#   endif
#  else
#   define YY_NULLPTR ((void*)0)
#  endif
# endif


/* Debug traces.  */
#ifndef UNITSDEBUG
# if defined YYDEBUG
#if YYDEBUG
#   define UNITSDEBUG 1
#  else
#   define UNITSDEBUG 0
#  endif
# else /* ! defined YYDEBUG */
#  define UNITSDEBUG 0
# endif /* ! defined YYDEBUG */
#endif  /* ! defined UNITSDEBUG */
#if UNITSDEBUG
extern int unitsdebug;
#endif

/* Token kinds.  */
#ifndef UNITSTOKENTYPE
# define UNITSTOKENTYPE
  enum unitstokentype
  {
    UNITSEMPTY = -2,
    UNITSEOF = 0,                  /* "end of file"  */
    UNITSerror = 256,              /* error  */
    UNITSUNDEF = 257,              /* "invalid token"  */
    REAL = 258,                    /* REAL  */
    UNIT = 259,                    /* UNIT  */
    REALFUNC = 260,                /* REALFUNC  */
    LOG = 261,                     /* LOG  */
    UNITFUNC = 262,                /* UNITFUNC  */
    EXPONENT = 263,                /* EXPONENT  */
    MULTIPLY = 264,                /* MULTIPLY  */
    MULTSTAR = 265,                /* MULTSTAR  */
    DIVIDE = 266,                  /* DIVIDE  */
    NUMDIV = 267,                  /* NUMDIV  */
    SQRT = 268,                    /* SQRT  */
    CUBEROOT = 269,                /* CUBEROOT  */
    MULTMINUS = 270,               /* MULTMINUS  */
    EOL = 271,                     /* EOL  */
    FUNCINV = 272,                 /* FUNCINV  */
    MEMERROR = 273,                /* MEMERROR  */
    BADNUMBER = 274,               /* BADNUMBER  */
    NUMOVERFLOW = 275,             /* NUMOVERFLOW  */
    NUMUNDERFLOW = 276,            /* NUMUNDERFLOW  */
    UNITEND = 277,                 /* UNITEND  */
    LASTUNSET = 278,               /* LASTUNSET  */
    ADD = 279,                     /* ADD  */
    MINUS = 280,                   /* MINUS  */
    UNARY = 281                    /* UNARY  */
  };
  typedef enum unitstokentype unitstoken_kind_t;
#endif

/* Value type.  */
#if ! defined UNITSSTYPE && ! defined UNITSSTYPE_IS_DECLARED
union UNITSSTYPE
{
#line 164 "parse.y"

  double number;
  int integer;
  struct unittype *unit;
  struct function *realfunc;
  struct func *unitfunc;

#line 301 "parse.tab.c"

};
typedef union UNITSSTYPE UNITSSTYPE;
# define UNITSSTYPE_IS_TRIVIAL 1
# define UNITSSTYPE_IS_DECLARED 1
#endif




int unitsparse (struct commtype *comm);



/* Symbol kind.  */
enum yysymbol_kind_t
{
  YYSYMBOL_YYEMPTY = -2,
  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
  YYSYMBOL_YYerror = 1,                    /* error  */
  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
  YYSYMBOL_REAL = 3,                       /* REAL  */
  YYSYMBOL_UNIT = 4,                       /* UNIT  */
  YYSYMBOL_REALFUNC = 5,                   /* REALFUNC  */
  YYSYMBOL_LOG = 6,                        /* LOG  */
  YYSYMBOL_UNITFUNC = 7,                   /* UNITFUNC  */
  YYSYMBOL_EXPONENT = 8,                   /* EXPONENT  */
  YYSYMBOL_MULTIPLY = 9,                   /* MULTIPLY  */
  YYSYMBOL_MULTSTAR = 10,                  /* MULTSTAR  */
  YYSYMBOL_DIVIDE = 11,                    /* DIVIDE  */
  YYSYMBOL_NUMDIV = 12,                    /* NUMDIV  */
  YYSYMBOL_SQRT = 13,                      /* SQRT  */
  YYSYMBOL_CUBEROOT = 14,                  /* CUBEROOT  */
  YYSYMBOL_MULTMINUS = 15,                 /* MULTMINUS  */
  YYSYMBOL_EOL = 16,                       /* EOL  */
  YYSYMBOL_FUNCINV = 17,                   /* FUNCINV  */
  YYSYMBOL_MEMERROR = 18,                  /* MEMERROR  */
  YYSYMBOL_BADNUMBER = 19,                 /* BADNUMBER  */
  YYSYMBOL_NUMOVERFLOW = 20,               /* NUMOVERFLOW  */
  YYSYMBOL_NUMUNDERFLOW = 21,              /* NUMUNDERFLOW  */
  YYSYMBOL_UNITEND = 22,                   /* UNITEND  */
  YYSYMBOL_LASTUNSET = 23,                 /* LASTUNSET  */
  YYSYMBOL_ADD = 24,                       /* ADD  */
  YYSYMBOL_MINUS = 25,                     /* MINUS  */
  YYSYMBOL_UNARY = 26,                     /* UNARY  */
  YYSYMBOL_27_ = 27,                       /* '('  */
  YYSYMBOL_28_ = 28,                       /* ')'  */
  YYSYMBOL_YYACCEPT = 29,                  /* $accept  */
  YYSYMBOL_input = 30,                     /* input  */
  YYSYMBOL_unitexpr = 31,                  /* unitexpr  */
  YYSYMBOL_divlist = 32,                   /* divlist  */
  YYSYMBOL_expr = 33,                      /* expr  */
  YYSYMBOL_numexpr = 34,                   /* numexpr  */
  YYSYMBOL_pexpr = 35,                     /* pexpr  */
  YYSYMBOL_list = 36                       /* list  */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;




#ifdef short
# undef short
#endif

/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
    and (if available)  are included
   so that the code can choose integer types of a good width.  */

#ifndef __PTRDIFF_MAX__
# include  /* INFRINGES ON USER NAME SPACE */
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
#  include  /* INFRINGES ON USER NAME SPACE */
#  define YY_STDINT_H
# endif
#endif

/* Narrow types that promote to a signed type and that can represent a
   signed or unsigned integer of at least N bits.  In tables they can
   save space and decrease cache pressure.  Promoting to a signed type
   helps avoid bugs in integer arithmetic.  */

#ifdef __INT_LEAST8_MAX__
typedef __INT_LEAST8_TYPE__ yytype_int8;
#elif defined YY_STDINT_H
typedef int_least8_t yytype_int8;
#else
typedef signed char yytype_int8;
#endif

#ifdef __INT_LEAST16_MAX__
typedef __INT_LEAST16_TYPE__ yytype_int16;
#elif defined YY_STDINT_H
typedef int_least16_t yytype_int16;
#else
typedef short yytype_int16;
#endif

/* Work around bug in HP-UX 11.23, which defines these macros
   incorrectly for preprocessor constants.  This workaround can likely
   be removed in 2023, as HPE has promised support for HP-UX 11.23
   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
   .  */
#ifdef __hpux
# undef UINT_LEAST8_MAX
# undef UINT_LEAST16_MAX
# define UINT_LEAST8_MAX 255
# define UINT_LEAST16_MAX 65535
#endif

#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
       && UINT_LEAST8_MAX <= INT_MAX)
typedef uint_least8_t yytype_uint8;
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
typedef unsigned char yytype_uint8;
#else
typedef short yytype_uint8;
#endif

#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
       && UINT_LEAST16_MAX <= INT_MAX)
typedef uint_least16_t yytype_uint16;
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
typedef unsigned short yytype_uint16;
#else
typedef int yytype_uint16;
#endif

#ifndef YYPTRDIFF_T
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
# elif defined PTRDIFF_MAX
#  ifndef ptrdiff_t
#   include  /* INFRINGES ON USER NAME SPACE */
#  endif
#  define YYPTRDIFF_T ptrdiff_t
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
# else
#  define YYPTRDIFF_T long
#  define YYPTRDIFF_MAXIMUM LONG_MAX
# endif
#endif

#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
#  define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
#  define YYSIZE_T size_t
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
#  include  /* INFRINGES ON USER NAME SPACE */
#  define YYSIZE_T size_t
# else
#  define YYSIZE_T unsigned
# endif
#endif

#define YYSIZE_MAXIMUM                                  \
  YY_CAST (YYPTRDIFF_T,                                 \
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
            ? YYPTRDIFF_MAXIMUM                         \
            : YY_CAST (YYSIZE_T, -1)))

#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))


/* Stored state numbers (used for stacks). */
typedef yytype_int8 yy_state_t;

/* State numbers in computations.  */
typedef int yy_state_fast_t;

#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
#  if ENABLE_NLS
#   include  /* INFRINGES ON USER NAME SPACE */
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
#  endif
# endif
# ifndef YY_
#  define YY_(Msgid) Msgid
# endif
#endif


#ifndef YY_ATTRIBUTE_PURE
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
#  define YY_ATTRIBUTE_PURE
# endif
#endif

#ifndef YY_ATTRIBUTE_UNUSED
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
#  define YY_ATTRIBUTE_UNUSED
# endif
#endif

/* Suppress unused-variable warnings by "using" E.  */
#if ! defined lint || defined __GNUC__
# define YY_USE(E) ((void) (E))
#else
# define YY_USE(E) /* empty */
#endif

/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
    _Pragma ("GCC diagnostic push")                                     \
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
# else
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
    _Pragma ("GCC diagnostic push")                                     \
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# endif
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
    _Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
#endif
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
#ifndef YY_INITIAL_VALUE
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif

#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
    _Pragma ("GCC diagnostic push")                            \
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
# define YY_IGNORE_USELESS_CAST_END            \
    _Pragma ("GCC diagnostic pop")
#endif
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
# define YY_IGNORE_USELESS_CAST_BEGIN
# define YY_IGNORE_USELESS_CAST_END
#endif


#define YY_ASSERT(E) ((void) (0 && (E)))

#if !defined yyoverflow

/* The parser invokes alloca or malloc; define the necessary symbols.  */

# ifdef YYSTACK_USE_ALLOCA
#  if YYSTACK_USE_ALLOCA
#   ifdef __GNUC__
#    define YYSTACK_ALLOC __builtin_alloca
#   elif defined __BUILTIN_VA_ARG_INCR
#    include  /* INFRINGES ON USER NAME SPACE */
#   elif defined _AIX
#    define YYSTACK_ALLOC __alloca
#   elif defined _MSC_VER
#    include  /* INFRINGES ON USER NAME SPACE */
#    define alloca _alloca
#   else
#    define YYSTACK_ALLOC alloca
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
#     include  /* INFRINGES ON USER NAME SPACE */
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
#     ifndef EXIT_SUCCESS
#      define EXIT_SUCCESS 0
#     endif
#    endif
#   endif
#  endif
# endif

# ifdef YYSTACK_ALLOC
   /* Pacify GCC's 'empty if-body' warning.  */
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
#  ifndef YYSTACK_ALLOC_MAXIMUM
    /* The OS might guarantee only one guard page at the bottom of the stack,
       and a page size can be as small as 4096 bytes.  So we cannot safely
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
       to allow for a few compiler-allocated temporary stack slots.  */
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
#  endif
# else
#  define YYSTACK_ALLOC YYMALLOC
#  define YYSTACK_FREE YYFREE
#  ifndef YYSTACK_ALLOC_MAXIMUM
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
#  endif
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
       && ! ((defined YYMALLOC || defined malloc) \
             && (defined YYFREE || defined free)))
#   include  /* INFRINGES ON USER NAME SPACE */
#   ifndef EXIT_SUCCESS
#    define EXIT_SUCCESS 0
#   endif
#  endif
#  ifndef YYMALLOC
#   define YYMALLOC malloc
#   if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
#  ifndef YYFREE
#   define YYFREE free
#   if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
# endif
#endif /* !defined yyoverflow */

#if (! defined yyoverflow \
     && (! defined __cplusplus \
         || (defined UNITSSTYPE_IS_TRIVIAL && UNITSSTYPE_IS_TRIVIAL)))

/* A type that is properly aligned for any stack member.  */
union yyalloc
{
  yy_state_t yyss_alloc;
  YYSTYPE yyvs_alloc;
};

/* The size of the maximum gap between one aligned stack and the next.  */
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)

/* The size of an array large to enough to hold all stacks, each with
   N elements.  */
# define YYSTACK_BYTES(N) \
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
      + YYSTACK_GAP_MAXIMUM)

# define YYCOPY_NEEDED 1

/* Relocate STACK from its old location to the new one.  The
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
   elements in the stack, and YYPTR gives the new location of the
   stack.  Advance YYPTR to a properly aligned location for the next
   stack.  */
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    do                                                                  \
      {                                                                 \
        YYPTRDIFF_T yynewbytes;                                         \
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
        Stack = &yyptr->Stack_alloc;                                    \
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
      }                                                                 \
    while (0)

#endif

#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
/* Copy COUNT objects from SRC to DST.  The source and destination do
   not overlap.  */
# ifndef YYCOPY
#  if defined __GNUC__ && 1 < __GNUC__
#   define YYCOPY(Dst, Src, Count) \
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
#  else
#   define YYCOPY(Dst, Src, Count)              \
      do                                        \
        {                                       \
          YYPTRDIFF_T yyi;                      \
          for (yyi = 0; yyi < (Count); yyi++)   \
            (Dst)[yyi] = (Src)[yyi];            \
        }                                       \
      while (0)
#  endif
# endif
#endif /* !YYCOPY_NEEDED */

/* YYFINAL -- State number of the termination state.  */
#define YYFINAL  39
/* YYLAST -- Last index in YYTABLE.  */
#define YYLAST   202

/* YYNTOKENS -- Number of terminals.  */
#define YYNTOKENS  29
/* YYNNTS -- Number of nonterminals.  */
#define YYNNTS  8
/* YYNRULES -- Number of rules.  */
#define YYNRULES  40
/* YYNSTATES -- Number of states.  */
#define YYNSTATES  65

/* YYMAXUTOK -- Last valid token kind.  */
#define YYMAXUTOK   281


/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
   as returned by yylex, with out-of-bounds checking.  */
#define YYTRANSLATE(YYX)                                \
  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
   : YYSYMBOL_YYUNDEF)

/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
   as returned by yylex.  */
static const yytype_int8 yytranslate[] =
{
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      27,    28,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
      25,    26
};

#if UNITSDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
static const yytype_int16 yyrline[] =
{
       0,   213,   213,   215,   216,   219,   220,   223,   224,   228,
     229,   230,   231,   233,   236,   238,   240,   244,   245,   248,
     254,   255,   256,   258,   260,   262,   263,   264,   265,   266,
     267,   268,   269,   272,   275,   276,   277,   278,   279,   280,
     281
};
#endif

/** Accessing symbol of state STATE.  */
#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])

#if UNITSDEBUG || 0
/* The user-facing name of the symbol whose (internal) number is
   YYSYMBOL.  No bounds checking.  */
static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;

/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
static const char *const yytname[] =
{
  "\"end of file\"", "error", "\"invalid token\"", "REAL", "UNIT",
  "REALFUNC", "LOG", "UNITFUNC", "EXPONENT", "MULTIPLY", "MULTSTAR",
  "DIVIDE", "NUMDIV", "SQRT", "CUBEROOT", "MULTMINUS", "EOL", "FUNCINV",
  "MEMERROR", "BADNUMBER", "NUMOVERFLOW", "NUMUNDERFLOW", "UNITEND",
  "LASTUNSET", "ADD", "MINUS", "UNARY", "'('", "')'", "$accept", "input",
  "unitexpr", "divlist", "expr", "numexpr", "pexpr", "list", YY_NULLPTR
};

static const char *
yysymbol_name (yysymbol_kind_t yysymbol)
{
  return yytname[yysymbol];
}
#endif

#define YYPACT_NINF (-19)

#define yypact_value_is_default(Yyn) \
  ((Yyn) == YYPACT_NINF)

#define YYTABLE_NINF (-1)

#define yytable_value_is_error(Yyn) \
  0

/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
   STATE-NUM.  */
static const yytype_int16 yypact[] =
{
      50,   -19,   -19,   -19,   -18,   -18,   -18,   175,   -18,   -18,
     175,   -19,     4,   -19,   -19,   -19,   -19,   -19,   -19,   175,
      75,    15,     8,    14,    12,    22,   -19,   100,   -19,   -19,
     -19,   100,   -19,   -19,   100,   -19,   -18,   100,     7,   -19,
     -19,   -19,    75,    75,    75,    75,    75,    35,   125,   175,
     150,   -19,   -19,   -19,    30,    30,     3,     3,   -19,   175,
     175,    32,   150,    32,    32
};

/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
   Performed when YYTABLE does not specify something else to do.  Zero
   means the default is an error.  */
static const yytype_int8 yydefact[] =
{
       0,     4,    17,    21,     0,     0,     0,     0,     0,     0,
       0,     2,     0,    37,    34,    35,    36,    38,    39,     0,
       0,     0,     0,     6,     5,    20,    25,     9,    28,    29,
      30,     7,    26,    27,    10,    40,     0,    11,     0,     1,
       3,     8,     0,     0,     0,     0,     0,     0,     0,     0,
      24,    31,    19,    15,    16,    14,    12,    13,    18,     0,
       0,    22,    23,    32,    33
};

/* YYPGOTO[NTERM-NUM].  */
static const yytype_int8 yypgoto[] =
{
     -19,   -19,   -19,    41,   -16,     5,    -3,     0
};

/* YYDEFGOTO[NTERM-NUM].  */
static const yytype_int8 yydefgoto[] =
{
       0,    21,    22,    41,    24,    25,    26,    50
};

/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
   positive, shift that token.  If negative, reduce the rule whose
   number is the opposite.  If YYTABLE_NINF, syntax error.  */
static const yytype_int8 yytable[] =
{
      27,    28,    29,    30,    38,    32,    33,    31,    35,    20,
      34,    36,    42,    43,    44,    39,    42,    43,    44,    37,
      27,    42,    43,    44,    40,     7,    53,    54,    55,    56,
      57,    45,    46,    51,    47,    52,    45,    46,     2,    42,
      48,    23,    27,    27,    27,    27,    27,     0,    61,    62,
       0,     1,    58,     2,     3,     4,     5,     6,     0,    63,
      64,     7,     0,     8,     9,    10,    11,    12,    13,    14,
      15,    16,    17,    18,     0,    19,     0,    20,     2,     3,
       4,     5,     6,     0,     0,     0,     0,     0,     8,     9,
      10,     0,    12,    13,    14,    15,    16,    17,    18,     0,
      19,     0,    20,     2,     3,     4,     5,     6,    48,     0,
       0,     0,     0,     8,     9,    49,     0,    12,    13,    14,
      15,    16,    17,    18,     0,     0,     0,    20,     2,     3,
       4,     5,     6,     0,     0,     0,     0,     0,     8,     9,
      59,     0,    12,    13,    14,    15,    16,    17,    18,     0,
      60,     0,    20,     2,     3,     4,     5,     6,    48,     0,
       0,     0,     0,     8,     9,     0,     0,    12,    13,    14,
      15,    16,    17,    18,     0,     0,     0,    20,     2,     3,
       4,     5,     6,     0,     0,     0,     0,     0,     8,     9,
       0,     0,    12,    13,    14,    15,    16,    17,    18,     0,
       0,     0,    20
};

static const yytype_int8 yycheck[] =
{
       0,     4,     5,     6,    20,     8,     9,     7,     4,    27,
      10,     7,     9,    10,    11,     0,     9,    10,    11,    19,
      20,     9,    10,    11,    16,    11,    42,    43,    44,    45,
      46,    24,    25,    36,    12,    28,    24,    25,     3,     9,
       8,     0,    42,    43,    44,    45,    46,    -1,    48,    49,
      -1,     1,    47,     3,     4,     5,     6,     7,    -1,    59,
      60,    11,    -1,    13,    14,    15,    16,    17,    18,    19,
      20,    21,    22,    23,    -1,    25,    -1,    27,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    -1,    13,    14,
      15,    -1,    17,    18,    19,    20,    21,    22,    23,    -1,
      25,    -1,    27,     3,     4,     5,     6,     7,     8,    -1,
      -1,    -1,    -1,    13,    14,    15,    -1,    17,    18,    19,
      20,    21,    22,    23,    -1,    -1,    -1,    27,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    -1,    13,    14,
      15,    -1,    17,    18,    19,    20,    21,    22,    23,    -1,
      25,    -1,    27,     3,     4,     5,     6,     7,     8,    -1,
      -1,    -1,    -1,    13,    14,    -1,    -1,    17,    18,    19,
      20,    21,    22,    23,    -1,    -1,    -1,    27,     3,     4,
       5,     6,     7,    -1,    -1,    -1,    -1,    -1,    13,    14,
      -1,    -1,    17,    18,    19,    20,    21,    22,    23,    -1,
      -1,    -1,    27
};

/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
   state STATE-NUM.  */
static const yytype_int8 yystos[] =
{
       0,     1,     3,     4,     5,     6,     7,    11,    13,    14,
      15,    16,    17,    18,    19,    20,    21,    22,    23,    25,
      27,    30,    31,    32,    33,    34,    35,    36,    35,    35,
      35,    36,    35,    35,    36,     4,     7,    36,    33,     0,
      16,    32,     9,    10,    11,    24,    25,    12,     8,    15,
      36,    35,    28,    33,    33,    33,    33,    33,    34,    15,
      25,    36,    36,    36,    36
};

/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
static const yytype_int8 yyr1[] =
{
       0,    29,    30,    30,    30,    31,    31,    32,    32,    33,
      33,    33,    33,    33,    33,    33,    33,    34,    34,    35,
      36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
      36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
      36
};

/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
static const yytype_int8 yyr2[] =
{
       0,     2,     1,     2,     1,     1,     1,     2,     2,     1,
       2,     2,     3,     3,     3,     3,     3,     1,     3,     3,
       1,     1,     3,     3,     2,     1,     2,     2,     2,     2,
       2,     3,     4,     4,     1,     1,     1,     1,     1,     1,
       2
};


enum { YYENOMEM = -2 };

#define yyerrok         (yyerrstatus = 0)
#define yyclearin       (yychar = UNITSEMPTY)

#define YYACCEPT        goto yyacceptlab
#define YYABORT         goto yyabortlab
#define YYERROR         goto yyerrorlab
#define YYNOMEM         goto yyexhaustedlab


#define YYRECOVERING()  (!!yyerrstatus)

#define YYBACKUP(Token, Value)                                    \
  do                                                              \
    if (yychar == UNITSEMPTY)                                        \
      {                                                           \
        yychar = (Token);                                         \
        yylval = (Value);                                         \
        YYPOPSTACK (yylen);                                       \
        yystate = *yyssp;                                         \
        goto yybackup;                                            \
      }                                                           \
    else                                                          \
      {                                                           \
        yyerror (comm, YY_("syntax error: cannot back up")); \
        YYERROR;                                                  \
      }                                                           \
  while (0)

/* Backward compatibility with an undocumented macro.
   Use UNITSerror or UNITSUNDEF. */
#define YYERRCODE UNITSUNDEF


/* Enable debugging if requested.  */
#if UNITSDEBUG

# ifndef YYFPRINTF
#  include  /* INFRINGES ON USER NAME SPACE */
#  define YYFPRINTF fprintf
# endif

# define YYDPRINTF(Args)                        \
do {                                            \
  if (yydebug)                                  \
    YYFPRINTF Args;                             \
} while (0)




# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
do {                                                                      \
  if (yydebug)                                                            \
    {                                                                     \
      YYFPRINTF (stderr, "%s ", Title);                                   \
      yy_symbol_print (stderr,                                            \
                  Kind, Value, comm); \
      YYFPRINTF (stderr, "\n");                                           \
    }                                                                     \
} while (0)


/*-----------------------------------.
| Print this symbol's value on YYO.  |
`-----------------------------------*/

static void
yy_symbol_value_print (FILE *yyo,
                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct commtype *comm)
{
  FILE *yyoutput = yyo;
  YY_USE (yyoutput);
  YY_USE (comm);
  if (!yyvaluep)
    return;
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  YY_USE (yykind);
  YY_IGNORE_MAYBE_UNINITIALIZED_END
}


/*---------------------------.
| Print this symbol on YYO.  |
`---------------------------*/

static void
yy_symbol_print (FILE *yyo,
                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, struct commtype *comm)
{
  YYFPRINTF (yyo, "%s %s (",
             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));

  yy_symbol_value_print (yyo, yykind, yyvaluep, comm);
  YYFPRINTF (yyo, ")");
}

/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
| TOP (included).                                                   |
`------------------------------------------------------------------*/

static void
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
{
  YYFPRINTF (stderr, "Stack now");
  for (; yybottom <= yytop; yybottom++)
    {
      int yybot = *yybottom;
      YYFPRINTF (stderr, " %d", yybot);
    }
  YYFPRINTF (stderr, "\n");
}

# define YY_STACK_PRINT(Bottom, Top)                            \
do {                                                            \
  if (yydebug)                                                  \
    yy_stack_print ((Bottom), (Top));                           \
} while (0)


/*------------------------------------------------.
| Report that the YYRULE is going to be reduced.  |
`------------------------------------------------*/

static void
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
                 int yyrule, struct commtype *comm)
{
  int yylno = yyrline[yyrule];
  int yynrhs = yyr2[yyrule];
  int yyi;
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
             yyrule - 1, yylno);
  /* The symbols being reduced.  */
  for (yyi = 0; yyi < yynrhs; yyi++)
    {
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
      yy_symbol_print (stderr,
                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
                       &yyvsp[(yyi + 1) - (yynrhs)], comm);
      YYFPRINTF (stderr, "\n");
    }
}

# define YY_REDUCE_PRINT(Rule)          \
do {                                    \
  if (yydebug)                          \
    yy_reduce_print (yyssp, yyvsp, Rule, comm); \
} while (0)

/* Nonzero means print parse trace.  It is left uninitialized so that
   multiple parsers can coexist.  */
int yydebug;
#else /* !UNITSDEBUG */
# define YYDPRINTF(Args) ((void) 0)
# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !UNITSDEBUG */


/* YYINITDEPTH -- initial size of the parser's stacks.  */
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif

/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   if the built-in stack extension method is used).

   Do not make this value too large; the results are undefined if
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   evaluated with infinite-precision integer arithmetic.  */

#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif






/*-----------------------------------------------.
| Release the memory associated to this symbol.  |
`-----------------------------------------------*/

static void
yydestruct (const char *yymsg,
            yysymbol_kind_t yykind, YYSTYPE *yyvaluep, struct commtype *comm)
{
  YY_USE (yyvaluep);
  YY_USE (comm);
  if (!yymsg)
    yymsg = "Deleting";
  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  switch (yykind)
    {
    case YYSYMBOL_UNIT: /* UNIT  */
#line 201 "parse.y"
            { destroyunit(((*yyvaluep).unit));}
#line 1120 "parse.tab.c"
        break;

    case YYSYMBOL_unitexpr: /* unitexpr  */
#line 201 "parse.y"
            { destroyunit(((*yyvaluep).unit));}
#line 1126 "parse.tab.c"
        break;

    case YYSYMBOL_divlist: /* divlist  */
#line 201 "parse.y"
            { destroyunit(((*yyvaluep).unit));}
#line 1132 "parse.tab.c"
        break;

    case YYSYMBOL_expr: /* expr  */
#line 201 "parse.y"
            { destroyunit(((*yyvaluep).unit));}
#line 1138 "parse.tab.c"
        break;

    case YYSYMBOL_pexpr: /* pexpr  */
#line 201 "parse.y"
            { destroyunit(((*yyvaluep).unit));}
#line 1144 "parse.tab.c"
        break;

    case YYSYMBOL_list: /* list  */
#line 201 "parse.y"
            { destroyunit(((*yyvaluep).unit));}
#line 1150 "parse.tab.c"
        break;

      default:
        break;
    }
  YY_IGNORE_MAYBE_UNINITIALIZED_END
}






/*----------.
| yyparse.  |
`----------*/

int
yyparse (struct commtype *comm)
{
/* Lookahead token kind.  */
int yychar;


/* The semantic value of the lookahead symbol.  */
/* Default value used for initialization, for pacifying older GCCs
   or non-GCC compilers.  */
YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);

    /* Number of syntax errors so far.  */
    int yynerrs = 0;

    yy_state_fast_t yystate = 0;
    /* Number of tokens to shift before error messages enabled.  */
    int yyerrstatus = 0;

    /* Refer to the stacks through separate pointers, to allow yyoverflow
       to reallocate them elsewhere.  */

    /* Their size.  */
    YYPTRDIFF_T yystacksize = YYINITDEPTH;

    /* The state stack: array, bottom, top.  */
    yy_state_t yyssa[YYINITDEPTH];
    yy_state_t *yyss = yyssa;
    yy_state_t *yyssp = yyss;

    /* The semantic value stack: array, bottom, top.  */
    YYSTYPE yyvsa[YYINITDEPTH];
    YYSTYPE *yyvs = yyvsa;
    YYSTYPE *yyvsp = yyvs;

  int yyn;
  /* The return value of yyparse.  */
  int yyresult;
  /* Lookahead symbol kind.  */
  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;



#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))

  /* The number of symbols on the RHS of the reduced rule.
     Keep to zero when no symbol should be popped.  */
  int yylen = 0;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yychar = UNITSEMPTY; /* Cause a token to be read.  */

  goto yysetstate;


/*------------------------------------------------------------.
| yynewstate -- push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed.  So pushing a state here evens the stacks.  */
  yyssp++;


/*--------------------------------------------------------------------.
| yysetstate -- set current state (the top of the stack) to yystate.  |
`--------------------------------------------------------------------*/
yysetstate:
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  YY_IGNORE_USELESS_CAST_BEGIN
  *yyssp = YY_CAST (yy_state_t, yystate);
  YY_IGNORE_USELESS_CAST_END
  YY_STACK_PRINT (yyss, yyssp);

  if (yyss + yystacksize - 1 <= yyssp)
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
    YYNOMEM;
#else
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYPTRDIFF_T yysize = yyssp - yyss + 1;

# if defined yyoverflow
      {
        /* Give user a chance to reallocate the stack.  Use copies of
           these so that the &'s don't force the real ones into
           memory.  */
        yy_state_t *yyss1 = yyss;
        YYSTYPE *yyvs1 = yyvs;

        /* Each stack pointer address is followed by the size of the
           data in use in that stack, in bytes.  This used to be a
           conditional around just the two extra args, but that might
           be undefined if yyoverflow is a macro.  */
        yyoverflow (YY_("memory exhausted"),
                    &yyss1, yysize * YYSIZEOF (*yyssp),
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                    &yystacksize);
        yyss = yyss1;
        yyvs = yyvs1;
      }
# else /* defined YYSTACK_RELOCATE */
      /* Extend the stack our own way.  */
      if (YYMAXDEPTH <= yystacksize)
        YYNOMEM;
      yystacksize *= 2;
      if (YYMAXDEPTH < yystacksize)
        yystacksize = YYMAXDEPTH;

      {
        yy_state_t *yyss1 = yyss;
        union yyalloc *yyptr =
          YY_CAST (union yyalloc *,
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
        if (! yyptr)
          YYNOMEM;
        YYSTACK_RELOCATE (yyss_alloc, yyss);
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
#  undef YYSTACK_RELOCATE
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
      }
# endif

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;

      YY_IGNORE_USELESS_CAST_BEGIN
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
                  YY_CAST (long, yystacksize)));
      YY_IGNORE_USELESS_CAST_END

      if (yyss + yystacksize - 1 <= yyssp)
        YYABORT;
    }
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */


  if (yystate == YYFINAL)
    YYACCEPT;

  goto yybackup;


/*-----------.
| yybackup.  |
`-----------*/
yybackup:
  /* Do appropriate processing given the current state.  Read a
     lookahead token if we need one and don't already have one.  */

  /* First try to decide what to do without reference to lookahead token.  */
  yyn = yypact[yystate];
  if (yypact_value_is_default (yyn))
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
  if (yychar == UNITSEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token\n"));
      yychar = yylex (&yylval, comm);
    }

  if (yychar <= UNITSEOF)
    {
      yychar = UNITSEOF;
      yytoken = YYSYMBOL_YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else if (yychar == UNITSerror)
    {
      /* The scanner already issued an error message, process directly
         to error recovery.  But do not keep the error token as
         lookahead, it is too special and may lead us to an endless
         loop in error recovery. */
      yychar = UNITSUNDEF;
      yytoken = YYSYMBOL_YYerror;
      goto yyerrlab1;
    }
  else
    {
      yytoken = YYTRANSLATE (yychar);
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
    }

  /* If the proper action on seeing token YYTOKEN is to reduce or to
     detect an error, take that action.  */
  yyn += yytoken;
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn <= 0)
    {
      if (yytable_value_is_error (yyn))
        goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  /* Shift the lookahead token.  */
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
  yystate = yyn;
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END

  /* Discard the shifted token.  */
  yychar = UNITSEMPTY;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     '$$ = $1'.

     Otherwise, the following line sets YYVAL to garbage.
     This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];


  YY_REDUCE_PRINT (yyn);
  switch (yyn)
    {
  case 2: /* input: EOL  */
#line 213 "parse.y"
                      { comm->result = makenumunit(1,&err); CHECK(0);
                       comm->errorcode = 0; YYACCEPT; }
#line 1427 "parse.tab.c"
    break;

  case 3: /* input: unitexpr EOL  */
#line 215 "parse.y"
                     { comm->result = (yyvsp[-1].unit); comm->errorcode = 0; YYACCEPT; }
#line 1433 "parse.tab.c"
    break;

  case 4: /* input: error  */
#line 216 "parse.y"
                     { YYABORT; }
#line 1439 "parse.tab.c"
    break;

  case 5: /* unitexpr: expr  */
#line 219 "parse.y"
                                    { (yyval.unit) = (yyvsp[0].unit);}
#line 1445 "parse.tab.c"
    break;

  case 6: /* unitexpr: divlist  */
#line 220 "parse.y"
                                    { (yyval.unit) = (yyvsp[0].unit);}
#line 1451 "parse.tab.c"
    break;

  case 7: /* divlist: DIVIDE list  */
#line 223 "parse.y"
                                    { invertunit((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);}
#line 1457 "parse.tab.c"
    break;

  case 8: /* divlist: divlist divlist  */
#line 224 "parse.y"
                                         {err = multunit((yyvsp[-1].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                          CHECK((yyvsp[-1].unit));(yyval.unit)=(yyvsp[-1].unit);}
#line 1464 "parse.tab.c"
    break;

  case 9: /* expr: list  */
#line 228 "parse.y"
                                    { (yyval.unit) = (yyvsp[0].unit); }
#line 1470 "parse.tab.c"
    break;

  case 10: /* expr: MULTMINUS list  */
#line 229 "parse.y"
                                    { (yyval.unit) = (yyvsp[0].unit); (yyval.unit)->factor *= -1; }
#line 1476 "parse.tab.c"
    break;

  case 11: /* expr: MINUS list  */
#line 230 "parse.y"
                                    { (yyval.unit) = (yyvsp[0].unit); (yyval.unit)->factor *= -1; }
#line 1482 "parse.tab.c"
    break;

  case 12: /* expr: expr ADD expr  */
#line 231 "parse.y"
                                    { err = addunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                      CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);}
#line 1489 "parse.tab.c"
    break;

  case 13: /* expr: expr MINUS expr  */
#line 233 "parse.y"
                                    { (yyvsp[0].unit)->factor *= -1;
                                      err = addunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                      CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);}
#line 1497 "parse.tab.c"
    break;

  case 14: /* expr: expr DIVIDE expr  */
#line 236 "parse.y"
                                    { err = divunit((yyvsp[-2].unit), (yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                      CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);}
#line 1504 "parse.tab.c"
    break;

  case 15: /* expr: expr MULTIPLY expr  */
#line 238 "parse.y"
                                    { err = multunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                      CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);}
#line 1511 "parse.tab.c"
    break;

  case 16: /* expr: expr MULTSTAR expr  */
#line 240 "parse.y"
                                    { err = multunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                      CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);}
#line 1518 "parse.tab.c"
    break;

  case 17: /* numexpr: REAL  */
#line 244 "parse.y"
                                    { (yyval.number) = (yyvsp[0].number);         }
#line 1524 "parse.tab.c"
    break;

  case 18: /* numexpr: numexpr NUMDIV numexpr  */
#line 245 "parse.y"
                                    { (yyval.number) = (yyvsp[-2].number) / (yyvsp[0].number);    }
#line 1530 "parse.tab.c"
    break;

  case 19: /* pexpr: '(' expr ')'  */
#line 248 "parse.y"
                                    { (yyval.unit) = (yyvsp[-1].unit);  }
#line 1536 "parse.tab.c"
    break;

  case 20: /* list: numexpr  */
#line 254 "parse.y"
                                   { (yyval.unit) = makenumunit((yyvsp[0].number),&err); CHECK(0);}
#line 1542 "parse.tab.c"
    break;

  case 21: /* list: UNIT  */
#line 255 "parse.y"
                                   { (yyval.unit) = (yyvsp[0].unit); }
#line 1548 "parse.tab.c"
    break;

  case 22: /* list: list EXPONENT list  */
#line 256 "parse.y"
                                   { err = unitpower((yyvsp[-2].unit),(yyvsp[0].unit));destroyunit((yyvsp[0].unit));
                                     CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);}
#line 1555 "parse.tab.c"
    break;

  case 23: /* list: list MULTMINUS list  */
#line 258 "parse.y"
                                   { err = multunit((yyvsp[-2].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                     CHECK((yyvsp[-2].unit));(yyval.unit)=(yyvsp[-2].unit);}
#line 1562 "parse.tab.c"
    break;

  case 24: /* list: list list  */
#line 260 "parse.y"
                                   { err = multunit((yyvsp[-1].unit),(yyvsp[0].unit)); destroyunit((yyvsp[0].unit));
                                     CHECK((yyvsp[-1].unit));(yyval.unit)=(yyvsp[-1].unit);}
#line 1569 "parse.tab.c"
    break;

  case 25: /* list: pexpr  */
#line 262 "parse.y"
                                   { (yyval.unit)=(yyvsp[0].unit); }
#line 1575 "parse.tab.c"
    break;

  case 26: /* list: SQRT pexpr  */
#line 263 "parse.y"
                                   { err = rootunit((yyvsp[0].unit),2); CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);}
#line 1581 "parse.tab.c"
    break;

  case 27: /* list: CUBEROOT pexpr  */
#line 264 "parse.y"
                                   { err = rootunit((yyvsp[0].unit),3); CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);}
#line 1587 "parse.tab.c"
    break;

  case 28: /* list: REALFUNC pexpr  */
#line 265 "parse.y"
                                   { err = funcunit((yyvsp[0].unit),(yyvsp[-1].realfunc));CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);}
#line 1593 "parse.tab.c"
    break;

  case 29: /* list: LOG pexpr  */
#line 266 "parse.y"
                                   { err = logunit((yyvsp[0].unit),(yyvsp[-1].integer)); CHECK((yyvsp[0].unit)); (yyval.unit)=(yyvsp[0].unit);}
#line 1599 "parse.tab.c"
    break;

  case 30: /* list: UNITFUNC pexpr  */
#line 267 "parse.y"
                                   { err = evalfunc((yyvsp[0].unit),(yyvsp[-1].unitfunc),0,0); CHECK((yyvsp[0].unit));(yyval.unit)=(yyvsp[0].unit);}
#line 1605 "parse.tab.c"
    break;

  case 31: /* list: FUNCINV UNITFUNC pexpr  */
#line 268 "parse.y"
                                   { err = evalfunc((yyvsp[0].unit),(yyvsp[-1].unitfunc),1,0); CHECK((yyvsp[0].unit));(yyval.unit)=(yyvsp[0].unit);}
#line 1611 "parse.tab.c"
    break;

  case 32: /* list: list EXPONENT MULTMINUS list  */
#line 270 "parse.y"
                                   { (yyvsp[0].unit)->factor *= -1; err = unitpower((yyvsp[-3].unit),(yyvsp[0].unit));
                                     destroyunit((yyvsp[0].unit));CHECK((yyvsp[-3].unit));(yyval.unit)=(yyvsp[-3].unit);}
#line 1618 "parse.tab.c"
    break;

  case 33: /* list: list EXPONENT MINUS list  */
#line 273 "parse.y"
                                   { (yyvsp[0].unit)->factor *= -1; err = unitpower((yyvsp[-3].unit),(yyvsp[0].unit));
                                     destroyunit((yyvsp[0].unit));CHECK((yyvsp[-3].unit));(yyval.unit)=(yyvsp[-3].unit);}
#line 1625 "parse.tab.c"
    break;

  case 34: /* list: BADNUMBER  */
#line 275 "parse.y"
                                   { err = E_BADNUM;   CHECK(0); }
#line 1631 "parse.tab.c"
    break;

  case 35: /* list: NUMOVERFLOW  */
#line 276 "parse.y"
                                   { err = E_OVERFLOW; CHECK(0); }
#line 1637 "parse.tab.c"
    break;

  case 36: /* list: NUMUNDERFLOW  */
#line 277 "parse.y"
                                   { err = E_UNDERFLOW;CHECK(0); }
#line 1643 "parse.tab.c"
    break;

  case 37: /* list: MEMERROR  */
#line 278 "parse.y"
                                   { err = E_PARSEMEM; CHECK(0); }
#line 1649 "parse.tab.c"
    break;

  case 38: /* list: UNITEND  */
#line 279 "parse.y"
                                   { err = E_UNITEND;  CHECK(0); }
#line 1655 "parse.tab.c"
    break;

  case 39: /* list: LASTUNSET  */
#line 280 "parse.y"
                                   { err = E_LASTUNSET;CHECK(0); }
#line 1661 "parse.tab.c"
    break;

  case 40: /* list: FUNCINV UNIT  */
#line 281 "parse.y"
                                   { err = E_NOTAFUNC; CHECK((yyvsp[0].unit));}
#line 1667 "parse.tab.c"
    break;


#line 1671 "parse.tab.c"

      default: break;
    }
  /* User semantic actions sometimes alter yychar, and that requires
     that yytoken be updated with the new translation.  We take the
     approach of translating immediately before every use of yytoken.
     One alternative is translating here after every semantic action,
     but that translation would be missed if the semantic action invokes
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
     incorrect destructor might then be invoked immediately.  In the
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
     to an incorrect destructor call or verbose syntax error message
     before the lookahead is translated.  */
  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);

  YYPOPSTACK (yylen);
  yylen = 0;

  *++yyvsp = yyval;

  /* Now 'shift' the result of the reduction.  Determine what state
     that goes to, based on the state we popped back to and the rule
     number reduced by.  */
  {
    const int yylhs = yyr1[yyn] - YYNTOKENS;
    const int yyi = yypgoto[yylhs] + *yyssp;
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
               ? yytable[yyi]
               : yydefgoto[yylhs]);
  }

  goto yynewstate;


/*--------------------------------------.
| yyerrlab -- here on detecting error.  |
`--------------------------------------*/
yyerrlab:
  /* Make sure we have latest lookahead translation.  See comments at
     user semantic actions for why this is necessary.  */
  yytoken = yychar == UNITSEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;
      yyerror (comm, YY_("syntax error"));
    }

  if (yyerrstatus == 3)
    {
      /* If just tried and failed to reuse lookahead token after an
         error, discard it.  */

      if (yychar <= UNITSEOF)
        {
          /* Return failure if at end of input.  */
          if (yychar == UNITSEOF)
            YYABORT;
        }
      else
        {
          yydestruct ("Error: discarding",
                      yytoken, &yylval, comm);
          yychar = UNITSEMPTY;
        }
    }

  /* Else will try to reuse lookahead token after shifting the error
     token.  */
  goto yyerrlab1;


/*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR.  |
`---------------------------------------------------*/
yyerrorlab:
  /* Pacify compilers when the user code never invokes YYERROR and the
     label yyerrorlab therefore never appears in user code.  */
  if (0)
    YYERROR;
  ++yynerrs;

  /* Do not reclaim the symbols of the rule whose action triggered
     this YYERROR.  */
  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);
  yystate = *yyssp;
  goto yyerrlab1;


/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
`-------------------------------------------------------------*/
yyerrlab1:
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */

  /* Pop stack until we find a state that shifts the error token.  */
  for (;;)
    {
      yyn = yypact[yystate];
      if (!yypact_value_is_default (yyn))
        {
          yyn += YYSYMBOL_YYerror;
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
            {
              yyn = yytable[yyn];
              if (0 < yyn)
                break;
            }
        }

      /* Pop the current state because it cannot handle the error token.  */
      if (yyssp == yyss)
        YYABORT;


      yydestruct ("Error: popping",
                  YY_ACCESSING_SYMBOL (yystate), yyvsp, comm);
      YYPOPSTACK (1);
      yystate = *yyssp;
      YY_STACK_PRINT (yyss, yyssp);
    }

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END


  /* Shift the error token.  */
  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturnlab;


/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturnlab;


/*-----------------------------------------------------------.
| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
`-----------------------------------------------------------*/
yyexhaustedlab:
  yyerror (comm, YY_("memory exhausted"));
  yyresult = 2;
  goto yyreturnlab;


/*----------------------------------------------------------.
| yyreturnlab -- parsing is finished, clean up and return.  |
`----------------------------------------------------------*/
yyreturnlab:
  if (yychar != UNITSEMPTY)
    {
      /* Make sure we have latest lookahead translation.  See comments at
         user semantic actions for why this is necessary.  */
      yytoken = YYTRANSLATE (yychar);
      yydestruct ("Cleanup: discarding lookahead",
                  yytoken, &yylval, comm);
    }
  /* Do not reclaim the symbols of the rule whose action triggered
     this YYABORT or YYACCEPT.  */
  YYPOPSTACK (yylen);
  YY_STACK_PRINT (yyss, yyssp);
  while (yyssp != yyss)
    {
      yydestruct ("Cleanup: popping",
                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, comm);
      YYPOPSTACK (1);
    }
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif

  return yyresult;
}

#line 284 "parse.y"


double
factorial(double x)
{
  return tgamma(x+1);
}  

struct function 
  realfunctions[] = { {"sin", sin,    ANGLEIN},
                      {"cos", cos,    ANGLEIN},
                      {"tan", tan,    ANGLEIN},
                      {"ln", log,     DIMENSIONLESS},
                      {"log", log10,  DIMENSIONLESS},
                      {"exp", exp,    DIMENSIONLESS},
                      {"acos", acos,  ANGLEOUT},
                      {"atan", atan,  ANGLEOUT},
                      {"asin", asin,  ANGLEOUT},
		      {"sinh", sinh, DIMENSIONLESS},
		      {"cosh", cosh, DIMENSIONLESS},		      
		      {"tanh", tanh, DIMENSIONLESS},
		      {"asinh", asinh, DIMENSIONLESS},
		      {"acosh", acosh, DIMENSIONLESS},		      
		      {"atanh", atanh, DIMENSIONLESS},
                      {"round", round, DIMENSIONLESS},
                      {"floor", floor, DIMENSIONLESS},
                      {"ceil", ceil, DIMENSIONLESS},
                      {"erf", erf, DIMENSIONLESS},
                      {"erfc", erfc, DIMENSIONLESS},
                      {"Gamma", tgamma, DIMENSIONLESS},
                      {"lnGamma", lgamma, DIMENSIONLESS},
                      {"factorial", factorial, NATURAL},
                      {0, 0, 0}};

struct {
  char op;
  int value;
} optable[] = { {'*', MULTIPLY},
                {'/', DIVIDE},
                {'|', NUMDIV},
                {'+', ADD},
                {'(', '('},
                {')', ')'},
                {'^', EXPONENT},
                {'~', FUNCINV},
                {0, 0}};

struct {
  char *name;
  int value;
} strtable[] = { {"sqrt", SQRT},
                 {"cuberoot", CUBEROOT},
                 {"per" , DIVIDE},
                 {0, 0}};

#define LASTUNIT '_'     /* Last unit symbol */


int yylex(YYSTYPE *lvalp, struct commtype *comm)
{
  int length, count;
  struct unittype *output;
  const char *inptr;
  char *name;

  char *nonunitchars = "~;+-*/|\t\n^ ()"; /* Chars not allowed in unit name --- also defined in units.c */
  char *nonunitstart = ".,";              /* Can't start a unit */
  char *nonunitend = ".,_";              /* Can't end a unit */
  char *number_start = ".,0123456789";    /* Can be first char of a number */
  
  if (comm->location==-1) return 0;
  inptr = comm->data + comm->location;   /* Point to start of data */

  /* Skip spaces */
  while(*inptr==' ') inptr++, comm->location++;

  if (*inptr==0) {
    comm->location = -1;
    return EOL;  /* Return failure if string has ended */
  }  

  /* Check for **, an exponent operator.  */

  if (0==strncmp("**",inptr,2)){
    comm->location += 2;
    return EXPONENT;
  }

  /* Check for '-' and '*' which get special handling */

  if (*inptr=='-'){
    comm->location++;
    if (parserflags.minusminus)
      return MINUS;
    return MULTMINUS;
  }      

  if (*inptr=='*'){
    comm->location++;
    if (parserflags.oldstar)
      return MULTIPLY;
    return MULTSTAR;
  }      

  /* Look for single character ops */

  for(count=0; optable[count].op; count++){
    if (*inptr==optable[count].op) {
       comm->location++;
       return optable[count].value;
    }
  }

  /* Look for numbers */

  if (strchr(number_start,*inptr)){  /* prevent "nan" from being recognized */
    char *endloc;
    errno=0;
    lvalp->number = strtod(inptr, &endloc);
    if (inptr != endloc) { 
      comm->location += (endloc-inptr);
      if (*endloc && strchr(number_start,*endloc))
        return BADNUMBER;
      else if (errno){
        errno=0;
        if (fabs(lvalp->number)==HUGE_VAL) return NUMOVERFLOW;
        else return NUMUNDERFLOW;
      }
      else
        return REAL;
    }
  }

  /* Look for a word (function name or unit name) */

  length = strcspn(inptr,nonunitchars);   

  if (!length){  /* Next char is not a valid unit char */
     comm->location++;
     return 0;
  }

  /* Check for the "last unit" symbol, with possible exponent */ 

  if (*inptr == LASTUNIT &&
      (length==1 || length==2 && strchr("23456789",inptr[1]))){
    comm->location++;
    if (!lastunitset) 
      return LASTUNSET;
    output = getnewunit();
    if (!output)
      return MEMERROR;
    unitcopy(output, &lastunit);
    if (length==2){
      expunit(output, inptr[1]-'0');
      comm->location++;
    }
    lvalp->unit = output;
    return UNIT;
  } 

  /* Check that unit name doesn't start or end with forbidden chars */
  if (strchr(nonunitstart,*inptr)){
    comm->location++;
    return 0;
  }
  if (strchr(nonunitend, inptr[length-1])){
    comm->location+=length;
    return 0;
  }

  name = dupnstr(inptr, length);

  /* Look for string operators */

  for(count=0;strtable[count].name;count++){
    if (!strcmp(name,strtable[count].name)){
      free(name);
      comm->location += length;
      return strtable[count].value;
    }
  }
  
  /* Look for real function names */

  for(count=0;realfunctions[count].name;count++){
    if (!strcmp(name,realfunctions[count].name)){
      lvalp->realfunc = realfunctions+count;
      comm->location += length;
      free(name);
      return REALFUNC;
    }
  }

  /* Check for arbitrary base log */
  
  if (!strncmp(name, "log",3)){
    count = strspn(name+3,"1234567890");
    if (count+3 == strlen(name)){
      lvalp->integer=atoi(name+3);
      if (lvalp->integer>1){      /* Log base must be larger than 1 */
	comm->location += length;
	free(name);
	return LOG;
      }
    }
  }
      
  /* Look for function parameter */

  if (function_parameter && !strcmp(name,function_parameter)){
    free(name);
    output = getnewunit();
    if (!output)
      return MEMERROR;
    unitcopy(output, parameter_value);
    lvalp->unit = output;
    comm->location += length;
    return UNIT;
  } 

  /* Look for user defined function */

  lvalp->unitfunc = fnlookup(name);
  if (lvalp->unitfunc){
    comm->location += length;
    free(name);
    return UNITFUNC;
  }

  /* Didn't find a special string, so treat it as unit name */

  comm->location+=length;
  if (strchr("23456789",inptr[length-1]) && !hassubscript(name)) {
    /* ends with digit but not a subscript, so do exponent handling like m3 */
    count = name[length-1] - '0';
    length--;
    if (strchr(number_start, name[length-1])){
      free(name);
      return UNITEND;
    }
  } else count=1;

  free(name);
    
  output = getnewunit();
  if (!output)
    return MEMERROR;
  output->numerator[count--]=0;
  for(;count>=0;count--)
    output->numerator[count] = dupnstr(inptr, length);
  lvalp->unit=output;
  return UNIT;
}


void yyerror(struct commtype *comm, char *s){}


int
parseunit(struct unittype *output, char const *input,char **errstr,int *errloc)
{
  struct commtype comm;
  int saveunitcount;

  saveunitcount = unitcount;
  initializeunit(output);
  comm.result = 0;
  comm.location = 0;
  comm.data = input;
  comm.errorcode = E_PARSE;    /* Assume parse error */
  errno=0;
  /* errno should only be set in the case of invalid function arguments */
  if (yyparse(&comm) || errno){
    if (comm.location==-1) 
      comm.location = strlen(input);
    if (errstr){
      if (comm.errorcode==E_FUNC || errno)
        *errstr = strerror(errno);
      else
        *errstr=errormsg[comm.errorcode];
    }
    if (errloc)
      *errloc = comm.location;
    if (unitcount!=saveunitcount)
      fprintf(stderr,"units: Parser leaked memory with error: %d in %d out\n",
             saveunitcount, unitcount);
    return comm.errorcode;
  } else {
    if (errstr)
      *errstr = 0;
    multunit(output,comm.result);
    destroyunit(comm.result);
    if (unitcount!=saveunitcount)
      fprintf(stderr,"units: Parser leaked memory without error: %d in %d out\n",
	      saveunitcount, unitcount);
    return 0;
  }
}


units-2.23/fdl-1.3.texi0000664000175000017500000005560712007313547014040 0ustar  adrianadrian@c The GNU Free Documentation License.
@center Version 1.3, 3 November 2008

@c This file is intended to be included within another document,
@c hence no sectioning command or @node.

@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
@uref{http://fsf.org/}

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display

@enumerate 0
@item
PREAMBLE

The purpose of this License is to make a manual, textbook, or other
functional and useful document @dfn{free} in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.

This License is a kind of ``copyleft'', which means that derivative
works of the document must themselves be free in the same sense.  It
complements the GNU General Public License, which is a copyleft
license designed for free software.

We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does.  But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book.  We recommend this License
principally for works whose purpose is instruction or reference.

@item
APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License.  Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein.  The ``Document'', below,
refers to any such manual or work.  Any member of the public is a
licensee, and is addressed as ``you''.  You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.

A ``Modified Version'' of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.

A ``Secondary Section'' is a named appendix or a front-matter section
of the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject.  (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.)  The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.

The ``Invariant Sections'' are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License.  If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant.  The Document may contain zero
Invariant Sections.  If the Document does not identify any Invariant
Sections then there are none.

The ``Cover Texts'' are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License.  A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.

A ``Transparent'' copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters.  A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text.  A copy that is not ``Transparent'' is called ``Opaque''.

Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, La@TeX{} input
format, SGML or XML using a publicly available
DTD, and standard-conforming simple HTML,
PostScript or PDF designed for human modification.  Examples
of transparent image formats include PNG, XCF and
JPG.  Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML,
PostScript or PDF produced by some word processors for
output purposes only.

The ``Title Page'' means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page.  For works in
formats which do not have any title page as such, ``Title Page'' means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.

The ``publisher'' means any person or entity that distributes copies
of the Document to the public.

A section ``Entitled XYZ'' means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language.  (Here XYZ stands for a
specific section name mentioned below, such as ``Acknowledgements'',
``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
of such a section when you modify the Document means that it remains a
section ``Entitled XYZ'' according to this definition.

The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document.  These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.

@item
VERBATIM COPYING

You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License.  You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute.  However, you may accept
compensation in exchange for copies.  If you distribute a large enough
number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and
you may publicly display copies.

@item
COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover.  Both covers must also clearly and legibly identify
you as the publisher of these copies.  The front cover must present
the full title with all words of the title equally prominent and
visible.  You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.

If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.

It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.

@item
MODIFICATIONS

You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it.  In addition, you must do these things in the Modified Version:

@enumerate A
@item
Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document).  You may use the same title as a previous version
if the original publisher of that version gives permission.

@item
List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.

@item
State on the Title page the name of the publisher of the
Modified Version, as the publisher.

@item
Preserve all the copyright notices of the Document.

@item
Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.

@item
Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.

@item
Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.

@item
Include an unaltered copy of this License.

@item
Preserve the section Entitled ``History'', Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page.  If
there is no section Entitled ``History'' in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.

@item
Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on.  These may be placed in the ``History'' section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.

@item
For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
the Title of the section, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.

@item
Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles.  Section numbers
or the equivalent are not considered part of the section titles.

@item
Delete any section Entitled ``Endorsements''.  Such a section
may not be included in the Modified Version.

@item
Do not retitle any existing section to be Entitled ``Endorsements'' or
to conflict in title with any Invariant Section.

@item
Preserve any Warranty Disclaimers.
@end enumerate

If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant.  To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.

You may add a section Entitled ``Endorsements'', provided it contains
nothing but endorsements of your Modified Version by various
parties---for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.

You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version.  Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity.  If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.

@item
COMBINING DOCUMENTS

You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy.  If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled ``History''
in the various original documents, forming one section Entitled
``History''; likewise combine any sections Entitled ``Acknowledgements'',
and any sections Entitled ``Dedications''.  You must delete all
sections Entitled ``Endorsements.''

@item
COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.

@item
AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an ``aggregate'' if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.

@item
TRANSLATION

Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections.  You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers.  In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.

If a section in the Document is Entitled ``Acknowledgements'',
``Dedications'', or ``History'', the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.

@item
TERMINATION

You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.

However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.

Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.

@item
FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time.  Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.  See
@uref{http://www.gnu.org/copyleft/}.

Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License ``or any later version'' applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation.  If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.  If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.

@item
RELICENSING

``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works.  A
public wiki that anybody can edit is an example of such a server.  A
``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
site means any set of copyrightable works thus published on the MMC
site.

``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.

``Incorporate'' means to publish or republish a Document, in whole or
in part, as part of another Document.

An MMC is ``eligible for relicensing'' if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.

The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.

@end enumerate

@page
@heading ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:

@smallexample
@group
  Copyright (C)  @var{year}  @var{your name}.
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3
  or any later version published by the Free Software Foundation;
  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
  Texts.  A copy of the license is included in the section entitled ``GNU
  Free Documentation License''.
@end group
@end smallexample

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the ``with@dots{}Texts.''@: line with this:

@smallexample
@group
    with the Invariant Sections being @var{list their titles}, with
    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
    being @var{list}.
@end group
@end smallexample

If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.

If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.

@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:
units-2.23/locale_map.txt0000664000175000017500000001270611747125613014734 0ustar  adrianadrianAfrikaans_South Africa	af_ZA
Albanian_Albania	sq_AL
Alsatian_France	gsw_FR
Amharic_Ethiopia	am_ET
Arabic_Algeria	ar_DZ
Arabic_Bahrain	ar_BH
Arabic_Egypt	ar_EG
Arabic_Iraq	ar_IQ
Arabic_Jordan	ar_JO
Arabic_Kuwait	ar_KW
Arabic_Lebanon	ar_LB
Arabic_Libya	ar_LY
Arabic_Morocco	ar_MA
Arabic_Oman	ar_OM
Arabic_Qatar	ar_QA
Arabic_Saudi Arabia	ar_SA
Arabic_Syria	ar_SY
Arabic_Tunisia	ar_TN
Arabic_U.A.E.	ar_AE
Arabic_Yemen	ar_YE
Armenian_Armenia	hy_AM
Assamese_India	as_IN
Azeri_Azerbaijan, Cyrillic	az_AZ
Azeri_Azerbaijan, Latin	az_AZ
Bashkir_Russia	ba_RU
Basque_Basque	eu_ES
Belarusian_Belarus	be_BY
Bengali_Bangladesh	bn_??
Bengali_India	bn_IN
Bosnian_Neutral	bs_??
Bosnian_Bosnia and Herzegovina, Cyrillic	bs_BA
Bosnian_Bosnia and Herzegovina, Latin	bs_BA
Breton_France	br_FR
Bulgarian_Bulgaria	bg_BG
Central Kurdish_Iraq	ku_IQ
Cherokee_Cherokee	chr_Cher
Catalan_Spain	ca_ES
Chinese_Hong Kong SAR, PRC	zh_HK
Chinese_Macao SAR	zh_MO
Chinese_Singapore	zh_SG
Chinese_Simplified	zh_Hans
Chinese_Traditional	zh_Hant
Corsican_France	co_FR
Croatian_Neutral	hr_??
Croatian_Bosnia and Herzegovina, Latin	hr_BA
Croatian_Croatia	hr_HR
Czech_Czech Republic	cs_CZ
Danish_Denmark	da_DK
Dari_Afghanistan	prs_AF
Divehi_Maldives	dv_MV
Dutch_Belgium	nl_BE
Dutch_Netherlands	nl_NL
English_Australia	en_AU
English_Belize	en_BZ
English_Canada	en_CA
English_Caribbean	en_029
English_India	en_IN
English_Ireland	en_IE
English_Ireland	en_IE
English_Jamaica	en_JM
English_Malaysia	en_MY
English_New Zealand	en_NZ
English_Philippines	en_PH
English_Singapore	en_SG
English_South Africa	en_ZA
English_Trinidad and Tobago	en_TT
English_United Kingdom	en_GB
English_United States	en_US
English_Zimbabwe	en_ZW
Estonian_Estonia	et_EE
Faroese_Faroe Islands	fo_FO
Filipino_Philippines	fil_PH
Finnish_Finland	fi_FI
French_Belgium	fr_BE
French_Canada	fr_CA
French_France	fr_FR
French_Luxembourg	fr_LU
French_Monaco	fr_MC
French_Switzerland	fr_CH
Frisian_Netherlands	fy_NL
Galician_Spain	gl_ES
Georgian_Georgia	ka_GE
German_Austria	de_AT
German_Germany	de_DE
German_Liechtenstein	de_LI
German_Luxembourg	de_LU
German_Switzerland	de_CH
Greek_Greece	el_GR
Greenlandic_Greenland	kl_GL
Gujarati_India	gu_IN
Hausa_Nigeria	ha_NG
Hawiian_United States	haw_US
Hebrew_Israel	he_IL
Hindi_India	hi_IN
Hungarian_Hungary	hu_HU
Icelandic_Iceland	is_IS
Igbo_Nigeria	ig_NG
Indonesian_Indonesia	id_ID
Inuktitut_Canada	iu_CA, Latin
Inuktitut_Canada	iu_CA, Canadian Syllabics
Irish_Ireland	ga_IE
isiXhosa_South Africa	xh_ZA
isiZulu_South Africa	zu_ZA
Italian_Italy	it_IT
Italian_Switzerland	it_CH
Japanese_Japan	ja_JP
Kannada_India	kn_IN
Kazakh_Kazakhstan	kk_KZ
Khmer_Cambodia	kh_KH
K'iche_Guatemala	qut_GT
Kinyarwanda_Rwanda	rw_RW
Konkani_India	kok_IN
Korean_Korea	ko_KR
Kyrgyz_Kyrgyzstan	ky_KG
Lao_Lao PDR	lo_LA
Latvian_Latvia	lv_LV
Lithuanian_Lithuanian	lt_LT
Lower Sorbian_Germany	dsb_DE
Luxembourgish_Luxembourg	lb_LU
Macedonian_Macedonia, FYROM	mk_MK
Malay_Brunei Darassalam	ms_BN
Malay_Malaysia	ms_MY
Malayalam_India	ml_IN
Maltese_Malta	mt_MT
Maori_New Zealand	mi_NZ
Mapudungun_Chile	arn_CL
Marathi_India	mr_IN
Mohawk_Canada	moh_CA
Mongolian_Mongolia, Cyrillic	mn_MN
Mongolian_Mongolia, Mong	mn_MN
Nepali_Nepal	ne_NP
Nepali_India	ne_IN
Norwegian_Bokmål, Norway	no_NO
Norwegian_Nynorsk, Norway	no_NO
Occitan_France	oc_FR
Oriya_India	or_IN
Pashto_Afghanistan	ps_AF
Persian_Iran	fa_IR
Polish_Poland	pl_PL
Portuguese_Brazil	pt_BR
Portuguese_Portugal	pt_PT
Pular_Senegal	ff_SN
Punjabi_India, Gurmukhi script	pa_IN
Punjabi_Pakistan, Arabic script	pa_PK
Quechua_Bolivia	quz_BO
Quechua_Ecuador	quz_EC
Quechua_Peru	quz_PE
Romanian_Romania	ro_RO
Romansh_Switzerland	rm_CH
Russian_Russia	ru_RU
Sakha_Russia	sah_RU
Sami_Inari, Finland	smn_FI
Sami_Lule, Norway	smj_NO
Sami_Lule, Sweden	smj_SE
Sami_Northern, Finland	se_FI
Sami_Northern, Norway	se_NO
Sami_Northern, Sweden	se_SE
Sami_Skolt, Finland	sms_FI
Sami_Southern, Norway	sma_NO
Sami_Southern, Sweden	sma_SE
Sanskrit_India	sa_IN
Serbian_Neutral	sr_??
Serbian_Bosnia and Herzegovina, Cyrillic	sr_BA
Serbian_Bosnia and Herzegovina, Latin	sr_BA
Serbian_Croatia	sr_HR
Serbian_Serbia and Montenegro, Former, Cyrillic	sr_CS
Serbian_Serbia and Montenegro, Former, Latin	sr_CS
Sesotho sa Leboa_South Africa	nso_ZA
Setswana / Tswana_Botswana	tn_BW
Setswana / Tswana_South Africa	tn_ZA
Sindhi_Pakistan	sd_PK
Sinhala_Sri Lanka	si_LK
Slovak_Slovakia	sk_SK
Slovenian_Slovenia	sl_SI
Spanish_Argentina	es_AR
Spanish_Bolivia	es_BO
Spanish_Chile	es_CL
Spanish_Colombia	es_CO
Spanish_Costa Rica	es_CR
Spanish_Dominican Republic	es_DO
Spanish_Ecuador	es_EC
Spanish_El Salvador	es_SV
Spanish_Guatemala	es_GT
Spanish_Honduras	es_HN
Spanish_Mexico	es_MX
Spanish_Nicaragua	es_NI
Spanish_Panama	es_PA
Spanish_Paraguay	es_PY
Spanish_Peru	es_PE
Spanish_Puerto Rico	es_PR
Spanish_Spain, Modern Sort	es_ES
Spanish_Spain, Traditional Sort	es_ES
Spanish_United States	es_US
Spanish_Uruguay	es_UY
Spanish_Venezuela	es_VE
Swahili_Kenya	sw_KE
Swedish_Finland	sv_FI
Swedish_Sweden	sv_SE
Swedish_Sweden	sv_SE
Syriac_Syria	syr_SY
Tajik_Tajikistan, Cyrillic	tg_TJ
Tamazight_Algeria, Latin	tzm_DZ
Tamil_India	ta_IN
Tamil_Sri Lanka	ta_LK
Tatar_Russia	tt_RU
Telugu_India	te_IN
Thai_Thailand	th_TH
Tibetan_PRC	bo_CN
Tigrinya_Eritrea	ti_ER
Tigrinya_Ethiopia	ti_ET
Turkish_Turkey	tr_TR
Turkmen_Turkmenistan	tk_TM
Ukrainian_Ukraine	uk_UA
Upper Sorbian_Germany	hsb_DE
Urdu_(reserved)	ur_??
Urdu_Pakistan	ur_PK
Uyghur_PRC	ug_CN
Uzbek_Uzbekistan, Cyrillic	uz_UZ
Uzbek_Uzbekistan, Latin	uz_UZ
Valencian_Valencia	ca_ES-Valencia
Vietnamese_Vietnam	vi_VN
Welsh_United Kingdom	cy_GB
Wolof_Senegal	wo_SN
Yi_PRC	ii_CN
Yoruba_Nigeria	yo_NG
units-2.23/setvcvars.sh0000664000175000017500000002121314504437406014444 0ustar  adrianadrian# set MKS Korn shell environment variables for MS Visual Studio
# 2015/2019/2022 Community

# Revision history
#            2023-09-08: changed to work with Visual Studio 2022:
#                        replaced here document with temorary file;
#                        improved error messages
#            2022-09-04: changed "egrep" to "grep -E"
#            2021-09-26: revised to use Visual Studio 2019
#            2020-05-08: revised to prevent MKS Toolkit from prepending
#                        UTF-8 signature
#            2016-05-28: initial version
#
# Copyright (C) 2016, 2020, 2022, 2023 Free Software Foundation, Inc

# Microsoft Visual Studio requires that several environment variables
# include many directories if a build is to be done from the command
# line.  These variables are normally set by selecting 'Developer
# Command Prompt' or one of the more specific options on the Windows
# Start Menu under the appropriate Visual Studio version; the shortcut
# runs a batch file that calls several other batch files to set the
# variables before launching an instance of the Windows command
# interpreter.  This program calls the Windows command interpreter to
# run the batch file; the resulting values of the variables are echoed
# and read into the shell to set the variables in the shell.  For the
# values to persist, this program must be run in the current
# environment, i.e.,
#
#   source setvcvars
#
#       or
#
#   . setvcvars
#
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY--without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-
# 1301 USA
#
# 
# This program was written by Jeff Conrad (jeff_conrad@msn.com), and
# tested with the MKS Toolkit version 10.4 and Microsoft Visual Studio
# 2015, 2019, and 2022 on Windows 10 Professional.

tempdir="$TEMP"
tempfile="$tempdir\setvctemp$$.bat"
progname=setvcvars

# this will match progname if not invoked with source
thisprog=${0##*[/\\]}
thisprog=${thisprog%.sh}

if [[ $thisprog == $progname ]]
then
    print -r "Environment not initialized; run as 'source $thisprog'"
    exit 1
fi

setvcerrors=

umsg="Usage: source $progname [options] [platform]
Options:
  -V  Use Visual Studio  (default: 2022)"

# default version; change to suit
vsversion=2022
vcverbose=

DUALCASE=1	# MKS Toolkit option to distinguish upper and lower case
while getopts :V: arg
do
    case $arg in
    v)
	vcverbose=YES ;;	# not yet used
    V)
	vsversion=$OPTARG ;;
    :)
	# OPTARG contains the option missing the argument
	print -ru2 -- "$progname: option $OPTARG requires an argument"
	setvcerrors=YES
	;;
    [?])
	# OPTARG contains the invalid option
	print -ru2 -- "$progname: unknown option $OPTARG"
	setvcerrors=YES
	;;
    esac
done
shift OPTIND-1
unset DUALCASE

if [ -n "$setvcerrors" ]
then
    print -ru2 -- "$umsg"
fi

# These values assume the default installation directory for Visual
# Studio Community; after initialization, the first part of the PATH
# should match the VSINSTALLDIR environment variable.

if [[ -z "$setvcerrors" ]]
then
    case $vsversion in
    2022)
	vsinstalldir="C:\Program Files\Microsoft Visual Studio\2022\Community"
	vcbatdir="$vsinstalldir\VC\Auxiliary\Build"
	vscommontools=VS170COMNTOOLS
	;;
    2019)
	vsinstalldir="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
	vcbatdir="$vsinstalldir\VC\Auxiliary\Build"
	vscommontools=VS160COMNTOOLS
	;;
    2015)
	vsinstalldir="C:\Program Files (x86)\Microsoft Visual Studio 14.0"
	vcbatdir="$vsinstalldir\VC"
	vscommontools=VS140COMNTOOLS
	;;
    *)
	print -ru2 "$progname: unsupported Visual Studio version: '$vsversion'; choices are 2022/2019/2015"
	setvcerrors=YES
	;;
    esac
fi

# variables needed for Visual Studio; 'PATH' will match 'LIBPATH'
envvars="PATH=|INCLUDE=|LIB=|$vscommontools="

# batch file: this value is installation and version dependent--adjust
# as needed. It should be the shortcut on the Start Menu for 
# 'x64 Native Tools Command Prompt' or 'x64_x86 Cross Tools Command Prompt'
# for Visual Studio 2019 and 2022 or for 'x64 Native Tools Command Prompt'
# or 'x64 x86 Cross Tools Command Prompt' for Visual Studio 2015

# This assumes the compilation will be run on a 64-bit host; use the
# commented-out values for 'vcarch' to run it on a 32-bit host

if [[ -z "$setvcerrors" ]]
then
    if [[ $# -gt 0 ]]
    then
	vcarch=$1
    else
	vcarch=x64
    fi

    # valid target architectures; 64-bit host is assumed
    vcarches32='x86|x64_x86|amd64_x86|32|32bit|32-bit'
    vcarches64='x64|amd64|64|64bit|64-bit'
    
    case $vsversion in
    2019|2022)
	case $vcarch in
	x86|x64_x86|amd64_x86|32|32bit|32-bit)
	    vcbatfile="$vcbatdir\vcvars32.bat"
	    #vcarch=x86		# 32 bit target on 32 bit host
	    vcarch=x64_x86	# 32 bit target on 64 bit host
	    ;;
	x64|amd64|64|64bit|64-bit)
	    vcbatfile="$vcbatdir\vcvars64.bat"
	    #vcarch=x86_x64	# 64 bit target on 32 bit host
	    vcarch=x64		# 64 bit target on 64 bit host
	    ;;
	*)
	    print -ru2 "$progname: invalid architecture: '$vcarch'"
	    print -ru2 "$progname: 64-bit choices are $vcarches64"
	    print -ru2 "$progname: 32-bit choices are $vcarches32"
	    setvcerrors=YES
	    ;;
	esac
	;;
    2015)
	case $vcarch in
	x86|32|32bit|32-bit)
	    vcbatfile="$vcbatdir\vcvarsall.bat"
	    vcarch=amd64_x86
	    ;;
	x64|amd64|64|64bit|64-bit)
	    vcbatfile="$vcbatdir\vcvarsall.bat"
	    vcarch=amd64
	    ;;
	*)
	    print -ru2 "$progname: invalid architecture: '$vcarch'"
	    print -ru2 "$progname: 64-bit choices are $vcarches64"
	    print -ru2 "$progname: 32-bit choices are $vcarches32"
	    setvcerrors=YES
	    ;;
	esac
	;;
    esac

    if [[ -z "$setvcerrors" ]]
    then
	# don't set the variables twice, because new values are added to previous values
	if test "$VCVARSSET" != ""
	then
	    print -ru2 "$progname: Visual C $VSVERSION variables already set: $VCVARSSET bit"
	    setvcerrors=YES
	fi
	if test ! -e "$vcbatfile"
	then
	    print -ru2 "$progname: cannot find Command Prompt batch file '$vcbatfile'"
	    setvcerrors=YES
	fi
	if test -z "$ComSpec"
	then
	    print -ru2 "$progname: no path to command interpreter: ComSpec not set"
	    setvcerrors=YES
	fi
	if test ! -e "$ComSpec"
	then
	    print -ru2 "$progname: cannot find command interpreter '$ComSpec'"
	    setvcerrors=YES
	fi
	if test ! -x "$ComSpec"	# this should never happen ...
	then
	    print -ru2 "$progname: cannot run command interpreter '$ComSpec'"
	    setvcerrors=YES
	fi
	if test ! -d "$tempdir"	# this should never happen, either
	then
	    print -ru2 "$progname: cannot find TEMP dir'$tempdir'"
	    setvcerrors=YES
	fi
    fi
fi

if [ -z "$setvcerrors" ]
then
    # save this for comparison with (hopefully) modified version
    OPATH="$PATH"

    # create a batch file to initialize the environment using the Visual
    # Studio batch files and echo the results
    # As of Visual Studio 2022, this no longer works in a here document
    # with PTC MKS Toolkit 10.4

    print -r "prompt \$s
@call \"$vcbatfile\" $vcarch
@echo PATH=\"%PATH%\"; export PATH
@echo INCLUDE=\"%INCLUDE%\"; export INCLUDE
@echo LIB=\"%LIB%\"; export LIB
@echo LIBPATH=\"%LIBPATH%\"; export LIBPATH
@rem assume $vscommontools has trailing backslash
@echo $vscommontools=\"%$vscommontools%\\\"; export $vscommontools" > $tempfile

    # run the batch file and echo the results to read into the shell with
    # eval(1)
    eval "$($ComSpec /q /c $tempfile | grep -E $envvars)"
    rm -f $tempfile

    # variable initialization probably failed
    if test "$PATH" = "$OPATH"
    then
	echo "$progname: could not set Visual C variables"
    else	# prevent setting the variables more than once
	VSVERSION=$vsversion
	export VSVERSION
	case "$vcarch" in
	x64|amd64)
	    VCVARSSET=64 ;;
	*)
	    VCVARSSET=32 ;;
	esac
	export VCVARSSET

	# FIXME: show this only with vcverbose set?
	print -r "Environment initialized for Visual Studio $vsversion: '$vcarch'"
    fi
fi

# make getopts work in case a previous invocation used an invalid option
OPTIND=1

# because this is run in source mode, these will persist if not unset
unset progname umsg thisprog tempdir tempfile OPATH OPTARG
unset envvars setvcerrors vsversion vscommontools vcbatdir vcbatfile
unset vcarch vcarches32 vcarches64 vcverbose
units-2.23/COPYING0000664000175000017500000010451310642156735013132 0ustar  adrianadrian                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    
    Copyright (C)   

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see .

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

      Copyright (C)   
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
.
units-2.23/Makefile.OS20000664000175000017500000000441110641165333014126 0ustar  adrianadrian#  Makefile for the OS/2 version of units
#  Peter Weilbacher (os2@Weilbacher.org), 25Jan2003.
#
#  Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 3 of the License, or
#  (at your option) any later version.
# 
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

CC=gcc
CFLAGS=-Zomf
LFLAGS=-Zlinker /PM:VIO -Zlinker /E:2 -Lf:\P\emx\lib -Lf:\P\emx\lib\st -lm -lreadline -ltermcap
O=.o

NAME=units
READLINE=-DREADLINE
OBJECTS=$(NAME)$O getopt$O getopt1$O strfunc$O parse.tab$O # ansi2knr$O
EXE=$(NAME).exe
DOC=$(NAME).doc
MAN=$(NAME).man
SRCFILES=ChangeLog INSTALL Makefile.dos Makefile.in aclocal.m4 \
	ansi2knr.1 ansi2knr.c configure configure.in getopt.c getopt.h \
	getopt1.c install-sh mkinstalldirs strfunc.c texi2man units.c \
	units.texinfo \
	Makefile.OS2
DISTFILES=COPYING README NEWS units.dat \
	ReadMe.OS2 makeobjs.cmd \
	$(EXE) $(DOC) $(NAME).less

.SUFFIXES: .c $O

.c$O:	
	$(CC) $(CFLAGS) $(READLINE) -c $<

all:	$(EXE) $(DOC)

$(EXE): $(OBJECTS)
	$(CC) $(CFLAGS) $(LFLAGS) $(READLINE) $(OBJECTS) -o $@

$(DOC):	$(NAME).texinfo texi2man
	perl .\texi2man $(NAME).texinfo > $(MAN)
	sed s!@DATAFILE@!units.dat! $(NAME).man > $(NAME).1
	groff -man $(NAME).1 > $(NAME).less
#	col -b $(NAME).less > $(DOC)
	sed -e "s/_//g" -e "s/.//g" units.less > units.doc

dist:	all
	@mkdir dist
	@cp -f $(DISTFILES) dist
	@zip -9rSq dist\units-src.zip $(SRCFILES)
	@rm -f $(OBJECTS)

check:	$(EXE)
	@echo Checking $(EXE)
	@echo If output is "* 25.4" the program should be OK
	@$(EXE) -f .\units.dat kiloinch meter | grep "\*"
	@echo End check

clean:	
	rm -f $(OBJECTS) $(EXE) $(MAN) $(NAME).1 $(NAME).less $(DOC)
	rm -rf dist
units-2.23/units_cur0000777000175000017500000006021314564467752014053 0ustar  adrianadrian#!/usr/bin/python
#
# units_cur for units, a program for updated currency exchange rates
#
# Copyright (C) 2017-2018, 2022
# Free Software Foundation, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#    
#
# This program was written by Adrian Mariano (adrianm@gnu.org)
#

# For Python 2 & 3 compatibility
from __future__ import absolute_import, division, print_function
#
#

version = '5.0'

# Version 5.0:
#
# Rewrite to support multiple different data sources due to disappearance
# of the Yahoo feed.  Includes support for base currency selection. 
#
# Version 4.3: 20 July 2018
#
# Validate rate data from server
#
# Version 4.2: 18 April 2018
#
# Handle case of empty/malformed entry returned from the server
#
# Version 4.1: 30 October 2017
#
# Fixed to include USD in the list of currency codes.  
#
# Version 4: 2 October 2017 
#
# Complete rewrite to use Yahoo YQL API due to removal of TimeGenie RSS feed.
# Switched to requests library using JSON.  One program now runs under
# Python 2 or Python 3.  Thanks to Ray Hamel for some help with this update.  

# Normal imports
import requests
import codecs
import json
from argparse import ArgumentParser
from collections import OrderedDict
from datetime import date
from os import linesep
from os.path import getmtime
from sys import exit, stderr, stdout

datestr = date.today().isoformat()

output_dir = ''

currency_file = output_dir + 'currency.units'
cpi_file = output_dir + 'cpi.units'

# valid metals 

validmetals = ['silver','gold','platinum']

PRIMITIVE = '!        # Base unit, the primitive unit of currency'

# This exchange rate table lists the currency ISO 4217 codes, their
# long text names, and any fixed definitions.  If the definition is
# empty then units_cur will query the server for a value.

rate_index = 1
currency = OrderedDict([
    ('ATS', ['austriaschilling',  '1|13.7603 euro']),
    ('BEF', ['belgiumfranc',      '1|40.3399 euro']),
    ('CYP', ['cypruspound',       '1|0.585274 euro']),
    ('EEK', ['estoniakroon',      '1|15.6466 euro # Equal to 1|8 germanymark']),
    ('FIM', ['finlandmarkka',     '1|5.94573 euro']),
    ('FRF', ['francefranc',       '1|6.55957 euro']),
    ('DEM', ['germanymark',       '1|1.95583 euro']),
    ('GRD', ['greecedrachma',     '1|340.75 euro']),
    ('IEP', ['irelandpunt',       '1|0.787564 euro']),
    ('ITL', ['italylira',         '1|1936.27 euro']),
    ('LVL', ['latvialats',        '1|0.702804 euro']),
    ('LTL', ['lithuanialitas',    '1|3.4528 euro']),
    ('LUF', ['luxembourgfranc',   '1|40.3399 euro']),
    ('MTL', ['maltalira',         '1|0.4293 euro']),
    ('SKK', ['slovakiakoruna',    '1|30.1260 euro']),
    ('SIT', ['sloveniatolar',     '1|239.640 euro']),
    ('ESP', ['spainpeseta',       '1|166.386 euro']),
    ('NLG', ['netherlandsguilder','1|2.20371 euro']),
    ('PTE', ['portugalescudo',    '1|200.482 euro']),
    ('CVE', ['capeverdeescudo',   '1|110.265 euro']),
    ('BGN', ['bulgarialev',       '1|1.9558 euro']),
    ('BAM', ['bosniaconvertiblemark','germanymark']),
    ('KMF', ['comorosfranc',      '1|491.96775 euro']),
    ('XOF', ['westafricafranc',   '1|655.957 euro']),
    ('XPF', ['cfpfranc',          '1|119.33 euro']),
    ('XAF', ['centralafricacfafranc','1|655.957 euro']),
    ('AED', ['uaedirham','']),
    ('AFN', ['afghanistanafghani','']),
    ('ALL', ['albanialek','']),
    ('AMD', ['armeniadram','']),
    ('ANG', ['antillesguilder','']),
    ('AOA', ['angolakwanza','']),
    ('ARS', ['argentinapeso','']),
    ('AUD', ['australiadollar','']),
    ('AWG', ['arubaflorin','']),
    ('AZN', ['azerbaijanmanat','']),
    ('BAM', ['bosniaconvertiblemark','']),
    ('BBD', ['barbadosdollar','']),
    ('BDT', ['bangladeshtaka','']),
    ('BGN', ['bulgarialev','']),
    ('BHD', ['bahraindinar','']),
    ('BIF', ['burundifranc','']),
    ('BMD', ['bermudadollar','']),
    ('BND', ['bruneidollar','']),
    ('BOB', ['boliviaboliviano','']),
    ('BRL', ['brazilreal','']),
    ('BSD', ['bahamasdollar','']),
    ('BTN', ['bhutanngultrum','']),
    ('BWP', ['botswanapula','']),
    ('BYN', ['belarusruble','']),
    ('BYR', ['oldbelarusruble','1|10000 BYN']),  
    ('BZD', ['belizedollar','']),
    ('CAD', ['canadadollar','']),
    ('CDF', ['drcfranccongolais','']),
    ('CHF', ['swissfranc','']),
    ('CLP', ['chilepeso','']),
    ('CNY', ['chinayuan','']),
    ('COP', ['colombiapeso','']),
    ('CRC', ['costaricacolon','']),
    ('CUP', ['cubapeso','']),
    ('CVE', ['capeverdeescudo','']),
    ('CZK', ['czechiakoruna','']),
    ('DJF', ['djiboutifranc','']),
    ('DKK', ['denmarkkrone','']),
    ('DOP', ['dominicanrepublicpeso','']),
    ('DZD', ['algeriadinar','']),
    ('EGP', ['egyptpound','']),
    ('ERN', ['eritreanakfa','']),
    ('ETB', ['ethiopiabirr','']),
    ('EUR', ['euro','']),
    ('FJD', ['fijidollar','']),
    ('FKP', ['falklandislandspound','']),
    ('GBP', ['ukpound','']),
    ('GEL', ['georgialari','']),
    ('GHS', ['ghanacedi','']),
    ('GIP', ['gibraltarpound','']),
    ('GMD', ['gambiadalasi','']),
    ('GNF', ['guineafranc','']),
    ('GTQ', ['guatemalaquetzal','']),
    ('GYD', ['guyanadollar','']),
    ('HKD', ['hongkongdollar','']),
    ('HNL', ['honduraslempira','']),
    ('HRK', ['croatiakuna','']),
    ('HTG', ['haitigourde','']),
    ('HUF', ['hungaryforint','']),
    ('IDR', ['indonesiarupiah','']),
    ('ILS', ['israelnewshekel','']),
    ('INR', ['indiarupee','']),
    ('IQD', ['iraqdinar','']),
    ('IRR', ['iranrial','']),
    ('ISK', ['icelandkrona','']),
    ('JMD', ['jamaicadollar','']),
    ('JOD', ['jordandinar','']),
    ('JPY', ['japanyen','']),
    ('KES', ['kenyaschilling','']),
    ('KGS', ['kyrgyzstansom','']),
    ('KHR', ['cambodiariel','']),
    ('KMF', ['comorosfranc','']),
    ('KPW', ['northkoreawon','']),
    ('KRW', ['southkoreawon','']),
    ('KWD', ['kuwaitdinar','']),
    ('KYD', ['caymanislandsdollar','']),
    ('KZT', ['kazakhstantenge','']),
    ('LAK', ['laokip','']),
    ('LBP', ['lebanonpound','']),
    ('LKR', ['srilankarupee','']),
    ('LRD', ['liberiadollar','']),
    ('LSL', ['lesotholoti','']),
    ('LYD', ['libyadinar','']),
    ('MAD', ['moroccodirham','']),
    ('MDL', ['moldovaleu','']),
    ('MGA', ['madagascarariary','']),
    ('MKD', ['macedoniadenar','']),
    ('MMK', ['myanmarkyat','']),
    ('MNT', ['mongoliatugrik','']),  
    ('MOP', ['macaupataca','']),
    ('MRO', ['mauritaniaoldouguiya','1|10 MRU']),
    ('MRU', ['mauritaniaouguiya', '']), 
    ('MUR', ['mauritiusrupee','']),
    ('MVR', ['maldiverufiyaa','']),
    ('MWK', ['malawikwacha','']),
    ('MXN', ['mexicopeso','']),
    ('MYR', ['malaysiaringgit','']),
    ('MZN', ['mozambiquemetical','']),
    ('NAD', ['namibiadollar','']),
    ('NGN', ['nigerianaira','']),
    ('NIO', ['nicaraguacordobaoro','']),
    ('NOK', ['norwaykrone','']),
    ('NPR', ['nepalrupee','']),
    ('NZD', ['newzealanddollar','']),
    ('OMR', ['omanrial','']),
    ('PAB', ['panamabalboa','']),
    ('PEN', ['perunuevosol','']),
    ('PGK', ['papuanewguineakina','']),
    ('PHP', ['philippinepeso','']),
    ('PKR', ['pakistanrupee','']),
    ('PLN', ['polandzloty','']),
    ('PYG', ['paraguayguarani','']),
    ('QAR', ['qatarrial','']),
    ('RON', ['romanianewlei','']),
    ('RSD', ['serbiadinar','']),
    ('RUB', ['russiaruble','']),
    ('RWF', ['rwandafranc','']),
    ('SAR', ['saudiarabiariyal','']),
    ('SBD', ['solomonislandsdollar','']),
    ('SCR', ['seychellesrupee','']),
    ('SDG', ['sudanpound','']),
    ('SEK', ['swedenkrona','']),
    ('SGD', ['singaporedollar','']),
    ('SHP', ['sainthelenapound','']),
#    ('SLL', ['sierraleoneoldleone','1|1000 SLE']),
#    ('SLE', ['sierraleoneleone','']),
    ('SOS', ['somaliaschilling','']),
    ('SRD', ['surinamedollar','']),
    ('SSP', ['southsudanpound','']),
    ('STD', ['saotome&principeolddobra','']),
    ('STN', ['saotome&principedobra','']),
#    ('SVC', ['elsalvadorcolon','']),  # eliminated in 2001
    ('SYP', ['syriapound','']),
    ('SZL', ['swazilandlilangeni','']),
    ('THB', ['thailandbaht','']),
    ('TJS', ['tajikistansomoni','']),
    ('TMT', ['turkmenistanmanat','']),
    ('TND', ['tunisiadinar','']),
    ('TOP', ["tongapa'anga",'']),
    ('TRY', ['turkeylira','']),
    ('TTD', ['trinidadandtobagodollar','']),
    ('TWD', ['taiwandollar','']),
    ('TZS', ['tanzaniashilling','']),
    ('UAH', ['ukrainehryvnia','']),
    ('UGX', ['ugandaschilling','']),
    ('USD', ['US$', '']),
    ('UYU', ['uruguaypeso','']),
    ('UZS', ['uzbekistansum','']),
    ('VEF', ['venezuelabolivarfuerte','']),
    ('VES', ['venezuelabolivarsoberano','']),
    ('VND', ['vietnamdong','']),
    ('VUV', ['vanuatuvatu','']),
    ('WST', ['samoatala','']),
    ('XAF', ['centralafricacfafranc','']),
    ('XCD', ['eastcaribbeandollar','']),
    ('XDR', ['specialdrawingrights','']),
    ('YER', ['yemenrial','']),
    ('ZAR', ['southafricarand','']),
    ('ZMW', ['zambiakwacha','']),
    ('ZWL', ['zimbabwedollar','']),
    ('FOK', ['faroeislandskróna','DKK']),
    ('GGP', ['guernseypound', 'GBP']),
    ('IMP', ['isleofmanpound','GBP']),
    ('JEP', ['jerseypound','GBP']),
    ('KID', ['kiribatidollar','AUD']),
    ('TVD', ['tuvaludollar','AUD']),
])


def validfloat(x):
  try:
    float(x)
    return True
  except ValueError:
    return False

def addrate(verbose,form,code,rate):
  if code not in currency.keys():
    if (verbose):
      stderr.write('Got unknown currency with code {}\n'.format(code))
  else:
    if not currency[code][rate_index]:
      if validfloat(rate):
        currency[code][rate_index] = form.format(rate)
      else:
        stderr.write('Got invalid rate "{}" for currency "{}"\n'.format(
                                  rate, code))
    elif verbose:
      if currency[code][rate_index] != form.format(rate):
        stderr.write('Got value "{}" for currency "{}" but '
                   'it is already defined as {}\n'.format(rate, code,
                                                  currency[code][rate_index]))

def getjson(address,args=None):
  try:
    res = requests.get(address,args)
    res.raise_for_status()
    return(res.json())
  except requests.exceptions.RequestException as e:
    stderr.write('Error connecting to currency server:\n{}.\n'.format(e))
    exit(1)
        
########################################################
#
#  Connect to floatrates for currency update
#

def floatrates(verbose,base,dummy):
  webdata = getjson('https://www.floatrates.com/daily/'+base+'.json')
  for index in webdata:
    entry = webdata[index]
    if 'rate' not in entry or 'code' not in entry:    # Skip empty/bad entries
      if verbose:
        stderr.write('Got bad entry from server: '+str(entry)+'\n')
    else:      
      addrate(verbose,'{} '+base,entry['code'],entry['inverseRate'])
  currency[base][rate_index] = PRIMITIVE
  return('FloatRates ('+base+' base)')

########################################################
#
# Connect to European central bank site
#

def eubankrates(verbose,base,dummy):
  if verbose and base!='EUR':
    stderr.write('European bank uses euro for base currency.  Specified base {} ignored.\n'.format(base))
  import xml.etree.ElementTree as ET
  try:
    res=requests.get('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml')
    res.raise_for_status()
    data = ET.fromstring(res.content)[2][0]
  except requests.exceptions.RequestException as e:
    stderr.write('Error connecting to currency server:\n{}.\n'.
                 format(e))
    exit(1)
  for entry in data.iter():
    if entry.get('time'):
      continue
    rate = entry.get('rate')
    code = entry.get('currency')
    if not rate or not code:                # Skip empty/bad entries
      if verbose:
        stderr.write('Got bad entry from server, code {} and rate {}\n'.format(code,rate))
    else:      
      addrate(verbose,'1|{} euro', code, rate)
  currency['EUR'][rate_index]=PRIMITIVE
  return('the European Central Bank (euro base)')
      
########################################################
#
# Connect to fixer.io (requires API key)
#
# Free API key does not allow changing base currency
# With free key only euro base is supported, and https is not allowed
#
      
def fixer(verbose,base,key):
  if not key:
    stderr.write('API key required for this source\n')
    exit(1)
  if verbose and base!='EUR':
    stderr.write('Fixer uses euro for base currency.  Specified base {} ignored.\n'.format(base))
  webdata = getjson('http://data.fixer.io/api/latest', {'access_key':key})
  if not webdata['success']:
    stderr.write('Currency server error: '+webdata['error']['info'])
    exit(1)
  for code in webdata['rates']:
    addrate(verbose,'1|{} euro', code, webdata['rates'][code])
  currency['EUR'][rate_index] = PRIMITIVE
  return('Fixer (euro base)')

########################################################
#
# Connect to openexchangerates (requires API key)
#
# Free API key does not allow changing the base currency
#
         
def openexchangerates(verbose,base,key):
  if not key:
    stderr.write('API key required for this source\n')
    exit(1)
  if verbose and base!='USD':
    stderr.write('Open Exchange Rates uses US dollar for base currency.  Specified base {} ignored.\n'.format(base))
  webdata = getjson('https://openexchangerates.org/api/latest.json',
                    {'app_id':key}
                    )
  for code in webdata['rates']:
    addrate(verbose,'1|{} US$', code, webdata['rates'][code])
  currency['USD'][rate_index] = PRIMITIVE
  return('open exchange rates (USD base)')

########################################################
#
# Connect to exchangerate-api.com
#
# The open access endpoint gives updates once per day.
# User can optionally supply a paid account's API key to get newer data and more precision.
# Base currency can be changed with both open and paid versions of the API.
#

def exchangerate_api(verbose,base,key):
  if not key:
    webdata = getjson('https://open.er-api.com/v6/latest/'+base)
    if not webdata['result'] or webdata['result'] != 'success':
      stderr.write('Currency server error: '+webdata['error-type']+'\n')
      exit(1)
    for code, rate in webdata['rates'].items() :
      addrate(verbose,'1|{} '+base,code,rate)
  else:
    webdata = getjson('https://v6.exchangerate-api.com/v6/'+key+'/latest/'+base)
    if not webdata['result'] or webdata['result'] != 'success':
      stderr.write('Currency server error: '+webdata['error-type']+'\n')
      exit(1)
    for code, rate in webdata['conversion_rates'].items() :
      addrate(verbose,'1|{} '+base,code,rate)
  currency[base][rate_index] = PRIMITIVE
  return('exchangerate-api.com ('+base+' base)')


#######################################################
#
# list of valid source names and corresponding functions
#

sources = {       
  'exchangerate_api': exchangerate_api,  
  'floatrates': floatrates,
  'eubank' : eubankrates,
  'fixer' : fixer,
  'openexchangerates': openexchangerates,
}

default_currency = 'exchangerate_api'

#######################################################
#
# Argument Processing
#

ap = ArgumentParser(
    description="Update currency information for 'units' "
    "into the specified filenames or the default currency "
    "file name {} and CPI file name {}.  The special "
    "filename '-' will send either or both files to "
    "stdout.".format(currency_file,cpi_file),
)

ap.add_argument(
    'currency_file',
    default=currency_file,
    help='the file to update',
    metavar='currency_file',
    nargs='?',
    type=str,
)

ap.add_argument(
    'cpi_file',
    default=cpi_file,
    help='the file to update',
    metavar='cpi_file',
    nargs='?',
    type=str,
)

ap.add_argument('-V','--version',
                action='version',
                version='%(prog)s version ' + version,
                help='display units_cur version',
)

ap.add_argument('-v','--verbose',
                action='store_true',
                help='display details when fetching currency data',
)

ap.add_argument('-s','--source',choices=list(sources.keys()),
                default=default_currency, 
                help='set currency data source (default: {})'.format(default_currency),
)

ap.add_argument('-b','--base',default='USD',
                help='set the base currency (when allowed by source).  BASE should be a 3 letter ISO currency code, e.g. USD.  The specified currency will be the primitive currency unit used by units.  Only the floatrates source supports this option.',
)                

ap.add_argument('-k','--key',default='',
                help='set API key for sources that require it'
)

ap.add_argument('--blskey',default='',
                help='set BLS key for fetching CPI data'
)


args = ap.parse_args()  
currency_file = args.currency_file
cpi_file = args.cpi_file
verbose = args.verbose
source = args.source
base = args.base
apikey = args.key
cpikey = args.blskey

if base not in currency.keys():
  stderr.write('Base currency {} is not a known currency code.\n'.format(base))
  exit(1)

########################################################
#
# Fetch currency data from specified curerncy source
#

sourcename = sources[source](verbose,base,apikey)
            
# Delete currencies where we have no rate data
for code in list(currency.keys()):
  if not currency[code][rate_index]:
    if verbose:
      stderr.write('No data for {}\n'.format(code))
    del currency[code]

cnames = [currency[code][0] for code in currency.keys()]
crates = [currency[code][1] for code in currency.keys()]

codestr = '\n'.join('{:23}{}'.
   format(code, name) for (code,name) in zip(currency.keys(), cnames))

maxlen = max(len(name) for name in cnames) + 2

ratestr = '\n'.join(
    '{:{}}{}'.format(name, maxlen, rate) for (name, rate) in zip(cnames, crates)
    )

#######################################################
#
# Get precious metals data and bitcoin
#

metals = getjson('https://services.packetizer.com/spotprices',{'f':'json'})
bitcoin = getjson('https://services.packetizer.com/btc',{'f':'json'})

metallist = ['']*len(validmetals)
for metal, price in metals.items():
  if metal in validmetals:
    metalindex = validmetals.index(metal)
    if validfloat(price):
      if not metallist[metalindex]:
        metallist[validmetals.index(metal)] = '{:19}{} US$/troyounce'.format(
                                                         metal + 'price', price)
      elif verbose:
        stderr.write('Got value "{}" for metal "{}" but '
                     'it is already defined\n'.format(price,metal))
    else:
      stderr.write('Got invalid rate "{}" for metal "{}"\n'.format(price,metal))
  elif metal != 'date' and verbose:  # Don't print a message for the "date" entry
    stderr.write('Got unknown metal "{}" with value "{}"\n'.format(metal,price))
metalstr = '\n'.join(metallist)

if validfloat(bitcoin['usd']):
  bitcoinstr = '{:{}}{} US$ # From services.packetizer.com/btc\n'.format(
                'bitcoin',maxlen,bitcoin['usd'])
else:
  stderr.write('Got invalid bitcoin rate "{}"\n', bitcoint['usd'])
  bitcointstr=''

#######################################################
#
# Get CPI data
#

docpi=False
if cpi_file=='-':
  docpi=True
else:
  try:
    filedate = getmtime(cpi_file)
    filedate = date.fromtimestamp(filedate)
    today = date.today()
    dmonth = (today.month-filedate.month) + 12*(today.year-filedate.year)
    if dmonth>1 or (dmonth==1 and today.day>18):
      docpi=True
  except FileNotFoundError:
    docpi=True
  
if docpi:
  headers = {'Content-type': 'application/json'}
  yearlist = list(range(date.today().year,1912,-10))
  if yearlist[-1]>1912:
    yearlist.append(1912)
  cpi=[]
  lastcpi = 0
  query = {"seriesid": ['CUUR0000SA0']}
  if cpikey:
    query["registrationkey"]=cpikey
  ########################################################################
  # The api.bls.gov site currently (2024-02-15) resolves to an
  # IPv4 address which works, and an IPv6 address which does
  # not.  The urllib3 package does not currently implement the
  # Happy Eyeballs algorithm, nor any other mechanism to re-try
  # hung connections with alternative addresses returned by DNS.
  # In the interest of expediency, we temporarily force the
  # connection to api.bls.gov to only use IPv4; hopefully at
  # some future date either urllib3 will gain the necessary
  # features and/or the BLS will fix their configuration so
  # that all A and AAAA records for api.bls.gov resolve to an
  # operational server.  At that time we can remove the three
  # references to "requests.packages.urllib3.util.connection.HAS_IPV6"
  # in this function.
  ########################################################################
  save_rpuucH = requests.packages.urllib3.util.connection.HAS_IPV6
  requests.packages.urllib3.util.connection.HAS_IPV6 = False
  for endyear in range(len(yearlist)-1):
    query["startyear"]=str(yearlist[endyear+1]+1)
    query["endyear"]=str(yearlist[endyear])
    data = json.dumps(query)
    p = requests.post('https://api.bls.gov/publicAPI/v2/timeseries/data/', data=data, headers=headers)
    json_data = json.loads(p.text)
    if json_data['status']=="REQUEST_NOT_PROCESSED":
      docpi=False
      stderr.write("Unable to update CPI data: Exceeded daily threshold for BLS requests\n")
      break
    for series in json_data['Results']['series']:
        for item in series['data']:
            if not ('M01' <= item['period'] <= 'M12'):
                continue
            year = int(item['year']) + int(item['period'][1:])/12
            value = item['value']
            cpi.append(' '*10 + "{} {} \\".format(year,value))
            if lastcpi==0:
              lastcpi=value
              lastyear=year
            firstcpi=value
            firstyear=year
  requests.packages.urllib3.util.connection.HAS_IPV6 = save_rpuucH              
if docpi:   # Check again because request may have failed
  cpi.reverse()
  cpistr = '\n'.join(cpi)

  cpi_text = ("""!message Consumer price index data from US BLS, {datestr}

UScpi[1] noerror \\
{cpistr}

UScpi_now          {lastcpi}
UScpi_lastdate     {lastyear}

USdollars_in(date) units=[1;$] domain=[{firstyear},{lastyear}] \\
                               range=[1,{maxinfl}] \\
                               US$ UScpi_now / UScpi(date) ;\\
                               ~UScpi(US$ UScpi_now / USdollars_in)
USinflation_since(date) units=[1;1] domain=[{firstyear},{lastyear}] \\
                               range=[1,{maxinfl}] \\
                                UScpi_now / UScpi(date) ;\\
                               ~UScpi(UScpi_now / USinflation_since)

""".format(datestr=datestr,cpistr=cpistr,maxinfl=float(lastcpi)/float(firstcpi),lastcpi=lastcpi,
           firstyear=firstyear,lastyear=lastyear)
  ).replace('\n', linesep)  
  
#######################################################
#
# Format output and write the currency file
#

currency_text = (
"""# ISO Currency Codes

{codestr}

# Currency exchange rates source 

!message Currency exchange rates from {sourcename} on {datestr}

{ratestr}
{bitcoinstr}

# Precious metals prices from Packetizer (services.packetizer.com/spotprices)

{metalstr}

""".format(codestr=codestr, datestr=datestr, ratestr=ratestr, metalstr=metalstr,
           bitcoinstr=bitcoinstr, sourcename=sourcename)
).replace('\n', linesep)


######################################

try:
    if currency_file == '-':
        codecs.StreamReader(stdout, codecs.getreader('utf8')).write(currency_text)
    else:    
        with codecs.open(currency_file, 'w', 'utf8') as of:
            of.write(currency_text)
except IOError as e:
    stderr.write('Unable to write to output file:\n{}\n'.format(e))
    exit(1)

if docpi:    
  try:
      if cpi_file == '-':
          codecs.StreamReader(stdout, codecs.getreader('utf8')).write(cpi_text)
      else:    
          with codecs.open(cpi_file, 'w', 'utf8') as of:
              of.write(cpi_text)
  except IOError as e:
      stderr.write('Unable to write to output file:\n{}\n'.format(e))
      exit(1)
    
units-2.23/units.info0000664000175000017500000062476114564532666014142 0ustar  adrianadrianThis is units.info, produced by makeinfo version 6.8 from units.texinfo.

This manual is for GNU Units (version 2.23), which performs units
conversions and units calculations.

   Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2007,
2011-2024 Free Software Foundation, Inc.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.3 or any later version published by the Free Software
     Foundation; with no Invariant Sections, with no Front-Cover Texts,
     and with no Back-Cover Texts.  A copy of the license is included in
     the section entitled "GNU Free Documentation License".
INFO-DIR-SECTION Science
START-INFO-DIR-ENTRY
* Units: (units).               Units conversion and scientific calculation.
END-INFO-DIR-ENTRY


File: units.info,  Node: Top,  Next: Overview,  Up: (dir)

Units Conversion
****************

This manual describes the 'units' command for units conversion and how
you can use it as a powerful scientific calculator that keeps track of
units.  This is Edition 2.21 of 'The Units Conversion Manual' for
'units' Version 2.23.

* Menu:

* Overview::            What does 'units' do?
* Interactive Use::     How to use 'units'.
* Command Line Use::    How to use 'units' non-interactively.
* Unit Definitions::    What units are defined?
* Unit Expressions::    Forming compound units.
* Nonlinear Conversions:: Nonlinear unit conversions (e.g., temperature).
* Unit Lists::		Conversion to sums of units (e.g., feet and inches).
* Alternative Unit Systems::     CGS units and natural units
* Logging Calculations:: Logging conversions and calculations in a file.
* Invoking Units::      Command line options.
* Scripting with Units:: Using units in scripts
* Output Styles::       Different ways units can print the output.
* Defining Your Own Units::  Adding your own unit definitions
* Numeric Output Format:: How to change the output format
* Localization::        How to define and use regional unit names.
* Environment Vars::    Environment variables used by 'units'.
* Data Files::          Descriptions and locations of units data files.
* Unicode Support::     Support for Unicode (UTF-8).
* Readline Support::    Unit name completion and editing.
* Currency::            Updating currency exchange rates and CPI.
* Database Syntax::     Summary of database command syntax.
* GNU Free Documentation License::  License.
* Index::               General index.


File: units.info,  Node: Overview,  Next: Interactive Use,  Prev: Top,  Up: Top

1 Overview of 'units'
*********************

The 'units' program converts quantities expressed in various systems of
measurement to their equivalents in other systems of measurement.  Like
many similar programs, it can handle multiplicative scale changes.  It
can also handle nonlinear conversions such as Fahrenheit to Celsius;(1)
*note Temperature Conversions::.  The program can also perform
conversions from and to sums of units, such as converting between meters
and feet plus inches.

   Basic operation is simple: you enter the units that you want to
convert _from_ and the units that you want to convert _to_.  You can use
the program interactively with prompts, or you can use it from the
command line.

   Beyond simple unit conversions, 'units' can be used as a
general-purpose scientific calculator that keeps track of units in its
calculations.  You can form arbitrary complex mathematical expressions
of dimensions including sums, products, quotients, powers, and even
roots of dimensions.  Thus you can ensure accuracy and dimensional
consistency when working with long expressions that involve many
different units that may combine in complex ways; for an illustration,
*note Complicated Unit Expressions::.

   The units are defined in several external data files.  You can use
the extensive data files that come with the program, or you can provide
your own data file to suit your needs.  You can also use your own data
file to supplement the standard data files.

   You can change the default behavior of 'units' with various options
given on the command line.  *Note Invoking Units::, for a description of
the available options.

   ---------- Footnotes ----------

   (1) But Fahrenheit to Celsius is linear, you insist.  Not so.  A
transformation T is linear if T(x+y)=T(x)+T(y) and this fails for
T(x)=ax+b.  This transformation is affine, but not linear--see
.


File: units.info,  Node: Interactive Use,  Next: Command Line Use,  Prev: Overview,  Up: Top

2 Interacting with 'units'
**************************

To invoke 'units' for interactive use, type 'units' at your shell
prompt.  The program will print something like this:

     Currency exchange rates from FloatRates (USD base) on 2023-07-08
     3612 units, 109 prefixes, 122 nonlinear units

     You have:

At the 'You have:' prompt, type the quantity and units that you are
converting _from_.  For example, if you want to convert ten meters to
feet, type '10 meters'.  Next, 'units' will print 'You want:'.  You
should type the units you want to convert _to_.  To convert to feet, you
would type 'feet'.  If the 'readline' library was compiled in, then
 will complete unit names.  *Note Readline Support::, for more
information about 'readline'.  To quit the program type 'quit' or 'exit'
at either prompt.

   The result will be displayed in two ways.  The first line of output,
which is marked with a '*' to indicate multiplication, gives the result
of the conversion you have asked for.  The second line of output, which
is marked with a '/' to indicate division, gives the inverse of the
conversion factor.  If you convert 10 meters to feet, 'units' will print

         * 32.808399
         / 0.03048

which tells you that 10 meters equals about 32.8 feet.  The second
number gives the conversion in the opposite direction.  In this case, it
tells you that 1 foot is equal to about 0.03 dekameters since the
dekameter is 10 meters.  It also tells you that 1/32.8 is about 0.03.

   The 'units' program prints the inverse because sometimes it is a more
convenient number.  In the example above, for example, the inverse value
is an exact conversion: a foot is exactly 0.03048 dekameters.  But the
number given the other direction is inexact.

   If you convert grains to pounds, you will see the following:

     You have: grains
     You want: pounds
             * 0.00014285714
             / 7000

From the second line of the output, you can immediately see that a grain
is equal to a seven thousandth of a pound.  This is not so obvious from
the first line of the output.  If you find the output format confusing,
try using the '--verbose' option:

     You have: grain
     You want: aeginamina
             grain = 0.00010416667 aeginamina
             grain = (1 / 9600) aeginamina

If you request a conversion between units that measure reciprocal
dimensions, then 'units' will display the conversion results with an
extra note indicating that reciprocal conversion has been done:

     You have: 6 ohms
     You want: siemens
             reciprocal conversion
             * 0.16666667
             / 6

Reciprocal conversion can be suppressed by using the '--strict' option.
As usual, use the '--verbose' option to get more comprehensible output:

     You have: tex
     You want: typp
             reciprocal conversion
             1 / tex = 496.05465 typp
             1 / tex = (1 / 0.0020159069) typp

     You have: 20 mph
     You want: sec/mile
             reciprocal conversion
             1 / 20 mph = 180 sec/mile
             1 / 20 mph = (1 / 0.0055555556) sec/mile

If you enter incompatible unit types, the 'units' program will print a
message indicating that the units are not conformable and it will
display the reduced form for each unit:

     You have: ergs/hour
     You want: fathoms kg^2 / day
     conformability error
             2.7777778e-11 kg m^2 / sec^3
             2.1166667e-05 kg^2 m / sec

If you only want to find the reduced form or definition of a unit,
simply press  at the 'You want:' prompt.  Here is an example:

     You have: jansky
     You want:
             Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2

The output from 'units' indicates that the jansky is defined to be equal
to a fluxunit which in turn is defined to be a certain combination of
watts, meters, and hertz.  The fully reduced (and in this case somewhat
more cryptic) form appears on the far right.  If the ultimate definition
and the fully reduced form are identical, the latter is not shown:

     You have: B
     You want:
             Definition: byte = 8 bit

The fully reduced form _is_ shown if it and the ultimate definition are
equivalent but not identical:

     You have: N
     You want:
             Definition: newton = kg m / s^2 = 1 kg m / s^2

Some named units are treated as dimensionless in some situations.  These
units include the radian and steradian.  These units will be treated as
equal to 1 in units conversions.  Power is equal to torque times angular
velocity.  This conversion can only be performed if the radian is
dimensionless.

     You have: (14 ft lbf) (12 radians/sec)
     You want: watts
             * 227.77742
             / 0.0043902509

It is also possible to compute roots and other non-integer powers of
dimensionless units; this allows computations such as the altitude of
geosynchronous orbit:

     You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius
     You want: miles
             * 22243.267
             / 4.4957425e-05

Named dimensionless units are not treated as dimensionless in other
contexts.  They cannot be used as exponents so for example,
'meter^radian' is forbidden.

   If you want a list of options you can type '?' at the 'You want:'
prompt.  The program will display a list of named units that are
conformable with the unit that you entered at the 'You have:' prompt
above.  Conformable unit _combinations_ will not appear on this list.

   Typing 'help' at either prompt displays a short help message.  You
can also type 'help' followed by a unit name.  This will invoke a pager
on the units data base at the point where that unit is defined.  You can
read the definition and comments that may give more details or
historical information about the unit.  If your pager allows, you may
want to scroll backwards, e.g.  with 'b', because sometimes a longer
comment about a unit or group of units will appear before the
definition.  You can generally quit out of the pager by pressing 'q'.

   Typing 'search' TEXT will display a list of all of the units whose
names contain TEXT as a substring along with their definitions.  This
may help in the case where you aren't sure of the right unit name.


File: units.info,  Node: Command Line Use,  Next: Unit Definitions,  Prev: Interactive Use,  Up: Top

3 Using 'units' Non-Interactively
*********************************

The 'units' program can perform units conversions non-interactively from
the command line.  To do this, type the command, type the original unit
expression, and type the new units you want.  If a units expression
contains non-alphanumeric characters, you may need to protect it from
interpretation by the shell using single or double quote characters.

   If you type

     units "2 liters" quarts

then 'units' will print

         * 2.1133764
         / 0.47317647

and then exit.  The output tells you that 2 liters is about 2.1 quarts,
or alternatively that a quart is about 0.47 times 2 liters.

   'units' does not require a space between a numerical value and the
unit, so the previous example can be given as

     units 2liters quarts

to avoid having to quote the first argument.

   If the conversion is successful, 'units' will return success (zero)
to the calling environment.  If you enter non-conformable units, then
'units' will print a message giving the reduced form of each unit and it
will return failure (nonzero) to the calling environment.

   If the '--conformable' option is given, only one unit expression is
allowed, and 'units' will print all units conformable with that
expression; it is equivalent to giving '?' at the 'You want:' prompt.
For example,

     units --conformable gauss
     B_FIELD   tesla
     Gs        gauss
     T         tesla
     gauss     abvolt sec / cm^2
     stT       stattesla
     statT     stattesla
     stattesla statWb/cm^2
     tesla     Wb/m^2

If you give more than one unit expression with the '--conformable'
option, the program will exit with an error message and return failure.
This option has no effect in interactive mode.

   If the '--terse' ('-t') option is given with the '--conformable'
option, conformable units are shown without definitions; with the
previous example, this would give

     units --terse --conformable gauss
     B_FIELD
     Gs
     T
     gauss
     stT
     statT
     stattesla
     tesla

When the '--conformable' option is not given and you invoke 'units' with
only one argument, 'units' will print the definition of the specified
unit.  It will return failure if the unit is not defined and success if
the unit is defined.


File: units.info,  Node: Unit Definitions,  Next: Unit Expressions,  Prev: Command Line Use,  Up: Top

4 Unit Definitions
******************

The conversion information is read from several units data files:
'definitions.units', 'elements.units', 'currency.units', and
'cpi.units', which are usually located in the '/usr/share/units'
directory.  If you invoke 'units' with the '-V' option, it will print
the location of these files.  The default main file includes definitions
for all familiar units, abbreviations and metric prefixes.  It also
includes many obscure or archaic units.  Many common spelled-out numbers
(e.g., 'seventeen') are recognized.

4.1 Physical Constants
======================

Many constants of nature are defined, including these:

     pi          ratio of circumference of a circle to its diameter
     c           speed of light
     e           charge on an electron
     force       acceleration of gravity
     mole        Avogadro's number
     water       pressure per unit height of water
     Hg          pressure per unit height of mercury
     au          astronomical unit
     k           Boltzman's constant
     mu0         permeability of vacuum
     epsilon0    permittivity of vacuum
     G           Gravitational constant
     mach        speed of sound

The standard data file includes numerous other constants.  Also included
are the densities of various ingredients used in baking so that '2 cups
flour_sifted' can be converted to 'grams'.  This is not an exhaustive
list.  Consult the units data file to see the complete list, or to see
the definitions that are used.

4.2 Atomic Masses of the Elements
=================================

The data file 'elements.units' includes atomic masses for most elements
and most known isotopes.  If the mole fractions of constituent isotopes
are known, an elemental mass is calculated from the sum of the products
of the mole fractions and the masses of the constituent isotopes.  If
the mole fractions are not known, the mass of the most stable
isotope--if known--is given as the elemental mass.  For radioactive
elements with atomic numbers 95 or greater, the mass number of the most
stable isotope is not specified, because the list of studied isotopes is
still incomplete.  If no stable isotope is known, no elemental mass is
given, and you will need to choose the most appropriate isotope.

   The data are obtained from the US National Institute for Standards
and Technology (NIST):
.
The 'elements.units' file can be generated from these data using the
'elemcvt' command included with the distribution.

4.3 Currency Exchange Rates and Consumer Price Index
====================================================

The data file 'currency.units' includes currency conversion rates; the
file 'cpi.units' includes the US Consumer Price Index (CPI), published
by the US Bureau of Labor Statistics.  The data are updated monthly by
the BLS; *note Updating Currency Exchange Rates and CPI: Currency. for
information on updating 'currency.units' and 'cpi.units'.

4.4 English Customary Units
===========================

English customary units differ in various ways among different regions.
In Britain a complex system of volume measurements featured different
gallons for different materials such as a wine gallon and ale gallon
that different by twenty percent.  This complexity was swept away in
1824 by a reform that created an entirely new gallon, the British
Imperial gallon defined as the volume occupied by ten pounds of water.
Meanwhile in the USA the gallon is derived from the 1707 Winchester wine
gallon, which is 231 cubic inches.  These gallons differ by about twenty
percent.  By default if 'units' runs in the 'en_GB' locale you will get
the British volume measures.  If it runs in the 'en_US' locale you will
get the US volume measures.  In other locales the default values are the
US definitions.  If you wish to force different definitions, then set
the environment variable 'UNITS_ENGLISH' to either 'US' or 'GB' to set
the desired definitions independent of the locale.

   Before 1959, the value of a yard (and other units of measure defined
in terms of it) differed slightly among English-speaking countries.  In
1959, Australia, Canada, New Zealand, the United Kingdom, the United
States, and South Africa adopted the Canadian value of 1 yard = 0.9144 m
(exactly), which was approximately halfway between the values used by
the UK and the US; it had the additional advantage of making 1 inch =
2.54 cm (exactly).  This new standard was termed the "International
Yard".  Australia, Canada, and the UK then defined all customary lengths
in terms of the International Yard (Australia did not define the furlong
or rod); because many US land surveys were in terms of the pre-1959
units, the US continued to define customary surveyors' units (furlong,
chain, rod, pole, perch, and link) in terms of the previous value for
the foot, which was termed the "US survey foot".  The US defined a "US
survey mile" as 5280 US survey feet, and defined a "statute mile" as a
US survey mile.  The US values for these units differed from the
international values by about 2 ppm.

   The 1959 redefinition of the foot was legally binding in the US but
allowed continued use of the previous definition of the foot for
geodetic surveying.  It was assumed that this use would be temporary,
but use persisted, leading to confusion and errors, and it was at odds
with the intent of uniform standards.  Since January 1, 2023, the US
survey foot has been officially deprecated (85 FR 62698), with its use
limited to historical and legacy applications.

   The 'units' program has always used the international values for
these units; the legacy US values can be obtained by using either the
'US' or the 'survey' prefix.  In either case, the simple familiar
relationships among the units are maintained, e.g., 1 'furlong' = 660
'ft', and 1 'USfurlong' = 660 'USft', though the metric equivalents
differ slightly between the two cases.  The 'US' prefix or the 'survey'
prefix can also be used to obtain the US survey mile and the value of
the US yard prior to 1959, e.g., 'USmile' or 'surveymile' (but _not_
'USsurveymile').  To get the US value of the statute mile, use either
'USstatutemile' or 'USmile'.  The pre-1959 UK values for these units can
be obtained with the prefix 'UK'.

   Except for distances that extend over hundreds of miles (such as in
the US State Plane Coordinate System), the differences in the miles are
usually insignificant:

     You have: 100 surveymile - 100 mile
     You want: inch
             * 12.672025
             / 0.078913984

   The US acre was officially defined in terms of the US survey foot,
but 'units' has used a definition based on the international foot; the
'units' definition is now the same as the official US value.  If you
want the previous US acre, use 'USacre' and similarly use 'USacrefoot'
for the previous US version of that unit.  The difference between these
units is about 4 parts per million.

4.5 Miscellaneous Notes on Unit Definitions
===========================================

The 'pound' is a unit of mass.  To get force, multiply by the force
conversion unit 'force' or use the shorthand 'lbf'.  (Note that 'g' is
already taken as the standard abbreviation for the gram.)  The unit
'ounce' is also a unit of mass.  The fluid ounce is 'fluidounce' or
'floz'.  When British capacity units differ from their US counterparts,
such as the British Imperial gallon, the unit is defined both ways with
'br' and 'us' prefixes.  Your locale settings will determine the value
of the unprefixed unit.  Currency is prefixed with its country name:
'belgiumfranc', 'britainpound'.

   When searching for a unit, if the specified string does not appear
exactly as a unit name, then the 'units' program will try to remove a
trailing 's', 'es'.  Next units will replace a trailing 'ies' with 'y'.
If that fails, 'units' will check for a prefix.  The database includes
all of the standard metric prefixes.  Only one prefix is permitted per
unit, so 'micromicrofarad' will fail.  However, prefixes can appear
alone with no unit following them, so 'micro*microfarad' will work, as
will 'micro microfarad'.

   To find out which units and prefixes are available, read the default
units data files; the main data file is extensively annotated.


File: units.info,  Node: Unit Expressions,  Next: Nonlinear Conversions,  Prev: Unit Definitions,  Up: Top

5 Unit Expressions
******************

* Menu:

* Operators::           The usual arithmetic operators, with a few extras
* Sums and Differences of Units::  Adding and subtracting units
* Numbers as Units::    A number is a dimensionless unit
* Built-in Functions::    Trigonometric functions, logarithms, roots
* Previous Result::	Inserting the result of the previous conversion
* Complicated Unit Expressions::   A complicated example
* Variables Assigned at Run Time::	Saving intermediate results in variables
* Backwards Compatibility::   Alternate behavior for '*' and '-'


File: units.info,  Node: Operators,  Next: Sums and Differences of Units,  Up: Unit Expressions

5.1 Operators
=============

You can enter more complicated units by combining units with operations
such as multiplication, division, powers, addition, subtraction, and
parentheses for grouping.  You can use the customary symbols for these
operators when 'units' is invoked with its default options.
Additionally, 'units' supports some extensions, including high priority
multiplication using a space, and a high priority numerical division
operator ('|') that can simplify some expressions.

   You multiply units using a space or an asterisk ('*').  The next
example shows both forms:

     You have: arabicfoot * arabictradepound * force
     You want: ft lbf
             * 0.7296
             / 1.370614

You can divide units using the slash ('/') or with 'per':

     You have: furlongs per fortnight
     You want: m/s
             * 0.00016630986
             / 6012.8727

You can use parentheses for grouping:

     You have: (1/2) kg / (kg/meter)
     You want: league
             * 0.00010356166
             / 9656.0833

White space surrounding operators is optional, so the previous example
could have used '(1/2)kg/(kg/meter)'.  As a consequence, however,
hyphenated spelled-out numbers (e.g., 'forty-two') cannot be used;
'forty-two' is interpreted as '40 - 2'.

   Multiplication using a space has a higher precedence than division
using a slash and is evaluated left to right; in effect, the first '/'
character marks the beginning of the denominator of a unit expression.
This makes it simple to enter a quotient with several terms in the
denominator: 'J / mol K'.  The '*' and '/' operators have the same
precedence, and are evaluated left to right; if you multiply with '*',
you must group the terms in the denominator with parentheses:
'J / (mol * K)'.

   The higher precedence of the space operator may not always be
advantageous.  For example, 'm/s s/day' is equivalent to 'm / s s day'
and has dimensions of length per time cubed.  Similarly, '1/2 meter'
refers to a unit of reciprocal length equivalent to 0.5/meter, perhaps
not what you would intend if you entered that expression.  The get a
half meter you would need to use parentheses: '(1/2) meter'.  The '*'
operator is convenient for multiplying a sequence of quotients.  For
example, 'm/s * s/day' is equivalent to 'm/day'.  Similarly, you could
write '1/2 * meter' to get half a meter.

   The 'units' program supports another option for numerical fractions:
you can indicate division of _numbers_ with the vertical bar ('|'), so
if you wanted half a meter you could write '1|2 meter'.  You cannot use
the vertical bar to indicate division of non-numerical units (e.g.,
'm|s' results in an error message).

   Powers of units can be specified using the '^' character, as shown in
the following example, or by simple concatenation of a unit and its
exponent: 'cm3' is equivalent to 'cm^3'; if the exponent is more than
one digit, the '^' is required.  You can also use '**' as an exponent
operator.

     You have: cm^3
     You want: gallons
             * 0.00026417205
             / 3785.4118

Concatenation only works with a single unit name: if you write '(m/s)2',
'units' will treat it as multiplication by 2.  When a unit includes a
prefix, exponent operators apply to the combination, so 'centimeter3'
gives cubic centimeters.  If you separate the prefix from the unit with
any multiplication operator (e.g., 'centi meter^3'), the prefix is
treated as a separate unit, so the exponent applies only to the unit
without the prefix.  The second example is equivalent to 'centi *
(meter^3)', and gives a hundredth of a cubic meter, not a cubic
centimeter.  The 'units' program is limited internally to products of 99
units; accordingly, expressions like 'meter^100' or 'joule^34'
(represented internally as 'kg^34 m^68 / s^68') will fail.

   The '|' operator has the highest precedence, so you can write the
square root of two thirds as '2|3^1|2'.  The '^' operator has the second
highest precedence, and is evaluated right to left, as usual:

     You have: 5 * 2^3^2
     You want:
             Definition: 2560

With a dimensionless base unit, any dimensionless exponent is meaningful
(e.g., 'pi^exp(2.371)').  Even though angle is sometimes treated as
dimensionless, exponents cannot have dimensions of angle:

     You have: 2^radian
                      ^
     Exponent not dimensionless

If the base unit is not dimensionless, the exponent must be a rational
number P/Q, and the dimension of the unit must be a power of Q, so
'gallon^2|3' works but 'acre^2|3' fails.  An exponent using the slash
('/') operator (e.g., 'gallon^(2/3)') is also acceptable; the
parentheses are needed because the precedence of '^' is higher than that
of '/'.  Since 'units' cannot represent dimensions with exponents
greater than 99, a fully reduced exponent must have Q < 100.  When
raising a non-dimensionless unit to a power, 'units' attempts to convert
a decimal exponent to a rational number with Q < 100.  If this is not
possible 'units' displays an error message:

     You have: ft^1.234
     Base unit not dimensionless; rational exponent required

A decimal exponent must match its rational representation to machine
precision, so 'acre^1.5' works but 'gallon^0.666' does not.


File: units.info,  Node: Sums and Differences of Units,  Next: Numbers as Units,  Prev: Operators,  Up: Unit Expressions

5.2 Sums and Differences of Units
=================================

You may sometimes want to add values of different units that are outside
the SI. You may also wish to use 'units' as a calculator that keeps
track of units.  Sums of conformable units are written with the '+'
character, and differences with the '-' character.

     You have: 2 hours + 23 minutes + 32 seconds
     You want: seconds
             * 8612
             / 0.00011611705

     You have: 12 ft + 3 in
     You want: cm
             * 373.38
             / 0.0026782366

     You have: 2 btu + 450 ft lbf
     You want: btu
             * 2.5782804
             / 0.38785542

The expressions that are added or subtracted must reduce to identical
expressions in primitive units, or an error message will be displayed:

     You have: 12 printerspoint - 4 heredium
                                           ^
     Invalid sum of non-conformable units

If you add two values of vastly different scale you may exceed the
available precision of floating point (about 15 digits).  The effect is
that the addition of the smaller value makes no change to the larger
value; in other words, the smaller value is treated as if it were zero.

     You have: lightyear + cm

No warning is given, however.  As usual, the precedence for '+' and '-'
is lower than that of the other operators.  A fractional quantity such
as 2 1/2 cups can be given as '(2+1|2) cups'; the parentheses are
necessary because multiplication has higher precedence than addition.
If you omit the parentheses, 'units' attempts to add '2' and '1|2 cups',
and you get an error message:

     You have: 2+1|2 cups
                        ^
     Invalid sum or difference of non-conformable units

The expression could also be correctly written as '(2+1/2) cups'.  If
you write '2 1|2 cups' the space is interpreted as _multiplication_ so
the result is the same as '1 cup'.

   The '+' and '-' characters sometimes appears in exponents like
'3.43e+8'.  This leads to an ambiguity in an expression like '3e+2 yC'.
The unit 'e' is a small unit of charge, so this can be regarded as
equivalent to '(3e+2) yC' or '(3 e)+(2 yC)'.  This ambiguity is resolved
by always interpreting '+' and '-' as part of an exponent if possible.


File: units.info,  Node: Numbers as Units,  Next: Built-in Functions,  Prev: Sums and Differences of Units,  Up: Unit Expressions

5.3 Numbers as Units
====================

For 'units', numbers are just another kind of unit.  They can appear as
many times as you like and in any order in a unit expression.  For
example, to find the volume of a box that is 2 ft by 3 ft by 12 ft in
steres, you could do the following:

     You have: 2 ft 3 ft 12 ft
     You want: stere
             * 2.038813
             / 0.49048148

     You have: $ 5 / yard
     You want: cents / inch
             * 13.888889
             / 0.072
And the second example shows how the dollar sign in the units conversion
can precede the five.  Be careful: 'units' will interpret '$5' with no
space as equivalent to 'dollar^5'.


File: units.info,  Node: Built-in Functions,  Next: Previous Result,  Prev: Numbers as Units,  Up: Unit Expressions

5.4 Built-in Functions
======================

Several built-in functions are provided: 'sin', 'cos', 'tan', 'asin',
'acos', 'atan', 'sinh', 'cosh', 'tanh', 'asinh', 'acosh', 'atanh',
'exp', 'ln', 'log', 'abs', 'round', 'floor', 'ceil', 'factorial',
'Gamma', 'lnGamma', 'erf', and 'erfc'; the function 'lnGamma' is the
natural logarithm of the 'Gamma' function.

   The 'sin', 'cos', and 'tan' functions require either a dimensionless
argument or an argument with dimensions of angle.

     You have: sin(30 degrees)
     You want:
             Definition: 0.5

     You have: sin(pi/2)
     You want:
             Definition: 1

     You have: sin(3 kg)
                       ^
     Unit not dimensionless

The other functions on the list require dimensionless arguments.  The
inverse trigonometric functions return arguments with dimensions of
angle.

   The 'ln' and 'log' functions give natural log and log base 10
respectively.  To obtain logs for any integer base, enter the desired
base immediately after 'log'.  For example, to get log base 2 you would
write 'log2' and to get log base 47 you could write 'log47'.

     You have: log2(32)
     You want:
             Definition: 5
     You have: log3(32)
     You want:
             Definition: 3.1546488
     You have: log4(32)
     You want:
             Definition: 2.5
     You have: log32(32)
     You want:
             Definition: 1
     You have: log(32)
     You want:
             Definition: 1.50515
     You have: log10(32)
     You want:
             Definition: 1.50515

   If you wish to take roots of units, you may use the 'sqrt' or
'cuberoot' functions.  These functions require that the argument have
the appropriate root.  You can obtain higher roots by using fractional
exponents:

     You have: sqrt(acre)
     You want: feet
             * 208.71074
             / 0.0047913202

     You have: (400 W/m^2 / stefanboltzmann)^(1/4)
     You have:
             Definition: 289.80882 K

     You have: cuberoot(hectare)
                               ^
     Unit not a root


File: units.info,  Node: Previous Result,  Next: Complicated Unit Expressions,  Prev: Built-in Functions,  Up: Unit Expressions

5.5 Previous Result
===================

You can insert the result of the previous conversion using the
underscore ('_').  It is useful when you want to convert the same input
to several different units, for example

     You have: 2.3 tonrefrigeration
     You want: btu/hr
             * 27600
             / 3.6231884e-005
     You have: _
     You want: kW
             * 8.0887615
             / 0.12362832

Suppose you want to do some deep frying that requires an oil depth of
2 inches.  You have 1/2 gallon of oil, and want to know the
largest-diameter pan that will maintain the required depth.  The
nonlinear unit 'circlearea' gives the _radius_ of the circle (*note
Other Nonlinear Units::, for a more detailed description) in SI units;
you want the _diameter_ in _inches_:

     You have: 1|2 gallon / 2 in
     You want: circlearea
             0.10890173 m
     You have: 2 _
     You want: in
             * 8.5749393
             / 0.1166189

In most cases, surrounding white space is optional, so the previous
example could have used '2_'.  If '_' follows a non-numerical unit
symbol, however, the space is required:

     You have: m_
                ^
     Parse error

You can use the '_' symbol any number of times; for example,

     You have: m
     You want:
             Definition: 1 m
     You have: _ _
     You want:
             Definition: 1 m^2

Using '_' before a conversion has been performed (e.g., immediately
after invocation) generates an error:

     You have: _
               ^
     No previous result; '_' not set

Accordingly, '_' serves no purpose when 'units' is invoked
non-interactively.

   If 'units' is invoked with the '--verbose' option (*note Invoking
Units::), the value of '_' is not expanded:

     You have: mile
     You want: ft
             mile = 5280 ft
             mile = (1 / 0.00018939394) ft
     You have: _
     You want: m
             _ = 1609.344 m
             _ = (1 / 0.00062137119) m

You can give '_' at the 'You want:' prompt, but it usually is not very
useful.


File: units.info,  Node: Complicated Unit Expressions,  Next: Variables Assigned at Run Time,  Prev: Previous Result,  Up: Unit Expressions

5.6 Complicated Unit Expressions
================================

The 'units' program is especially helpful in ensuring accuracy and
dimensional consistency when converting lengthy unit expressions.  For
example, one form of the Darcy-Weisbach fluid-flow equation is

      Delta P = (8/pi^2) rho f L (Q^2 / d^5)

where Delta P is the pressure drop, rho is the mass density, f is the
(dimensionless) friction factor, L is the length of the pipe, Q is the
volumetric flow rate, and d is the pipe diameter.  You might want to
have the equation in the form

        Delta P = A1 rho f L (Q^2 / d^5)

that accepted the user's normal units; for typical units used in the US,
the required conversion could be something like

     You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5)
     You want: psi
             * 43.533969
             / 0.022970568

The parentheses allow individual terms in the expression to be entered
naturally, as they might be read from the formula.  Alternatively, the
multiplication could be done with the '*' rather than a space; then
parentheses are needed only around 'ft^3/s' because of its exponent:

     You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5
     You want: psi
             * 43.533969
             / 0.022970568

Without parentheses, and using spaces for multiplication, the previous
conversion would need to be entered as

     You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5
     You want: psi
             * 43.533969
             / 0.022970568


File: units.info,  Node: Variables Assigned at Run Time,  Next: Backwards Compatibility,  Prev: Complicated Unit Expressions,  Up: Unit Expressions

5.7 Variables Assigned at Run Time
==================================

Unit definitions are fixed once 'units' has finished reading the units
data file(s), but at run time you can assign unit expressions to
variables whose names begin with an underscore, using the syntax

     _NAME = 

This can help manage a long calculation by saving intermediate
quantities as variables that you can use later.  For example, to
determine the shot-noise-limited signal-to-noise ratio (SNR) of an
imaging system using a helium-neon laser, you could do

     You have: _lambda = 632.8 nm            # laser wavelength
     You have: _nu = c / _lambda             # optical frequency
     You have: _photon_energy = h * _nu
     You have: _power = 550 uW
     You have: _photon_count = _power * 500 ns / _photon_energy
     You have: _snr = sqrt(_photon_count)
     You have: _snr
     You want:
             Definition: sqrt(_photon_count) = 29597.922

Except for beginning with an underscore, runtime variables follow the
same naming rules as units.  Because names beginning with '_' are
reserved for these variables and unit names cannot begin with '_',
runtime variables can never hide unit definitions.  Runtime variables
are undefined until you make an assignment to them, so if you give a
name beginning with an underscore and no assignment has been made, you
get an error message.

   When you assign a unit expression to a runtime variable, 'units'
checks the expression to determine whether it is valid, but the
resulting definition is stored as a text string, and is not reduced to
primitive units.  The text will be processed anew each time you use the
variable in a conversion or calculation.  This means that if your
definition depends on other runtime variables (or the special variable
'_'), the result of calculating with your variable will change if any of
those variables change.  A dependence need not be direct.

   Continuing the example of the laser above, suppose you have done the
calculation as shown.  You now wonder what happens if you switch to an
argon laser:

     You have: _lambda = 454.6 nm
     You have: _snr
     You want:
             Definition: sqrt(_photon_count) = 25086.651

If you then change the power:

     You have: _power = 1 mW
     You have: _snr
     You want:
             Definition: sqrt(_photon_count) = 33826.834

Instead of having to reenter or edit a lengthy expression when you
perform another calculation, you need only enter values that change; in
this respect, runtime variables are similar to a spreadsheet.

   The more times a variable appears in an expression that depends on
it, the greater the benefit of having a calculation using that
expression reflect changes to that variable.  For example, the length of
a sidereal day at a given latitude and declination of the Sun is given
by

   L = 2 acos((sin(h) - cos(phi) cos (delta)) / (cos(phi) cos(delta)))

where L is the day length, h is the Sun's altitude, \phi is the
location's latitude, and \delta is the Sun's declination.  The length of
a solar day is obtained from a sidereal day by multiplying by

     siderealday / day

By convention, the Sun's altitude at rise or set is -50' to allow for
atmospheric refraction and the semidiameter of its disk.  At the summer
solstice, the Sun's declination is approximately 23.44°; to find the
length of the longest day of the year for a latitude of 55°; you could
do

     You have: _alt = -50 arcmin
     You have: _lat = 55 deg
     You have: _decl = 23.44 deg
     You have: _num = sin(_alt) - sin(_lat) sin(_decl)
     You have: _denom = cos(_lat) cos(_decl)
     You have: _sday = 2 (acos(_num / _denom) / circle) 24 hr
     You have: _day = _sday siderealday / day
     You have: _day
     You want: hms
             17 hr + 19 min + 34.895151 sec

At the winter solstice, the Sun's declination is approximately -23.44°;
so you could calculate the length of the shortest day of the year using:

     You have: _decl = -23.44 deg
     You have: _day
     You want: hms
             7 hr + 8 min + 40.981084 sec

Latitude and declination each appear twice in the expression for '_day';
the result in the examples above is updated by changing only the value
of the declination.

   It's important to remember that evaluation of runtime variables is
delayed, so you cannot make an assignment that is self-referential.  For
example, the following does not work:

     You have: _decl = 23.44 deg
     You have: _decl = -_decl
     You have: _decl
     Circular unit definition

A runtime variable must be assigned before it can be used in an
assignment; in the first of the three examples above, giving the general
equation before the values for '_alt', '_lat', and '_decl' had been
assigned would result in an error message.


File: units.info,  Node: Backwards Compatibility,  Prev: Variables Assigned at Run Time,  Up: Unit Expressions

5.8 Backwards Compatibility: '*' and '-'
========================================

The original 'units' assigned multiplication a higher precedence than
division using the slash.  This differs from the usual precedence rules,
which give multiplication and division equal precedence, and can be
confusing for people who think of units as a calculator.

   The star operator ('*') included in this 'units' program has, by
default, the same precedence as division, and hence follows the usual
precedence rules.  For backwards compatibility you can invoke 'units'
with the '--oldstar' option.  Then '*' has a higher precedence than
division, and the same precedence as multiplication using the space.

   Historically, the hyphen ('-') has been used in technical
publications to indicate products of units, and the original 'units'
program treated it as a multiplication operator.  Because 'units'
provides several other ways to obtain unit products, and because '-' is
a subtraction operator in general algebraic expressions, 'units' treats
the binary '-' as a subtraction operator by default.  For backwards
compatibility use the '--product' option, which causes 'units' to treat
the binary '-' operator as a product operator.  When '-' is a
multiplication operator it has the same precedence as multiplication
with a space, giving it a higher precedence than division.

   When '-' is used as a unary operator it negates its operand.
Regardless of the 'units' options, if '-' appears after '(' or after
'+', then it will act as a negation operator.  So you can always compute
20 degrees minus 12 minutes by entering '20 degrees + -12 arcmin'.  You
must use this construction when you define new units because you cannot
know what options will be in force when your definition is processed.


File: units.info,  Node: Nonlinear Conversions,  Next: Unit Lists,  Prev: Unit Expressions,  Up: Top

6 Nonlinear Unit Conversions
****************************

Nonlinear units are represented using functional notation.  They make
possible nonlinear unit conversions such as temperature.

* Menu:

* Temperature Conversions::  Conversion between temperature scales
* US Consumer Price Index::  US Consumer Price Index
* Other Nonlinear Units::    Ring size, wire gauge, abrasive grit size


File: units.info,  Node: Temperature Conversions,  Next: US Consumer Price Index,  Up: Nonlinear Conversions

6.1 Temperature Conversions
===========================

Conversions between temperatures are different from linear conversions
between temperature _increments_--see the example below.  The absolute
temperature conversions are handled by units starting with 'temp', and
you must use functional notation.  The temperature-increment conversions
are done using units starting with 'deg' and they do not require
functional notation.

     You have: tempF(45)
     You want: tempC
             7.2222222

     You have: 45 degF
     You want: degC
             * 25
             / 0.04

Think of 'tempF(X)' not as a function but as a notation that indicates
that X should have units of 'tempF' attached to it.  *Note Defining
Nonlinear Units::.  The first conversion shows that if it's 45 degrees
Fahrenheit outside, it's 7.2 degrees Celsius.  The second conversion
indicates that a change of 45 degrees Fahrenheit corresponds to a change
of 25 degrees Celsius.  The conversion from 'tempF(X)' is to absolute
temperature, so that

     You have: tempF(45)
     You want: degR
             * 504.67
             / 0.0019814929

gives the same result as

     You have: tempF(45)
     You want: tempR
             * 504.67
             / 0.0019814929

But if you convert 'tempF(X)' to 'degC', the output is probably not what
you expect:

     You have: tempF(45)
     You want: degC
             * 280.37222
             / 0.0035666871

The result is the temperature in K, because 'degC' is defined as 'K',
the kelvin.  For consistent results, use the 'tempX' units when
converting to a temperature rather than converting a temperature
increment.

   The 'tempC()' and 'tempF()' definitions are limited to positive
absolute temperatures, and giving a value that would result in a
negative absolute temperature generates an error message:

     You have: tempC(-275)
                         ^
     Argument of function outside domain


File: units.info,  Node: US Consumer Price Index,  Next: Other Nonlinear Units,  Prev: Temperature Conversions,  Up: Nonlinear Conversions

6.2 US Consumer Price Index
===========================

'units' includes the US Consumer Price Index published by the US Bureau
of Labor Statistics.  Several functions that use this value are
provided: 'cpi', 'cpi_now', 'inflation_since', and 'dollars_in'.

   The 'cpi' function gives the CPI for a specified decimal year.  A
"decimal year" is given as the year plus the fractional part of the
year; because of leap years and the different lengths of months,
calculating an exact value for the fractional part can be tedious, but
for the purposes of CPI, an approximate value is usually adequate.  For
example, 1 January 2000 is 2000.0, 1 April 2000 is 2000.25, 1 July 2000
is 2000.4986, and 1 October 2000 is 2000.75.  Note also that the CPI
data update monthly; values in between months are linearly interpolated.

   In the middle of 1975, the CPI was

     You have: cpi(1975.5)
     You want:
             Definition: 53.6

The value of the CPI for the previous month is usually published toward
the the month; the latest value of the CPI is available with 'cpi_now'.
On 7 January 2024, the value was

     You have: cpi_now
     You want:
             Definition: UScpi_now = 307.051

This means that the CPI was 307.015 on 1 December 2023.  The 'cpi_now'
variable can only present the most recent data available, so it can lag
the current CPI by several weeks.  The decimal year of the last update
is available with 'cpi_lastdate'.

   The 'inflation_since' function provides a convenient way to determine
the inflation factor from a specified decimal year to the latest value
in the CPI table.  For example, on 7 January 2024:

     You have: inflation_since(1970)
     You want:
             Definition: 8.1445889

In other words, goods that cost 1 US$ in 1970 would cost 8.14 US$ on
1 December 2023.

   The 'inflation_since' function can be used to determine an annual
rate of inflation.  The earliest US CPI data are from about 1913.1; the
approximate time between then and 7 January 2024 is 110.9 years.  The
approximate annual inflation rate for that period is then

     You have: inflation_since(1913.1)^1|110.9 - 1
     You want: %
             * 3.1548115
             / 0.31697614

The inflation rate for any time period can be found from the ratio of
the CPI at the end of the period to that of the beginning:

     You have: (cpi(1982)/cpi(1972))^1|10 - 1
     You want: %
             * 8.6247033
             / 0.11594602

The period 1972-1982 was indeed one of high inflation.

   The 'dollars_in' function is similar to 'inflation_since' but its
output is in US$ rather than dimensionless:

     You have: dollars_in(1970)
     You want:
             Definition: 8.1445889 US$

A typical use might be

     You have: 250 dollars_in(1970)
     You want: $
             * 2036.1472
             / 0.00049112362

Because 'dollars_in' includes the units, you should not include them at
the 'You have:' prompt.  You can also use 'dollars_in' to convert
between two specified years:

     You have: 250 dollars_in(1970)
     You want: dollars_in(1950)
             * 156.49867
             / 0.0063898305

which shows that 250 US$ in 1970 would have equivalent purchasing power
to 156 US$ in 1950.


File: units.info,  Node: Other Nonlinear Units,  Prev: US Consumer Price Index,  Up: Nonlinear Conversions

6.3 Other Nonlinear Units
=========================

Some other examples of nonlinear units are numerous different ring sizes
and wire gauges, the grit sizes used for abrasives, the decibel scale,
shoe size, scales for the density of sugar (e.g., baume).  The standard
data file also supplies units for computing the area of a circle and the
volume of a sphere.  See the standard units data file for more details.
Wire gauges with multiple zeroes are signified using negative numbers
where two zeroes is '-1'.  Alternatively, you can use the synonyms
'g00', 'g000', and so on that are defined in the standard units data
file.

     You have: wiregauge(11)
     You want: inches
             * 0.090742002
             / 11.020255

     You have: brwiregauge(g00)
     You want: inches
             * 0.348
             / 2.8735632

     You have: 1 mm
     You want: wiregauge
             18.201919

     You have: grit_P(600)
     You want: grit_ansicoated
             342.76923

The last example shows the conversion from P graded sand paper, which is
the European standard and may be marked "P600" on the back, to the USA
standard.

   You can compute the area of a circle using the nonlinear unit,
'circlearea'.  You can also do this using the circularinch or
circleinch.  The next example shows two ways to compute the area of a
circle with a five inch radius and one way to compute the volume of a
sphere with a radius of one meter.

     You have: circlearea(5 in)
     You want: in2
             * 78.539816
             / 0.012732395

     You have: 10^2 circleinch
     You want: in2
             * 78.539816
             / 0.012732395

     You have: spherevol(meter)
     You want: ft3
             * 147.92573
             / 0.0067601492

The inverse of a nonlinear conversion is indicated by prefixing a tilde
('~') to the nonlinear unit name:

     You have: ~wiregauge(0.090742002 inches)
     You want:
             Definition: 11

You can give a nonlinear unit definition without an argument or
parentheses, and press  at the 'You want:' prompt to get the
definition of a nonlinear unit; if the definition is not valid for all
real numbers, the range of validity is also given.  If the definition
requires specific units this information is also displayed:

     You have: tempC
             Definition: tempC(x) = x K + stdtemp
                         defined for x >= -273.15
     You have: ~tempC
             Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K
                         defined for tempC >= 0 K
     You have: circlearea
             Definition: circlearea(r) = pi r^2
                         r has units m

To see the definition of the inverse use the '~' notation.  In this case
the parameter in the functional definition will usually be the name of
the unit.  Note that the inverse for 'tempC' shows that it requires
units of 'K' in the specification of the allowed range of values.
Nonlinear unit conversions are described in more detail in *note
Defining Nonlinear Units::.


File: units.info,  Node: Unit Lists,  Next: Alternative Unit Systems,  Prev: Nonlinear Conversions,  Up: Top

7 Unit Lists: Conversion to Sums of Units
*****************************************

* Menu:

* Cooking Measure
* Unit List Aliases

Outside of the SI, it is sometimes desirable to convert a single unit to
a sum of units--for example, feet to feet plus inches.  The conversion
_from_ sums of units was described in *note Sums and Differences of
Units::, and is a simple matter of adding the units with the '+' sign:

     You have: 12 ft + 3 in + 3|8 in
     You want: ft
             * 12.28125
             / 0.081424936

Although you can similarly write a sum of units to convert _to_, the
result will not be the conversion to the units in the sum, but rather
the conversion to the particular sum that you have entered:

     You have: 12.28125 ft
     You want: ft + in + 1|8 in
             * 11.228571
             / 0.089058524

The unit expression given at the 'You want:' prompt is equivalent to
asking for conversion to multiples of '1 ft + 1 in + 1|8 in', which is
1.09375 ft, so the conversion in the previous example is equivalent to

     You have: 12.28125 ft
     You want: 1.09375 ft
             * 11.228571
             / 0.089058524

In converting to a sum of units like miles, feet and inches, you
typically want the largest integral value for the first unit, followed
by the largest integral value for the next, and the remainder converted
to the last unit.  You can do this conversion easily with 'units' using
a special syntax for lists of units.  You must list the desired units in
order from largest to smallest, separated by the semicolon (';')
character:

     You have: 12.28125 ft
     You want: ft;in;1|8 in
             12 ft + 3 in + 3|8 in

The conversion always gives integer coefficients on the units in the
list, except possibly the last unit when the conversion is not exact:

     You have: 12.28126 ft
     You want: ft;in;1|8 in
             12 ft + 3 in + 3.00096 * 1|8 in

The order in which you list the units is important:

     You have: 3 kg
     You want: oz;lb
             105 oz + 0.051367866 lb

     You have: 3 kg
     You want: lb;oz
             6 lb + 9.8218858 oz

Listing ounces before pounds produces a technically correct result, but
not a very useful one.  You must list the units in descending order of
size in order to get the most useful result.

   Ending a unit list with the separator ';' has the same effect as
repeating the last unit on the list, so 'ft;in;1|8 in;' is equivalent to
'ft;in;1|8 in;1|8 in'.  With the example above, this gives

     You have: 12.28126 ft
     You want: ft;in;1|8 in;
             12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in

in effect separating the integer and fractional parts of the coefficient
for the last unit.  If you instead prefer to round the last coefficient
to an integer you can do this with the '--round' ('-r') option.  With
the previous example, the result is

     You have: 12.28126 ft
     You want: ft;in;1|8 in
             12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in)

When you use the '-r' option, repeating the last unit on the list has no
effect (e.g., 'ft;in;1|8 in;1|8 in' is equivalent to 'ft;in;1|8 in'),
and hence neither does ending a list with a ';'.  With a single unit and
the '-r' option, a terminal ';' _does_ have an effect: it causes 'units'
to treat the single unit as a list and produce a rounded value for the
single unit.  Without the extra ';', the '-r' option has no effect on
single unit conversions.  This example shows the output using the '-r'
option:

     You have: 12.28126 ft
     You want: in
             * 147.37512
             / 0.0067854058

     You have: 12.28126 ft
     You want: in;
             147 in (rounded down to nearest in)

Each unit that appears in the list must be conformable with the first
unit on the list, and of course the listed units must also be
conformable with the unit that you enter at the 'You have:' prompt.

     You have: meter
     You want: ft;kg
                  ^
     conformability error
             ft = 0.3048 m
             kg = 1 kg

     You have: meter
     You want: lb;oz
     conformability error
             1 m
             0.45359237 kg

In the first case, 'units' reports the disagreement between units
appearing on the list.  In the second case, 'units' reports disagreement
between the unit you entered and the desired conversion.  This
conformability error is based on the first unit on the unit list.

   Other common candidates for conversion to sums of units are angles
and time:

     You have: 23.437754 deg
     You want: deg;arcmin;arcsec
         23 deg + 26 arcmin + 15.9144 arcsec

     You have: 7.2319 hr
     You want: hr;min;sec
         7 hr + 13 min + 54.84 sec

Some applications for unit lists may be less obvious.  Suppose that you
have a postal scale and wish to ensure that it's accurate at 1 oz, but
have only metric calibration weights.  You might try

     You have: 1 oz
     You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g;
             20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g

You might then place one each of the 20 g, 5 g, 2 g, and 1 g weights on
the scale and hope that it indicates close to

     You have: 20 g + 5 g + 2 g + 1 g
     You want: oz;
             0.98767093 oz

Appending ';' to 'oz' forces a one-line display that includes the unit;
here the integer part of the result is zero, so it is not displayed.

   If a non-empty list item differs vastly in scale from the quantity
from which the list is to be converted, you may exceed the available
precision of floating point (about 15 digits), in which case you will
get a warning, e.g.,

     You have: lightyear
     You want: mile;100 inch;10 inch;mm;micron
             5.8786254e+12 mile + 390 * 100 inch (at 15-digit precision limit)

7.1 Cooking Measure
===================

In North America, recipes for cooking typically measure ingredients by
volume, and use units that are not always convenient multiples of each
other.  Suppose that you have a recipe for 6 and you wish to make a
portion for 1.  If the recipe calls for 2 1/2 cups of an ingredient, you
might wish to know the measurements in terms of measuring devices you
have available, you could use 'units' and enter

     You have: (2+1|2) cup / 6
     You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp
             1|3 cup + 1 tbsp + 1 tsp

By default, if a unit in a list begins with fraction of the form 1|X and
its multiplier is an integer, the fraction is given as the product of
the multiplier and the numerator; for example,

     You have: 12.28125 ft
     You want: ft;in;1|8 in;
             12 ft + 3 in + 3|8 in

In many cases, such as the example above, this is what is wanted, but
sometimes it is not.  For example, a cooking recipe for 6 might call for
5 1/4 cup of an ingredient, but you want a portion for 2, and your 1-cup
measure is not available; you might try

     You have: (5+1|4) cup / 3
     You want: 1|2 cup;1|3 cup;1|4 cup
             3|2 cup + 1|4 cup

This result might be fine for a baker who has a 1 1/2-cup measure (and
recognizes the equivalence), but it may not be as useful to someone with
more limited set of measures, who does want to do additional
calculations, and only wants to know "How many 1/2-cup measures to I
need to add?"  After all, that's what was actually asked.  With the
'--show-factor' option, the factor will not be combined with a unity
numerator, so that you get

     You have: (5+1|4) cup / 3
     You want: 1|2 cup;1|3 cup;1|4 cup
             3 * 1|2 cup + 1|4 cup

A user-specified fractional unit with a numerator other than 1 is never
overridden, however--if a unit list specifies '3|4 cup;1|2 cup', a
result equivalent to 1 1/2 cups will always be shown as '2 * 3|4 cup'
whether or not the '--show-factor' option is given.

7.2 Unit List Aliases
=====================

A unit list such as

     cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp

can be tedious to enter.  The 'units' program provides shorthand names
for some common combinations:

     hms         time: hours, minutes, seconds
     dms         angle: degrees, minutes, seconds
     time        time: years, days, hours, minutes and seconds
     usvol       US cooking volume: cups and smaller
     uswt        US weight: pounds and ounces
     ftin        length: feet, inches and 1/8 inches
     inchfine    length: inches subdivided to 1/64 inch

Using these shorthands, or "unit list aliases", you can do the following
conversions:

     You have: anomalisticyear
     You want: time
             1 year + 25 min + 3.4653216 sec
     You have: 1|6 cup
     You want: usvol
             2 tbsp + 2 tsp

You can define your own unit list aliases; *note Defining Unit List
Aliases::.

   You cannot combine a unit list alias with other units: it must appear
alone at the 'You want:' prompt.

   You can display the definition of a unit list alias by entering it at
the 'You have:' prompt:

     You have: dms
             Definition: unit list, deg;arcmin;arcsec

When you specify compact output with '--compact', '--terse' or '-t' and
perform conversion to a unit list, 'units' lists the conversion factors
for each unit in the list, separated by semicolons.

     You have: year
     You want: day;min;sec
     365;348;45.974678

Unlike the case of regular output, zeros _are_ included in this output
list:

     You have: liter
     You want: cup;1|2 cup;1|4 cup;tbsp
     4;0;0;3.6280454


File: units.info,  Node: Alternative Unit Systems,  Next: Logging Calculations,  Prev: Unit Lists,  Up: Top

8 Alternative Unit Systems
**************************

* Menu:

* CGS Units::
* Natural Units::
* Prompt Prefix::              The prompt prefix shows specified CGS units


File: units.info,  Node: CGS Units,  Next: Natural Units,  Up: Alternative Unit Systems

8.1 CGS Units
=============

* Menu:

* Specifying CGS Units::       How to specify the desired CGS units
* CGS Units Systems::          The various CGS units systems
* Conversions Between Systems:: Conversions between units in different systems

The SI--an extension of the MKS (meter-kilogram-second) system--has
largely supplanted the older CGS (centimeter-gram-second) system, but
CGS units are still used in a few specialized fields, especially in
physics where they lead to a more elegant formulation of Maxwell's
equations.  Conversions between SI and CGS involving mechanical units
are straightforward, involving powers of 10 (e.g., 1 m = 100 cm).
Conversions involving electromagnetic units are more complicated, and
'units' supports four different systems of CGS units: electrostatic
units (ESU), electromagnetic units (EMU), the Gaussian system and the
Heaviside-Lorentz system.  The differences between these systems arise
from different choices made for proportionality constants in
electromagnetic equations.  Coulomb's law gives electrostatic force
between two charges separated by a distance r:

     F = k_C q_1 q_2 / r^2.

Ampere's law gives the electromagnetic force per unit length between two
current-carrying conductors separated by a distance r:

     F/l = 2 k_A I_1 I_2 / r.

The two constants, k_C and k_A, are related by the square of the speed
of light: k_A = k_C / c^2.

   In the SI, the constants have dimensions, and an additional base
unit, the ampere, measures electric current.  The CGS systems do not
define new base units, but express charge and current as derived units
in terms of mass, length, and time.  In the ESU system, the constant for
Coulomb's law is chosen to be unity and dimensionless, which defines the
unit of charge.  In the EMU system, the constant for Ampere's law is
chosen to be unity and dimensionless, which defines a unit of current.
The Gaussian system usually uses the ESU units for charge and current;
it chooses another constant so that the units for the electric and
magnetic fields are the same.  The Heaviside-Lorentz system is
"rationalized" so that factors of 4\pi do not appear in Maxwell's
equations.  The SI system is similarly rationalized, but the other CGS
systems are not.  In the Heaviside-Lorentz (HLU) system the factor of
4\pi appears in Coulomb's law instead; this system differs from the
Gaussian system by factors of \sqrt{4\pi}.

   The dimensions of electrical quantities in the various CGS systems
are different from the SI dimensions for the same units; strictly,
conversions between these systems and SI are not possible.  But units in
different systems relate to the same physical quantities, so there is a
_correspondence_ between these units.  The 'units' program defines the
units so that you can convert between corresponding units in the various
systems.


File: units.info,  Node: Specifying CGS Units,  Next: CGS Units Systems,  Up: CGS Units

8.1.1 Specifying CGS Units
--------------------------

The CGS definitions involve cm^(1/2) and g^(1/2) which is problematic
because 'units' does not normally support fractional roots of base
units.  The '--units' ('-u') option allows selection of a CGS unit
system and works around this restriction by introducing base units for
the square roots of length and mass: 'sqrt_cm' and 'sqrt_g'.  The
centimeter then becomes 'sqrt_cm^2' and the gram, 'sqrt_g^2'.  This
allows working from equations using the units in the CGS system, and
enforcing dimensional conformity within that system.  Recognized CGS
arguments to the '--units' option are 'gauss[ian]', 'esu', 'emu', 'lhu';
the argument is case insensitive.  You can also give 'si' which just
enforces the default SI mode and displays '(SI)' at the 'You have:'
prompt to emphasize the units mode.  Some other types of units are also
supported as described below.  Giving an unrecognized system generates a
warning, and 'units' uses SI units.

   The changes resulting from the '--units' option are actually
controlled by the 'UNITS_SYSTEM' environment variable.  If you
frequently work with one of the supported CGS units systems, you may set
this environment variable rather than giving the '--units' option at
each invocation.  As usual, an option given on the command line
overrides the setting of the environment variable.  For example, if you
would normally work with Gaussian units but might occasionally work with
SI, you could set 'UNITS_SYSTEM' to 'gaussian' and specify SI with the
'--units' option.  Unlike the argument to the '--units' option, the
value of 'UNITS_SYSTEM' _is_ case sensitive, so setting a value of 'EMU'
will have no effect other than to give an error message and set SI
units.

   The CGS definitions appear as conditional settings in the standard
units data file, which you can consult for more information on how these
units are defined, or on how to define an alternate units system.


File: units.info,  Node: CGS Units Systems,  Next: Conversions Between Systems,  Prev: Specifying CGS Units,  Up: CGS Units

8.1.2 CGS Units Systems
-----------------------

The ESU system derives the electromagnetic units from its unit of
charge, the statcoulomb, which is defined from Coulomb's law.  The
statcoulomb equals dyne^(1/2) cm or cm^(3/2) g^(1/2) s^(-1).  The unit
of current, the statampere, is statcoulomb sec, analogous to the
relationship in SI. Other electrical units are then derived in a manner
similar to that for SI units; the units use the SI names prefixed by
'stat-', e.g., 'statvolt' or 'statV'.  The prefix 'st-' is also
recognized (e.g., 'stV').

   The EMU system derives the electromagnetic units from its unit of
current, the abampere, which is defined in terms of Ampere's law.  The
abampere is equal to dyne^(1/2) or cm^(1/2) g^(1/2) s^(-1).  The unit of
charge, the abcoulomb, is abampere sec, again analogous to the SI
relationship.  Other electrical units are then derived in a manner
similar to that for SI units; the units use the SI names prefixed by
'ab-', e.g., 'abvolt' or 'abV'.  The magnetic field units include the
gauss, the oersted and the maxwell.

   The Gaussian units system, which was also known as the Symmetric
System, uses the same charge and current units as the ESU system (e.g.,
'statC', 'statA'); it differs by defining the magnetic field so that it
has the same units as the electric field.  The resulting magnetic field
units are the same ones used in the EMU system: the gauss, the oersted
and the maxwell.

   The Heaviside-Lorentz system appears to lack named units.  We define
five basic units, 'hlu_charge', 'hlu_current', 'hlu_volt', 'hlu_efield'
and 'hlu_bfield' for conversions with this system.  It is important to
remember that with all of the CGS systems, the units may look the same
but mean something different.  The HLU system and Gaussian systems both
measure magnetic field using the same CGS dimensions, but the amount of
magnetic field with the same units is different in the two systems.


File: units.info,  Node: Conversions Between Systems,  Prev: CGS Units Systems,  Up: CGS Units

8.1.3 Conversions Between Different Systems
-------------------------------------------

The CGS systems define units that measure the same thing but may have
conflicting dimensions.  Furthermore, the dimensions of the
electromagnetic CGS units are never compatible with SI. But if you
measure charge in two different systems you have measured the same
physical thing, so there is a _correspondence_ between the units in the
different systems, and 'units' supports conversions between
corresponding units.  When running with SI, 'units' defines all of the
CGS units in terms of SI. When you select a CGS system, 'units' defines
the SI units and the other CGS system units in terms of the system you
have selected.

     (Gaussian) You have: statA
                You want: abA
             * 3.335641e-11
             / 2.9979246e+10
     (Gaussian) You have: abA
                You want: sqrt(dyne)
     conformability error
             2.9979246e+10 sqrt_cm^3 sqrt_g / s^2
             1 sqrt_cm sqrt_g / s

In the above example, 'units' converts between the current units statA
and abA even though the abA, from the EMU system, has incompatible
dimensions.  This works because in Gaussian mode, the abA is defined in
terms of the statA, so it does not have the correct definition for EMU;
consequently, you cannot convert the abA to its EMU definition.

   One challenge of conversion is that because the CGS system has fewer
base units, quantities that have different dimensions in SI may have the
same dimension in a CGS system.  And yet, they may not have the same
conversion factor.  For example, the unit for the E field and B fields
are the same in the Gaussian system, but the conversion factors to SI
are quite different.  This means that correct conversion is only
possible if you keep track of what quantity is being measured.  You
cannot convert statV/cm to SI without indicating which type of field the
unit measures.  To aid in dimensional analysis, 'units' defines various
dimension units such as 'LENGTH', 'TIME', and 'CHARGE' to be the
appropriate dimension in SI. The electromagnetic dimensions such as
'B_FIELD' or 'E_FIELD' may be useful aids both for conversion and
dimensional analysis in CGS. You can convert them to or from CGS in
order to perform SI conversions that in some cases will not work
directly due to dimensional incompatibilities.  This example shows how
the Gaussian system uses the same units for all of the fields, but they
all have different conversion factors with SI.

     (Gaussian) You have: statV/cm
                You want: E_FIELD
             * 29979.246
             / 3.335641e-05
     (Gaussian) You have: statV/cm
                You want: B_FIELD
             * 0.0001
             / 10000
     (Gaussian) You have: statV/cm
                You want: H_FIELD
             * 79.577472
             / 0.012566371
     (Gaussian) You have: statV/cm
                You want: D_FIELD
             * 2.6544187e-07
             / 3767303.1

The next example shows that the oersted cannot be converted directly to
the SI unit of magnetic field, A/m, because the dimensions conflict.  We
cannot redefine the ampere to make this work because then it would not
convert with the statampere.  But you can still do this conversion as
shown below.

     (Gaussian) You have: oersted
                You want: A/m
     conformability error
             1 sqrt_g / s sqrt_cm
             29979246 sqrt_cm sqrt_g / s^2
     (Gaussian) You have: oersted
                You want: H_FIELD
             * 79.577472
             / 0.012566371


File: units.info,  Node: Natural Units,  Next: Prompt Prefix,  Prev: CGS Units,  Up: Alternative Unit Systems

8.2 Natural Units
=================

Like the CGS units, "natural" units are an alternative to the SI system
used primarily physicists in different fields, with different systems
tailored to different fields of study.  These systems are "natural"
because the base measurements are defined using physical constants
instead of arbitrary values such as the meter or second.  In different
branches of physics, different physical constants are more fundamental,
which has given rise to a variety of incompatible natural unit systems.

   The supported systems are the "natural" units (which seem to have no
better name) used in high energy physics and cosmology, the Planck
units, often used by scientists working with gravity, and the Hartree
atomic units are favored by those working in physical chemistry and
condensed matter physics.

   You can select the various natural units using the '--units' option
in the same way that you select the CGS units.  The "natural" units come
in two types, a rationalized system derived from the Heaviside-Lorentz
units and an unrationalized system derived from the Gaussian system.
You can select these using 'natural' and 'natural-gauss' respectively.
For conversions in SI mode, several unit names starting with 'natural'
are available.  This "natural" system is defined by setting \hbar, c and
the Boltzman constant to 1.  Only a single base unit remains: the
electron volt.

   The Planck units exist in a variety of forms, and 'units' supports
two.  Both supported forms are rationalized, in that factors of 4\pi do
not appear in Maxwell's equations.  However, Planck units can also
differ based on how the gravitational constant is treated.  This system
is similar to the natural units in that c, \hbar, and Boltzman's
constant are set to 1, but in this system, Newton's gravitational
constant, G, is also fixed.  In the "reduced" Planck system, 8 \pi G=1
whereas in the unreduced system G = 1.  The reduced system eliminates
factors of 8 \pi from the Einstein field equations for gravitation, so
this is similar to the process of forming rationalized units to simplify
Maxwell's equations.  To obtain the unreduced system use the name
'planck' and for the reduced Planck units, 'planck-red'.  Units such as
'planckenergy' and 'planckenergy_red' enable you to convert the
unreduced and reduced Planck energy unit in SI mode between the various
systems.  In Planck units, all measurements are dimensionless.

   The final natural unit system is the Hartree atomic units.  Like the
Planck units, all measurements in the Hartree units are dimensionless,
but this system is defined by defined from completely different physical
constants: the electron mass, Planck's constant, the electron charge,
and the Coulomb constant are the defining physical quantities, which are
all set to unity.  To invoke this system with the '--units' option use
the name 'hartree'.


File: units.info,  Node: Prompt Prefix,  Prev: Natural Units,  Up: Alternative Unit Systems

8.3 Prompt Prefix
=================

If a unit system is specified with the '--units' option, the selected
system's name is prepended to the 'You have:' prompt as a reminder,
e.g.,

     (Gaussian) You have: stC
                You want:
             Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s

You can suppressed the prefix by including a line

     !prompt

with no argument in a site or personal units data file.  The prompt can
be conditionally suppressed by including such a line within '!var' ...
'!endvar' constructs, e.g.,

     !var UNITS_SYSTEM gaussian gauss
     !prompt
     !endvar

This might be appropriate if you normally use Gaussian units and find
the prefix distracting but want to be reminded when you have selected a
different CGS system.


File: units.info,  Node: Logging Calculations,  Next: Invoking Units,  Prev: Alternative Unit Systems,  Up: Top

9 Logging Calculations
**********************

The '--log' option allows you to save the results of calculations in a
file; this can be useful if you need a permanent record of your work.
For example, the fluid-flow conversion in *note Complicated Unit
Expressions::, is lengthy, and if you were to use it in designing a
piping system, you might want a record of it for the project file.  If
the interactive session

     # Conversion factor A1 for pressure drop
     # dP = A1 rho f L Q^2/d^5
     You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units
     You want: psi
             * 43.533969
             / 0.022970568

were logged, the log file would contain

     ### Log started Fri Oct 02 15:55:35 2015

     # Conversion factor A1 for pressure drop
     # dP = A1 rho f L Q^2/d^5
     From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5)   # Input units
     To:   psi
             * 43.533969
             / 0.022970568

The time is written to the log file when the file is opened.

   The use of comments can help clarify the meaning of calculations for
the log.  The log includes conformability errors between the units at
the 'You have:' and 'You want:' prompts, but not other errors, including
lack of conformability of items in sums or differences or among items in
a unit list.  For example, a conversion between zenith angle and
elevation angle could involve

     You have: 90 deg - (5 deg + 22 min + 9 sec)
                                        ^
     Invalid sum or difference of non-conformable units
     You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec)
     You want: dms
             84 deg + 37 arcmin + 51 arcsec
     You have: _
     You want: deg
             * 84.630833
             / 0.011816024
     You have:

The log file would contain

     From: 90 deg - (5 deg + 22 arcmin + 9 arcsec)
     To:   deg;arcmin;arcsec
             84 deg + 37 arcmin + 51 arcsec
     From: _
     To:   deg
             * 84.630833
             / 0.011816024

The initial entry error (forgetting that minutes have dimension of time,
and that arcminutes must be used for dimensions of angle) does not
appear in the output.  When converting to a unit list alias, 'units'
expands the alias in the log file.

   The 'From:' and 'To:' tags are written to the log file even if the
'--quiet' option is given.  If the log file exists when 'units' is
invoked, the new results are appended to the log file.  The time is
written to the log file each time the file is opened.  The '--log'
option is ignored when 'units' is used non-interactively.


File: units.info,  Node: Invoking Units,  Next: Scripting with Units,  Prev: Logging Calculations,  Up: Top

10 Invoking 'units'
*******************

You invoke 'units' like this:

     units [OPTIONS] [FROM-UNIT [TO-UNIT]]

If the FROM-UNIT and TO-UNIT are omitted, the program will use
interactive prompts to determine which conversions to perform.  *Note
Interactive Use::.  If both FROM-UNIT and TO-UNIT are given, 'units'
will print the result of that single conversion and then exit.  If only
FROM-UNIT appears on the command line, 'units' will display the
definition of that unit and exit.  Units specified on the command line
may need to be quoted to protect them from shell interpretation and to
group them into two arguments.  Note also that the '--quiet' option is
enabled by default if you specify FROM-UNIT on the command line.  *Note
Command Line Use::.

   The default behavior of 'units' can be changed by various options
given on the command line.  In most cases, the options may be given in
either short form (a single '-' followed by a single character) or long
form ('--' followed by a word or hyphen-separated words).  Short-form
options are cryptic but require less typing; long-form options require
more typing but are more explanatory and may be more mnemonic.  With
long-form options you need only enter sufficient characters to uniquely
identify the option to the program.  For example, '--out %f' works, but
'--o %f' fails because 'units' has other long options beginning with
'o'.  However, '--q' works because '--quiet' is the only long option
beginning with 'q'.

   Some options require arguments to specify a value (e.g., '-d 12' or
'--digits 12').  Short-form options that do not take arguments may be
concatenated (e.g., '-erS' is equivalent to '-e -r -S'); the last option
in such a list may be one that takes an argument (e.g., '-ed 12').  With
short-form options, the space between an option and its argument is
optional (e.g., '-d12' is equivalent to '-d 12').  Long-form options may
not be concatenated, and the space between a long-form option and its
argument is required.  Short-form and long-form options may be
intermixed on the command line.  Options may be given in any order, but
when incompatible options (e.g., '--output-format' and '--exponential')
are given in combination, behavior is controlled by the last option
given.  For example, '-o%.12f -e' gives exponential format with the
default eight significant digits).

   The following options are available:

'-c'
'--check'
     Check that all units and prefixes defined in units data files
     reduce to primitive units.  Display a list of all units that cannot
     be reduced and a list of units with circular definitions.  Also
     display some other diagnostics about suspicious definitions in the
     units data file.  Only definitions active in the current locale are
     checked.  You should always run 'units' with this option after
     modifying a units data file.

     Some errors may hide other errors, so you should run 'units' with
     this option again after correcting any errors, and keep doing so
     until there are no errors.

'--check-verbose'
'--verbose-check'
     Like the '--check' option, this option displays a list of units
     that cannot be reduced.  But it also lists the units as they are
     checked.  Because the '--check' option now catches circular unit
     definitions that previously caused 'units' to hang, this option is
     no longer necessary.  It is retained only for compatibility with
     previous versions.

'-d NDIGITS'
'--digits NDIGITS'
     Set the number of significant digits in the output to the value
     specified (which must be greater than zero).  For example, '-d 12'
     sets the number of significant digits to 12.  With exponential
     output 'units' displays one digit to the left of the decimal
     point(1) and eleven digits to the right of the decimal point.  On
     most systems, the maximum number of internally meaningful digits is
     15; if you specify a greater number than your system's maximum,
     'units' will print a warning and set the number to the largest
     meaningful value.  To directly set the maximum value, give an
     argument of 'max' (e.g., '-d max').  Be aware, of course, that
     "significant" here refers only to the _display_ of numbers; if
     results depend on physical constants not known to this precision,
     the physically meaningful precision may be less than that shown.
     The '--digits' option conflicts with the '--output-format' option.

'-e'
'--exponential'
     Set the numeric output format to exponential (i.e., scientific
     notation), like that used in the Unix 'units' program.  The default
     precision is eight significant digits (seven digits to the right of
     the decimal point); this can be changed with the '--digits' option.
     The '--exponential' option conflicts with the '--output-format'
     option.

'-o FORMAT'
'--output-format FORMAT'
     This option affords complete control over the numeric output format
     using the specified FORMAT.  The format is a single floating point
     numeric format for the 'printf' function in the C programming
     language.  All compilers support the format types 'g' and 'G' to
     specify significant digits, 'e' and 'E' for scientific notation,
     and 'f' for fixed-point decimal.  The ISO C99 standard introduced
     the 'F' type for fixed-point decimal and the 'a' and 'A' types for
     hexadecimal floating point; these types are allowed with compilers
     that support them.  The default format is '%.8g'; for greater
     precision, you could specify '-o %.15g'.  *Note Numeric Output
     Format::, and the documentation for 'printf' for more detailed
     descriptions of the format specification.  The '--output-format'
     option affords the greatest control of the output appearance, but
     requires at least rudimentary knowledge of the 'printf' format
     syntax.  If you don't want to bother with the 'printf' syntax, you
     can specify greater precision more simply with the '--digits'
     option or select exponential format with '--exponential'.  The
     '--output-format' option is incompatible with the '--exponential'
     and '--digits' options.

'-f FILENAME'
'--file FILENAME'
     Instruct 'units' to load the units file FILENAME.  You can specify
     up to 25 units files on the command line.  When you use this
     option, 'units' will load _only_ the files you list on the command
     line; it will not load the standard file or your personal units
     file unless you explicitly list them.  If FILENAME is the empty
     string ('-f ""'), the default main units file (or that specified by
     'UNITSFILE') will be loaded in addition to any others specified
     with '-f'.

'-L LOGFILE'
'--log LOGFILE'
     Save the results of calculations in the file LOGFILE; this can be
     useful if it is important to have a record of unit conversions or
     other calculations that are to be used extensively or in a critical
     activity such as a program or design project.  If LOGFILE exits,
     the new results are appended to the file.  This option is ignored
     when 'units' is used non-interactively.  *Note Logging
     Calculations::, for a more detailed description and some examples.

'-H FILENAME'
'--history FILENAME'
     Instruct 'units' to save history to FILENAME, so that a record of
     your commands is available for retrieval across different 'units'
     invocations.  To prevent the history from being saved set FILENAME
     to the empty string ('-H ""').  This option has no effect if
     readline is not available.

'-h'
'--help'
     Print out a summary of the options for 'units'.

'-m'
'--minus'
     Causes '-' to be interpreted as a subtraction operator.  This is
     the default behavior.

'-p'
'--product'
     Causes '-' to be interpreted as a multiplication operator when it
     has two operands.  It will act as a negation operator when it has
     only one operand: '(-3)'.  By default '-' is treated as a
     subtraction operator.

'--oldstar'
     Causes '*' to have the old-style precedence, higher than the
     precedence of division so that '1/2*3' will equal '1/6'.

'--newstar'
     Forces '*' to have the new (default) precedence that follows the
     usual rules of algebra: the precedence of '*' is the same as the
     precedence of '/', so that '1/2*3' will equal '3/2'.

'-r'
'--round'
     When converting to a combination of units given by a unit list,
     round the value of the last unit in the list to the nearest
     integer.

'-S'
'--show-factor'
     When converting to a combination of units specified in a list,
     always show a non-unity factor before a unit that begins with a
     fraction with a unity denominator.  By default, if the unit in a
     list begins with fraction of the form 1|X and its multiplier is an
     integer other than 1, the fraction is given as the product of the
     multiplier and the numerator (e.g., '3|8 in' rather than '3 *
     1|8 in').  In some cases, this is not what is wanted; for example,
     the results for a cooking recipe might show '3 * 1|2 cup' as
     '3|2 cup'.  With the '--show-factor' option, a result equivalent to
     1.5 cups will display as '3 * 1|2 cup' rather than '3|2 cup'.  A
     user-specified fractional unit with a numerator other than 1 is
     never overridden, however--if a unit list specifies '3|4 cup;1|2
     cup', a result equivalent to 1 1/2 cups will always be shown as '2
     * 3|4 cup' whether or not the '--show-factor' option is given.

'--conformable'
     In non-interactive mode, show all units conformable with the
     original unit expression.  Only one unit expression is allowed; if
     you give more than one, 'units' will exit with an error message and
     return failure.

'-v'
'--verbose'
     Give slightly more verbose output when converting units.  When
     combined with the '-c' option this gives the same effect as
     '--check-verbose'.  When combined with '--version' produces a more
     detailed output, equivalent to the '--info' option.

'-V'
'--version'
     Print the program version number, tell whether the 'readline'
     library has been included, tell whether UTF-8 support has been
     included; give the locale, the location of the default main units
     data file, and the location of the personal units data file;
     indicate if the personal units data file does not exist.

     When given in combination with the '--terse' option, the program
     prints only the version number and exits.

     When given in combination with the '--verbose' option, the program,
     the '--version' option has the same effect as the '--info' option
     below.

'-I'
'--info'
     Print the information given with the '--version' option, show the
     pathname of the units program, show the status of the 'UNITSFILE'
     and 'MYUNITSFILE' environment variables, and additional information
     about how 'units' locates the related files.  On systems running
     Microsoft Windows, the status of the 'UNITSLOCALE' environment
     variable and information about the related locale map are also
     given.  This option is usually of interest only to developers and
     administrators, but it can sometimes be useful for troubleshooting.

     Combining the '--version' and '--verbose' options has the same
     effect as giving '--info'.

'-U'
'--unitsfile'
     Print the location of the default main units data file and exit; if
     the file cannot be found, print "Units data file not found".

'-u UNITS-SYSTEM'
'--units UNITS-SYSTEM'
     Specify a CGS units system or natural units system.  The supported
     units systems are: gauss[ian], esu, emu, hlu, natural,
     natural-gauss, hartree, planck, planck-red, and si.  *Note
     Alternative Unit Systems::, for further information about these
     unit systems.

'-l LOCALE'
'--locale LOCALE'
     Force a specified locale such as 'en_GB' to get British definitions
     by default.  This overrides the locale determined from system
     settings or environment variables.  *Note Locale::, for a
     description of locale format.

'-n'
'--nolists'
     Disable conversion to unit lists.

'-s'
'--strict'
     Suppress conversion of units to their reciprocal units.  For
     example, 'units' will normally convert hertz to seconds because
     these units are reciprocals of each other.  The strict option
     requires that units be strictly conformable to perform a
     conversion, and will give an error if you attempt to convert hertz
     to seconds.

'-1'
'--one-line'
     Give only one line of output (the forward conversion); do not print
     the reverse conversion.  If a reciprocal conversion is performed,
     then 'units' will still print the "reciprocal conversion" line.

'-t'
'--terse'
     Print only a single conversion factor without any clutter, or if
     you request a definition, prints just the definition (including its
     units).  This option can be used when calling 'units' from another
     program so that the output is easy to parse.  The command 'units
     --terse mile m' produces the output '1690.344'.  This option has
     the combined effect of these options: '--strict' '--quiet'
     '--one-line' '--compact'.  When combined with '--version' it
     produces a display showing only the program name and version
     number.

'--compact'
     Give compact output featuring only the conversion factor; the
     multiplication and division signs are not shown, and there is no
     leading whitespace.  If you convert to a unit list, then the output
     is a semicolon separated list of factors.  This turns off the
     '--verbose' option.

'-q'
'--quiet'
'--silent'
     Suppress the display of statistics about the number of units
     loaded, any messages printed by the units database, and the
     prompting of the user for units.  This option does not affect how
     'units' displays the results.  This option is turned on by default
     if you invoke 'units' with a unit expression on the command line.

   ---------- Footnotes ----------

   (1) This document refers to "decimal point," but strictly, the
"radix" separates the integer and fractional parts of a floating-point
number; in English-speaking countries, the radix is a point ('.'), but
in most other countries it is a comma (',').


File: units.info,  Node: Scripting with Units,  Next: Output Styles,  Prev: Invoking Units,  Up: Top

11 Scripting with 'units'
*************************

Despite its numerous options, 'units' cannot cover every conceivable
unit-conversion task.  For example, suppose we have found some
mysterious scale, but cannot figure out the units in which it is
reporting.  We reach into our pocket, place a 3.75-gram coin on the
scale, and observe the scale reading '0.120'.  How do we quickly
determine the units?  Or we might wonder if a unit has any "synonyms,"
i.e., other units with the same value.

   The capabilities of 'units' are easily extended with simple
scripting.  Both questions above involve conformable units; on a system
with Unix-like utilities, conversions to conformable units could be
shown accomplished with the following script:

     #!/bin/sh

     progname=`basename $0 .sh`
     umsg="Usage: $progname [] unit"

     if [ $# -lt 1 ]
     then
         echo "$progname: missing quantity to convert"
         echo "$umsg"
         exit 1
     fi

     for unit in `units --conformable "$*" | cut -f 1 -d ' '`
     do
         echo "$*"   # have -- quantity to convert
         echo $unit  # want -- conformable unit
     done | units --terse --verbose

When 'units' is invoked with no non-option arguments, it reads HAVE/WANT
pairs, on alternating lines, from its standard input, so the task can be
accomplished with only two invocations of 'units'.  This avoids the
computational overhead of needlessly reprocessing the units database for
each conformable unit, as well as the inherent system overhead of
process invocation.

   By itself, the script is not very useful.  But it could be used in
combination with other commands to address specific tasks.  For example,
running the script through a simple output filter could help solve the
scale problem above.  If the script is named 'conformable', running

     $ conformable 3.75g | grep 0.120

gives
             3.75g = 0.1205653 apounce
             3.75g = 0.1205653 fineounce
             3.75g = 0.1205653 ozt
             3.75g = 0.1205653 tradewukiyeh
             3.75g = 0.1205653 troyounce

So we might conclude that the scale is calibrated in troy ounces.

   We might run
     $ units --verbose are
             Definition: 100 m^2 = 100 m^2

and wonder if 'are' has any synonyms, value.  To find out, we could run

     $ conformable are | grep "= 1 "
             are = 1 a
             are = 1 are


File: units.info,  Node: Output Styles,  Next: Defining Your Own Units,  Prev: Scripting with Units,  Up: Top

12 Output Styles
****************

The output can be tweaked in various ways using command line options.
With no options, the output looks like this

     $ units
     Currency exchange rates from FloatRates (USD base) on 2023-07-08
     3612 units, 109 prefixes, 122 nonlinear units

     You have: 23ft
     You want: m
             * 7.0104
             / 0.14264521
     You have: m
     You want: ft;in
             3 ft + 3.3700787 in

This is arguably a bit cryptic; the '--verbose' option makes clear what
the output means:

     $ units --verbose
     Currency exchange rates from FloatRates (USD base) on 2023-07-08
     3612 units, 109 prefixes, 122 nonlinear units

     You have: 23 ft
     You want: m
             23 ft = 7.0104 m
             23 ft = (1 / 0.14264521) m
     You have: meter
     You want: ft;in
             meter = 3 ft + 3.3700787 in

The '--quiet' option suppresses the clutter displayed when 'units'
starts, as well as the prompts to the user.  This option is enabled by
default when you give units on the command line.

     $ units --quiet
     23 ft
     m
             * 7.0104
             / 0.14264521

     $ units 23ft m
             * 7.0104
             / 0.14264521

The remaining style options allow you to display only numerical values
without the tab or the multiplication and division signs, or to display
just a single line showing the forward conversion:

     $ units --compact 23ft m
     7.0104
     0.14264521

     $ units --compact m 'ft;in'
     3;3.3700787

     $ units --one-line 23ft m
             * 7.0104

     $ units --one-line 23ft 1/m
             reciprocal conversion
             * 0.14264521

     $ units --one-line 23ft kg
     conformability error
             7.0104 m
             1 kg

Note that when converting to a unit list, the '--compact' option
displays a semicolon separated list of results.  Also be aware that the
'one-line' option doesn't live up to its name if you execute a
reciprocal conversion or if you get a conformability error.  The former
case can be prevented using the '--strict' option, which suppresses
reciprocal conversions.  Similarly you can suppress unit list conversion
using '--nolists'.  It is impossible to prevent the three line error
output.

     $ units --compact --nolists m 'ft;in'
     Error in 'ft;in': Parse error

     $ units --one-line --strict 23ft 1/m

The various style options can be combined appropriately.  The ultimate
combination is the '--terse' option, which combines '--strict',
'--quiet', '--one-line', and '--compact' to produce the minimal output,
just a single number for regular conversions and a semicolon separated
list for conversion to unit lists.  This will likely be the best choice
for programs that want to call 'units' and then process its result.

     $ units --terse 23ft m
     7.0104

     $ units --terse m 'ft;in'
     3;3.3700787

     $ units --terse 23ft 1/m
     conformability error
     7.0104 m
     1 / m

     $ units --terse '1 mile'
     1609.344 m

     $ units --terse mile
     5280 ft = 1609.344 m


File: units.info,  Node: Defining Your Own Units,  Next: Numeric Output Format,  Prev: Output Styles,  Up: Top

13 Adding Your Own Definitions
******************************

* Menu:

* Units Data Files::           Where are units defined?
* Defining New Units::         Writing your own unit and prefix definitions
* Defining Nonlinear Units::   Writing your own nonlinear unit definitions
* Piecewise Linear Units::     Writing your own piecewise linear definitions
* Defining Unit List Aliases:: Writing your own unit list aliases


File: units.info,  Node: Units Data Files,  Next: Defining New Units,  Up: Defining Your Own Units

13.1 Units Data Files
=====================

The units and prefixes that 'units' can convert are defined in the units
data file, typically '/usr/share/units/definitions.units'.  If you can't
find this file, run 'units --version' to get information on the file
locations for your installation.  Although you can extend or modify this
data file if you have appropriate user privileges, it's usually better
to put extensions in separate files so that the definitions will be
preserved if you update 'units'.

   You can include additional data files in the units database using the
'!include' command in the standard units data file.  For example

     !include    /usr/local/share/units/local.units

might be appropriate for a site-wide supplemental data file.  The
location of the '!include' statement in the standard units data file is
important; later definitions replace earlier ones, so any definitions in
an included file will override definitions before the '!include'
statement in the standard units data file.  With normal invocation, no
warning is given about redefinitions; to ensure that you don't have an
unintended redefinition, run 'units -c' after making changes to any
units data file.

   If you want to add your own units in addition to or in place of
standard or site-wide supplemental units data files, you can include
them in the '.units' file in your home directory.  If this file exists
it is read after the standard units data file, so that any definitions
in this file will replace definitions of the same units in the standard
data file or in files included from the standard data file.  This file
will not be read if any units files are specified on the command line.
(Under Windows the personal units file is named 'unitdef.units'.)
Running 'units -V' will display the location and name of your personal
units file.

   The 'units' program first tries to determine your home directory from
the 'HOME' environment variable.  On systems running Microsoft Windows,
if 'HOME' does not exist, 'units' attempts to find your home directory
from 'HOMEDRIVE', 'HOMEPATH' and 'USERPROFILE'.  You can specify an
arbitrary file as your personal units data file with the 'MYUNITSFILE'
environment variable; if this variable exists, its value is used without
searching your home directory.  The default units data files are
described in more detail in *note Data Files::.


File: units.info,  Node: Defining New Units,  Next: Defining Nonlinear Units,  Prev: Units Data Files,  Up: Defining Your Own Units

13.2 Defining New Units and Prefixes
====================================

A unit is specified on a single line by giving its name and an
equivalence.  Comments start with a '#' character, which can appear
anywhere in a line.  The backslash character ('\') acts as a
continuation character if it appears as the last character on a line,
making it possible to spread definitions out over several lines if
desired.  A file can be included by giving the command '!include'
followed by the file's name.  The '!' must be the first character on the
line.  The file will be sought in the same directory as the parent file
unless you give a full path.  The name of the file to be included cannot
contain spaces or the comment character '#'.

   Unit names cannot begin or end with an underscore ('_'), a comma
(',') or a decimal point ('.').  Names must not contain any of the
operator characters '+', '-', '*', '/', '|', '^', ';', '~', the comment
character '#', or parentheses.  To facilitate copying and pasting from
documents, several typographical characters are converted to operators:
the figure dash (U+2012), minus ('-'; U+2212), and en dash ('-'; U+2013)
are converted to the operator '-'; the multiplication sign ('×';
U+00D7), N-ary times operator (U+2A09), dot operator ('â‹…'; U+22C5), and
middle dot ('·'; U+00B7) are converted to the operator '*'; the division
sign ('÷'; U+00F7) is converted to the operator '/'; and the fraction
slash (U+2044) is converted to the operator '|'; accordingly, none of
these characters can appear in unit names.

   Names cannot begin with a digit, and if a name ends in a digit other
than zero or one, the digit must be preceded by a string beginning with
an underscore, and afterwards consisting only of digits, decimal points,
or commas.  For example, 'foo_2', 'foo_2,1', or 'foo_3.14' are valid
names but 'foo2' or 'foo_a2' are invalid.  The underscore is necessary
because without it, 'units' cannot determine whether 'foo2' is a unit
name or represents 'foo^2'.  Zero and one are exceptions because 'units'
never interprets them as exponents.

   You could define nitrous oxide as

     N2O     nitrogen 2  + oxygen

but would need to define nitrogen dioxide as

     NO_2    nitrogen + oxygen 2

Be careful to define new units in terms of old ones so that a reduction
leads to the primitive units, which are marked with '!' characters.
Dimensionless units are indicated by using the string '!dimensionless'
for the unit definition.

   When adding new units, be sure to use the '-c' option to check that
the new units reduce properly and that there are no circular definitions
that lead to endless loops.  Because some errors may hide other errors,
you should run 'units' with the '-c' option again after correcting any
errors, and keep doing so until no errors are displayed.

   If you define any units that contain '+' characters in their
definitions, carefully check them because the '-c' option will not catch
non-conformable sums.  Be careful with the '-' operator as well.  When
used as a binary operator, the '-' character can perform addition or
multiplication depending on the options used to invoke 'units'.  To
ensure consistent behavior use '-' only as a unary negation operator
when writing units definitions.  To multiply two units leave a space or
use the '*' operator with care, recalling that it has two possible
precedence values and may require parentheses to ensure consistent
behavior.  To compute the difference of 'foo' and 'bar' write
'foo+(-bar)' or even 'foo+-bar'.

   You may wish to intentionally redefine a unit.  When you do this, and
use the '-c' option, 'units' displays a warning message about the
redefinition.  You can suppress these warnings by redefining a unit
using a '+' at the beginning of the unit name.  Do not include any white
space between the '+' and the redefined unit name.

   Here is an example of a short data file that defines some basic
units:

     m       !               # The meter is a primitive unit
     sec     !               # The second is a primitive unit
     rad     !dimensionless  # A dimensionless primitive unit
     micro-  1e-6            # Define a prefix
     minute  60 sec          # A minute is 60 seconds
     hour    60 min          # An hour is 60 minutes
     inch    72 m            # Inch defined incorrectly terms of meters
     ft      12 inches       # The foot defined in terms of inches
     mile    5280 ft         # And the mile
     +inch   0.0254 m        # Correct redefinition, warning suppressed

A unit that ends with a '-' character is a prefix.  If a prefix
definition contains any '/' characters, be sure they are protected by
parentheses.  If you define 'half- 1/2', then 'halfmeter' would be
equivalent to '1 / (2 meter)'.


File: units.info,  Node: Defining Nonlinear Units,  Next: Piecewise Linear Units,  Prev: Defining New Units,  Up: Defining Your Own Units

13.3 Defining Nonlinear Units
=============================

Some unit conversions of interest are nonlinear; for example,
temperature conversions between the Fahrenheit and Celsius scales cannot
be done by simply multiplying by conversion factors.

   When you give a linear unit definition such as 'inch 2.54 cm' you are
providing information that 'units' uses to convert values in inches into
primitive units of meters.  For nonlinear units, you give a functional
definition that provides the same information.

   Nonlinear units are represented using a functional notation.  It is
best to regard this notation not as a function call but as a way of
adding units to a number, much the same way that writing a linear unit
name after a number adds units to that number.  Internally, nonlinear
units are defined by a pair of functions that convert to and from linear
units in the database, so that an eventual conversion to primitive units
is possible.

   Here is an example nonlinear unit definition:

     tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \
                 (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32

A nonlinear unit definition comprises a unit name, a formal parameter
name, two functions, and optional specifications for units, the domain,
and the range (the domain of the inverse function).  The functions tell
'units' how to convert to and from the new unit.  To produce valid
results, the arguments of these functions need to have the correct
dimensions and be within the domains for which the functions are
defined.

   The definition begins with the unit name followed immediately (with
no spaces) by a '(' character.  In the parentheses is the name of the
formal parameter.  Next is an optional specification of the units
required by the functions in the definition.  In the example above, the
'units=[1;K]' specification indicates that the 'tempF' function requires
an input argument conformable with '1' (i.e., the argument is
dimensionless), and that the inverse function requires an input argument
conformable with 'K'.  For normal nonlinear units definition, the
forward function will always take a dimensionless argument; in general,
the inverse function will need units that match the quantity measured by
your nonlinear unit.  Specifying the units enables 'units' to perform
error checking on function arguments, and also to assign units to domain
and range specifications, which are described later.

   Next the function definitions appear.  In the example above, the
'tempF' function is defined by

     tempF(x) = (x+(-32)) degF + stdtemp

This gives a rule for converting 'x' in the units 'tempF' to linear
units of absolute temperature, which makes it possible to convert from
tempF to other units.

   To enable conversions to Fahrenheit, you must give a rule for the
inverse conversions.  The inverse will be 'x(tempF)' and its definition
appears after a ';' character.  In our example, the inverse is

     x(tempF) = (tempF+(-stdtemp))/degF + 32

This inverse definition takes an absolute temperature as its argument
and converts it to the Fahrenheit temperature.  The inverse can be
omitted by leaving out the ';' character and the inverse definition, but
then conversions _to_ the unit will not be possible.  If the inverse
definition is omitted, the '--check' option will display a warning.  It
is up to you to calculate and enter the correct inverse function to
obtain proper conversions; the '--check' option tests the inverse at one
point and prints an error if it is not valid there, but this is not a
guarantee that your inverse is correct.

   With some definitions, the units may vary.  For example, the
definition

     square(x)       x^2

can have any arbitrary units, and can also take dimensionless arguments.
In such a case, you should _not_ specify units.  If a definition takes a
root of its arguments, the definition is valid only for units that yield
such a root.  For example,

     squirt(x)       sqrt(x)

is valid for a dimensionless argument, and for arguments with even
powers of units.

   Some definitions may not be valid for all real numbers.  In such
cases, 'units' can handle errors better if you specify an appropriate
domain and range.  You specify the domain and range as shown below:

     baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \
              (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume

In this example the domain is specified after 'domain=' with the
endpoints given in brackets.  In accord with mathematical convention,
square brackets indicate a closed interval (one that includes its
endpoints), and parentheses indicate an open interval (one that does not
include its endpoints).  An interval can be open or closed on one or
both ends; an interval that is unbounded on either end is indicated by
omitting the limit on that end.  For example, a quantity to which
decibel (dB) is applied may have any value greater than zero, so the
range is indicated by '(0,)':

     decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel)

If the domain or range is given, the second endpoint must be greater
than the first.

   The domain and range specifications can appear independently and in
any order along with the units specification.  The values for the domain
and range endpoints are attached to the units given in the units
specification, and if necessary, the parameter value is adjusted for
comparison with the endpoints.  For example, if a definition includes
'units=[1;ft]' and 'range=[3,)', the range will be taken as 3 ft to
infinity.  If the function is passed a parameter of '900 mm', that value
will be adjusted to 2.9527559 ft, which is outside the specified range.
If you omit the units specification from the previous example, 'units'
can not tell whether you intend the lower endpoint to be 3 ft or
3 microfurlongs, and can not adjust the parameter value of 900 mm for
comparison.  Without units, numerical values other than zero or plus or
minus infinity for domain or range endpoints are meaningless, and
accordingly they are not allowed.  If you give other values without
units, then the definition will be ignored and you will get an error
message.

   Although the units, domain, and range specifications are optional,
it's best to give them when they are applicable; doing so allows 'units'
to perform better error checking and give more helpful error messages.
Giving the domain and range also enables the '--check' option to find a
point in the domain to use for its point check of your inverse
definition.

   You can make synonyms for nonlinear units by providing both the
forward and inverse functions; inverse functions can be obtained using
the '~' operator.  So to create a synonym for 'tempF' you could write

     fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit)

This is useful for creating a nonlinear unit definition that differs
slightly from an existing definition without having to repeat the
original functions.  For example,

     dBW(x)     units=[1;W] range=[0,) dB(x) W ;  ~dB(dBW/W)

If you wish a synonym to refer to an existing nonlinear unit without
modification, you can do so more simply by adding the synonym with
appended parentheses as a new unit, with the existing nonlinear
unit--without parentheses--as the definition.  So to create a synonym
for 'tempF' you could write

     fahrenheit()  tempF

The definition must be a nonlinear unit; for example, the synonym

     fahrenheit()  meter

will result in an error message when 'units' starts.

   You may occasionally wish to define a function that operates on
units.  This can be done using a nonlinear unit definition.  For
example, the definition below provides conversion between radius and the
area of a circle.  This definition requires a length as input and
produces an area as output, as indicated by the 'units=' specification.
Specifying the range as the nonnegative numbers can prevent cryptic
error messages.

     circlearea(r) units=[m;m^2] range=[0,)   pi r^2 ; sqrt(circlearea/pi)


File: units.info,  Node: Piecewise Linear Units,  Next: Defining Unit List Aliases,  Prev: Defining Nonlinear Units,  Up: Defining Your Own Units

13.4 Defining Piecewise Linear Units
====================================

Sometimes you may be interested in a piecewise linear unit such as many
wire gauges.  Piecewise linear units can be defined by specifying
conversions to linear units on a list of points.  Conversion at other
points will be done by linear interpolation.  A partial definition of
zinc gauge is

     zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1

In this example, 'zincgauge' is the name of the piecewise linear unit.
The definition of such a unit is indicated by the embedded '['
character.  After the bracket, you should indicate the units to be
attached to the numbers in the table.  No spaces can appear before the
']' character, so a definition like 'foo[kg meters]' is invalid; instead
write 'foo[kg*meters]'.  The definition of the unit consists of a list
of pairs optionally separated by commas.  This list defines a function
for converting from the piecewise linear unit to linear units.  The
first item in each pair is the function argument; the second item is the
value of the function at that argument (in the units specified in
brackets).  In this example, we define 'zincgauge' at five points.  For
example, we set 'zincgauge(1)' equal to '0.002 in'.  Definitions like
this may be more readable if written using continuation characters as

     zincgauge[in] \
          1 0.002  \
         10 0.02   \
         15 0.04   \
         19 0.06   \
         23 0.1

With the preceding definition, the following conversion can be
performed:

     You have: zincgauge(10)
     You want: in
         * 0.02
         / 50
     You have: .01 inch
     You want: zincgauge
         5

If you define a piecewise linear unit that is not strictly monotonic,
then the inverse will not be well defined.  If the inverse is requested
for such a unit, 'units' will return the smallest inverse.

   After adding nonlinear units definitions, you should normally run
'units --check' to check for errors.  If the 'units' keyword is not
given, the '--check' option checks a nonlinear unit definition using a
dimensionless argument, and then checks using an arbitrary combination
of units, as well as the square and cube of that combination; a warning
is given if any of these tests fail.  For example,

     Warning: function 'squirt(x)' defined as 'sqrt(x)'
              failed for some test inputs:
              squirt(7(kg K)^1): Unit not a root
              squirt(7(kg K)^3): Unit not a root

Running 'units --check' will print a warning if a non-monotonic
piecewise linear unit is encountered.  For example, the relationship
between ANSI coated abrasive designation and mean particle size is
non-monotonic in the vicinity of 800 grit:

     ansicoated[micron] \
          . . .
         600 10.55 \
         800 11.5 \
         1000 9.5 \

Running 'units --check' would give the error message

     Table 'ansicoated' lacks unique inverse around entry 800

Although the inverse is not well defined in this region, it's not really
an error.  Viewing such error messages can be tedious, and if there are
enough of them, they can distract from true errors.  Error checking for
nonlinear unit definitions can be suppressed by giving the 'noerror'
keyword; for the examples above, this could be done as

     squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2
     ansicoated[micron] noerror \
          . . .

Use the 'noerror' keyword with caution.  The safest approach after
adding a nonlinear unit definition is to run 'units --check' and confirm
that there are no actual errors before adding the 'noerror' keyword.


File: units.info,  Node: Defining Unit List Aliases,  Prev: Piecewise Linear Units,  Up: Defining Your Own Units

13.5 Defining Unit List Aliases
===============================

Unit list aliases are treated differently from unit definitions, because
they are a data entry shorthand rather than a true definition for a new
unit.  A unit list alias definition begins with '!unitlist' and includes
the alias and the definition; for example, the aliases included in the
standard units data file are

     !unitlist   hms     hr;min;sec
     !unitlist   time    year;day;hr;min;sec
     !unitlist   dms     deg;arcmin;arcsec
     !unitlist   ftin    ft;in;1|8 in
     !unitlist   usvol   cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\
                         tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp

Unit list aliases are only for unit lists, so the definition must
include a ';'.  Unit list aliases can never be combined with units or
other unit list aliases, so the definition of 'time' shown above could
_not_ have been shortened to 'year;day;hms'.

   As usual, be sure to run 'units --check' to ensure that the units
listed in unit list aliases are conformable.


File: units.info,  Node: Numeric Output Format,  Next: Localization,  Prev: Defining Your Own Units,  Up: Top

14 Numeric Output Format
************************

* Menu:

* Format Specification::           The output format specification
* Flags::                          Optional format flags
* Field Width::                    Specifying output field width
* Precision::                      Specifying output precision

By default, 'units' shows results to eight significant digits.  You can
change this with the '--exponential', '--digits', and '--output-format'
options.  The first sets an exponential format (i.e., scientific
notation) like that used in the original Unix 'units' program, the
second allows you to specify a different number of significant digits,
and the last allows you to control the output appearance using the
format for the 'printf' function in the C programming language.  If you
only want to change the number of significant digits or specify
exponential format type, use the '--digits' and '--exponential' options.
The '--output-format' option affords the greatest control of the output
appearance, but requires at least rudimentary knowledge of the 'printf'
format syntax.  *Note Invoking Units::, for descriptions of these
options.


File: units.info,  Node: Format Specification,  Next: Flags,  Up: Numeric Output Format

14.1 Format Specification
=========================

The format specification recognized with the '--output-format' option is
a subset of that for 'printf'.  The format specification has the form
'%'[flags][width]['.'precision]type; it must begin with '%', and must
end with a floating-point type specifier: 'g' or 'G' to specify the
number of significant digits, 'e' or 'E' for scientific notation, and
'f' for fixed-point decimal.  The ISO C99 standard added the 'F' type
for fixed-point decimal and the 'a' and 'A' types for hexadecimal
floating point; these types are allowed with compilers that support
them.  Type length modifiers (e.g., 'L' to indicate a long double) are
inapplicable and are not allowed.

   The default format for 'units' is '%.8g'; for greater precision, you
could specify '-o %.15g'.  The 'g' and 'G' format types use exponential
format whenever the exponent would be less than -4, so the value
0.000013 displays as '1.3e-005'.  These types also use exponential
notation when the exponent is greater than or equal to the precision, so
with the default format, the value 5e7 displays as '50000000' and the
value 5e8 displays as '5e+008'.  If you prefer fixed-point display, you
might specify '-o %.8f'; however, small numbers will display very few
significant digits, and values less than 5e8 will show nothing but
zeros.

   The format specification may include one or more optional flags: '+',
' ' (space), '#', '-', or '0' (the digit zero).  The digit-grouping flag
''' (apostrophe) is allowed with compilers that support it.  Flags are
followed by an optional value for the minimum field width, and an
optional precision specification that begins with a period (e.g., '.6').
The field width includes the digits, decimal point, the exponent,
thousands separators (with the digit-grouping flag), and the sign if any
of these are shown.


File: units.info,  Node: Flags,  Next: Field Width,  Prev: Format Specification,  Up: Numeric Output Format

14.2 Flags
==========

The '+' flag causes the output to have a sign ('+' or '-').  The space
flag ' ' is similar to the '+' flag, except that when the value is
positive, it is prefixed with a space rather than a plus sign; this flag
is ignored if the '+' flag is also given.  The '+' or ' ' flag could be
useful if conversions might include positive and negative results, and
you wanted to align the decimal points in exponential notation.  The '#'
flag causes the output value to contain a decimal point in all cases; by
default, the output contains a decimal point only if there are digits
(which can be trailing zeros) to the right of the point.  With the 'g'
or 'G' types, the '#' flag also prevents the suppression of trailing
zeros.  The digit-grouping flag ''' shows a thousands separator in
digits to the left of the decimal point.  This can be useful when
displaying large numbers in fixed-point decimal; for example, with the
format '%f',

     You have: mile
     You want: microfurlong
             * 8000000.000000
             / 0.000000

the magnitude of the first result may not be immediately obvious without
counting the digits to the left of the decimal point.  If the thousands
separator is the comma (','), the output with the format '%'f' might be

     You have: mile
     You want: microfurlong
             * 8,000,000.000000
             / 0.000000

making the magnitude readily apparent.  Unfortunately, few compilers
support the digit-grouping flag.

   With the '-' flag, the output value is left aligned within the
specified field width.  If a field width greater than needed to show the
output value is specified, the '0' (zero) flag causes the output value
to be left padded with zeros until the specified field width is reached;
for example, with the format '%011.6f',

     You have: troypound
     You want: grain
             * 5760.000000
             / 0000.000174

The '0' flag has no effect if the '-' (left align) flag is given.


File: units.info,  Node: Field Width,  Next: Precision,  Prev: Flags,  Up: Numeric Output Format

14.3 Field Width
================

By default, the output value is left aligned and shown with the minimum
width necessary for the specified (or default) precision.  If a field
width greater than this is specified, the value shown is right aligned,
and padded on the left with enough spaces to provide the specified field
width.  A width specification is typically used with fixed-point decimal
to have columns of numbers align at the decimal point; this arguably is
less useful with 'units' than with long columnar output, but it may
nonetheless assist in quickly assessing the relative magnitudes of
results.  For example, with the format '%12.6f',

     You have: km
     You want: in
             * 39370.078740
             /     0.000025
     You have: km
     You want: rod
             *   198.838782
             /     0.005029
     You have: km
     You want: furlong
             *     4.970970
             /     0.201168


File: units.info,  Node: Precision,  Prev: Field Width,  Up: Numeric Output Format

14.4 Precision
==============

The meaning of "precision" depends on the format type.  With 'g' or 'G',
it specifies the number of significant digits (like the '--digits'
option); with 'e', 'E', 'f', or 'F', it specifies the maximum number of
digits to be shown after the decimal point.

   With the 'g' and 'G' format types, trailing zeros are suppressed, so
the results may sometimes have fewer digits than the specified precision
(as indicated above, the '#' flag causes trailing zeros to be
displayed).

   The default precision is 6, so '%g' is equivalent to '%.6g', and
would show the output to six significant digits.  Similarly, '%e' or
'%f' would show the output with six digits after the decimal point.

   The C 'printf' function allows a precision of arbitrary size, whether
or not all of the digits are meaningful.  With most compilers, the
maximum internal precision with 'units' is 15 decimal digits (or 13
hexadecimal digits).  With the '--digits' option, you are limited to the
maximum internal precision; with the '--output-format' option, you may
specify a precision greater than this, but it may not be meaningful.  In
some cases, specifying excess precision can result in rounding
artifacts.  For example, a pound is exactly 7000 grains, but with the
format '%.18g', the output might be

     You have: pound
     You want: grain
             * 6999.9999999999991
             / 0.00014285714285714287

With the format '%.25g' you might get the following:

     You have: 1/3
     You want:
             Definition: 0.333333333333333314829616256247

In this case the displayed value includes a series of digits that
represent the underlying binary floating-point approximation to 1/3 but
are not meaningful for the desired computation.  In general, the result
with excess precision is system dependent.  The precision affects only
the _display_ of numbers; if a result relies on physical constants that
are not known to the specified precision, the number of physically
meaningful digits may be less than the number of digits shown.

   See the documentation for 'printf' for more detailed descriptions of
the format specification.

   The '--output-format' option is incompatible with the '--exponential'
or '--digits' options; if the former is given in combination with either
of the latter, the format is controlled by the last option given.


File: units.info,  Node: Localization,  Next: Environment Vars,  Prev: Numeric Output Format,  Up: Top

15 Localization
***************

* Menu:

* Locale::                   What is a locale?
* Additional Localization::  When the locale isn't enough

Some units have different values in different locations.  The
localization feature accommodates this by allowing a units data file to
specify definitions that depend on the user's locale.


File: units.info,  Node: Locale,  Next: Additional Localization,  Up: Localization

15.1 Locale
===========

A locale is a subset of a user's environment that indicates the user's
language and country, and some attendant preferences, such as the
formatting of dates.  The 'units' program attempts to determine the
locale from the POSIX 'setlocale' function; if this cannot be done,
'units' examines the environment variables 'LC_CTYPE' and 'LANG'.  On
POSIX systems, a locale is of the form LANGUAGE'_'COUNTRY, where
LANGUAGE is the two-character code from ISO 639-1 and COUNTRY is the
two-character code from ISO 3166-1; LANGUAGE is lower case and COUNTRY
is upper case.  For example, the POSIX locale for the United Kingdom is
'en_GB'.

   On systems running Microsoft Windows, the value returned by
'setlocale' is different from that on POSIX systems; 'units' attempts to
map the Windows value to a POSIX value by means of a table in the file
'locale_map.txt' in the same directory as the other data files.  The
file includes entries for many combinations of language and country, and
can be extended to include other combinations.  The 'locale_map.txt'
file comprises two tab-separated columns; each entry is of the form

     WINDOWS-LOCALE   POSIX-LOCALE

where POSIX-LOCALE is as described above, and WINDOWS-LOCALE typically
spells out both the language and country.  For example, the entry for
the United States is

     English_United States   en_US

You can force 'units' to run in a desired locale by using the '-l'
option.

   In order to create unit definitions for a particular locale you begin
a block of definitions in a unit datafile with '!locale' followed by a
locale name.  The '!' must be the first character on the line.  The
'units' program reads the following definitions only if the current
locale matches.  You end the block of localized units with '!endlocale'.
Here is an example, which defines the British gallon.

     !locale en_GB
     gallon       4.54609 liter
     !endlocale


File: units.info,  Node: Additional Localization,  Prev: Locale,  Up: Localization

15.2 Additional Localization
============================

Sometimes the locale isn't sufficient to determine unit preferences.
There could be regional preferences, or a company could have specific
preferences.  Though probably uncommon, such differences could arise
with the choice of English customary units outside of English-speaking
countries.  To address this, 'units' allows specifying definitions that
depend on environment variable settings.  The environment variables can
be controlled based on the current locale, or the user can set them to
force a particular group of definitions.

   A conditional block of definitions in a units data file begins with
either '!var' or '!varnot' following by an environment variable name and
then a space separated list of values.  The leading '!' must appear in
the first column of a units data file, and the conditional block is
terminated by '!endvar'.  Definitions in blocks beginning with '!var'
are executed only if the environment variable is exactly equal to one of
the listed values.  Definitions in blocks beginning with '!varnot' are
executed only if the environment variable does _not_ equal any of the
list values.

   The inch has long been a customary measure of length in many places.
The word comes from the Latin _uncia_ meaning "one twelfth," referring
to its relationship with the foot.  By the 20th century, the inch was
officially defined in English-speaking countries relative to the yard,
but until 1959, the yard differed slightly among those countries.  In
France the customary inch, which was displaced in 1799 by the meter, had
a different length based on a french foot.  These customary definitions
could be accommodated as follows:

     !var INCH_UNIT usa
     yard          3600|3937 m
     !endvar
     !var INCH_UNIT canada
     yard          0.9144 meter
     !endvar
     !var INCH_UNIT uk
     yard          0.91439841 meter
     !endvar
     !var INCH_UNIT canada uk usa
     foot          1|3 yard
     inch          1|12 foot
     !endvar
     !var INCH_UNIT france
     foot          144|443.296 m
     inch          1|12 foot
     line          1|12 inch
     !endvar
     !varnot INCH_UNIT usa uk france canada
     !message Unknown value for INCH_UNIT
     !endvar

When 'units' reads the above definitions it will check the environment
variable 'INCH_UNIT' and load only the definitions for the appropriate
section.  If 'INCH_UNIT' is unset or is not set to one of the four
values listed, then 'units' will run the last block.  In this case that
block uses the '!message' command to display a warning message.
Alternatively that block could set default values.

   In order to create default values that are overridden by user
settings the data file can use the '!set' command, which sets an
environment variable _only if it is not already set_; these settings are
only for the current 'units' invocation and do not persist.  So if the
example above were preceded by '!set INCH_UNIT france', then this would
make 'france' the default value for 'INCH_UNIT'.  If the user had set
the variable in the environment before invoking 'units', then 'units'
would use the user's value.

   To link these settings to the user's locale you combine the '!set'
command with the '!locale' command.  If you wanted to combine the above
example with suitable locales you could do by _preceding_ the above
definition with the following:

     !locale en_US
     !set INCH_UNIT usa
     !endlocale
     !locale en_GB
     !set INCH_UNIT uk
     !endlocale
     !locale en_CA
     !set INCH_UNIT canada
     !endlocale
     !locale fr_FR
     !set INCH_UNIT france
     !endlocale
     !set INCH_UNIT france

These definitions set the overall default for 'INCH_UNIT' to 'france'
and set default values for four locales appropriately.  The overall
default setting comes last so that it only applies when 'INCH_UNIT' was
not set by one of the other commands or by the user.

   If the variable given after '!var' or '!varnot' is undefined, then
'units' prints an error message and ignores the definitions that follow.
Use '!set' to create defaults to prevent this situation from arising.
The '-c' option only checks the definitions that are active for the
current environment and locale, so when adding new definitions take care
to check that all cases give rise to a well defined set of definitions.


File: units.info,  Node: Environment Vars,  Next: Data Files,  Prev: Localization,  Up: Top

16 Environment Variables
************************

The 'units' program uses the following environment variables:

'HOME'
     Specifies the location of your home directory; it is used by
     'units' to find a personal units data file '.units'.  On systems
     running Microsoft Windows, the file is 'unitdef.units', and if
     'HOME' does not exist, 'units' tries to determine your home
     directory from the 'HOMEDRIVE' and 'HOMEPATH' environment
     variables; if these variables do not exist, units finally tries
     'USERPROFILE'--typically 'C:\Users\USERNAME' (Windows Vista and
     Windows 7) or 'C:\Documents and Settings\USERNAME' (Windows XP).

'LC_CTYPE, LANG'
     Checked to determine the locale if 'units' cannot obtain it from
     the operating system.  Sections of the default main units data file
     are specific to certain locales.

'MYUNITSFILE'
     Specifies your personal units data file.  If this variable exists,
     'units' uses its value rather than searching your home directory
     for '.units'.  The personal units file will not be loaded if any
     data files are given using the '-f' option.

'PAGER'
     Specifies the pager to use for help and for displaying the
     conformable units.  The help function browses the units database
     and calls the pager using the '+n'N syntax for specifying a line
     number.  The default pager is 'more'; 'PAGER' can be used to
     specify alternatives such as 'less', 'pg', 'emacs', or 'vi'.

'UNITS_ENGLISH'
     Set to either 'US' or 'GB' to choose United States or British
     volume definitions, overriding the default from your locale.

'UNITSFILE'
     Specifies the units data file to use (instead of the default).  You
     can only specify a single units data file using this environment
     variable.  If units data files are given using the '-f' option, the
     file specified by 'UNITSFILE' will be not be loaded unless the '-f'
     option is given with the empty string ('units -f ""').

'UNITSLOCALEMAP'
     Windows only; this variable has no effect on Unix-like systems.
     Specifies the units locale map file to use (instead of the
     default).  This variable seldom needs to be set, but you can use it
     to ensure that the locale map file will be found if you specify a
     location for the units data file using either the '-f' option or
     the 'UNITSFILE' environment variable, and that location does not
     also contain the locale map file.

'UNITS_SYSTEM'
     This environment variable is used in the default main data file to
     select CGS measurement systems.  Currently supported systems are
     'esu', 'emu', 'gauss[ian]', 'hlu', 'natural', 'natural-gauss',
     'planck', 'planck-red', 'hartree' and 'si'.  The default is 'si'.


File: units.info,  Node: Data Files,  Next: Unicode Support,  Prev: Environment Vars,  Up: Top

17 Data Files
*************

The 'units' program uses four default data files: the main data file,
'definitions.units'; the atomic masses of the elements,
'elements.units'; currency exchange rates, 'currency.units', and the US
Consumer Price Index, 'cpi.units'.  The last three files are loaded by
means of '!include' directives in the main file (*note Database Command
Syntax: Database Syntax.).  The program can also use an optional
personal units data file '.units' ('unitdef.units' under Windows)
located in the user's home directory.  The personal units data file is
described in more detail in *note Units Data Files::.

   On Unix-like systems, the data files are typically located in
'/usr/share/units' if 'units' is provided with the operating system, or
in '/usr/local/share/units' if 'units' is compiled from the source
distribution.  Note that the currency file 'currency.units' is a
symbolic link to another location.

   On systems running Microsoft Windows, the files may be in the same
locations if Unix-like commands are available, a Unix-like file
structure is present (e.g., 'C:/usr/local'), and 'units' is compiled
from the source distribution.  If Unix-like commands are not available,
a more common location is 'C:\Program Files (x86)\GNU\units' (for 64-bit
Windows installations) or 'C:\Program Files\GNU\units' (for 32-bit
installations).

   If 'units' is obtained from the GNU Win32 Project
(), the files are commonly in
'C:\Program Files\GnuWin32\share\units'.

   If the default main units data file is not an absolute pathname,
'units' will look for the file in the directory that contains the
'units' program; if the file is not found there, 'units' will look in a
directory '../share/units' relative to the directory with the 'units'
program.

   You can determine the location of the files by running
'units --version'.  Running 'units --info' will give you additional
information about the files, how 'units' will attempt to find them, and
the status of the related environment variables.


File: units.info,  Node: Unicode Support,  Next: Readline Support,  Prev: Data Files,  Up: Top

18 Unicode Support
******************

The standard units data file is in Unicode, using UTF-8 encoding.  Most
definitions use only ASCII characters (i.e., code points U+0000 through
U+007F); definitions using non-ASCII characters appear in blocks
beginning with '!utf8' and ending with '!endutf8'.

   The non-ASCII definitions are loaded only if the platform and the
locale support UTF-8.  Platform support is determined when 'units' is
compiled; the locale is checked at every invocation of 'units'.  To see
if your version of 'units' includes Unicode support, invoke the program
with the '--version' option.

   When Unicode support is available, 'units' checks every line within
UTF-8 blocks in all of the units data files for invalid or non-printing
UTF-8 sequences; if such sequences occur, 'units' ignores the entire
line.  In addition to checking validity, 'units' determines the display
width of non-ASCII characters to ensure proper positioning of the
pointer in some error messages and to align columns for the 'search' and
'?' commands.

   As of early 2019, Microsoft Windows provides limited support for
UTF-8 in console applications, and accordingly, 'units' does not support
Unicode on Windows.  The UTF-16 and UTF-32 encodings are not supported
on any platforms.

   If Unicode support is available and definitions that contain
non-ASCII UTF-8 characters are added to a units data file, those
definitions should be enclosed within '!utf8' ... '!endutf8' to ensure
that they are only loaded when Unicode support is available.  As usual,
the '!' must appear as the first character on the line.  As discussed in
*note Units Data Files::, it's usually best to put such definitions in
supplemental data files linked by an '!include' command or in a personal
units data file.

   When Unicode support is not available, 'units' makes no assumptions
about character encoding, except that characters in the range 00-7F
hexadecimal correspond to ASCII encoding.  Non-ASCII characters are
simply sequences of bytes, and have no special meanings; for definitions
in supplementary units data files, you can use any encoding consistent
with this assumption.  For example, if you wish to use non-ASCII
characters in definitions when running 'units' under Windows, you can
use a character set such as Windows "ANSI" (code page 1252 in the US and
Western Europe); if this is done, the console code page must be set to
the same encoding for the characters to display properly.  You can even
use UTF-8, though some messages may be improperly aligned, and 'units'
will not detect invalid UTF-8 sequences.  If you use UTF-8 encoding when
Unicode support is not available, you should place any definitions with
non-ASCII characters _outside_ '!utf8' ... '!endutf8' blocks--otherwise,
they will be ignored.

   Except for code examples, typeset material usually uses the Unicode
symbols for mathematical operators.  To facilitate copying and pasting
from such sources, several typographical characters are converted to the
ASCII operators used in 'units': the figure dash (U+2012), minus ('-';
U+2212), and en dash ('-'; U+2013) are converted to the operator '-';
the multiplication sign ('×'; U+00D7), N-ary times operator (U+2A09),
dot operator ('⋅'; U+22C5), and middle dot ('·'; U+00B7) are converted
to the operator '*'; the division sign ('÷'; U+00F7) is converted to the
operator '/'; and the fraction slash (U+2044) is converted to the
operator '|'.


File: units.info,  Node: Readline Support,  Next: Currency,  Prev: Unicode Support,  Up: Top

19 Readline Support
*******************

If the 'readline' package has been compiled in, then when 'units' is
used interactively, numerous command line editing features are
available.  To check if your version of 'units' includes 'readline',
invoke the program with the '--version' option.

   For complete information about 'readline', consult the documentation
for the 'readline' package.  Without any configuration, 'units' will
allow editing in the style of emacs.  Of particular use with 'units' are
the completion commands.

   If you type a few characters and then hit  followed by '?', then
'units' will display a list of all the units that start with the
characters typed.  For example, if you type 'metr' and then request
completion, you will see something like this:

     You have: metr
     metre             metriccup         metrichorsepower  metrictenth
     metretes          metricfifth       metricounce       metricton
     metriccarat       metricgrain       metricquart       metricyarncount
     You have: metr

If there is a unique way to complete a unit name, you can hit the 
key and 'units' will provide the rest of the unit name.  If 'units'
beeps, it means that there is no unique completion.  Pressing the 
key a second time will print the list of all completions.

   The readline library also keeps a history of the values you enter.
You can move through this history using the up and down arrows.  The
history is saved to the file '.units_history' in your home directory so
that it will persist across multiple 'units' invocations.  If you wish
to keep work for a certain project separate you can change the history
filename using the '--history' option.  You could, for example, make an
alias for 'units' to 'units --history .units_history' so that 'units'
would save separate history in the current directory.  The length of
each history file is limited to 5000 lines.  Note also that if you run
several concurrent copies of 'units' each one will save its new history
to the history file upon exit.


File: units.info,  Node: Currency,  Next: Database Syntax,  Prev: Readline Support,  Up: Top

20 Updating Currency Exchange Rates and CPI
*******************************************

20.1 Currency Exchange Rates
============================

The units program database includes currency exchange rates and prices
for some precious metals.  Of course, these values change over time,
sometimes very rapidly, and 'units' cannot provide real-time values.  To
update the exchange rates, run 'units_cur', which rewrites the file
containing the currency rates, typically '/var/lib/units/currency.units'
or '/usr/local/com/units/currency.units' on a Unix-like system or
'C:\Program Files (x86)\GNU\units\definitions.units' on a Windows
system.

   This program requires Python 3 ().  The
program must be run with suitable permissions to write the file.  To
keep the rates updated automatically, run it using a cron job on a
Unix-like system, or a similar scheduling program on a different system.

   Reliable free sources of currency exchange rates have been annoyingly
ephemeral.  The program currently supports several sources:

   * ExchangeRate-API.com ().
     The default currency server.  Allows open access without an API
     key, with unlimited API requests.  Rates update once a day, the US
     dollar ('USD') is the default base currency, and you can choose
     your base currency with the '-b' option described below.  You can
     optionally sign up for an API key to access paid benefits such as
     faster data update rates.

   * FloatRates ().
     The US dollar ('USD') is the default base currency.  You can change
     the base currency with the '-b' option described below.  Allowable
     base currencies are listed on the FloatRates website.  Exchange
     rates update daily.

   * The European Central Bank ().
     The base currency is always the euro ('EUR').  Exchange rates
     update daily.  This source offers a more limited list of currencies
     than the others.

   * Fixer ().
     Registration for a free API key is required.  With a free API key,
     base currency is the euro; exchange rates are updated hourly, the
     service has a limit of 1,000 API calls per month, and SSL
     encryption (https protocol) is not available.  Most of these
     restrictions are eliminated or reduced with paid plans.

   * open exchange rates ().
     Registration for a free API key is required.  With a free API key,
     the base currency is the US dollar; exchange rates are updated
     hourly, and there is a limit of 1,000 API calls per month.  Most of
     these restrictions are eliminated or reduced with paid plans.

The default source is FloatRates; you can select a different one using
'-s' option described below.

   Precious metals pricing is obtained from Packetizer
().  This site updates once per day.

20.2 US Consumer Price Index
============================

The 'units' program includes the US Consumer Price Index (CPI) published
by the US Bureau of Labor Statistics: specifically, the Consumer Price
Index for All Urban Consumers (CPI-U), Series CUUR0000SA0.  The
'units_cur' command updates the CPI and saves the result in 'cpi.units'
in the same location as 'currency.units'.  The data are obtained via the
BLS Public Data API ().  This data
updates once a month.  When 'units_cur' runs it will only attempt to
update the CPI data if the current CPI data file is from a previous
month, or if the current date is after the 18th of the month.

20.3 Invoking 'units_cur'
=========================

You invoke 'units_cur' like this:

     units_cur [OPTIONS] [CURRENCY_FILE] [CPI_FILE]

By default, the output is written to the default currency and CPI files
described above; this is usually what you want, because this is where
'units' looks for the files.  If you wish, you can specify different
filenames on the command line and 'units_cur' will write the data to
those files.  If you give '-' for a file it will write to standard
output.

The following options are available:

'-h'
'--help'
     Print a summary of the options for 'units_cur'.

'-V'
'--version'
     Print the 'units_cur' version number.

'-v'
'--verbose'
     Give slightly more verbose output when attempting to update
     currency exchange rates.

'-s SOURCE'
'--source SOURCE'
     Specify the source for currency exchange rates; currently supported
     values are 'floatrates' (for FloatRates), 'eubank' (for the
     European Central Bank), 'fixer' (for Fixer), and
     'openexchangerates' (for open exchange rates); the last two require
     an API key to be given with the '-k' option.

'-b BASE'
'--base BASE'
     Set the base currency (when allowed by the site providing the
     data).  BASE should be a 3-letter ISO currency code, e.g., 'USD'.
     The specified currency will be the primitive currency unit used by
     'units'.  You may find it convenient to specify your local
     currency.  Conversions may be more accurate and you will be able to
     convert to your currency by simply hitting  at the
     'You want:' prompt.  This option is ignored if the source does not
     allow specifying the base currency.  (Currently only floatrates
     supports this option.)

'-k KEY'
'--key KEY'
     Set the API key to KEY for currency sources that require it.

'--blskey BLSKEY'
     Set the US Bureau of Labor Statistics (BLS) key for fetching CPI
     data.  Without a BLS key you should be able to fetch the CPI data
     exactly one time per day.  If you want to use a key you must
     request a personal key from BLS.


File: units.info,  Node: Database Syntax,  Next: GNU Free Documentation License,  Prev: Currency,  Up: Top

21 Database Command Syntax
**************************

UNIT DEFINITION
     Define a regular unit.

PREFIX- DEFINITION
     Define a prefix.

FUNCNAME(VAR) noerror units=[IN-UNITS,OUT-UNITS] domain=[X1,X2] range=[Y1,Y2] DEFINITION(VAR) ; INVERSE(FUNCNAME)
     Define a nonlinear unit or unit function.  The four optional
     keywords 'noerror', 'units=', 'range=' and 'domain=' can appear in
     any order.  The definition of the inverse is optional.

TABNAME[OUT-UNITS] noerror PAIR-LIST
     Define a piecewise linear unit.  The pair list gives the points on
     the table listed in ascending order.  The 'noerror' keyword is
     optional.

!endlocale
     End a block of definitions beginning with '!locale'

!endutf8
     End a block of definitions begun with '!utf8'

!endvar
     End a block of definitions begun with '!var' or '!varnot'

!include FILE
     Include the specified file.

!locale VALUE
     Load the following definitions only of the locale is set to VALUE.

!message TEXT
     Display TEXT when the database is read unless the quiet option
     ('-q') is enabled.  If you omit TEXT, then units will display a
     blank line.  Messages will also appear in the log file.

!prompt TEXT
     Prefix the 'You have:' prompt with the specified text.  If you omit
     TEXT, then any existing prefix is canceled.

!set VARIABLE VALUE
     Sets the environment variable, VARIABLE, to the specified value
     _only if_ it is not already set.

!unitlist ALIAS DEFINITION
     Define a unit list alias.

!utf8
     Load the following definitions only if 'units' is running with
     UTF-8 enabled.

!var ENVAR VALUE-LIST
     Load the block of definitions that follows only if the environment
     variable ENVAR is set to one of the values listed in the
     space-separated value list.  If ENVAR is not set, 'units' prints an
     error message and ignores the block of definitions.

!varnot ENVAR VALUE-LIST
     Load the block of definitions that follows only if the environment
     variable ENVAR is set to value that is _not_ listed in the
     space-separated value list.  If ENVAR is not set, 'units' prints an
     error message and ignores the block of definitions.


File: units.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Database Syntax,  Up: Top

22 GNU Free Documentation License
*********************************

                     Version 1.3, 3 November 2008

     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
     

     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

  0. PREAMBLE

     The purpose of this License is to make a manual, textbook, or other
     functional and useful document "free" in the sense of freedom: to
     assure everyone the effective freedom to copy and redistribute it,
     with or without modifying it, either commercially or
     noncommercially.  Secondarily, this License preserves for the
     author and publisher a way to get credit for their work, while not
     being considered responsible for modifications made by others.

     This License is a kind of "copyleft", which means that derivative
     works of the document must themselves be free in the same sense.
     It complements the GNU General Public License, which is a copyleft
     license designed for free software.

     We have designed this License in order to use it for manuals for
     free software, because free software needs free documentation: a
     free program should come with manuals providing the same freedoms
     that the software does.  But this License is not limited to
     software manuals; it can be used for any textual work, regardless
     of subject matter or whether it is published as a printed book.  We
     recommend this License principally for works whose purpose is
     instruction or reference.

  1. APPLICABILITY AND DEFINITIONS

     This License applies to any manual or other work, in any medium,
     that contains a notice placed by the copyright holder saying it can
     be distributed under the terms of this License.  Such a notice
     grants a world-wide, royalty-free license, unlimited in duration,
     to use that work under the conditions stated herein.  The
     "Document", below, refers to any such manual or work.  Any member
     of the public is a licensee, and is addressed as "you".  You accept
     the license if you copy, modify or distribute the work in a way
     requiring permission under copyright law.

     A "Modified Version" of the Document means any work containing the
     Document or a portion of it, either copied verbatim, or with
     modifications and/or translated into another language.

     A "Secondary Section" is a named appendix or a front-matter section
     of the Document that deals exclusively with the relationship of the
     publishers or authors of the Document to the Document's overall
     subject (or to related matters) and contains nothing that could
     fall directly within that overall subject.  (Thus, if the Document
     is in part a textbook of mathematics, a Secondary Section may not
     explain any mathematics.)  The relationship could be a matter of
     historical connection with the subject or with related matters, or
     of legal, commercial, philosophical, ethical or political position
     regarding them.

     The "Invariant Sections" are certain Secondary Sections whose
     titles are designated, as being those of Invariant Sections, in the
     notice that says that the Document is released under this License.
     If a section does not fit the above definition of Secondary then it
     is not allowed to be designated as Invariant.  The Document may
     contain zero Invariant Sections.  If the Document does not identify
     any Invariant Sections then there are none.

     The "Cover Texts" are certain short passages of text that are
     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
     that says that the Document is released under this License.  A
     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
     be at most 25 words.

     A "Transparent" copy of the Document means a machine-readable copy,
     represented in a format whose specification is available to the
     general public, that is suitable for revising the document
     straightforwardly with generic text editors or (for images composed
     of pixels) generic paint programs or (for drawings) some widely
     available drawing editor, and that is suitable for input to text
     formatters or for automatic translation to a variety of formats
     suitable for input to text formatters.  A copy made in an otherwise
     Transparent file format whose markup, or absence of markup, has
     been arranged to thwart or discourage subsequent modification by
     readers is not Transparent.  An image format is not Transparent if
     used for any substantial amount of text.  A copy that is not
     "Transparent" is called "Opaque".

     Examples of suitable formats for Transparent copies include plain
     ASCII without markup, Texinfo input format, LaTeX input format,
     SGML or XML using a publicly available DTD, and standard-conforming
     simple HTML, PostScript or PDF designed for human modification.
     Examples of transparent image formats include PNG, XCF and JPG.
     Opaque formats include proprietary formats that can be read and
     edited only by proprietary word processors, SGML or XML for which
     the DTD and/or processing tools are not generally available, and
     the machine-generated HTML, PostScript or PDF produced by some word
     processors for output purposes only.

     The "Title Page" means, for a printed book, the title page itself,
     plus such following pages as are needed to hold, legibly, the
     material this License requires to appear in the title page.  For
     works in formats which do not have any title page as such, "Title
     Page" means the text near the most prominent appearance of the
     work's title, preceding the beginning of the body of the text.

     The "publisher" means any person or entity that distributes copies
     of the Document to the public.

     A section "Entitled XYZ" means a named subunit of the Document
     whose title either is precisely XYZ or contains XYZ in parentheses
     following text that translates XYZ in another language.  (Here XYZ
     stands for a specific section name mentioned below, such as
     "Acknowledgements", "Dedications", "Endorsements", or "History".)
     To "Preserve the Title" of such a section when you modify the
     Document means that it remains a section "Entitled XYZ" according
     to this definition.

     The Document may include Warranty Disclaimers next to the notice
     which states that this License applies to the Document.  These
     Warranty Disclaimers are considered to be included by reference in
     this License, but only as regards disclaiming warranties: any other
     implication that these Warranty Disclaimers may have is void and
     has no effect on the meaning of this License.

  2. VERBATIM COPYING

     You may copy and distribute the Document in any medium, either
     commercially or noncommercially, provided that this License, the
     copyright notices, and the license notice saying this License
     applies to the Document are reproduced in all copies, and that you
     add no other conditions whatsoever to those of this License.  You
     may not use technical measures to obstruct or control the reading
     or further copying of the copies you make or distribute.  However,
     you may accept compensation in exchange for copies.  If you
     distribute a large enough number of copies you must also follow the
     conditions in section 3.

     You may also lend copies, under the same conditions stated above,
     and you may publicly display copies.

  3. COPYING IN QUANTITY

     If you publish printed copies (or copies in media that commonly
     have printed covers) of the Document, numbering more than 100, and
     the Document's license notice requires Cover Texts, you must
     enclose the copies in covers that carry, clearly and legibly, all
     these Cover Texts: Front-Cover Texts on the front cover, and
     Back-Cover Texts on the back cover.  Both covers must also clearly
     and legibly identify you as the publisher of these copies.  The
     front cover must present the full title with all words of the title
     equally prominent and visible.  You may add other material on the
     covers in addition.  Copying with changes limited to the covers, as
     long as they preserve the title of the Document and satisfy these
     conditions, can be treated as verbatim copying in other respects.

     If the required texts for either cover are too voluminous to fit
     legibly, you should put the first ones listed (as many as fit
     reasonably) on the actual cover, and continue the rest onto
     adjacent pages.

     If you publish or distribute Opaque copies of the Document
     numbering more than 100, you must either include a machine-readable
     Transparent copy along with each Opaque copy, or state in or with
     each Opaque copy a computer-network location from which the general
     network-using public has access to download using public-standard
     network protocols a complete Transparent copy of the Document, free
     of added material.  If you use the latter option, you must take
     reasonably prudent steps, when you begin distribution of Opaque
     copies in quantity, to ensure that this Transparent copy will
     remain thus accessible at the stated location until at least one
     year after the last time you distribute an Opaque copy (directly or
     through your agents or retailers) of that edition to the public.

     It is requested, but not required, that you contact the authors of
     the Document well before redistributing any large number of copies,
     to give them a chance to provide you with an updated version of the
     Document.

  4. MODIFICATIONS

     You may copy and distribute a Modified Version of the Document
     under the conditions of sections 2 and 3 above, provided that you
     release the Modified Version under precisely this License, with the
     Modified Version filling the role of the Document, thus licensing
     distribution and modification of the Modified Version to whoever
     possesses a copy of it.  In addition, you must do these things in
     the Modified Version:

       A. Use in the Title Page (and on the covers, if any) a title
          distinct from that of the Document, and from those of previous
          versions (which should, if there were any, be listed in the
          History section of the Document).  You may use the same title
          as a previous version if the original publisher of that
          version gives permission.

       B. List on the Title Page, as authors, one or more persons or
          entities responsible for authorship of the modifications in
          the Modified Version, together with at least five of the
          principal authors of the Document (all of its principal
          authors, if it has fewer than five), unless they release you
          from this requirement.

       C. State on the Title page the name of the publisher of the
          Modified Version, as the publisher.

       D. Preserve all the copyright notices of the Document.

       E. Add an appropriate copyright notice for your modifications
          adjacent to the other copyright notices.

       F. Include, immediately after the copyright notices, a license
          notice giving the public permission to use the Modified
          Version under the terms of this License, in the form shown in
          the Addendum below.

       G. Preserve in that license notice the full lists of Invariant
          Sections and required Cover Texts given in the Document's
          license notice.

       H. Include an unaltered copy of this License.

       I. Preserve the section Entitled "History", Preserve its Title,
          and add to it an item stating at least the title, year, new
          authors, and publisher of the Modified Version as given on the
          Title Page.  If there is no section Entitled "History" in the
          Document, create one stating the title, year, authors, and
          publisher of the Document as given on its Title Page, then add
          an item describing the Modified Version as stated in the
          previous sentence.

       J. Preserve the network location, if any, given in the Document
          for public access to a Transparent copy of the Document, and
          likewise the network locations given in the Document for
          previous versions it was based on.  These may be placed in the
          "History" section.  You may omit a network location for a work
          that was published at least four years before the Document
          itself, or if the original publisher of the version it refers
          to gives permission.

       K. For any section Entitled "Acknowledgements" or "Dedications",
          Preserve the Title of the section, and preserve in the section
          all the substance and tone of each of the contributor
          acknowledgements and/or dedications given therein.

       L. Preserve all the Invariant Sections of the Document, unaltered
          in their text and in their titles.  Section numbers or the
          equivalent are not considered part of the section titles.

       M. Delete any section Entitled "Endorsements".  Such a section
          may not be included in the Modified Version.

       N. Do not retitle any existing section to be Entitled
          "Endorsements" or to conflict in title with any Invariant
          Section.

       O. Preserve any Warranty Disclaimers.

     If the Modified Version includes new front-matter sections or
     appendices that qualify as Secondary Sections and contain no
     material copied from the Document, you may at your option designate
     some or all of these sections as invariant.  To do this, add their
     titles to the list of Invariant Sections in the Modified Version's
     license notice.  These titles must be distinct from any other
     section titles.

     You may add a section Entitled "Endorsements", provided it contains
     nothing but endorsements of your Modified Version by various
     parties--for example, statements of peer review or that the text
     has been approved by an organization as the authoritative
     definition of a standard.

     You may add a passage of up to five words as a Front-Cover Text,
     and a passage of up to 25 words as a Back-Cover Text, to the end of
     the list of Cover Texts in the Modified Version.  Only one passage
     of Front-Cover Text and one of Back-Cover Text may be added by (or
     through arrangements made by) any one entity.  If the Document
     already includes a cover text for the same cover, previously added
     by you or by arrangement made by the same entity you are acting on
     behalf of, you may not add another; but you may replace the old
     one, on explicit permission from the previous publisher that added
     the old one.

     The author(s) and publisher(s) of the Document do not by this
     License give permission to use their names for publicity for or to
     assert or imply endorsement of any Modified Version.

  5. COMBINING DOCUMENTS

     You may combine the Document with other documents released under
     this License, under the terms defined in section 4 above for
     modified versions, provided that you include in the combination all
     of the Invariant Sections of all of the original documents,
     unmodified, and list them all as Invariant Sections of your
     combined work in its license notice, and that you preserve all
     their Warranty Disclaimers.

     The combined work need only contain one copy of this License, and
     multiple identical Invariant Sections may be replaced with a single
     copy.  If there are multiple Invariant Sections with the same name
     but different contents, make the title of each such section unique
     by adding at the end of it, in parentheses, the name of the
     original author or publisher of that section if known, or else a
     unique number.  Make the same adjustment to the section titles in
     the list of Invariant Sections in the license notice of the
     combined work.

     In the combination, you must combine any sections Entitled
     "History" in the various original documents, forming one section
     Entitled "History"; likewise combine any sections Entitled
     "Acknowledgements", and any sections Entitled "Dedications".  You
     must delete all sections Entitled "Endorsements."

  6. COLLECTIONS OF DOCUMENTS

     You may make a collection consisting of the Document and other
     documents released under this License, and replace the individual
     copies of this License in the various documents with a single copy
     that is included in the collection, provided that you follow the
     rules of this License for verbatim copying of each of the documents
     in all other respects.

     You may extract a single document from such a collection, and
     distribute it individually under this License, provided you insert
     a copy of this License into the extracted document, and follow this
     License in all other respects regarding verbatim copying of that
     document.

  7. AGGREGATION WITH INDEPENDENT WORKS

     A compilation of the Document or its derivatives with other
     separate and independent documents or works, in or on a volume of a
     storage or distribution medium, is called an "aggregate" if the
     copyright resulting from the compilation is not used to limit the
     legal rights of the compilation's users beyond what the individual
     works permit.  When the Document is included in an aggregate, this
     License does not apply to the other works in the aggregate which
     are not themselves derivative works of the Document.

     If the Cover Text requirement of section 3 is applicable to these
     copies of the Document, then if the Document is less than one half
     of the entire aggregate, the Document's Cover Texts may be placed
     on covers that bracket the Document within the aggregate, or the
     electronic equivalent of covers if the Document is in electronic
     form.  Otherwise they must appear on printed covers that bracket
     the whole aggregate.

  8. TRANSLATION

     Translation is considered a kind of modification, so you may
     distribute translations of the Document under the terms of section
     4.  Replacing Invariant Sections with translations requires special
     permission from their copyright holders, but you may include
     translations of some or all Invariant Sections in addition to the
     original versions of these Invariant Sections.  You may include a
     translation of this License, and all the license notices in the
     Document, and any Warranty Disclaimers, provided that you also
     include the original English version of this License and the
     original versions of those notices and disclaimers.  In case of a
     disagreement between the translation and the original version of
     this License or a notice or disclaimer, the original version will
     prevail.

     If a section in the Document is Entitled "Acknowledgements",
     "Dedications", or "History", the requirement (section 4) to
     Preserve its Title (section 1) will typically require changing the
     actual title.

  9. TERMINATION

     You may not copy, modify, sublicense, or distribute the Document
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense, or distribute it is void,
     and will automatically terminate your rights under this License.

     However, if you cease all violation of this License, then your
     license from a particular copyright holder is reinstated (a)
     provisionally, unless and until the copyright holder explicitly and
     finally terminates your license, and (b) permanently, if the
     copyright holder fails to notify you of the violation by some
     reasonable means prior to 60 days after the cessation.

     Moreover, your license from a particular copyright holder is
     reinstated permanently if the copyright holder notifies you of the
     violation by some reasonable means, this is the first time you have
     received notice of violation of this License (for any work) from
     that copyright holder, and you cure the violation prior to 30 days
     after your receipt of the notice.

     Termination of your rights under this section does not terminate
     the licenses of parties who have received copies or rights from you
     under this License.  If your rights have been terminated and not
     permanently reinstated, receipt of a copy of some or all of the
     same material does not give you any rights to use it.

  10. FUTURE REVISIONS OF THIS LICENSE

     The Free Software Foundation may publish new, revised versions of
     the GNU Free Documentation License from time to time.  Such new
     versions will be similar in spirit to the present version, but may
     differ in detail to address new problems or concerns.  See
     .

     Each version of the License is given a distinguishing version
     number.  If the Document specifies that a particular numbered
     version of this License "or any later version" applies to it, you
     have the option of following the terms and conditions either of
     that specified version or of any later version that has been
     published (not as a draft) by the Free Software Foundation.  If the
     Document does not specify a version number of this License, you may
     choose any version ever published (not as a draft) by the Free
     Software Foundation.  If the Document specifies that a proxy can
     decide which future versions of this License can be used, that
     proxy's public statement of acceptance of a version permanently
     authorizes you to choose that version for the Document.

  11. RELICENSING

     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
     World Wide Web server that publishes copyrightable works and also
     provides prominent facilities for anybody to edit those works.  A
     public wiki that anybody can edit is an example of such a server.
     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
     site means any set of copyrightable works thus published on the MMC
     site.

     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
     license published by Creative Commons Corporation, a not-for-profit
     corporation with a principal place of business in San Francisco,
     California, as well as future copyleft versions of that license
     published by that same organization.

     "Incorporate" means to publish or republish a Document, in whole or
     in part, as part of another Document.

     An MMC is "eligible for relicensing" if it is licensed under this
     License, and if all works that were first published under this
     License somewhere other than this MMC, and subsequently
     incorporated in whole or in part into the MMC, (1) had no cover
     texts or invariant sections, and (2) were thus incorporated prior
     to November 1, 2008.

     The operator of an MMC Site may republish an MMC contained in the
     site under CC-BY-SA on the same site at any time before August 1,
     2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents
====================================================

To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:

       Copyright (C)  YEAR  YOUR NAME.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.3
       or any later version published by the Free Software Foundation;
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
       Texts.  A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.

   If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with...Texts." line with this:

         with the Invariant Sections being LIST THEIR TITLES, with
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
         being LIST.

   If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.

   If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of free
software license, such as the GNU General Public License, to permit
their use in free software.


File: units.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top

Index
*****

[index]
* Menu:

* ! to indicate primitive units:         Defining New Units.  (line   6)
* !endlocale:                            Localization.        (line   6)
* !endutf8:                              Unicode Support.     (line   6)
* !include:                              Units Data Files.    (line   6)
* !locale:                               Localization.        (line   6)
* !unitlist:                             Defining Unit List Aliases.
                                                              (line   6)
* !utf8:                                 Unicode Support.     (line   6)
* * operator:                            Operators.           (line  14)
* ** operator:                           Operators.           (line  66)
* + operator:                            Sums and Differences of Units.
                                                              (line   6)
* - as multiplication operator:          Backwards Compatibility.
                                                              (line  17)
* - as subtraction operator:             Sums and Differences of Units.
                                                              (line   6)
* --check (option for units):            Invoking Units.      (line  51)
* --check-verbose (option for units):    Invoking Units.      (line  65)
* --compact (option for units):          Invoking Units.      (line 291)
* --conformable (option for units):      Invoking Units.      (line 198)
* --digits (option for units):           Invoking Units.      (line  74)
* --exponential (option for units):      Invoking Units.      (line  91)
* --file (option for units):             Invoking Units.      (line 122)
* --help (option for units):             Invoking Units.      (line 151)
* --history (option for units):          Invoking Units.      (line 143)
* --info (option for units):             Invoking Units.      (line 227)
* --locale (option for units):           Invoking Units.      (line 254)
* --log (option for units):              Invoking Units.      (line 133)
* --minus (option for units):            Invoking Units.      (line 155)
* --newstar (option for units):          Invoking Units.      (line 170)
* --oldstar (option for units):          Invoking Units.      (line 166)
* --one-line (option for units):         Invoking Units.      (line 274)
* --output-format (option for units):    Invoking Units.      (line 100)
* --product (option for units):          Invoking Units.      (line 160)
* --quiet (option for units):            Invoking Units.      (line 300)
* --silent (option for units):           Invoking Units.      (line 300)
* --strict (option for units):           Invoking Units.      (line 265)
* --terse (option for units):            Invoking Units.      (line 280)
* --units (option for units):            Invoking Units.      (line 246)
* --unitsfile (option for units):        Invoking Units.      (line 241)
* --verbose (option for units):          Invoking Units.      (line 205)
* --verbose-check (option for units):    Invoking Units.      (line  65)
* --version (option for units):          Invoking Units.      (line 212)
* -1 (option for units):                 Invoking Units.      (line 274)
* -c (option for units):                 Invoking Units.      (line  51)
* -d (option for units):                 Invoking Units.      (line  74)
* -e (option for units):                 Invoking Units.      (line  91)
* -f (option for units):                 Invoking Units.      (line 122)
* -H (option for units):                 Invoking Units.      (line 143)
* -h (option for units):                 Invoking Units.      (line 151)
* -I (option for units):                 Invoking Units.      (line 227)
* -L (option for units):                 Invoking Units.      (line 133)
* -l (option for units):                 Invoking Units.      (line 254)
* -m (option for units):                 Invoking Units.      (line 155)
* -o (option for units):                 Invoking Units.      (line 100)
* -p (option for units):                 Invoking Units.      (line 160)
* -q (option for units):                 Invoking Units.      (line 300)
* -s (option for units):                 Invoking Units.      (line 265)
* -t (option for units):                 Invoking Units.      (line 280)
* -U (option for units):                 Invoking Units.      (line 241)
* -u (option for units):                 Invoking Units.      (line 246)
* -v (option for units):                 Invoking Units.      (line 205)
* -V (option for units):                 Invoking Units.      (line 212)
* ? for unit completion with readline:   Readline Support.    (line  16)
* ? to show conformable units:           Interactive Use.     (line 142)
* _ to use result of previous conversion: Previous Result.    (line   6)
* | operator:                            Operators.           (line  50)
* abrasive grit size:                    Other Nonlinear Units.
                                                              (line  36)
* addition of units:                     Sums and Differences of Units.
                                                              (line   9)
* additional units data files:           Units Data Files.    (line   6)
* backwards compatibility:               Backwards Compatibility.
                                                              (line   6)
* British Imperial measure:              Unit Definitions.    (line 143)
* built-in functions:                    Built-in Functions.  (line   6)
* CGS Units Systems:                     CGS Units Systems.   (line   6)
* CGS units, prompt prefix:              Prompt Prefix.       (line   6)
* CGS units, specifying:                 Specifying CGS Units.
                                                              (line   6)
* CGS units, using:                      CGS Units.           (line   6)
* circle, area of:                       Other Nonlinear Units.
                                                              (line  42)
* command, ! to indicate primitive units: Defining New Units. (line   6)
* command, !endlocale:                   Localization.        (line   6)
* command, !endutf8:                     Unicode Support.     (line   6)
* command, !endvar:                      Localization.        (line   6)
* command, !include:                     Units Data Files.    (line   6)
* command, !locale:                      Localization.        (line   6)
* command, !message:                     Localization.        (line   6)
* command, !set:                         Localization.        (line   6)
* command, !unitlist:                    Defining Unit List Aliases.
                                                              (line   6)
* command, !utf8:                        Unicode Support.     (line   6)
* command, !var:                         Localization.        (line   6)
* command, !varnot:                      Localization.        (line   6)
* command-line options:                  Invoking Units.      (line   6)
* command-line unit conversion:          Command Line Use.    (line   6)
* commands in units database:            Database Syntax.     (line   6)
* compatibility:                         Backwards Compatibility.
                                                              (line   6)
* compatibility with earlier versions:   Backwards Compatibility.
                                                              (line   6)
* completion, unit, using ? (readline only): Readline Support.
                                                              (line  16)
* conformable units, ? to show:          Interactive Use.     (line 142)
* Consumer Price Index:                  US Consumer Price Index.
                                                              (line   6)
* CPI:                                   US Consumer Price Index.
                                                              (line   6)
* CPI, updating:                         Currency.            (line   6)
* currency, updating:                    Currency.            (line   6)
* Darcy-Weisbach equation:               Complicated Unit Expressions.
                                                              (line   7)
* data files:                            Data Files.          (line   6)
* data files, additional:                Units Data Files.    (line   6)
* database syntax summary:               Database Syntax.     (line   6)
* defining nonlinear units:              Defining Nonlinear Units.
                                                              (line   6)
* defining piecewise linear units:       Piecewise Linear Units.
                                                              (line   6)
* defining prefixes:                     Defining New Units.  (line   6)
* defining unit list aliases:            Defining Unit List Aliases.
                                                              (line   6)
* defining units:                        Defining New Units.  (line   6)
* defining units with '-':               Backwards Compatibility.
                                                              (line  33)
* differences of units:                  Sums and Differences of Units.
                                                              (line   9)
* dimensionless units:                   Interactive Use.     (line 140)
* dimensionless units, defining:         Defining New Units.  (line  50)
* division of numbers:                   Operators.           (line  50)
* division of units:                     Operators.           (line  14)
* domain, nonlinear unit definitions:    Defining Nonlinear Units.
                                                              (line  90)
* environment dependent definitions:     Localization.        (line   6)
* environment variable, HOME:            Environment Vars.    (line   9)
* environment variable, LANG:            Environment Vars.    (line  19)
* environment variable, LC_CTYPE:        Environment Vars.    (line  19)
* environment variable, MYUNITSFILE:     Units Data Files.    (line  42)
* environment variable, MYUNITSFILE <1>: Environment Vars.    (line  24)
* environment variable, PAGER:           Environment Vars.    (line  30)
* environment variable, UNITSFILE:       Environment Vars.    (line  41)
* environment variable, UNITSLOCALEMAP:  Environment Vars.    (line  48)
* environment variable, UNITS_ENGLISH:   Environment Vars.    (line  37)
* environment variable, UNITS_SYSTEM:    Environment Vars.    (line  57)
* environment variables:                 Environment Vars.    (line   6)
* exchange rates, updating:              Currency.            (line   5)
* exponent operator:                     Operators.           (line  66)
* files, data:                           Data Files.          (line   6)
* flags, output format:                  Flags.               (line   6)
* format specification, output:          Format Specification.
                                                              (line   6)
* fractions, numerical:                  Operators.           (line  50)
* functions of units:                    Defining Nonlinear Units.
                                                              (line 162)
* functions, built in:                   Built-in Functions.  (line   6)
* help:                                  Interactive Use.     (line 147)
* help <1>:                              Environment Vars.    (line  30)
* HOME environment variable:             Environment Vars.    (line   9)
* hyphen as multiplication operator:     Backwards Compatibility.
                                                              (line  17)
* Imperial measure:                      Unit Definitions.    (line 143)
* include files:                         Defining New Units.  (line  15)
* including additional units data files: Units Data Files.    (line   6)
* incompatible units:                    Interactive Use.     (line  86)
* interactive use:                       Interactive Use.     (line   6)
* international mile:                    Unit Definitions.    (line  87)
* international yard:                    Unit Definitions.    (line  87)
* invoking units:                        Invoking Units.      (line   6)
* LANG environment variable:             Environment Vars.    (line  19)
* LC_CTYPE environment variable:         Environment Vars.    (line  19)
* length measure, English customary:     Unit Definitions.    (line  87)
* length measure, UK:                    Unit Definitions.    (line  87)
* linear interpolation:                  Piecewise Linear Units.
                                                              (line   6)
* locale:                                Locale.              (line   6)
* locale_map.txt:                        Locale.              (line  17)
* localization:                          Localization.        (line   6)
* log file:                              Logging Calculations.
                                                              (line   6)
* logging calculations:                  Logging Calculations.
                                                              (line   6)
* logs:                                  Built-in Functions.  (line  31)
* measure, Imperial:                     Unit Definitions.    (line 143)
* mile, international:                   Unit Definitions.    (line  87)
* minus (-) operator, subtraction:       Sums and Differences of Units.
                                                              (line   6)
* multiplication of units:               Operators.           (line  14)
* multiplication, hyphen:                Backwards Compatibility.
                                                              (line  17)
* MYUNITSFILE environment variable:      Units Data Files.    (line  42)
* MYUNITSFILE environment variable <1>:  Environment Vars.    (line  24)
* Natural units, using:                  Natural Units.       (line   6)
* non-conformable units:                 Interactive Use.     (line  86)
* non-interactive unit conversion:       Command Line Use.    (line   6)
* nonlinear unit conversions:            Nonlinear Conversions.
                                                              (line   6)
* nonlinear unit conversions <1>:        Defining Nonlinear Units.
                                                              (line   6)
* nonlinear units, defining:             Defining Nonlinear Units.
                                                              (line   6)
* nonlinear units, other:                Other Nonlinear Units.
                                                              (line   6)
* numbers as units:                      Numbers as Units.    (line   6)
* numeric output format:                 Numeric Output Format.
                                                              (line   6)
* numerical fractions:                   Operators.           (line  50)
* operator precedence:                   Operators.           (line  36)
* operator, (**):                        Operators.           (line  66)
* operator, caret (^):                   Operators.           (line  66)
* operator, hyphen (-) as multiplication: Backwards Compatibility.
                                                              (line  17)
* operator, hyphen (-) as subtraction:   Sums and Differences of Units.
                                                              (line   6)
* operator, minus (-):                   Sums and Differences of Units.
                                                              (line   6)
* operator, per:                         Operators.           (line  14)
* operator, plus (+):                    Sums and Differences of Units.
                                                              (line   6)
* operator, slash (/):                   Operators.           (line  14)
* operator, solidus (/):                 Operators.           (line  14)
* operator, space:                       Operators.           (line  14)
* operator, star (*):                    Operators.           (line  14)
* operator, vertical bar (|):            Operators.           (line  50)
* operators:                             Operators.           (line   6)
* output field width:                    Field Width.         (line   6)
* output format:                         Numeric Output Format.
                                                              (line   6)
* output format flags:                   Flags.               (line   6)
* output format specification:           Format Specification.
                                                              (line   6)
* output precision:                      Precision.           (line   6)
* PAGER environment variable:            Environment Vars.    (line  30)
* parentheses:                           Operators.           (line  29)
* parentheses <1>:                       Operators.           (line  36)
* parentheses <2>:                       Operators.           (line  66)
* parentheses <3>:                       Sums and Differences of Units.
                                                              (line  33)
* parentheses <4>:                       Complicated Unit Expressions.
                                                              (line  27)
* parentheses <5>:                       Defining New Units.  (line  58)
* parentheses <6>:                       Defining New Units.  (line  90)
* parentheses <7>:                       Defining Nonlinear Units.
                                                              (line  36)
* per operator:                          Operators.           (line  14)
* personal units data file:              Units Data Files.    (line  28)
* piecewise linear units:                Piecewise Linear Units.
                                                              (line   6)
* plus (+) operator:                     Sums and Differences of Units.
                                                              (line   6)
* powers:                                Operators.           (line  66)
* precision, output:                     Precision.           (line   6)
* prefixes:                              Unit Definitions.    (line 162)
* prefixes and exponents:                Operators.           (line  78)
* prefixes, definition of:               Defining New Units.  (line   6)
* previous result:                       Previous Result.     (line   6)
* primitive units:                       Defining New Units.  (line   6)
* products of units:                     Operators.           (line  14)
* prompt prefix with CGS units:          Prompt Prefix.       (line   6)
* quotients of units:                    Operators.           (line  14)
* range, nonlinear unit definitions:     Defining Nonlinear Units.
                                                              (line  90)
* readline, use with units:              Readline Support.    (line   6)
* reciprocal conversion:                 Interactive Use.     (line  61)
* roots:                                 Built-in Functions.  (line  55)
* runtime variables:                     Variables Assigned at Run Time.
                                                              (line   6)
* scripting with units:                  Scripting with Units.
                                                              (line   6)
* setlocale function:                    Locale.              (line  17)
* slash (/) operator:                    Operators.           (line  14)
* solidus (/) operator:                  Operators.           (line  14)
* sphere, volume of:                     Other Nonlinear Units.
                                                              (line  42)
* square roots:                          Built-in Functions.  (line  55)
* star (*) operator:                     Operators.           (line  14)
* State Plane Coordinate System, US:     Unit Definitions.    (line  87)
* strict conversion:                     Interactive Use.     (line  70)
* subtraction of units:                  Sums and Differences of Units.
                                                              (line   9)
* sums and differences of units:         Sums and Differences of Units.
                                                              (line   6)
* sums of units:                         Sums and Differences of Units.
                                                              (line   9)
* sums of units <1>:                     Unit Lists.          (line   6)
* survey foot, US:                       Unit Definitions.    (line  87)
* survey measure, US:                    Unit Definitions.    (line  87)
* survey mile, US:                       Unit Definitions.    (line  87)
* syntax of units database:              Database Syntax.     (line   6)
* temperature conversions:               Temperature Conversions.
                                                              (line   6)
* Unicode support:                       Unicode Support.     (line   6)
* unit completion using ? (readline only): Readline Support.  (line  16)
* unit definitions:                      Unit Definitions.    (line   6)
* unit expressions:                      Unit Expressions.    (line   6)
* unit expressions, complicated:         Complicated Unit Expressions.
                                                              (line   6)
* unit list aliases:                     Unit Lists.          (line 218)
* unit list aliases, defining:           Defining Unit List Aliases.
                                                              (line   6)
* unit lists:                            Unit Lists.          (line   6)
* unit name completion:                  Readline Support.    (line  19)
* units data file, personal:             Units Data Files.    (line  28)
* units data files, additional:          Units Data Files.    (line   6)
* units definitions, adding:             Defining New Units.  (line   6)
* units definitions, changing:           Defining New Units.  (line   6)
* units functions:                       Defining Nonlinear Units.
                                                              (line 162)
* units quotients:                       Operators.           (line  14)
* units systems, CGS:                    CGS Units Systems.   (line   6)
* units, definition of:                  Defining New Units.  (line   6)
* units, English customary:              Unit Definitions.    (line  87)
* units, lookup method:                  Unit Definitions.    (line 153)
* units, piecewise linear:               Piecewise Linear Units.
                                                              (line   6)
* units, primitive:                      Defining New Units.  (line   6)
* units, sums and differences:           Sums and Differences of Units.
                                                              (line   6)
* units, sums of:                        Unit Lists.          (line   6)
* units, US customary:                   Unit Definitions.    (line  87)
* UNITSFILE environment variable:        Environment Vars.    (line  41)
* UNITSLOCALEMAP environment variable:   Environment Vars.    (line  48)
* UNITS_ENGLISH environment variable:    Environment Vars.    (line  37)
* UNITS_SYSTEM environment variable:     Environment Vars.    (line  57)
* US Consumer Price Index:               US Consumer Price Index.
                                                              (line   6)
* US State Plane Coordinate System:      Unit Definitions.    (line  87)
* US survey foot:                        Unit Definitions.    (line  87)
* US survey measure:                     Unit Definitions.    (line  87)
* US survey mile:                        Unit Definitions.    (line  87)
* UTF-8:                                 Unicode Support.     (line   6)
* variables assigned at run time:        Variables Assigned at Run Time.
                                                              (line   6)
* verbose output:                        Interactive Use.     (line  52)
* verbose output <1>:                    Interactive Use.     (line  70)
* vertical bar (|) operator:             Operators.           (line  50)
* volume measure, English customary:     Unit Definitions.    (line  72)
* white space:                           Operators.           (line  36)
* white space <1>:                       Previous Result.     (line  34)
* wire gauge:                            Other Nonlinear Units.
                                                              (line  14)
* yard, international:                   Unit Definitions.    (line  87)



Tag Table:
Node: Top842
Node: Overview2508
Ref: Overview-Footnote-14278
Node: Interactive Use4520
Node: Command Line Use10862
Node: Unit Definitions13263
Node: Unit Expressions21744
Node: Operators22433
Node: Sums and Differences of Units27800
Node: Numbers as Units30184
Node: Built-in Functions30989
Node: Previous Result33162
Node: Complicated Unit Expressions35333
Node: Variables Assigned at Run Time36968
Node: Backwards Compatibility41919
Node: Nonlinear Conversions43823
Node: Temperature Conversions44315
Node: US Consumer Price Index46355
Node: Other Nonlinear Units49717
Node: Unit Lists52854
Node: Alternative Unit Systems62391
Node: CGS Units62674
Node: Specifying CGS Units65615
Node: CGS Units Systems67675
Node: Conversions Between Systems69746
Node: Natural Units73426
Node: Prompt Prefix76440
Node: Logging Calculations77319
Node: Invoking Units79993
Ref: Invoking Units-Footnote-194189
Node: Scripting with Units94443
Node: Output Styles96940
Node: Defining Your Own Units100125
Node: Units Data Files100662
Node: Defining New Units103150
Node: Defining Nonlinear Units108064
Node: Piecewise Linear Units116242
Node: Defining Unit List Aliases119999
Node: Numeric Output Format121159
Node: Format Specification122428
Node: Flags124385
Node: Field Width126468
Node: Precision127503
Node: Localization129956
Node: Locale130399
Node: Additional Localization132414
Node: Environment Vars136871
Node: Data Files139731
Node: Unicode Support141886
Node: Readline Support145443
Node: Currency147589
Node: Database Syntax153381
Node: GNU Free Documentation License155686
Node: Index180818

End Tag Table


Local Variables:
coding: utf-8
End:
units-2.23/winmkdirs.bat0000664000175000017500000000664212313010047014560 0ustar  adrianadrian@rem create Windows installation director hierarchy for units,
@rem   a program for units conversion
@rem
@rem   for Microsoft Windows(R) without Unix-style utilities
@rem   tested with Windows XP SP3
@rem
@rem version 1.0 12 March 2014 by Jeff Conrad (jeff_conrad@msn.com)
@rem
@rem Copyright (C) 2014
@rem Free Software Foundation, Inc
@rem
@rem This program is free software; you can redistribute it and/or modify
@rem it under the terms of the GNU General Public License as published by
@rem the Free Software Foundation; either version 3 of the License, or
@rem (at your option) any later version.
@rem
@rem This program is distributed in the hope that it will be useful,
@rem but WITHOUT ANY WARRANTY; without even the implied warranty of
@rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@rem GNU General Public License for more details.
@rem
@rem You should have received a copy of the GNU General Public License
@rem along with this program; if not, write to the Free Software
@rem Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
@rem    
@rem
@rem The units program was written by Adrian Mariano (adrianm@gnu.org).

@echo off

SetLocal EnableDelayedExpansion EnableExtensions
path %SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem

@rem basename of this script
set ProgName=%~n0
set Errors=0

if "%cmdextversion%"=="" (
  echo %0: you must enable command extensions to run this batch file
  goto :eof
)

set args=%*
if not defined args (
  echo %ProgName%: missing directory
  echo Usage: %ProgName% ^ [^ ... ]
  goto end
)

@rem protect parens, e.g., 'Program Files (x86)'
set args=%args:(=^(%
set args=%args:)=^)%

@rem separate directory pathnames into components
for %%i in (%args%
) do (
    @rem strip quotes
    call :mkdirs %%~i
)
goto end

:mkdirs
  set installdir=%*
  if not defined installdir goto end_mkdirs
  if "%installdir:~0,1%"==":" (
    echo %ProgName%: pathname '%*': cannot begin with ':'
    goto end_mkdirs
  )
  @rem tag leading '\' so it can be preserved
  if "%installdir:~0,1%"=="\" set installdir=:#%installdir%
  @rem tag spaces so we can restore them later
  set installdir=%installdir: =:@:%
  @rem split pathname into components
  set installdir=%installdir:\= %
  @rem restore leading '\'
  set installdir=%installdir::#=\%
  call :mkpathcomp %installdir%
:end_mkdirs
goto :eof

:mkpathcomp
  set drive=%1
  set drive=%drive:~0,2%
  @rem protect silly stuff like '()'
  set drive=%drive:(=^^(%
  set drive=%drive:)=^^)%
  if "%drive:~1,1%"==":" (
    if not exist "%drive%" (
      echo %ProgName%: drive '%drive%' does not exist
      set Errors=1
      goto end_mkpathcomp
    )
  )
  set pathcomp=
  set pathargs=%*
  set pathargs=%pathargs:(=^^(%
  set pathargs=%pathargs:)=^^)%
  for %%j in (%pathargs%) do (
    set pathcomp=!pathcomp!%%j
    @rem restore spaces
    set pathcomp=!pathcomp::@:= !
    if "!pathcomp!"=="\" set pathcomp=

    if not exist !pathcomp!\ (
      mkdir "!pathcomp!"
      if errorlevel 1  (
        echo %ProgName%: cannot create directory '!pathcomp!'
        set Errors=1
        goto end_mkpathcomp
      ) else (
        echo %ProgName%: created directory '!pathcomp!'
      )
    )
    set pathcomp=!pathcomp!\
  )
:end_mkpathcomp
goto :eof

:end
if %Errors% NEQ 0 (
    echo.
    echo %ProgName%: one or more directories could not be created
)
@rem needed to handle invocation with command extension disabled
:eof
EndLocal
units-2.23/makeobjs.cmd0000664000175000017500000000330110641165333014341 0ustar  adrianadrian/*
 *  Make a program object for the OS/2 version of units
 *  Peter Weilbacher (os2@Weilbacher.org), 25Jan2003
 *
 *  Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 3 of the License, or
 *  (at your option) any later version.
 * 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *     
 */
 
call RxFuncAdd SysLoadFuncs, REXXUtil, SysLoadFuncs
call SysLoadFuncs

workdir = Directory()
classname='WPProgram'

title = 'units'
location = ''
setup = 'OBJECTID=;'||,
	'EXENAME=CMD.EXE;'||,
	'PARAMETERS=/c mode co50,5 & units.exe [from-unit] [to-unit] & pause;'||,
	'STARTUPDIR='workdir
if SysCreateObject(classname, title, location, setup, 'U') then 
   say 'Object created.'
else
   say 'Could NOT create the object!!'

title = 'units Shell'
location = ''
setup = 'OBJECTID=;'||,
	'EXENAME=CMD.EXE;'||,
	'PARAMETERS=/c mode co80,25 & units.exe;'||,
	'STARTUPDIR='workdir
if SysCreateObject(classname, title, location, setup, 'U') then 
   say 'Object created.'
else
   say 'Could NOT create the object!!'
units-2.23/units.texinfo0000664000175000017500000056447014564532454014656 0ustar  adrianadrian\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename units.info
@settitle Units: A Unit Conversion Program and Scientific Calculator
@finalout
@setchapternewpage off
@firstparagraphindent none
@set EDITION 2.21
@set VERSION 2.23
@c %**end of header

@c for AUTHOR section
@c man program units

@c ifman .\" 
@copying
This manual is for GNU Units (version @value{VERSION}),
which performs units conversions and units calculations.

Copyright @copyright{} 1996, 1997, 1999, 2000, 2001, 2002, 2004, 2005, 2007,
2011--2024 Free Software Foundation, Inc.

@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.
@c end ifman
@c noman
A copy of the license is included in the section entitled
``GNU Free Documentation License''.
@end quotation
@end copying
@c end noman

@defcodeindex op
@syncodeindex op cp

@c noman
@dircategory Science
@direntry
* Units: (units).               Units conversion and scientific calculation.
@end direntry

@c end noman
@c man .TH UNITS 1   "16 February 2024"
@c man .\" ====================================================================
@c man .SH NAME
@c man .\" ====================================================================
@c man .PP
@c man units \(em unit conversion and calculation program
@c man .\" hack to prevent very thick fraction bars with gropdf
@c man .\" '-1' makes thickness proportional to type size
@c man .if \n(.g .if t \Z@\D't -1'@
@titlepage
@title Units Conversion
@subtitle Edition @value{EDITION} for @command{units} Version @value{VERSION}
@author Adrian Mariano
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@contents

@iftex
@headings off
@everyheading Units Conversion @| @| @thispage
@end iftex

@ifnottex
@node Top
@top Units Conversion

@c noman
This manual describes the @command{units} command for units conversion
and how you can use it as a powerful scientific calculator that keeps
track of units.  This is Edition @value{EDITION} of @cite{The Units
Conversion Manual} for @command{units} Version @value{VERSION}.
@c end noman
@end ifnottex

@menu
* Overview::            What does @command{units} do?
* Interactive Use::     How to use @command{units}.
* Command Line Use::    How to use @command{units} non-interactively.
* Unit Definitions::    What units are defined?
* Unit Expressions::    Forming compound units.
* Nonlinear Conversions:: Nonlinear unit conversions (e.g., temperature).
* Unit Lists::		Conversion to sums of units (e.g., feet and inches).
* Alternative Unit Systems::     CGS units and natural units
* Logging Calculations:: Logging conversions and calculations in a file.
* Invoking Units::      Command line options.
* Scripting with Units:: Using units in scripts
* Output Styles::       Different ways units can print the output.
* Defining Your Own Units::  Adding your own unit definitions
* Numeric Output Format:: How to change the output format
* Localization::        How to define and use regional unit names.
* Environment Vars::    Environment variables used by @command{units}.
* Data Files::          Descriptions and locations of units data files.
* Unicode Support::     Support for Unicode (UTF-8).
* Readline Support::    Unit name completion and editing.
* Currency::            Updating currency exchange rates and CPI.
* Database Syntax::     Summary of database command syntax.
* GNU Free Documentation License::  License.
* Index::               General index.
@end menu

@c noman
@node Overview
@c =====================================================================
@chapter Overview of @command{units}
@c =====================================================================
@c end noman
@c ifman
@ignore
.\" ====================================================================
.SH SYNOPSIS
.\" ====================================================================
.SY units
.RI \:[ from-unit
.RI \:[ to-unit ]]
.YS
.SY units
.OP \-hcemnSpqsv1trUVI
.OP \-d digits
.OP \-f "units\ file"
.OP \-L logfile
.OP \-l locale
.OP \-o format
.OP \-u "unit\ system"
.br
.RI \:[ from-unit
.RI \:[ to-unit ]]
.YS
.SY units
.OP \-\^\-help
.OP \-\^\-check
.OP \-\^\-check-verbose
.OP \-\^\-verbose-check
.OP \-\^\-digits digits
.OP \-\^\-exponential
.OP \-\^\-file "units\ file"
.OP \-\^\-log logfile
.OP \-\^\-locale locale
.OP \-\^\-minus
.OP \-\^\-oldstar
.OP \-\^\-newstar
.OP \-\^\-nolists
.OP \-\^\-show-factor
.OP \-\^\-conformable
.OP \-\^\-output-format format
.OP \-\^\-product
.OP \-\^\-quiet
.OP \-\^\-silent
.OP \-\^\-strict
.OP \-\^\-verbose
.OP \-\^\-compact
.OP \-\^\-one-line
.OP \-\-terse
.OP \-\^\-round
.OP \-\^\-unitsfile
.OP \-\^\-units "units\ system"
.OP \-\^\-version
.OP \-\^\-info
.br
.RI \:[ from-unit
.RI \:[ to-unit ]]
.YS
.\" ====================================================================
.SH DESCRIPTION
.\" ====================================================================
@end ignore
@c end ifman

The @command{units} program converts quantities expressed in various
systems of measurement to their equivalents in other systems of
measurement.
Like many similar programs, it can handle multiplicative scale changes.
It can also handle nonlinear conversions such as Fahrenheit to
@c man Celsius;
@c noman
Celsius;@footnote{But Fahrenheit to
Celsius is linear, you insist.  Not so.  A transformation @math{T} is linear if
@math{T(x+y)=T(x)+T(y)} and this fails for @math{T(x)=ax+b}.  This transformation is
affine, but not linear---see @url{https://en.wikipedia.org/wiki/Linear_map}. }
@pxref{Temperature Conversions}.
@c end noman
@c man see \fITemperature Conversions\fP.
The program can also perform conversions from and to sums of
units, such as converting between meters and feet plus inches.

@c ifman
@ignore
.if n .ig ++
.EQ
delim $$
.EN
.++
But Fahrenheit to
Celsius is linear, you insist.  Not so.  A transformation \fIT\fP is linear if
.if t $T(x + y) = T(x) + T(y)$
.if n \fIT\fP(\fIx\fP\ +\ \fIy\fP)\ =\ \fPT\fP(\fPx\fP)\ +\ \fIT\fP(\fPy\fP)
and this fails for
.if t $T(x) = ax + b$.
.if n \fIT\fP(\fIx\fP)\ =\ \fIax\fP\ +\ \fIb\fP.
This transformation is affine, but not linear\(emsee \f(CWhttps://en.wikipedia.org/wiki/Linear_map\fP.
.if n .ig ++
.EQ
delim off
.EN
.++
.PP
@end ignore
@c end ifman

Basic operation is simple: you enter the units that you want to convert
@emph{from} and the units that you want to convert @emph{to}.
You can use the program interactively with prompts, or you can use it
from the command line.

Beyond simple unit conversions, @command{units} can be used as a
general-purpose scientific calculator that keeps track of units in its
calculations.  You can form arbitrary complex mathematical expressions
of dimensions including sums, products, quotients, powers, and even
roots of dimensions.  Thus you can ensure accuracy and dimensional
consistency when working with long expressions that involve many
different units that may combine in complex ways; for an illustration,
@c man see \fIComplicated Unit Expressions\fP.
@c noman
@pxref{Complicated Unit Expressions}.
@c end noman

The units are defined in several external data files.  You can use the
extensive data files that come with the program, or you can provide
your own data file to suit your needs.  You can also use your own data
file to supplement the standard data files.

You can change the default behavior of @command{units} with various
options given on the command line. @xref{Invoking Units}, for a
description of the available options.

@node Interactive Use
@c =====================================================================
@chapter Interacting with @command{units}
@c =====================================================================
@cindex interactive use

To invoke @command{units} for interactive use, type @kbd{units} at your
shell prompt.  The program will print something like this:

@example
@group
Currency exchange rates from FloatRates (USD base) on 2023-07-08
3612 units, 109 prefixes, 122 nonlinear units

You have:
@end group
@end example

@noindent
At the @w{@samp{You have:}} prompt, type the quantity and units that you
are converting @emph{from}.  For example, if you want to convert ten
meters to feet, type @kbd{10 meters}.  Next, @command{units} will print
@w{@samp{You want:}}.  You should type the units you want to convert
@emph{to}.  To convert to feet, you would type @kbd{feet}.  If the
@command{readline} library was compiled in, then @key{tab} will complete
unit names. @xref{Readline Support}, for more information about
@command{readline}.  To quit the program type @kbd{quit} or @kbd{exit}
at either prompt.

The result will be displayed in two ways.  The first line of output,
which is marked with a @samp{*} to indicate multiplication, gives the
result of the conversion you have asked for.  The second line of output,
which is marked with a @samp{/} to indicate division, gives the inverse
of the conversion factor.  If you convert 10 meters to feet,
@command{units} will print

@example
@group
    * 32.808399
    / 0.03048
@end group
@end example

@noindent
which tells you that 10 meters equals about 32.8 feet.
The second number gives the conversion in the opposite direction.
In this case, it tells you that 1 foot is equal to about
0.03 dekameters since the dekameter is 10 meters.
It also tells you that 1/32.8 is about 0.03.

The @command{units} program prints the inverse because sometimes it is a
more convenient number.  In the example above, for example, the inverse
value is an exact conversion: a foot is exactly 0.03048 dekameters.
But the number given the other direction is inexact.

If you convert grains to pounds, you will see the following:

@example
@group
You have: grains
You want: pounds
        * 0.00014285714
        / 7000
@end group
@end example

@noindent
@w{From} the second line of the output, you can immediately see that a grain
is equal to a seven thousandth of a pound.  This is not so obvious from
the first line of the output.  If you find the output format confusing,
try using the @option{--verbose} option:
@cindex verbose output

@example
@group
You have: grain
You want: aeginamina
        grain = 0.00010416667 aeginamina
        grain = (1 / 9600) aeginamina
@end group
@end example

@noindent
If you request a conversion between units that measure reciprocal
dimensions, then @command{units} will display the conversion results with an extra
note indicating that reciprocal conversion has been done:
@cindex reciprocal conversion

@example
@group
You have: 6 ohms
You want: siemens
        reciprocal conversion
        * 0.16666667
        / 6
@end group
@end example

@noindent
Reciprocal conversion can be suppressed by using the @option{--strict} option.
As usual, use
the @option{--verbose} option to get more comprehensible output:
@cindex verbose output
@cindex strict conversion

@example
@group
You have: tex
You want: typp
        reciprocal conversion
        1 / tex = 496.05465 typp
        1 / tex = (1 / 0.0020159069) typp

You have: 20 mph
You want: sec/mile
        reciprocal conversion
        1 / 20 mph = 180 sec/mile
        1 / 20 mph = (1 / 0.0055555556) sec/mile
@end group
@end example

@noindent
If you enter incompatible unit types, the @command{units} program will
print a message indicating that the units are not conformable and
it will display the reduced form for each unit:
@cindex incompatible units
@cindex non-conformable units

@example
@group
You have: ergs/hour
You want: fathoms kg^2 / day
conformability error
        2.7777778e-11 kg m^2 / sec^3
        2.1166667e-05 kg^2 m / sec
@end group
@end example

@noindent
If you only want to find the reduced form or definition of a unit,
simply press @key{Enter} at the @w{@samp{You want:}} prompt.  Here is an
example:

@example
@group
You have: jansky
You want:
        Definition: fluxunit = 1e-26 W/m^2 Hz = 1e-26 kg / s^2
@end group
@end example

@noindent
The output from @command{units} indicates that the jansky is defined to
be equal to a fluxunit which in turn is defined to be a certain
combination of watts, meters, and hertz.  The fully reduced (and in this
case somewhat more cryptic) form appears on the far right.  If the
ultimate definition and the fully reduced form are identical, the latter
is not shown:

@example
@group
You have: B
You want:
        Definition: byte = 8 bit
@end group
@end example

@noindent
The fully reduced form @emph{is} shown if it and the ultimate definition
are equivalent but not identical:

@example
@group
You have: N
You want:
        Definition: newton = kg m / s^2 = 1 kg m / s^2
@end group
@end example

@noindent
Some named units are treated as dimensionless in some situations.
These units include the radian and steradian.  These units will be
treated as equal to 1 in units conversions.  Power is equal to torque
times angular velocity.  This conversion can only be performed if the
radian is dimensionless.

@example
@group
You have: (14 ft lbf) (12 radians/sec)
You want: watts
        * 227.77742
        / 0.0043902509
@end group
@end example

@noindent
It is also possible to compute roots and other non-integer powers of
dimensionless units; this allows computations such as the altitude of
geosynchronous orbit:

@example
@group
You have: cuberoot(G earthmass / (circle/siderealday)^2) - earthradius
You want: miles
        * 22243.267
        / 4.4957425e-05
@end group
@end example

@noindent
Named dimensionless units are not treated as dimensionless
in other contexts.  They cannot be used as exponents
so for example, @samp{meter^radian} is forbidden.
@cindex dimensionless units

@cindex @samp{?} to show conformable units
@cindex conformable units, @samp{?} to show
If you want a list of options you can type @kbd{?} at the
@w{@samp{You want:}} prompt.  The program will display a list of named
units that are conformable with the unit that you entered at the
@w{@samp{You have:}} prompt above.  Conformable unit @emph{combinations}
will not appear on this list.

@cindex help

Typing @kbd{help} at either prompt displays a short help message.  You
can also type @kbd{help} followed by a unit name.  This will invoke a
pager on the units data base at the point where that unit is defined.
You can read the definition and comments that may give more details or
historical information about the unit.  If your pager allows, you may
want to scroll backwards, e.g. with @samp{b}, because sometimes a longer
comment about a unit or group of units will appear before the
definition.  You can generally quit out of the pager by pressing
@samp{q}.

Typing @kbd{search} @var{text} will display a list of all of the units
whose names contain @var{text} as a substring along with their definitions.
This may help in the case where you aren't sure of the right unit name.

@node Command Line Use
@c =====================================================================
@chapter Using @command{units} Non-Interactively
@c =====================================================================
@cindex command-line unit conversion
@cindex non-interactive unit conversion

The @command{units} program can perform units conversions non-interactively
from the command line.  To do this, type the command, type the original
unit expression, and type the new units you want.  If a units expression
contains non-alphanumeric characters, you may need to protect it from
interpretation by the shell using single or double quote characters.

If you type

@example
units "2 liters" quarts
@end example

@noindent
then @command{units} will print

@example
@group
    * 2.1133764
    / 0.47317647
@end group
@end example

@noindent
and then exit.
The output tells you that 2 liters is about 2.1 quarts, or alternatively that
a quart is about 0.47 times 2 liters.

@command{units} does not require a space between a numerical value and
the unit, so the previous example can be given as

@example
units 2liters quarts
@end example

@noindent
to avoid having to quote the first argument.

If the conversion is successful, @command{units} will return success (zero)
to the calling environment.  If you enter non-conformable units, then
@command{units} will print a message giving the reduced form of each
unit and it will return failure (nonzero) to the calling environment.

If the @option{--conformable} option is given, only one unit expression
is allowed, and @command{units} will print all units conformable with
that expression; it is equivalent to giving @kbd{?} at the
@w{@samp{You want:}} prompt.  For example,

@example
@group
units --conformable gauss
B_FIELD   tesla
Gs        gauss
T         tesla
gauss     abvolt sec / cm^2
stT       stattesla
statT     stattesla
stattesla statWb/cm^2
tesla     Wb/m^2
@end group
@end example

@noindent
If you give more than one unit expression with the
@option{--conformable} option, the program will exit with an error
message and return failure.  This option has no effect in interactive
mode.

If the @option{--terse} (@option{-t}) option is given with the
@option{--conformable} option, conformable units are shown without
definitions; with the previous example, this would give

@example
@group
units --terse --conformable gauss
B_FIELD
Gs
T
gauss
stT
statT
stattesla
tesla
@end group
@end example

@noindent
When the @option{--conformable} option is not given and you invoke
@command{units} with only one argument, @command{units} will print the
definition of the specified unit.  It will return failure if the unit is
not defined and success if the unit is defined.


@node Unit Definitions
@c =====================================================================
@chapter Unit Definitions
@c =====================================================================
@cindex unit definitions

The conversion information is read from several units data files:
@file{definitions.units}, @file{elements.units}, @file{currency.units},
and @file{cpi.units},
which are usually located in
the @file{/usr/share/units} directory.
If you invoke @command{units} with the @option{-V} option, it will print
the location of these files.
The default main
file includes definitions for all familiar units, abbreviations and
metric prefixes.  It also includes many obscure or archaic units.
Many common spelled-out numbers (e.g., @samp{seventeen}) are recognized.

@c ---------------------------------------------------------------------
@section Physical Constants
@c ---------------------------------------------------------------------

Many constants of nature are defined, including these:

@example
pi          @r{ratio of circumference of a circle to its diameter}
c           @r{speed of light}
e           @r{charge on an electron}
force       @r{acceleration of gravity}
mole        @r{Avogadro's number}
water       @r{pressure per unit height of water}
Hg          @r{pressure per unit height of mercury}
au          @r{astronomical unit}
k           @r{Boltzman's constant}
mu0         @r{permeability of vacuum}
epsilon0    @r{permittivity of vacuum}
G           @r{Gravitational constant}
mach        @r{speed of sound}
@end example

@noindent
The standard data file includes numerous other constants.  Also included
are the densities of various ingredients used in baking so that
@samp{2@tie{}cups flour_sifted} can be converted to @samp{grams}.  This
is not an exhaustive list.  Consult the units data file to see the
complete list, or to see the definitions that are used.

@c ---------------------------------------------------------------------
@section Atomic Masses of the Elements
@c ---------------------------------------------------------------------

The data file @file{elements.units} includes atomic masses for most
elements and most known isotopes.  If the mole fractions of constituent
isotopes are known, an elemental mass is calculated from the sum of the
products of the mole fractions and the masses of the constituent
isotopes.  If the mole fractions are not known, the mass of the most
stable isotope---if known---is given as the elemental mass. 
For radioactive elements with atomic numbers 95 or greater, the mass
number of the most stable isotope is not specified, because the list of
studied isotopes is still incomplete.  If no stable isotope is known, no
elemental mass is given, and you will need to choose the most
appropriate isotope.

The data are obtained from the US National Institute for Standards and
Technology (NIST):
@uref{https://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl?ele=&all=all&ascii=ascii2&isotype=all}.
The @file{elements.units} file can be generated from these data using
the @command{elemcvt} command included with the distribution.

@c ---------------------------------------------------------------------
@section Currency Exchange Rates and Consumer Price Index
@c ---------------------------------------------------------------------

The data file @file{currency.units} includes currency conversion rates;
the file @file{cpi.units} includes the US Consumer Price Index (CPI),
published by the US Bureau of Labor Statistics.  The data are updated
monthly by the BLS;
@c man see \fIUpdating Currency Exchange Rates and CPI\fP
@c noman
@pxref{Currency, ,Updating Currency Exchange Rates and CPI}
@c end noman
for information on updating @file{currency.units} and @file{cpi.units}.


@c ---------------------------------------------------------------------
@section English Customary Units
@c ---------------------------------------------------------------------

@cindex volume measure, English customary
English customary units differ in various ways among different
regions.  In Britain a complex system of volume measurements featured
different gallons for different materials such as a wine gallon and
ale gallon that different by twenty percent.  This complexity was
swept away in 1824 by a reform that created an entirely new gallon,
the British Imperial gallon defined as the volume occupied by ten
pounds of water.  Meanwhile in the USA the gallon is derived from the
1707 Winchester wine gallon, which is 231 cubic inches.  These gallons
differ by about twenty percent.  By default if @command{units} runs in
the @samp{en_GB} locale you will get the British volume measures.  If
it runs in the @samp{en_US} locale you will get the US volume
measures.  In other locales the default values are the US
definitions.  If you wish to force different definitions, then set the
environment variable @env{UNITS_ENGLISH} to either @samp{US} or
@samp{GB} to set the desired definitions independent of the locale.

@cindex units, English customary
@cindex units, US customary
@cindex length measure, English customary
@cindex length measure, UK
@cindex survey measure, US
@cindex US survey measure
@cindex survey mile, US
@cindex US survey foot
@cindex State Plane Coordinate System, US
@cindex US State Plane Coordinate System
@cindex survey foot, US
@cindex US survey mile
@cindex mile, international
@cindex international mile
@cindex yard, international
@cindex international yard
Before 1959, the value of a yard (and other units of measure defined in
terms of it) differed slightly among English-speaking countries.  In
1959, Australia, Canada, New Zealand, the United Kingdom, the United
States, and South Africa adopted the Canadian value of 1@tie{}yard =
0.9144@tie{}m (exactly), which was approximately halfway between the
values used by the UK and the US; it had the additional advantage of
making 1@tie{}inch = 2.54@tie{}cm (exactly).  This new standard was
termed the @dfn{International Yard}.  Australia, Canada, and the UK then
defined all customary lengths in terms of the International Yard
(Australia did not define the furlong or rod); because many US land
surveys were in terms of the pre-1959 units, the US continued to define
customary surveyors' units (furlong, chain, rod, pole, perch, and link)
in terms of the previous value for the foot, which was termed the
@dfn{US survey foot}.  The US defined a @dfn{US survey mile} as 5280 US
survey feet, and defined a @dfn{statute mile} as a US survey mile.  The
US values for these units differed from the international values by about
2@tie{}ppm.

The 1959 redefinition of the foot was legally binding in the US but
allowed continued use of the previous definition of the foot for
geodetic surveying.  It was assumed that this use would be temporary,
but use persisted, leading to confusion and errors, and it was at
odds with the intent of uniform standards.  Since January 1, 2023, the
US survey foot has been officially deprecated
@c noman
(@url{https://www.govinfo.gov/app/details/FR-2020-10-05/2020-21902,,85 FR
62698}),
@c end noman
@c man (85 FR 62698),
with its use limited to historical and legacy applications.

The @command{units} program has always used the international values for these
units; the legacy US values can be obtained by using either the @samp{US} or
the @samp{survey} prefix.  In either case, the simple familiar
relationships among the units are maintained, e.g., 1 @samp{furlong} =
660 @samp{ft}, and 1 @samp{USfurlong} = 660 @samp{USft}, though the
metric equivalents differ slightly between the two cases.
The @samp{US} prefix or the @samp{survey} prefix can also be used to
obtain the US survey mile and the value of the US yard prior to 1959,
e.g., @samp{USmile} or @samp{surveymile} (but @emph{not}
@samp{USsurveymile}).  To get the US value of the statute mile, use
either @samp{USstatutemile} or @samp{USmile}.
The pre-1959 UK values for these units can be obtained with the prefix
@samp{UK}.

Except for distances that extend over hundreds of miles (such as in the
US State Plane Coordinate System), the differences in the miles are
usually insignificant:

@example
@group
You have: 100 surveymile - 100 mile
You want: inch
        * 12.672025
        / 0.078913984
@end group
@end example

The US acre was officially defined in terms of the US survey
foot, but @command{units} has used a definition based on the
international foot; the @command{units} definition is now the same as
the official US value.  If you want the previous US acre, use
@samp{USacre} and similarly use @samp{USacrefoot} for the previous US
version of that unit.  The difference between these units is about 4
parts per million.


@c ---------------------------------------------------------------------
@section Miscellaneous Notes on Unit Definitions
@c ---------------------------------------------------------------------

@cindex measure, Imperial
@cindex Imperial measure
@cindex British Imperial measure
The @samp{pound} is a unit of mass.  To get force, multiply by the
force conversion unit @samp{force} or use the shorthand @samp{lbf}.
(Note that @samp{g} is already taken as the standard abbreviation for
the gram.)  The unit @samp{ounce} is also a unit of mass.  The fluid
ounce is @samp{fluidounce} or @samp{floz}.  When British capacity
units differ from their US counterparts, such as the British Imperial
gallon, the unit is defined both ways with @samp{br} and @samp{us}
prefixes.  Your locale settings will determine the value of the
unprefixed unit.  Currency is prefixed with its country
name: @samp{belgiumfranc}, @samp{britainpound}.

@cindex units, lookup method

When searching for a unit, if the specified string does not appear
exactly as a unit name, then the @command{units} program will try to
remove a trailing @samp{s}, @samp{es}.  Next units will replace a
trailing @samp{ies} with @samp{y}.  If that fails,
@command{units} will check for a prefix.  The database includes all
of the standard metric prefixes.  Only one prefix is permitted per
unit, so @samp{micromicrofarad} will fail.  However, prefixes can
appear alone with no unit following them, so
@samp{micro*microfarad} will work, as will @samp{micro microfarad}.

@cindex prefixes

To find out which units and prefixes are available, read the default
units data files; the main data file is extensively annotated.

@node Unit Expressions
@c =====================================================================
@chapter Unit Expressions
@c =====================================================================
@cindex unit expressions

@menu
* Operators::           The usual arithmetic operators, with a few extras
* Sums and Differences of Units::  Adding and subtracting units
* Numbers as Units::    A number is a dimensionless unit
* Built-in Functions::    Trigonometric functions, logarithms, roots
* Previous Result::	Inserting the result of the previous conversion
* Complicated Unit Expressions::   A complicated example
* Variables Assigned at Run Time::	Saving intermediate results in variables
* Backwards Compatibility::   Alternate behavior for @samp{*} and @samp{-}
@end menu

@node Operators
@c ---------------------------------------------------------------------
@section Operators
@c ---------------------------------------------------------------------
@cindex operators

You can enter more complicated units by combining units with operations
such as multiplication, division, powers, addition, subtraction, and
parentheses for grouping.  You can use the customary symbols for these
operators when @command{units} is invoked with its default options.
Additionally, @command{units} supports some extensions, including high
priority multiplication using a space, and a high priority numerical
division operator (@samp{|}) that can simplify some expressions.

@cindex products of units
@cindex quotients of units
@cindex units quotients
@cindex multiplication of units
@cindex division of units
@cindex operator, @samp{per}
@cindex @samp{per} operator
@cindex operator, space
@cindex operator, star (@samp{*})
@cindex star (@samp{*}) operator
@cindex @samp{*} operator
@cindex operator, slash (@samp{/})
@cindex slash (@samp{/}) operator
@cindex operator, solidus (@samp{/})
@cindex solidus (@samp{/}) operator

You multiply units using a space or an asterisk (@samp{*}).
The next example shows both forms:

@example
@group
You have: arabicfoot * arabictradepound * force
You want: ft lbf
        * 0.7296
        / 1.370614
@end group
@end example

@noindent
You can divide units using the slash (@samp{/}) or with @samp{per}:

@example
@group
You have: furlongs per fortnight
You want: m/s
        * 0.00016630986
        / 6012.8727
@end group
@end example

@cindex parentheses
@noindent
You can use parentheses for grouping:

@example
@group
You have: (1/2) kg / (kg/meter)
You want: league
        * 0.00010356166
        / 9656.0833
@end group
@end example

@cindex operator precedence
@cindex parentheses
@cindex white space

@noindent
White space surrounding operators is optional, so the previous example
could have used @samp{(1/2)kg/(kg/meter)}.  As a consequence, however,
hyphenated spelled-out numbers (e.g., @samp{forty-two}) cannot be used;
@samp{forty-two} is interpreted as @samp{40 - 2}.

Multiplication using a space has a higher precedence
than division using a slash and is evaluated left to right;
in effect, the first @samp{/} character marks the beginning of the
denominator of a unit expression.
This makes it simple to enter a quotient with several terms in the
denominator: @w{@samp{J / mol K}}.
The @samp{*} and @samp{/} operators have the same precedence, and are
evaluated left to right; if you multiply with @samp{*}, you must group
the terms in the denominator with parentheses: @w{@samp{J / (mol * K)}}.

@cindex fractions, numerical
@cindex numerical fractions
@cindex division of numbers
@cindex operator, vertical bar (@samp{|})
@cindex vertical bar (@samp{|}) operator
@cindex @samp{|} operator

The higher precedence of the space operator may not always be advantageous.
For example, @w{@samp{m/s s/day}} is equivalent to
@w{@samp{m / s s day}} and has dimensions of length per time cubed.
Similarly, @w{@samp{1/2 meter}} refers to a unit of reciprocal length
equivalent to 0.5/meter, perhaps not what you would intend if
you entered that expression.  The get a half meter you would need to
use parentheses: @w{@samp{(1/2) meter}}.
The @samp{*} operator is convenient for multiplying a sequence of
quotients.  For example, @w{@samp{m/s * s/day}} is equivalent to
@samp{m/day}.  Similarly, you could write @w{@samp{1/2 * meter}} to get
half a meter.

The @command{units} program supports another option for numerical fractions:
you can indicate division of @emph{numbers} with the vertical bar
(@samp{|}), so if you wanted half a meter you could write
@w{@samp{1|2 meter}}.
You cannot use the vertical bar to indicate division of non-numerical
units (e.g., @samp{m|s} results in an error message).

@cindex powers
@cindex exponent operator
@cindex operator, caret (@samp{^})
@cindex operator, (@samp{**})
@cindex @samp{**} operator
@cindex parentheses

Powers of units can be specified using the @samp{^} character, as shown in
the following example, or by simple concatenation of a unit and its
exponent: @samp{cm3} is equivalent to @samp{cm^3};
if the exponent is more than one digit, the @samp{^} is required.
You can also use @samp{**} as an exponent operator.

@example
@group
You have: cm^3
You want: gallons
        * 0.00026417205
        / 3785.4118
@end group
@end example

@noindent
Concatenation only works with a single unit name: if you write @samp{(m/s)2},
@command{units} will treat it as multiplication by 2.
@cindex prefixes and exponents
When a unit includes a prefix, exponent operators apply to the
combination, so @samp{centimeter3} gives cubic centimeters.  If you
separate the prefix from the unit with any multiplication operator (e.g.,
@samp{centi meter^3}), the prefix is treated as a separate unit, so
the exponent applies only to the unit without the prefix.  The second
example is equivalent to @samp{centi * (meter^3)}, and gives a hundredth
of a cubic meter, not a cubic centimeter.  The @command{units} program
is limited internally to products of 99 units; accordingly, expressions
like @samp{meter^100} or @samp{joule^34} (represented internally as
@w{@samp{kg^34 m^68 / s^68}}) will fail.

The @samp{|}
operator has the highest precedence, so you can write the square root of
two thirds as @samp{2|3^1|2}.
The @samp{^} operator has the second highest precedence, and is
evaluated right to left, as usual:

@example
@group
You have: 5 * 2^3^2
You want:
        Definition: 2560
@end group
@end example

@noindent
With a dimensionless base unit, any dimensionless exponent is meaningful
(e.g., @samp{pi^exp(2.371)}).  Even though angle is sometimes treated as
dimensionless, exponents cannot have dimensions of angle:

@example
@group
You have: 2^radian
                 ^
Exponent not dimensionless
@end group
@end example

@noindent
If the base unit is not dimensionless, the
exponent must be a rational number @w{@var{p}/@var{q}}, and the
dimension of the unit must be a power of @var{q}, so @samp{gallon^2|3}
works but @samp{acre^2|3} fails.  An exponent using the slash (@samp{/})
operator (e.g., @samp{gallon^(2/3)}) is also acceptable; the parentheses
are needed because the precedence of @samp{^} is higher than that of
@samp{/}.  Since @command{units} cannot represent dimensions with
exponents greater than 99, a fully reduced exponent must have
@w{@var{q} < 100}.  When raising a non-dimensionless unit to a power,
@command{units} attempts to convert a decimal exponent to a rational
number with @w{@var{q} < 100}.  If this is not possible
@command{units} displays an error message:

@example
@group
You have: ft^1.234
Base unit not dimensionless; rational exponent required
@end group
@end example

@noindent
A decimal exponent must match its rational representation to machine
precision, so @samp{acre^1.5} works but @samp{gallon^0.666} does not.

@node Sums and Differences of Units
@c ---------------------------------------------------------------------
@section Sums and Differences of Units
@c ---------------------------------------------------------------------
@cindex sums and differences of units
@cindex units, sums and differences
@cindex operator, plus (@samp{+})
@cindex plus (@samp{+}) operator
@cindex @samp{+} operator
@cindex operator, minus (@samp{-})
@cindex minus (@samp{-}) operator, subtraction
@cindex operator, hyphen (@samp{-}) as subtraction
@cindex @samp{-} as subtraction operator

@noindent
You may sometimes want to add values of
different units that are outside the SI.
You may also wish to use @command{units} as a
calculator that keeps track of units.  Sums of conformable units are written with
the @samp{+} character, and differences with the @samp{-} character.
@cindex sums of units
@cindex addition of units
@cindex subtraction of units
@cindex differences of units

@example
@group
You have: 2 hours + 23 minutes + 32 seconds
You want: seconds
        * 8612
        / 0.00011611705
@end group
@end example


@example
@group
You have: 12 ft + 3 in
You want: cm
        * 373.38
        / 0.0026782366
@end group
@end example

@example
@group
You have: 2 btu + 450 ft lbf
You want: btu
        * 2.5782804
        / 0.38785542
@end group
@end example

@noindent
The expressions that are added or subtracted must reduce to identical
expressions in primitive units, or an error message will be displayed:

@example
@group
You have: 12 printerspoint - 4 heredium
                                      ^
Invalid sum of non-conformable units
@end group
@end example

@cindex parentheses
@noindent
If you add two values of vastly different scale you may exceed the
available precision of floating point (about 15 digits). The effect is
that the addition of the smaller value makes no change to the larger
value; in other words, the smaller value is treated as if it were zero.

@example
@group
You have: lightyear + cm
@end group
@end example

@noindent
No warning is given, however.
As usual, the precedence for @samp{+} and @samp{-} is lower than that of
the other operators.
A fractional quantity such as 2@tie{}1/2 cups can be given as
@samp{(2+1|2) cups}; the parentheses are necessary because
multiplication has higher precedence than addition.  If you omit the
parentheses, @command{units} attempts to add @samp{2} and
@samp{1|2 cups}, and you get an error message:

@example
@group
You have: 2+1|2 cups
                   ^
Invalid sum or difference of non-conformable units
@end group
@end example

@noindent
The expression could also be correctly written as @samp{(2+1/2) cups}.
If you write @samp{2@tie{}1|2 cups} the space is interpreted as
@emph{multiplication} so the result is the same as @samp{1 cup}.

The @samp{+} and @samp{-} characters sometimes appears in exponents like
@samp{3.43e+8}.  This leads to an ambiguity in an expression like
@samp{3e+2 yC}.  The unit @samp{e} is a small unit of charge, so this
can be regarded as equivalent to @samp{(3e+2) yC} or @samp{(3 e)+(2 yC)}.
This ambiguity is resolved by always interpreting @samp{+} and @samp{-} as part
of an exponent if possible.

@node Numbers as Units
@c ---------------------------------------------------------------------
@section Numbers as Units
@c ---------------------------------------------------------------------
@cindex numbers as units

For @command{units}, numbers are just another kind of unit.  They can
appear as many times as you like and in any order in a unit expression.
For example, to find the volume of a box that is 2 ft by 3 ft by 12 ft
in steres, you could do the following:

@example
@group
You have: 2 ft 3 ft 12 ft
You want: stere
        * 2.038813
        / 0.49048148

You have: $ 5 / yard
You want: cents / inch
        * 13.888889
        / 0.072
@end group
@end example
@noindent
And the second example shows how the dollar sign in the units conversion
can precede the five.  Be careful:  @command{units} will interpret
@samp{$5} with no space as equivalent to @samp{dollar^5}.

@node Built-in Functions
@c ---------------------------------------------------------------------
@section Built-in Functions
@c ---------------------------------------------------------------------
@cindex functions, built in
@cindex built-in functions

Several built-in functions are provided: @samp{sin}, @samp{cos}, @samp{tan},
@samp{asin}, @samp{acos}, @samp{atan},
@samp{sinh}, @samp{cosh}, @samp{tanh},
@samp{asinh}, @samp{acosh}, @samp{atanh},
@samp{exp}, @samp{ln}, @samp{log},
@samp{abs}, @samp{round}, @samp{floor}, @samp{ceil}, @samp{factorial},
@samp{Gamma}, @samp{lnGamma}, @samp{erf}, and @samp{erfc};
the function @samp{lnGamma} is the natural logarithm of the @samp{Gamma}
function.

The @samp{sin}, @samp{cos}, and @samp{tan}
functions require either a dimensionless argument or an argument with
dimensions of angle.

@example
@group
You have: sin(30 degrees)
You want:
        Definition: 0.5

You have: sin(pi/2)
You want:
        Definition: 1

You have: sin(3 kg)
                  ^
Unit not dimensionless
@end group
@end example

@noindent
The other functions on the list require dimensionless arguments.  The
inverse trigonometric functions return arguments with dimensions of
angle.

@cindex logs
The @samp{ln} and @samp{log} functions give natural log and log base
10 respectively.  To obtain logs for any integer base, enter the
desired base immediately after @samp{log}.  For example, to get log
base 2 you would write @samp{log2} and to get log base 47 you could
write @samp{log47}.

@example
@group
You have: log2(32)
You want:
        Definition: 5
You have: log3(32)
You want:
        Definition: 3.1546488
You have: log4(32)
You want:
        Definition: 2.5
You have: log32(32)
You want:
        Definition: 1
You have: log(32)
You want:
        Definition: 1.50515
You have: log10(32)
You want:
        Definition: 1.50515
@end group
@end example

@cindex roots
@cindex square roots
If you wish to take roots of units, you may use the @samp{sqrt} or
@samp{cuberoot} functions.  These functions require that the argument
have the appropriate root.  You can obtain higher roots by using
fractional exponents:

@example
@group
You have: sqrt(acre)
You want: feet
        * 208.71074
        / 0.0047913202

You have: (400 W/m^2 / stefanboltzmann)^(1/4)
You have:
        Definition: 289.80882 K

You have: cuberoot(hectare)
                          ^
Unit not a root
@end group
@end example

@node Previous Result
@c ---------------------------------------------------------------------
@section Previous Result
@c ---------------------------------------------------------------------
@cindex previous result
@cindex @samp{_} to use result of previous conversion

@noindent
You can insert the result of the previous conversion using the
underscore (@samp{_}).  It is useful when you want to
convert the same input to several different units, for example

@example
@group
You have: 2.3 tonrefrigeration
You want: btu/hr
        * 27600
        / 3.6231884e-005
You have: _
You want: kW
        * 8.0887615
        / 0.12362832
@end group
@end example

@noindent
Suppose you want to do some deep frying that requires an oil depth of
2@tie{}inches.  You have 1/2 gallon of oil, and want to know the
largest-diameter pan that will maintain the required depth.  The
nonlinear unit @samp{circlearea} gives the @emph{radius} of the circle
(@pxref{Other Nonlinear Units}, for a more detailed description) in SI
units; you want the @emph{diameter} in @emph{inches}:

@example
@group
You have: 1|2 gallon / 2 in
You want: circlearea
        0.10890173 m
You have: 2 _
You want: in
        * 8.5749393
        / 0.1166189
@end group
@end example

@cindex white space

@noindent
In most cases, surrounding white space is optional, so the previous
example could have used @samp{2_}.  If @samp{_} follows a non-numerical
unit symbol, however, the space is required:

@example
@group
You have: m_
           ^
Parse error
@end group
@end example

@noindent
You can use the @samp{_} symbol any number of times; for example,

@example
@group
You have: m
You want:
        Definition: 1 m
You have: _ _
You want:
        Definition: 1 m^2
@end group
@end example

@noindent
Using @samp{_} before a conversion has been performed (e.g.,
immediately after invocation) generates an error:

@set codequoteundirected
@example
@group
You have: _
          ^
No previous result; '_' not set
@end group
@end example
@clear codequoteundirected

@noindent
Accordingly, @samp{_} serves no purpose when @command{units} is invoked
non-interactively.

If @command{units} is invoked with the @option{--verbose} option
(@pxref{Invoking Units}), the value of @samp{_} is not expanded:

@example
@group
You have: mile
You want: ft
        mile = 5280 ft
        mile = (1 / 0.00018939394) ft
You have: _
You want: m
        _ = 1609.344 m
        _ = (1 / 0.00062137119) m
@end group
@end example

@noindent
You can give @samp{_} at the @w{@samp{You want:}} prompt, but it
usually is not very useful.

@node Complicated Unit Expressions
@c ---------------------------------------------------------------------
@section Complicated Unit Expressions
@c ---------------------------------------------------------------------
@cindex unit expressions, complicated

@noindent
The @command{units} program is especially helpful in ensuring accuracy
and dimensional consistency when converting lengthy unit expressions.
@c noman
@cindex Darcy--Weisbach equation
For example, one form of the Darcy--Weisbach fluid-flow equation is
@c
@c ==================== Math for pressure drop example
@c ================
@ifnotinfo
@displaymath
 \Delta P = {8 \over \pi^2} \rho fL { Q^2 \over d^5}
@end displaymath
@end ifnotinfo
@ifinfo

@example
 Delta P = (8/pi^2) rho f L (Q^2 / d^5)
@end example

@end ifinfo
@noindent
@ifinfo
where @w{Delta P} is the pressure drop, rho
@end ifinfo
@ifnotinfo
where @math{ \Delta P} is the pressure drop, @math{\rho}
@end ifnotinfo
is the mass density,
@math{f} is the (dimensionless) friction factor, @math{L} is the length
of the pipe, @math{Q} is the volumetric flow rate, and @math{d}
is the pipe diameter.
You might want to have the equation in the form
@ifnotinfo
@displaymath
   \Delta P = A_1 \rho fL {Q^2 \over d^5}
@end displaymath
@end ifnotinfo
@ifinfo

@example
   Delta P = A1 rho f L (Q^2 / d^5)
@end example

@end ifinfo
@c end noman
@c -----------------------------------
@c nroff--assume neqn is not available
@c -----------------------------------
@c man .if t .ig ++
@c man For example, one form of the Darcy-Weisbach fluid-flow equation is
@c man .RS 5n
@c man .PP
@c man Delta \fIP\fP = (8 / pi)^2 (\fIrho\fP \fIfLQ\fP^2) / \fId\fP^5,
@c man .RE
@c man .PP
@c man where Delta \fIP\fP is the pressure drop, \fIrho\fP is the mass density,
@c man \fIf\fP is the (dimensionless) friction factor, \fIL\fP is the length
@c man of the pipe, \fIQ\fP is the volumetric flow rate, and \fId\fP
@c man is the pipe diameter.
@c man You might want to have the equation in the form
@c man .RS 5n
@c man .PP
@c man Delta \fIP\fP = A1 \fIrho\fP \fIfLQ\fP^2 / \fId\fP^5
@c man .RE
@c man .PP
@c man .++
@c -----
@c troff
@c -----
@c man .if n .ig ++
@c man .EQ
@c man delim $$
@c man .EN
@c don't assume en dash is available
@c man For example, one form of the Darcy\-Weisbach fluid-flow equation is
@c man .RS 5n
@c man .PP
@c man .EQ
@c man DELTA P = 8 over pi sup 2 rho fL Q sup 2 over d sup 5 ,
@c man .EN
@c man .RE
@c man .PP
@c man where $DELTA P$ is the pressure drop, $rho$ is the mass density,
@c man $f$ is the (dimensionless) friction factor, $L$ is the length
@c man of the pipe, $Q$ is the volumetric flow rate, and $d$
@c man is the pipe diameter.
@c man You might want to have the equation in the form
@c man .RS 5n
@c man .PP
@c man .EQ
@c man DELTA P = A sub 1 rho fL Q sup 2 over d sup 5
@c man .EN
@c man .RE
@c man .PP
@c man .EQ
@c man delim off
@c man .EN
@c man .++
@c ================ End Math for pressure drop example ================
@c
@noindent
that accepted the user's normal units; for typical units used in the US,
the required conversion could be something like

@example
@group
You have: (8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5)
You want: psi
        * 43.533969
        / 0.022970568
@end group
@end example

@cindex parentheses
@noindent
The parentheses allow individual terms in the expression to be entered naturally,
as they might be read from the formula.  Alternatively, the
multiplication could be done with the @samp{*} rather than a space;
then parentheses are needed only around @samp{ft^3/s} because of its
exponent:

@example
@group
You have: 8/pi^2 * lbm/ft^3 * ft * (ft^3/s)^2 /in^5
You want: psi
        * 43.533969
        / 0.022970568
@end group
@end example

@noindent
Without parentheses, and using spaces for multiplication, the previous
conversion would need to be entered as

@example
@group
You have: 8 lb ft ft^3 ft^3 / pi^2 ft^3 s^2 in^5
You want: psi
        * 43.533969
        / 0.022970568
@end group
@end example

@node Variables Assigned at Run Time
@c ---------------------------------------------------------------------
@section Variables Assigned at Run Time
@c ---------------------------------------------------------------------
@cindex variables assigned at run time
@cindex runtime variables

Unit definitions are fixed once @command{units} has finished reading the
units data file(s), but at run time you can assign unit expressions to
variables whose names begin with an underscore, using the syntax

@example
_@var{name} = @var{}
@end example

@noindent
This can help manage a long calculation by saving intermediate
quantities as variables that you can use later.  For example, to
determine the shot-noise-limited signal-to-noise ratio (SNR) of an
imaging system using a helium--neon laser, you could do

@example
You have: _lambda = 632.8 nm            # laser wavelength
You have: _nu = c / _lambda             # optical frequency
You have: _photon_energy = h * _nu
You have: _power = 550 uW
You have: _photon_count = _power * 500 ns / _photon_energy
You have: _snr = sqrt(_photon_count)
You have: _snr
You want:
        Definition: sqrt(_photon_count) = 29597.922
@end example

@noindent
Except for beginning with an underscore, runtime variables follow the
same naming rules as units.  Because names beginning with @samp{_} are
reserved for these variables and unit names cannot begin with @samp{_},
runtime variables can never hide unit definitions.  Runtime variables
are undefined until you make an assignment to them, so if you give a
name beginning with an underscore and no assignment has been made, you
get an error message.

When you assign a unit expression to a runtime variable, @command{units}
checks the expression to determine whether it is valid, but the
resulting definition is stored as a text string, and is not reduced to
primitive units.  The text will be processed anew each time you use the
variable in a conversion or calculation.  This means that if your
definition depends on other runtime variables (or the special variable
@samp{_}), the result of calculating with your variable will change if
any of those variables change.  A dependence need not be direct.

Continuing the example of the laser above, suppose you have done the
calculation as shown.  You now wonder what happens if you switch to an
argon laser:

@example
@group
You have: _lambda = 454.6 nm
You have: _snr
You want:
        Definition: sqrt(_photon_count) = 25086.651
@end group
@end example

@noindent
If you then change the power:

@example
@group
You have: _power = 1 mW
You have: _snr
You want:
        Definition: sqrt(_photon_count) = 33826.834
@end group
@end example

@noindent
Instead of having to reenter or edit a lengthy expression when you
perform another calculation, you need only enter values that change; in
this respect, runtime variables are similar to a spreadsheet.

The more times a variable appears in an expression that depends on it,
the greater the benefit of having a calculation using that expression
reflect changes to that variable.  For example, the length of a sidereal
day at a given latitude and declination of the Sun is given by

@c ================ Math for day length example ==========================
@c noman
@ifnotinfo
@displaymath
  L = 2 \cos^{-1} \left (
    { \sin h  - \sin \phi \sin \delta  }
      \over
    { \cos \phi \cos \delta  }
  \right )
@end displaymath
@end ifnotinfo

@ifinfo
L = 2 acos((sin(h) - cos(phi) cos (delta)) / (cos(phi) cos(delta)))

@end ifinfo
@noindent
where @math{L} is the day length, @math{h} is the Sun's altitude,
@math{\phi} is the location's latitude, and @math{\delta} is the Sun's
declination.
@c end noman
@c -----------------------------------
@c nroff--assume neqn is not available
@c -----------------------------------
@c man .if t .ig ++
@c man .RS 5n
@c man .PP
@c man \fIL\fP = acos((sin \fIh\fP - sin \fI\(*f\fP sin \fI\(*d\fP) /
@c man                (cos \fI\(*f\fP cos \fI\(*d\fP))
@c man .RE
@c man .PP
@c man where \fIL\fP is the day length, \fIh\fP is the altitude,
@c man \fI\(*f\fP is the latitude, and \fI\(*d\fP is the Sun's declination.
@c man .++
@c -----
@c troff
@c -----
@c man .if n .ig ++
@c man .EQ
@c man delim $$
@c man .EN
@c man .RS 5n
@c man .PP
@c man .EQ
@c man L = 2 cos sup {-1} left (
@c man             {sin h - sin phi sin delta}
@c man               over
@c man             {cos phi cos delta}
@c man           right )
@c man .EN
@c man .RE
@c man .PP
@c man where $L$ is the day length, $phi$ is the latitude, and $delta$
@c man is the Sun's declination.
@c man .EQ
@c man delim off
@c man .EN
@c man .++
@c
@c ============= End Math for day length example =======================
@c
The length of a solar day is obtained from a sidereal day by multiplying
by

@example
siderealday / day
@end example

@noindent
By convention, the Sun's altitude at rise or set is
@c noman
@ifnotinfo
@math{-50^\prime}
@end ifnotinfo
@ifinfo
-50'
@end ifinfo
@c end noman
@ignore
@c ifman
\&\-50\(fm
@c end ifman
@end ignore
to
allow for atmospheric refraction and the semidiameter of its disk.  At
the summer solstice, the Sun's declination is approximately
@ifinfo
23.44@textdegree{};
@end ifinfo
@ifnotinfo
@math{23.44^\circ};
@end ifnotinfo
to find the length of the longest day of the year
for a latitude of
@ifnotinfo
@math{55^\circ},
@end ifnotinfo
@ifinfo
55@textdegree{};
@end ifinfo
you could do

@example
@group
You have: _alt = -50 arcmin
You have: _lat = 55 deg
You have: _decl = 23.44 deg
You have: _num = sin(_alt) - sin(_lat) sin(_decl)
You have: _denom = cos(_lat) cos(_decl)
You have: _sday = 2 (acos(_num / _denom) / circle) 24 hr
You have: _day = _sday siderealday / day
You have: _day
You want: hms
        17 hr + 19 min + 34.895151 sec
@end group
@end example

@noindent
At the winter solstice, the Sun's declination is approximately
@ifnotinfo
@math{-23.44^\circ},
@end ifnotinfo
@ifinfo
-23.44@textdegree{};
@end ifinfo
so you could calculate
the length of the shortest day of
the year using:

@example
@group
You have: _decl = -23.44 deg
You have: _day
You want: hms
        7 hr + 8 min + 40.981084 sec
@end group
@end example

@noindent
Latitude and declination each appear twice in the expression for
@code{_day}; the result in the examples above is updated by changing
only the value of the declination.

It's important to remember that evaluation of runtime variables is
delayed, so you cannot make an assignment that is self-referential.  For
example, the following does not work:

@example
@group
You have: _decl = 23.44 deg
You have: _decl = -_decl
You have: _decl
Circular unit definition
@end group
@end example

@noindent
A runtime variable must be assigned before it can be used in an
assignment; in the first of the three examples above, giving the general
equation before the values for @code{_alt}, @code{_lat}, and @code{_decl}
had been assigned would result in an error message.

@node Backwards Compatibility
@c ---------------------------------------------------------------------
@section Backwards Compatibility: @samp{*} and @samp{-}
@c ---------------------------------------------------------------------
@cindex backwards compatibility
@cindex compatibility
@cindex compatibility with earlier versions

The original @command{units} assigned multiplication a higher
precedence than division using the slash.  This differs from the
usual precedence rules, which give multiplication and division equal
precedence, and can be confusing for people who think
of units as a calculator.

The star operator (@samp{*}) included in this @command{units} program
has, by default, the same precedence as division,
and hence follows the usual precedence rules.  For backwards
compatibility you can invoke @command{units}
with the @option{--oldstar}
option.  Then @samp{*} has a higher precedence than
division, and the same precedence as multiplication using the space.

@cindex @samp{-} as multiplication operator
@cindex operator, hyphen (@samp{-}) as multiplication
@cindex multiplication, hyphen
@cindex hyphen as multiplication operator

Historically, the hyphen (@samp{-}) has been used in technical
publications to indicate products of units, and the original
@command{units} program treated it as a multiplication operator.
Because @command{units} provides
several other ways to obtain unit products, and because @samp{-} is a
subtraction operator in general algebraic expressions, @command{units}
treats the binary @samp{-} as a subtraction operator by default.
For backwards compatibility use the @option{--product} option, which
causes @command{units} to treat the binary @samp{-} operator as a
product operator.  When @samp{-} is a multiplication operator
it has the same precedence as multiplication with a space, giving it a
higher precedence than division.

When @samp{-} is used as a unary operator it negates its operand.
Regardless of the @command{units} options, if
@samp{-} appears after @samp{(} or after
@samp{+}, then it will act as a negation operator.  So you can always compute 20
degrees minus 12 minutes by entering @samp{20@tie{}degrees + -12@tie{}arcmin}.
You must use this construction when you define new units because you
cannot know what options will be in force when your definition is
processed.
@cindex defining units with `-'

@node Nonlinear Conversions
@c =====================================================================
@chapter Nonlinear Unit Conversions
@c =====================================================================
@cindex nonlinear unit conversions

Nonlinear units are represented using functional notation.  They make
possible nonlinear unit conversions such as temperature.

@menu
* Temperature Conversions::  Conversion between temperature scales
* US Consumer Price Index::  US Consumer Price Index
* Other Nonlinear Units::    Ring size, wire gauge, abrasive grit size
@end menu

@node Temperature Conversions
@c ---------------------------------------------------------------------
@section Temperature Conversions
@c ---------------------------------------------------------------------
@cindex temperature conversions

Conversions between temperatures are different from linear conversions
between temperature @emph{increments}---see the example below.  The
absolute temperature conversions are handled by units starting with
@samp{temp}, and you must use functional notation.
The temperature-increment conversions are done using units starting
with @samp{deg} and they do not require functional notation.

@example
@group
You have: tempF(45)
You want: tempC
        7.2222222

You have: 45 degF
You want: degC
        * 25
        / 0.04
@end group
@end example

@noindent
Think of @samp{tempF(@var{x})} not as a function but as a notation that
indicates that @var{x} should have units of @samp{tempF} attached to
it.  @xref{Defining Nonlinear Units}.  The first conversion shows that if it's 45
degrees Fahrenheit outside, it's 7.2 degrees Celsius.  The second
conversion indicates that a change of 45 degrees Fahrenheit corresponds
to a change of 25 degrees Celsius.  The conversion from
@samp{tempF(@var{x})} is to absolute temperature, so that

@example
@group
You have: tempF(45)
You want: degR
        * 504.67
        / 0.0019814929
@end group
@end example

@noindent
gives the same result as

@example
@group
You have: tempF(45)
You want: tempR
        * 504.67
        / 0.0019814929
@end group
@end example

@noindent
But if you convert @samp{tempF(@var{x})} to @samp{degC}, the output is
probably not what you expect:

@example
@group
You have: tempF(45)
You want: degC
        * 280.37222
        / 0.0035666871
@end group
@end example

@noindent
The result is the temperature in K, because @samp{degC} is defined as
@samp{K}, the kelvin. For consistent results, use the @samp{temp@var{X}} units
when converting to a temperature rather than converting a temperature
increment.

The @samp{tempC()} and @samp{tempF()} definitions are limited to
positive absolute temperatures, and giving a value that would result in
a negative absolute temperature generates an error message:

@example
@group
You have: tempC(-275)
                    ^
Argument of function outside domain
@end group
@end example

@node US Consumer Price Index
@c ---------------------------------------------------------------------
@section US Consumer Price Index
@c ---------------------------------------------------------------------
@cindex US Consumer Price Index
@cindex Consumer Price Index
@cindex CPI

@command{units} includes the US Consumer Price Index published by the US
Bureau of Labor Statistics.  Several functions that use this value are
provided:
@samp{cpi},
@samp{cpi_now},
@samp{inflation_since},
and
@samp{dollars_in}.

The @samp{cpi} function gives the CPI for a specified decimal year.  A
@dfn{decimal year} is given as the year plus the fractional part of the
year; because of leap years and the different lengths of months,
calculating an exact value for the fractional part can be tedious, but
for the purposes of CPI, an approximate value is usually 
adequate.  For example, @w{1 January} 2000 is 2000.0, @w{1 April} 2000 is 2000.25,
@w{1 July} 2000 is 2000.4986, and @w{1 October} 2000 is 2000.75.
Note also that the CPI data update monthly; values in between months
are linearly interpolated.  

In the middle of 1975, the CPI was

@example
@group
You have: cpi(1975.5)
You want:
        Definition: 53.6
@end group
@end example

@noindent
The value of the CPI for the previous month is usually published toward
the the month; the latest value of the CPI is available with
@samp{cpi_now}.  On @w{7 January} 2024, the value was

@example
@group
You have: cpi_now
You want:
        Definition: UScpi_now = 307.051
@end group
@end example

@noindent
This means that the CPI was 307.015 on @w{1 December} 2023.  The
@samp{cpi_now} variable can only present the most recent data available,
so it can lag the current CPI by several weeks.
The decimal year of the last update is available with @samp{cpi_lastdate}.

The @samp{inflation_since} function provides a convenient way to
determine the inflation factor from a specified decimal year to the
latest value in the CPI table.  For example, on @w{7 January} 2024:

@example
@group
You have: inflation_since(1970)
You want:
        Definition: 8.1445889
@end group
@end example

@noindent
In other words, goods that cost 1 US$ in 1970 would cost 8.14 US$ on
@w{1 December} 2023.

The @samp{inflation_since} function can be used to determine an annual
rate of inflation.  The earliest US CPI data are from about 1913.1; the
approximate time between then and @w{7 January} 2024 is 110.9 years.  The
approximate annual inflation rate for that period is then

@example
@group
You have: inflation_since(1913.1)^1|110.9 - 1
You want: %
        * 3.1548115
        / 0.31697614
@end group
@end example

@noindent
The inflation rate for any time period can be found from the ratio of
the CPI at the end of the period to that of the beginning:

@example
@group
You have: (cpi(1982)/cpi(1972))^1|10 - 1
You want: %
        * 8.6247033
        / 0.11594602
@end group
@end example

@noindent
The period 1972--1982 was indeed one of high inflation.

The @samp{dollars_in} function is similar to @samp{inflation_since} but
its output is in US$ rather than dimensionless:

@example
@group
You have: dollars_in(1970)
You want:
        Definition: 8.1445889 US$
@end group
@end example

@noindent
A typical use might be

@example
@group
You have: 250 dollars_in(1970)
You want: $
        * 2036.1472
        / 0.00049112362
@end group
@end example

@noindent
Because @samp{dollars_in} includes the units, you should not
include them at the @w{@samp{You have:}} prompt.  You can also
use @samp{dollars_in} to convert between two specified years:

@example
@group
You have: 250 dollars_in(1970)
You want: dollars_in(1950)
        * 156.49867
        / 0.0063898305
@end group
@end example

@noindent
which shows that 250 US$ in 1970 would have equivalent purchasing
power to 156 US$ in 1950.  

@node Other Nonlinear Units
@c ---------------------------------------------------------------------
@section Other Nonlinear Units
@c ---------------------------------------------------------------------
@cindex nonlinear units, other

Some other examples of nonlinear units are numerous different ring
sizes and wire gauges, the grit sizes used for abrasives, the decibel
scale, shoe size, scales for the density of sugar (e.g., baume).
The standard data file also supplies units for computing the area of a
circle and the volume of a sphere.  See the standard units data file
for more details.
Wire gauges
with multiple zeroes are signified using negative numbers where two
zeroes is @samp{-1}.  Alternatively, you can use the synonyms @samp{g00},
@samp{g000}, and so on that are defined in the standard units data file.
@cindex wire gauge

@example
@group
You have: wiregauge(11)
You want: inches
        * 0.090742002
        / 11.020255

You have: brwiregauge(g00)
You want: inches
        * 0.348
        / 2.8735632

You have: 1 mm
You want: wiregauge
        18.201919

You have: grit_P(600)
You want: grit_ansicoated
        342.76923
@end group
@end example

@noindent
The last example shows the conversion from P graded sand paper,
which is the European standard and may be marked ``P600'' on the back,
to the USA standard.
@cindex abrasive grit size

You can compute the area of a circle using the nonlinear unit,
@samp{circlearea}.  You can also do this using the circularinch or
circleinch.  The next example shows two ways to compute the area of a
circle with a five inch radius and one way to compute the volume of a
sphere with a radius of one meter.
@cindex circle, area of
@cindex sphere, volume of

@example
@group
You have: circlearea(5 in)
You want: in2
        * 78.539816
        / 0.012732395

You have: 10^2 circleinch
You want: in2
        * 78.539816
        / 0.012732395

You have: spherevol(meter)
You want: ft3
        * 147.92573
        / 0.0067601492
@end group
@end example

@noindent
The inverse of a nonlinear conversion is indicated by prefixing a tilde
(@samp{~}) to the nonlinear unit name:

@example
@group
You have: ~wiregauge(0.090742002 inches)
You want:
        Definition: 11
@end group
@end example



@noindent
You can give a nonlinear unit definition without an argument or
parentheses, and press @key{Enter} at the @w{@samp{You want:}} prompt to
get the definition of a nonlinear unit; if the definition is not valid
for all real numbers, the range of validity is also given.  If the
definition requires specific units this information is also
displayed:

@example
@group
You have: tempC
        Definition: tempC(x) = x K + stdtemp
                    defined for x >= -273.15
You have: ~tempC
        Definition: ~tempC(tempC) = (tempC +(-stdtemp))/K
                    defined for tempC >= 0 K
You have: circlearea
        Definition: circlearea(r) = pi r^2
                    r has units m
@end group
@end example

@noindent
To see the definition of the inverse use the @samp{~} notation.  In
this case the parameter in the functional definition will
usually be the name of the unit.  Note that the inverse for
@samp{tempC} shows that it requires units of @samp{K} in the
specification of the allowed range of values.
Nonlinear unit conversions are described in more detail in
@ref{Defining Nonlinear Units}.

@node Unit Lists
@c =====================================================================
@chapter Unit Lists: Conversion to Sums of Units
@c =====================================================================
@cindex sums of units
@cindex unit lists
@cindex units, sums of

@menu
* Cooking Measure
* Unit List Aliases
@end menu

Outside of the SI, it is sometimes desirable to convert a single
unit to a sum of units---for example, feet to feet plus inches.
The conversion @emph{from} sums of units was described in
@ref{Sums and Differences of Units}, and is a simple matter of adding
the units with the @samp{+} sign:

@example
@group
You have: 12 ft + 3 in + 3|8 in
You want: ft
        * 12.28125
        / 0.081424936
@end group
@end example

@noindent
Although you can similarly write a sum of units to convert @emph{to},
the result will not be the conversion to the units in the sum, but
rather the conversion to the particular sum that you have entered:

@example
@group
You have: 12.28125 ft
You want: ft + in + 1|8 in
        * 11.228571
        / 0.089058524
@end group
@end example

@noindent
The unit expression given at the @w{@samp{You want:}} prompt is
equivalent to asking for conversion to multiples of
@samp{1@tie{}ft + 1@tie{}in + 1|8@tie{}in}, which is 1.09375 ft, so the
conversion in the previous example is equivalent to

@example
@group
You have: 12.28125 ft
You want: 1.09375 ft
        * 11.228571
        / 0.089058524
@end group
@end example

@noindent
In converting to a sum of units like miles, feet and inches, you
typically want the largest integral value for the first unit, followed
by the largest integral value for the next, and the remainder converted
to the last unit.
You can do this conversion easily with @command{units} using a special
syntax for lists of units.  You must list the desired units in order
from largest to smallest, separated by the semicolon (@samp{;})
character:

@example
@group
You have: 12.28125 ft
You want: ft;in;1|8 in
        12 ft + 3 in + 3|8 in
@end group
@end example

@noindent
The conversion always gives integer coefficients on the units in the
list, except possibly the last unit when the conversion is not exact:

@example
@group
You have: 12.28126 ft
You want: ft;in;1|8 in
        12 ft + 3 in + 3.00096 * 1|8 in
@end group
@end example

@noindent
The order in which you list the units is important:

@example
@group
You have: 3 kg
You want: oz;lb
        105 oz + 0.051367866 lb

You have: 3 kg
You want: lb;oz
        6 lb + 9.8218858 oz
@end group
@end example

@noindent
Listing ounces before pounds produces a technically correct result,
but not a very useful one.  You must list the units in descending
order of size in order to get the most useful result.

Ending a unit list with the separator @samp{;}
has the same effect as repeating the last
unit on the list, so @samp{ft;in;1|8 in;} is equivalent to
@samp{ft;in;1|8 in;1|8 in}.  With the example above, this gives

@example
@group
You have: 12.28126 ft
You want: ft;in;1|8 in;
        12 ft + 3 in + 3|8 in + 0.00096 * 1|8 in
@end group
@end example

@noindent
in effect separating the integer and fractional parts of the
coefficient for the last unit.  If you instead
prefer to round the last coefficient to an integer
you can do this with the @option{--round} (@option{-r}) option.
With the previous example, the result is

@example
@group
You have: 12.28126 ft
You want: ft;in;1|8 in
        12 ft + 3 in + 3|8 in (rounded down to nearest 1|8 in)
@end group
@end example

@noindent
When you use the @option{-r} option, repeating the last unit on the
list has no effect (e.g., @samp{ft;in;1|8 in;1|8 in} is equivalent to
@samp{ft;in;1|8 in}), and hence neither does ending a list with a
@samp{;}.  With a single unit and the @option{-r} option, a terminal @samp{;}
@emph{does} have an effect: it causes @command{units} to treat the
single unit as a list and produce a rounded value for the single unit.
Without the extra @samp{;}, the @option{-r} option has no effect on
single unit conversions.  This example shows the output using the
@option{-r} option:

@example
@group
You have: 12.28126 ft
You want: in
        * 147.37512
        / 0.0067854058

You have: 12.28126 ft
You want: in;
        147 in (rounded down to nearest in)
@end group
@end example

@noindent
Each unit that appears in the list must be conformable with the first
unit on the list, and of course the listed units must also be
conformable with the unit that you enter at the @w{@samp{You have:}}
prompt.

@example
@group
You have: meter
You want: ft;kg
             ^
conformability error
        ft = 0.3048 m
        kg = 1 kg

You have: meter
You want: lb;oz
conformability error
        1 m
        0.45359237 kg
@end group
@end example

@noindent
In the first case, @command{units} reports the disagreement between
units appearing on the list.  In the second case, @command{units}
reports disagreement between the unit you entered and the desired
conversion.  This conformability error is based on the first
unit on the unit list.

Other common candidates for conversion to sums of units are
angles and time:

@example
@group
You have: 23.437754 deg
You want: deg;arcmin;arcsec
    23 deg + 26 arcmin + 15.9144 arcsec

You have: 7.2319 hr
You want: hr;min;sec
    7 hr + 13 min + 54.84 sec
@end group
@end example

@noindent
Some applications for unit lists may be less obvious.  Suppose that you
have a postal scale and wish to ensure that it's accurate at 1@tie{}oz,
but have only metric calibration weights.  You might try

@example
@group
You have: 1 oz
You want: 100 g;50 g; 20 g;10 g;5 g;2 g;1 g;
        20 g + 5 g + 2 g + 1 g + 0.34952312 * 1 g
@end group
@end example

@noindent
You might then place one each of the 20@tie{}g, 5@tie{}g, 2@tie{}g, and
1@tie{}g weights on the scale and hope that it indicates close to

@example
@group
You have: 20 g + 5 g + 2 g + 1 g
You want: oz;
        0.98767093 oz
@end group
@end example

@noindent
Appending @samp{;} to @samp{oz} forces a one-line display that includes
the unit; here the integer part of the result is zero, so it is not
displayed.

If a non-empty list item differs vastly in scale from the quantity from
which the list is to be converted, you may exceed the available
precision of floating point (about 15 digits), in which case you will
get a warning, e.g.,

@example
@group
You have: lightyear
You want: mile;100 inch;10 inch;mm;micron
        5.8786254e+12 mile + 390 * 100 inch (at 15-digit precision limit)
@end group
@end example


@c ---------------------------------------------------------------------
@section Cooking Measure
@c ---------------------------------------------------------------------

@noindent
In North America, recipes for cooking typically measure ingredients by
volume, and use units that are not always convenient multiples of each
other.  Suppose that you have a recipe for 6 and you wish to make a
portion for 1.  If the recipe calls for 2@tie{}1/2 cups of an
ingredient, you might wish to know the measurements in terms of
measuring devices you have available, you could use @command{units} and
enter

@example
@group
You have: (2+1|2) cup / 6
You want: cup;1|2 cup;1|3 cup;1|4 cup;tbsp;tsp;1|2 tsp;1|4 tsp
        1|3 cup + 1 tbsp + 1 tsp
@end group
@end example

@noindent
By default, if a unit in a list begins with fraction of the form
1|@var{x} and its multiplier is an integer, the fraction is given as
the product of the multiplier and the numerator; for example,

@example
@group
You have: 12.28125 ft
You want: ft;in;1|8 in;
        12 ft + 3 in + 3|8 in
@end group
@end example

@noindent
In many cases, such as the example above, this is what is wanted, but
sometimes it is not.  For example, a cooking recipe for 6 might call
for 5@tie{}1/4 cup of an ingredient, but you want a portion for 2, and
your 1-cup measure is not available; you might try

@example
@group
You have: (5+1|4) cup / 3
You want: 1|2 cup;1|3 cup;1|4 cup
        3|2 cup + 1|4 cup
@end group
@end example

@noindent
This result might be fine for a baker who has a 1@tie{}1/2-cup measure
(and recognizes the equivalence), but it may not be as useful to
someone with more limited set of measures, who does want to do
additional calculations, and only wants to know ``How many 1/2-cup
measures to I need to add?''  After all, that's what was actually
asked.  With the @option{--show-factor} option, the factor will not be
combined with a unity numerator, so that you get

@example
@group
You have: (5+1|4) cup / 3
You want: 1|2 cup;1|3 cup;1|4 cup
        3 * 1|2 cup + 1|4 cup
@end group
@end example

@noindent
A user-specified fractional unit with a numerator other than 1 is never
overridden, however---if a unit list specifies @samp{3|4 cup;1|2 cup},
a result equivalent to 1@tie{}1/2 cups will always be shown as
@samp{2 * 3|4@tie{}cup} whether or not the @option{--show-factor} option
is given.


@c ---------------------------------------------------------------------
@section Unit List Aliases
@c ---------------------------------------------------------------------
@cindex unit list aliases

@noindent
A unit list such as

@example
cup;1|2@tie{}cup;1|3@tie{}cup;1|4@tie{}cup;tbsp;tsp;1|2@tie{}tsp;1|4@tie{}tsp
@end example

@noindent
can be tedious to enter.  The @command{units} program provides shorthand names
for some common combinations:

@example
hms         @r{time: hours, minutes, seconds}
dms         @r{angle: degrees, minutes, seconds}
time        @r{time: years, days, hours, minutes and seconds}
usvol       @r{US cooking volume: cups and smaller}
uswt        @r{US weight: pounds and ounces}
ftin        @r{length: feet, inches and 1/8 inches}
inchfine    @r{length: inches subdivided to 1/64 inch}
@end example

@noindent
Using these shorthands, or @dfn{unit list aliases},
you can do the following conversions:

@example
@group
You have: anomalisticyear
You want: time
        1 year + 25 min + 3.4653216 sec
You have: 1|6 cup
You want: usvol
        2 tbsp + 2 tsp
@end group
@end example

@noindent
You can define your own unit list aliases;
@pxref{Defining Unit List Aliases}.

You cannot combine a unit list alias with other units: it must appear
alone at the @w{@samp{You want:}} prompt.

You can display the definition of a unit list alias by entering it at
the @w{@samp{You have:}} prompt:

@example
@group
You have: dms
        Definition: unit list, deg;arcmin;arcsec
@end group
@end example

@noindent
When you specify compact output with @option{--compact},
@option{--terse} or @option{-t} and perform conversion to a unit list,
@command{units} lists the conversion factors for each unit in the
list, separated by semicolons.

@example
@group
You have: year
You want: day;min;sec
365;348;45.974678
@end group
@end example

@noindent
Unlike the case of regular
output, zeros @emph{are} included in this output list:

@example
@group
You have: liter
You want: cup;1|2 cup;1|4 cup;tbsp
4;0;0;3.6280454
@end group
@end example

@node Alternative Unit Systems
@c =====================================================================
@chapter Alternative Unit Systems
@c =====================================================================

@menu
* CGS Units::
* Natural Units::
* Prompt Prefix::              The prompt prefix shows specified CGS units
@end menu

@node CGS Units
@c ---------------------------------------------------------------------
@section CGS Units
@c ---------------------------------------------------------------------
@cindex CGS units, using



@menu
* Specifying CGS Units::       How to specify the desired CGS units
* CGS Units Systems::          The various CGS units systems
* Conversions Between Systems:: Conversions between units in different systems
@end menu

The SI---an extension of the MKS (meter--kilogram--second) system---has
largely supplanted the older CGS (centimeter--gram--second) system, but
CGS units are still used in a few specialized fields, especially in
physics where they lead to a more elegant formulation of Maxwell's equations.
Conversions between SI and CGS involving mechanical units are
straightforward, involving powers of 10 (e.g., @w{1 m = 100 cm}).
Conversions involving electromagnetic units are more complicated, and
@command{units} supports four different systems of CGS units:
electrostatic units (ESU), electromagnetic units (EMU), the
Gaussian system and the Heaviside--Lorentz system.
The differences between these systems
arise from different choices made for proportionality
constants in electromagnetic equations.
Coulomb's law gives electrostatic force between two
charges separated by a distance
@c noman
@math{r}:
@ifinfo
@display

F = k_C q_1 q_2 / r^2.
@end display
@end ifinfo
@ifnotinfo
@displaymath
  F = k_{\rm C} { {q_1 q_2} \over {r^2} }.
@end displaymath
@end ifnotinfo
@c end noman
@c
@c man .EQ
@c man delim $$
@c man .EN
@c man .if n \fIr\fP:
@c man .if t $r$:
@c man .RS 5n
@c man .PP
@c man .if n \fIF\fP = \fIk\fP_C \fIq\fP_1\ \fIq\fP_2\ /\ \fIr\fP^2.
@c man .if t \{\
@c man .EQ
@c man F = k sub roman C { q sub 1 q sub 2} over r sup 2.
@c man .EN
@c man .\}
@c man .RE

@noindent
Ampere's law gives the electromagnetic force per unit length
between two current-carrying conductors separated by a distance
@c noman
@math{r}:
@ifinfo
@display

F/l = 2 k_A I_1 I_2 / r.
@end display
@end ifinfo
@ifnotinfo
@displaymath
  { F \over \ell } = 2 k_{\rm A} { {I_1 I_2} \over {r} } .
@end displaymath
@end ifnotinfo
@c end noman
@c
@c man .if n \fIr\fP:
@c man .if t $r$:
@c man .RS 5n
@c man .PP
@c man .if n \fIF\fP/\fIl\fP = 2 \fIk\fP_A \fII\fP_1\ \fII\fP_2\ /\ \fIr\fP.
@c man .if t \{\
@c man .EQ
@c man F over l = 2 k sub roman A { I sub 1 I sub 2 } over r .
@c man .EN
@c man .\}
@c man .RE

@noindent
The two constants,
@c noman
@ifnotinfo
@math{k_{\rm C}} and @math{k_{\rm A}},
@end ifnotinfo
@ifinfo
k_C and k_A,
@end ifinfo
are related by the square of the speed of light:
@ifinfo
k_A = k_C / c^2.
@end ifinfo
@ifnotinfo
@displaymath
k_{\rm A} = k_{\rm C} / c^{2}.
@end displaymath
@end ifnotinfo
@c end noman
@c
@c man .if n \fIk\fP_C and \fIk\fP_A,
@c man .if t $k sub roman C$ and $k sub roman A$,
@c man are related by the square of the speed of light:
@c man .if n \fIk\fP_A\ =\ \fIk\fP_C\ /\ \fIc\fP^2.
@c man .if t $k sub roman A = k sub roman C / c sup 2$.

In the SI, the constants have dimensions, and an additional base unit,
the ampere, measures electric current.  The CGS systems do not define
new base units, but express charge and current as derived units in
terms of mass, length, and time.  In the ESU system, the constant for
Coulomb's law is chosen to be unity and dimensionless, which defines
the unit of charge.  In the EMU system, the constant for Ampere's law
is chosen to be unity and dimensionless, which defines a unit of
current.  The Gaussian system usually uses the ESU units for charge
and current; it chooses another constant so that the units for the
electric and magnetic fields are the same.  The Heaviside--Lorentz
system is ``rationalized'' so that factors of
@c noman
@math{4\pi}
@c end noman
@c
@c man .if n 4{pi}
@c man .if t 4\(*p
do not appear in
Maxwell's equations.  The SI system is similarly rationalized, but the
other CGS systems are not.  In the Heaviside--Lorentz (HLU) system the
factor of
@c noman
@math{4\pi}
@c end noman
@c
@c man .if n 4{pi}
@c man .if t 4\(*p
appears in Coulomb's law instead; this system differs
from the Gaussian system by factors of
@c noman
@math{\sqrt{4\pi}}.
@c end noman
@c
@c man .if n the square root of 4{pi}
@c man .if t \(sr\o'\[sqrtex]4'\o'\[sqrtex]\(*p'\^.

The dimensions of electrical quantities in the various CGS systems are
different from the SI dimensions for the same units;
strictly, conversions between these systems and SI are not possible.
But units in different systems relate to the same physical quantities,
so there is a @emph{correspondence} between these units.
The @command{units} program defines the units so that you can convert
between corresponding units in the various systems.

@node Specifying CGS Units
@subsection Specifying CGS Units
@cindex CGS units, specifying

The CGS definitions involve
@c noman
@ifinfo
cm^(1/2) and g^(1/2)
@end ifinfo
@ifnotinfo
@math {{\rm cm}^{1/2}} and @math{{\rm g}^{1/2}},
@end ifnotinfo
@c end noman
@c
@c man .if n cm^(1/2) and g^(1/2),
@c man .if t cm$"" sup {1/2}$ and g$"" sup {1/2}$,
@c man
@c
which is problematic because @command{units} does not normally support
fractional roots of base units.  The @option{--units} (@option{-u})
option allows selection of a CGS unit system and works around this
restriction by introducing base units for the square roots of length
and mass: @samp{sqrt_cm} and @samp{sqrt_g}.  The centimeter then
becomes @samp{sqrt_cm^2} and the gram, @samp{sqrt_g^2}.  This allows
working from equations using the units in the CGS system, and
enforcing dimensional conformity within that system.  Recognized CGS
arguments to the @option{--units} option are @samp{gauss[ian]},
@samp{esu}, @samp{emu}, @samp{lhu}; the argument is case insensitive.
You can also give @samp{si} which just enforces the default SI mode
and displays @samp{(SI)} at the @w{@samp{You have:}} prompt to
emphasize the units mode.  Some other types of units are also
supported as described below.  Giving an unrecognized system generates
a warning, and @command{units} uses SI units.

The changes resulting from the @option{--units} option are actually
controlled by the @env{UNITS_SYSTEM} environment variable.  If you
frequently work with one of the supported CGS units systems, you may set
this environment variable rather than giving the @option{--units} option
at each invocation.  As usual, an option given on the command line
overrides the setting of the environment variable. For example, if you would
normally work with Gaussian units but might occasionally work with
SI, you could set @env{UNITS_SYSTEM} to @samp{gaussian} and specify
SI with the @option{--units} option.
Unlike the argument to the @option{--units} option, the value of
@env{UNITS_SYSTEM} @emph{is} case sensitive, so setting a value of
@samp{EMU} will have no effect other than to give an error message and
set SI units.

The CGS definitions appear as conditional settings in the standard
units data file, which you can consult for more information on how
these units are defined, or on how to define an alternate units system.

@node CGS Units Systems
@subsection CGS Units Systems
@cindex CGS Units Systems
@cindex units systems, CGS

The ESU system derives the electromagnetic units from its unit of
charge, the statcoulomb,
which is defined from
Coulomb's law.  The statcoulomb equals
@c noman
@ifinfo
@w{dyne^(1/2) cm} or @w{cm^(3/2) g^(1/2) s^(-1)}.
@end ifinfo
@c
@ifnotinfo
@math{{\rm dyne}^{1/2}\,{\rm cm}} or @math{{\rm cm}^{3/2}\,{\rm g}^{1/2}\,{\rm s}^{-1}}.
@end ifnotinfo
@c end noman
@c
@c man .if n dyne^(1/2)\ cm, or cm^(3/2)\ g^(1/2)\ s^(\(mi1).
@c man .if t $roman dyne sup {1/2} ^ roman cm$,
@c man .if t or $roman cm sup {3/2} ^ roman g sup {1/2} ^ roman s sup {-1}$.
The unit of current, the statampere, is @w{statcoulomb sec}, analogous to
the relationship in SI.  Other electrical units are then derived in a
manner similar to that for SI units; the units use the SI names prefixed
by @samp{stat-}, e.g., @samp{statvolt} or @samp{statV}.  The prefix
@samp{st-} is also recognized (e.g., @samp{stV}).

The EMU system derives the electromagnetic units from its unit of current,
the abampere, which is defined in terms of Ampere's law.  The abampere
is equal to
@c noman
@ifinfo
dyne^(1/2) or @w{cm^(1/2) g^(1/2) s^(-1)}.
@end ifinfo
@ifnotinfo
@math{{\rm dyne}^{1/2}} or
@math{{\rm cm}^{1/2}{\rm g}^{1/2}{\rm s}^{-1}}.
@end ifnotinfo
@c
@c end noman
@c
@c man .if n dyne^(1/2), or cm^(1/2)\ g^(1/2)\ s^(\(mi1).
@c man .if t $roman dyne sup {1/2}$,
@c man .if t or $roman cm sup {1/2} ^ roman g sup {1/2} ^ roman s sup{-1}$.
@c man .EQ
@c man delim off
@c man .EN
The unit of charge, the abcoulomb, is
@w{abampere sec}, again analogous to the SI relationship.
Other electrical units are then derived in a
manner similar to that for SI units; the units use the SI names prefixed
by @samp{ab-}, e.g., @samp{abvolt} or @samp{abV}.  The magnetic field
units include the gauss, the oersted and the maxwell.

The Gaussian units system, which was also known as the Symmetric
System,
uses the same charge and current units as the ESU system (e.g.,
@samp{statC}, @samp{statA}); it differs by defining the magnetic field
so that it has the same units as the electric field.  The resulting
magnetic field units are the same ones used in the EMU system: the
gauss, the oersted and the maxwell.

The Heaviside--Lorentz system appears to lack named units.  We define
five basic units, @samp{hlu_charge}, @samp{hlu_current}, @samp{hlu_volt}, @samp{hlu_efield} and
@samp{hlu_bfield} for conversions with this system.  It is important to
remember that with all of the CGS systems, the units may look the same
but mean something different.  The HLU system and Gaussian systems
both measure magnetic field using the same CGS dimensions, but the
amount of magnetic field with the same units is different in the two
systems.

@node Conversions Between Systems
@subsection Conversions Between Different Systems

The CGS systems define units that measure the same thing but may have
conflicting dimensions.  Furthermore, the dimensions of the
electromagnetic CGS units are never compatible with SI.
But if you measure charge in two different systems you have measured the
same physical thing, so there is a @emph{correspondence} between the
units in the different systems, and @command{units} supports conversions
between corresponding units.  When running with SI, @command{units}
defines all of the CGS units in terms of SI.  When you select a CGS
system, @command{units} defines the SI units and the other CGS system
units in terms of the system you have selected.

@example
@group
(Gaussian) You have: statA
           You want: abA
        * 3.335641e-11
        / 2.9979246e+10
(Gaussian) You have: abA
           You want: sqrt(dyne)
conformability error
        2.9979246e+10 sqrt_cm^3 sqrt_g / s^2
        1 sqrt_cm sqrt_g / s
@end group
@end example

@noindent
In the above example, @command{units} converts between the current
units statA and abA even though the abA, from the EMU system, has
incompatible dimensions.  This works because in Gaussian mode, the abA
is defined in terms of the statA, so it does not have the correct
definition for EMU; consequently, you cannot convert the abA to its EMU
definition.

One challenge of conversion is that because
the CGS system has fewer base units, quantities that have different
dimensions in SI may have the same dimension in a CGS system.  And
yet, they may not have the same conversion factor.  For example, the
unit for the @math{E} field and @math{B} fields are the same in the
Gaussian system, but the conversion factors to SI are quite
different.  This means that correct conversion is only possible if you
keep track of what quantity is being measured.  You cannot convert
statV/cm to SI without indicating which type of field the unit
measures.  To aid in dimensional analysis, @command{units} defines
various dimension units such as @samp{LENGTH}, @samp{TIME}, and @samp{CHARGE} to be the
appropriate dimension in SI.  The
electromagnetic dimensions such as @samp{B_FIELD} or @samp{E_FIELD} may be useful
aids both for conversion and dimensional analysis in CGS.  You
can convert them to or from CGS in order to perform SI conversions
that in some cases will not work directly due to dimensional incompatibilities.
This example shows how the Gaussian system uses the same units for all
of the fields, but they all have different conversion factors with
SI.

@example
@group
(Gaussian) You have: statV/cm
           You want: E_FIELD
        * 29979.246
        / 3.335641e-05
@end group
@group
(Gaussian) You have: statV/cm
           You want: B_FIELD
        * 0.0001
        / 10000
@end group
@group
(Gaussian) You have: statV/cm
           You want: H_FIELD
        * 79.577472
        / 0.012566371
@end group
@group
(Gaussian) You have: statV/cm
           You want: D_FIELD
        * 2.6544187e-07
        / 3767303.1
@end group
@end example

@noindent
The next example shows that the oersted cannot be converted directly
to the SI unit of magnetic field, A/m, because the dimensions
conflict.  We cannot redefine the ampere to make this work because
then it would not convert with the statampere.  But you can still do
this conversion as shown below.

@example
@group
(Gaussian) You have: oersted
           You want: A/m
conformability error
        1 sqrt_g / s sqrt_cm
        29979246 sqrt_cm sqrt_g / s^2
(Gaussian) You have: oersted
           You want: H_FIELD
        * 79.577472
        / 0.012566371
@end group
@end example


@node Natural Units
@c ---------------------------------------------------------------------
@section Natural Units
@c ---------------------------------------------------------------------
@cindex Natural units, using

Like the CGS units, ``natural'' units are an alternative to the SI
system used primarily physicists in different fields, with different
systems tailored to different fields of study.  These
systems are ``natural'' because the base measurements are defined
using physical constants instead of arbitrary values such as the meter
or second.  In different branches of physics, different physical constants
are more fundamental, which has given rise to a variety of incompatible natural
unit systems.

The supported systems are the ``natural'' units (which seem to have no
better name) used in high energy physics and cosmology, the Planck
units, often used by scientists working with gravity, and the Hartree
atomic units are favored by those working in physical chemistry and
condensed matter physics.

You can select the various natural units using the @option{--units}
option in the same way that you select the CGS units.  The ``natural''
units come in two types, a rationalized system derived from the
Heaviside--Lorentz units and an unrationalized system derived from the
Gaussian system.  You can select these using @samp{natural} and
@samp{natural-gauss} respectively.  For conversions in SI mode,
several unit names starting with @samp{natural} are available.
This ``natural'' system is defined by setting
@c noman
@math{\hbar},
@c end noman
@c
@c man .if n {hbar},
@c man .if t \[hbar],
@math{c} and the Boltzman
constant to 1.  Only a single base unit remains: the electron volt.

The Planck units exist in a variety of forms, and @command{units}
supports two.  Both supported forms are rationalized, in that factors
of
@c noman
@math{4\pi}
@c end noman
@c
@c man .if n 4{pi}
@c man .if t 4\(*p
do not appear in Maxwell's equations.  However, Planck units
can also differ based on how the gravitational constant is treated.
This system is similar to the natural units in that @math{c},
@c noman
@math{\hbar},
@c end noman
@c
@c man .if n {hbar},
@c man .if t \[hbar],
and
Boltzman's constant are set to 1, but in this system, Newton's
gravitational constant,
@c noman
@math{G},
@c end noman
@c
@c man \fIG\fP
is also fixed.  In the ``reduced'' Planck
system,
@c noman
@math{8 \pi G=1}
@c end noman
@c
@c man .EQ
@c man delim $$
@c man .EN
@c man .if n 8{pi}\fIG\fP\ =\ 1
@c man .if t $8 pi G = 1$
whereas in the unreduced system
@c noman
@math{G = 1}.
@c end noman
@c
@c man .if n \fIG\fP\ =\ 1.
@c man .if t $G = 1$.
The reduced system eliminates factors of
@c noman
@math{8 \pi}
@c end noman
@c
@c man .if n 8{pi}
@c man .if t 8\(*p
@c man .EQ
@c man delim off
@c man .EN
from the Einstein field equations for gravitation, so this is similar to
the process of forming rationalized units to simplify Maxwell's equations.
To obtain the unreduced system use the name @samp{planck} and for the
reduced Planck units, @samp{planck-red}.  Units such as
@samp{planckenergy} and @samp{planckenergy_red} enable you to convert
the unreduced and reduced Planck energy unit in SI mode between the
various systems.  In Planck units, all measurements are
dimensionless.

The final natural unit system is the Hartree atomic units.  Like the
Planck units, all measurements in the Hartree units are dimensionless,
but this system is defined by defined from completely different
physical constants: the electron mass, Planck's constant, the electron
charge, and the Coulomb constant are the defining physical
quantities, which are all set to unity.  To invoke this system with
the @option{--units} option use the name @samp{hartree}.


@node Prompt Prefix
@c ---------------------------------------------------------------------
@section Prompt Prefix
@c ---------------------------------------------------------------------
@cindex prompt prefix with CGS units
@cindex CGS units, prompt prefix

If a unit system is specified with the @option{--units} option, the
selected system's name is prepended to the @w{@samp{You have:}} prompt
as a reminder, e.g.,

@example
@group
(Gaussian) You have: stC
           You want:
        Definition: statcoulomb = sqrt(dyne) cm = 1 sqrt_cm^3 sqrt_g / s
@end group
@end example

@noindent
You can suppressed the prefix by including a line

@example
!prompt
@end example

@noindent
with no argument in a site or personal units data file.  The prompt can
be conditionally suppressed by including such a line within
@samp{!var} ... @samp{!endvar} constructs, e.g.,

@example
@group
!var UNITS_SYSTEM gaussian gauss
!prompt
!endvar
@end group
@end example

@noindent
This might be appropriate if you normally use Gaussian units and find
the prefix distracting but want to be reminded when you have selected a
different CGS system.

@node Logging Calculations
@c =====================================================================
@chapter Logging Calculations
@c =====================================================================
@cindex logging calculations
@cindex log file

The @option{--log} option allows you to save the results of calculations
in a file; this can be useful if you need a permanent record of your
work.  For example, the fluid-flow conversion in
@ref{Complicated Unit Expressions}, is lengthy, and if you were to use
it in designing a piping system, you might want a record of it for the
project file.  If the interactive session

@example
@group
# Conversion factor A1 for pressure drop
# dP = A1 rho f L Q^2/d^5
You have: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5) # Input units
You want: psi
        * 43.533969
        / 0.022970568
@end group
@end example

@noindent
were logged, the log file would contain

@example
@group
### Log started Fri Oct 02 15:55:35 2015

# Conversion factor A1 for pressure drop
# dP = A1 rho f L Q^2/d^5
From: (8/pi^2) (lbm/ft^3)ft(ft^3/s)^2(1/in^5)   # Input units
To:   psi
        * 43.533969
        / 0.022970568
@end group
@end example

@noindent
The time is written to the log file when the file is opened.

The use of comments can help clarify the meaning of calculations for
the log.
The log includes conformability errors between the units at the
@w{@samp{You have:}} and @w{@samp{You want:}} prompts, but not other
errors, including lack of conformability of items in sums or differences
or among items in a unit list.  For example, a conversion between zenith
angle and elevation angle could involve

@example
@group
You have: 90 deg - (5 deg + 22 min + 9 sec)
                                   ^
Invalid sum or difference of non-conformable units
You have: 90 deg - (5 deg + 22 arcmin + 9 arcsec)
You want: dms
        84 deg + 37 arcmin + 51 arcsec
You have: _
You want: deg
        * 84.630833
        / 0.011816024
You have:
@end group
@end example

@noindent
The log file would contain

@example
@group
From: 90 deg - (5 deg + 22 arcmin + 9 arcsec)
To:   deg;arcmin;arcsec
        84 deg + 37 arcmin + 51 arcsec
From: _
To:   deg
        * 84.630833
        / 0.011816024
@end group
@end example

@noindent
The initial entry error (forgetting that minutes have dimension of time,
and that arcminutes must be used for dimensions of angle) does not
appear in the output.  When converting to a unit list alias,
@command{units} expands the alias in the log file.

The @samp{From:} and @samp{To:} tags are written to the log file even if
the @option{--quiet} option is given.  If the log file exists when
@command{units} is invoked, the new results are appended to the log file.
The time is written to the log file each time the file is opened.
The @option{--log} option is ignored when @command{units} is used
non-interactively.

@node Invoking Units
@c =====================================================================
@chapter Invoking @command{units}
@c =====================================================================
@cindex invoking units
@cindex command-line options

You invoke @command{units} like this:

@example
units [@var{options}] [@var{from-unit} [@var{to-unit}]]
@end example

@noindent
If the @var{from-unit} and @var{to-unit} are omitted, the program
will use interactive prompts to determine which conversions to perform.
@xref{Interactive Use}.
If both @var{from-unit} and @var{to-unit} are given, @command{units} will
print the result of that single conversion and then exit.
If only @var{from-unit} appears on the command line, @command{units} will
display the definition of that unit and exit.
Units specified on the command line may need
to be quoted to protect them from shell interpretation and to group
them into two arguments.  Note also that the @option{--quiet} option
is enabled by default if you specify @var{from-unit} on the command line.
@xref{Command Line Use}.

The default behavior of @command{units} can be changed by various
options given on the command line.  In most cases, the options may be
given in either short form (a single @samp{-} followed by a single
character)
or long form (@option{--} followed by a word or hyphen-separated words).
Short-form options are cryptic but require
less typing; long-form options require more typing but are more
explanatory and may be more mnemonic.  With long-form options you need
only enter sufficient characters to uniquely identify the option to
the program.  For example, @option{--out@tie{}%f} works, but
@option{--o@tie{}%f} fails because @command{units} has other long options
beginning with @samp{o}.  However, @option{--q} works because
@option{--quiet} is the only long option beginning with @samp{q}.

Some options require
arguments to specify a value (e.g., @option{-d@tie{}12} or
@option{--digits@tie{}12}).  Short-form options that do not take
arguments may be concatenated (e.g., @option{-erS} is equivalent to
@option{-e@tie{}-r@tie{}-S}); the last option in such a list may be one
that takes an argument (e.g., @option{-ed@tie{}12}).  With short-form
options, the space between an option and its argument is optional (e.g.,
@option{-d12} is equivalent to @option{-d@tie{}12}).  Long-form options may
not be concatenated, and the space between a long-form option and its
argument is required.  Short-form and long-form options may be
intermixed on the command line.  Options may be given in any order, but
when incompatible options (e.g., @option{--output-format} and
@option{--exponential}) are given in combination, behavior is controlled
by the last option given.  For example, @option{-o%.12f@tie{}-e} gives
exponential format with the default eight significant digits).

The following options are available:

@table @env
@item -c
@itemx --check
@opindex -c @r{(option for} @command{units}@r{)}
@opindex --check @r{(option for} @command{units}@r{)}
Check that all units and prefixes defined in units data files reduce to
primitive units.  Display a list of all units that cannot be reduced and
a list of units with circular definitions.  Also display some other
diagnostics about suspicious definitions in the units data file.  Only
definitions active in the current locale are checked.  You should always
run @command{units} with this option after modifying a units data file.

Some errors may hide other errors, so you should run @command{units}
with this option again after correcting any errors, and keep doing so
until there are no errors.

@item --check-verbose
@itemx --verbose-check
@opindex --check-verbose @r{(option for} @command{units}@r{)}
@opindex --verbose-check @r{(option for} @command{units}@r{)}
Like the @option{--check} option, this option displays a list of units that
cannot be reduced.  But it also lists the units as they are checked.
Because the @option{--check} option now catches circular unit
definitions that previously caused @command{units} to hang, this option
is no longer necessary.  It is retained only for compatibility with
previous versions.

@item -d @var{ndigits}
@itemx --digits @var{ndigits}
@opindex -d @r{(option for} @command{units}@r{)}
@opindex --digits @r{(option for} @command{units}@r{)}
Set the number of significant digits in the output to the value
specified (which must be greater than zero).  For example,
@option{-d@tie{}12} sets the number of significant digits to 12.
With exponential output @command{units} displays one digit to the left
of the decimal
@c man point
@c noman
point@footnote{This document refers to ``decimal point,'' but strictly,
the @dfn{radix} separates the integer and fractional parts of a
floating-point number; in English-speaking countries, the radix is a
point (@samp{.}), but in most other countries it is a comma (@samp{,}).}
@c end noman
and eleven digits to the right of the decimal point.
On most systems, the maximum number of internally meaningful digits is
15; if you specify a greater number than your system's maximum, @command{units}
will print a warning and set the number to the largest meaningful
value.  To directly set the maximum value, give an argument
of @code{max} (e.g., @option{-d@tie{}max}).  Be aware, of course, that
``significant'' here refers only to the @emph{display} of numbers; if
results depend on physical constants not known to this precision, the
physically meaningful precision may be less than that shown.  The
@option{--digits} option conflicts with the @option{--output-format}
option.

@item -e
@itemx --exponential
@opindex -e @r{(option for} @command{units}@r{)}
@opindex --exponential @r{(option for} @command{units}@r{)}
Set the numeric output format to exponential (i.e., scientific
notation), like that used in the Unix @command{units} program.
The default precision is eight significant digits (seven digits to the
right of the decimal point); this can be changed with the
@option{--digits} option.  The @option{--exponential}
option conflicts with the @option{--output-format} option.

@item -o @var{format}
@itemx --output-format @var{format}
@opindex -o @r{(option for} @command{units}@r{)}
@opindex --output-format @r{(option for} @command{units}@r{)}
This option affords complete control over the numeric output format
using the specified @var{format}. The format is a single floating
point numeric format for the @code{printf} function in the
C programming language.  All compilers support the format types @samp{g}
and @samp{G} to specify significant digits, @samp{e} and @samp{E} for
scientific notation, and @samp{f} for fixed-point decimal.
The ISO C99 standard introduced the @samp{F} type for fixed-point
decimal and the @samp{a} and @samp{A} types for hexadecimal
floating point; these types are allowed with compilers that support
them.  The default format is @samp{%.8g}; for greater precision, you
could specify @option{-o@tie{}%.15g}. @xref{Numeric Output Format}, and
the documentation for @code{printf} for more detailed descriptions of the
format specification.  The @option{--output-format} option affords the
greatest control of the output appearance, but requires at least
rudimentary knowledge of the @code{printf} format syntax.  If you
don't want to bother with the @code{printf} syntax, you can specify
greater precision more simply with the @option{--digits} option or
select exponential format with @option{--exponential}.  The
@option{--output-format} option is incompatible with the
@option{--exponential} and @option{--digits} options.

@item -f @var{filename}
@itemx --file @var{filename}
@opindex -f @r{(option for} @command{units}@r{)}
@opindex --file @r{(option for} @command{units}@r{)}
Instruct @command{units} to load the units file @var{filename}.  You
can specify up to 25 units files on the command line.  When you use
this option, @command{units} will load @emph{only} the files you list
on the command line; it will not load the standard file or your
personal units file unless you explicitly list them.  If @var{filename}
is the empty string (@w{@option{-f ""}}), the default main units file (or
that specified by @env{UNITSFILE}) will be loaded in addition to any
others specified with @option{-f}.

@item -L @var{logfile}
@itemx --log @var{logfile}
@opindex -L @r{(option for} @command{units}@r{)}
@opindex --log @r{(option for} @command{units}@r{)}
Save the results of calculations in the file @var{logfile}; this can be
useful if it is important to have a record of unit conversions or other
calculations that are to be used extensively or in a critical activity
such as a program or design project.  If @var{logfile} exits, the new
results are appended to the file.
This option is ignored when @command{units} is used non-interactively.
@xref{Logging Calculations}, for a more detailed description and some
examples.

@item -H @var{filename}
@itemx --history @var{filename}
@opindex -H @r{(option for} @command{units}@r{)}
@opindex --history @r{(option for} @command{units}@r{)}
Instruct @command{units} to save history to @var{filename}, so that a
record of your commands is available for retrieval across different
@command{units} invocations.  To prevent the history from being saved
set @var{filename} to the empty string (@w{@option{-H ""}}).  This
option has no effect if readline is not available.

@item -h
@itemx --help
@opindex -h @r{(option for} @command{units}@r{)}
@opindex --help @r{(option for} @command{units}@r{)}
Print out a summary of the options for @command{units}.

@item -m
@itemx --minus
@opindex -m @r{(option for} @command{units}@r{)}
@opindex --minus @r{(option for} @command{units}@r{)}
Causes @samp{-} to be interpreted as a subtraction operator.  This is
the default behavior.

@item -p
@itemx --product
@opindex -p @r{(option for} @command{units}@r{)}
@opindex --product @r{(option for} @command{units}@r{)}
Causes @samp{-} to be interpreted as a multiplication operator when it
has two operands.  It will act as a negation operator when it has only one
operand: @samp{(-3)}.  By default @samp{-} is treated as a
subtraction operator.

@item --oldstar
@opindex --oldstar @r{(option for} @command{units}@r{)}
Causes @samp{*} to have the old-style precedence, higher than the
precedence of division so that @samp{1/2*3} will equal @samp{1/6}.

@item --newstar
@opindex --newstar @r{(option for} @command{units}@r{)}
Forces @samp{*} to have the new (default) precedence that follows
the usual rules of algebra: the precedence of @samp{*} is the same as
the precedence of @samp{/}, so that @samp{1/2*3} will equal @samp{3/2}.

@item -r
@itemx --round
When converting to a combination of units given by a unit list, round
the value of the last unit in the list to the nearest integer.

@item -S
@itemx --show-factor
When converting to a combination of units specified in a list,
always show a non-unity factor before a unit that
begins with a fraction with a unity denominator.  By default, if the
unit in a list begins with fraction of the form 1|@var{x} and
its multiplier is an integer other than 1, the fraction is given as the
product of the multiplier and the numerator (e.g., @samp{3|8@tie{}in}
rather than @samp{3 * 1|8@tie{}in}).  In some cases, this is not what is
wanted; for example, the results for a cooking recipe might show
@samp{3 * 1|2@tie{}cup} as @samp{3|2@tie{}cup}.
With the @option{--show-factor} option, a
result equivalent to 1.5 cups will display as @samp{3 * 1|2@tie{}cup}
rather than @samp{3|2@tie{}cup}.  A user-specified fractional unit with
a numerator other than 1 is never overridden, however---if a unit list
specifies @samp{3|4 cup;1|2 cup}, a result equivalent to 1@tie{}1/2 cups
will always be shown as @samp{2 * 3|4@tie{}cup} whether or not the
@option{--show-factor} option is given.

@item --conformable
@opindex --conformable @r{(option for} @command{units}@r{)}
In non-interactive mode, show all units conformable with the original
unit expression.  Only one unit expression is allowed; if you give more
than one, @command{units} will exit with an error message and return
failure.

@item -v
@itemx --verbose
@opindex -v @r{(option for} @command{units}@r{)}
@opindex --verbose @r{(option for} @command{units}@r{)}
Give slightly more verbose output when converting units.  When combined
with the @option{-c} option this gives the same effect as
@option{--check-verbose}.  When combined with @option{--version}
produces a more detailed output, equivalent to the @option{--info}
option.

@item -V
@itemx --version
@opindex -V @r{(option for} @command{units}@r{)}
@opindex --version @r{(option for} @command{units}@r{)}
Print the program version number, tell whether the @command{readline}
library has been included, tell whether UTF-8 support has been included;
give the locale, the location of the default main units data file, and
the location of the personal units data file; indicate if the personal
units data file does not exist.

When given in combination with the @option{--terse} option, the program
prints only the version number and exits.

When given in combination with the @option{--verbose} option, the
program, the @option{--version} option has the same effect as the
@option{--info} option below.

@item -I
@itemx --info
@opindex -I @r{(option for} @command{units}@r{)}
@opindex --info @r{(option for} @command{units}@r{)}
Print the information given with the @option{--version} option, show the
pathname of the units program, show the status of the @env{UNITSFILE}
and @env{MYUNITSFILE} environment variables, and additional information
about how @command{units} locates the related files.  On systems running
Microsoft Windows, the status of the @env{UNITSLOCALE} environment
variable and information about the related locale map are also given.
This option is usually of interest only to developers and
administrators, but it can sometimes be useful for troubleshooting.

Combining the @option{--version} and @option{--verbose} options has the
same effect as giving @option{--info}.

@item -U
@itemx --unitsfile
@opindex -U @r{(option for} @command{units}@r{)}
@opindex --unitsfile @r{(option for} @command{units}@r{)}
Print the location of the default main units data file and exit; if the
file cannot be found, print ``Units data file not found''.

@item -u @var{units-system}
@itemx --units @var{units-system}
@opindex -u @r{(option for} @command{units}@r{)}
@opindex --units @r{(option for} @command{units}@r{)}
Specify a CGS units system or natural units system.  The supported units
systems are: gauss[ian], esu, emu, hlu, natural, natural-gauss,
hartree, planck, planck-red, and si. @xref{Alternative Unit Systems},
for further information about these unit systems.

@item -l @var{locale}
@itemx --locale @var{locale}
@opindex --locale @r{(option for} @command{units}@r{)}
@opindex -l @r{(option for} @command{units}@r{)}
Force a specified locale such as @samp{en_GB} to get British definitions
by default.
This overrides the locale determined from system settings or environment
variables. @xref{Locale}, for a description of locale format.

@item -n
@itemx --nolists
Disable conversion to unit lists.

@item -s
@itemx --strict
@opindex -s @r{(option for} @command{units}@r{)}
@opindex --strict @r{(option for} @command{units}@r{)}
Suppress conversion of units to their reciprocal units.  For
example, @command{units} will normally convert hertz to seconds
because these units are reciprocals of each other.  The strict option
requires that units be strictly conformable to perform a conversion, and
will give an error if you attempt to convert hertz to seconds.

@item -1
@itemx --one-line
@opindex -1 @r{(option for} @command{units}@r{)}
@opindex --one-line @r{(option for} @command{units}@r{)}
Give only one line of output (the forward conversion); do not print
the reverse conversion.  If a reciprocal conversion is
performed, then @command{units} will still print the ``reciprocal
conversion'' line.

@item -t
@itemx --terse
@opindex -t @r{(option for} @command{units}@r{)}
@opindex --terse @r{(option for} @command{units}@r{)}
Print only a single conversion factor without any clutter, or if you
request a definition, prints just the definition (including its units).
This option can be used when calling @command{units} from another
program so that the output is easy to parse.
The command @code{units --terse mile m} produces the output @samp{1690.344}.
This option has the combined
effect of these options:  @option{--strict} @option{--quiet} @option{--one-line}
@option{--compact}.  When combined with @option{--version} it produces
a display showing only the program name and version number.





@item --compact
@opindex --compact @r{(option for} @command{units}@r{)}
Give compact output featuring only the conversion factor; the
multiplication and division signs are not shown, and there is no leading
whitespace.  If you convert to a unit list, then the output is a
semicolon separated list of factors.
This turns off the @option{--verbose} option.

@item -q
@itemx --quiet
@itemx --silent
@opindex -q @r{(option for} @command{units}@r{)}
@opindex --quiet @r{(option for} @command{units}@r{)}
@opindex --silent @r{(option for} @command{units}@r{)}
Suppress the display of statistics about the number of units loaded,
any messages printed by the units database,
and the prompting of the user for units.  This option does not
affect how @command{units} displays the results.  This option is
turned on by default if you invoke @command{units} with a unit
expression on the command line.

@end table

@node Scripting with Units
@c =====================================================================
@chapter Scripting with @command{units}
@c =====================================================================
@cindex scripting with @command{units}

Despite its numerous options, @command{units} cannot cover every
conceivable unit-conversion task.
For example, suppose we have found some mysterious scale, but cannot
figure out the units in which it is reporting.  We reach into our
pocket, place a 3.75-gram coin on the scale, and observe the scale
reading @samp{0.120}.  How do we quickly determine the units?  Or we
might wonder if a unit has any ``synonyms,'' i.e., other units with the
same value.

The capabilities of @command{units} are easily extended with simple
scripting.  Both questions above involve conformable units; on a system
with Unix-like utilities, conversions to conformable units could be
shown accomplished with the following script:

@set codequoteundirected
@set codequotebacktick
@example
@group
#!/bin/sh

progname=`basename $0 .sh`
umsg="Usage: $progname [] unit"

if [ $# -lt 1 ]
then
    echo "$progname: missing quantity to convert"
    echo "$umsg"
    exit 1
fi

for unit in `units --conformable "$*" | cut -f 1 -d ' '`
do
    echo "$*"   # have -- quantity to convert
    echo $unit  # want -- conformable unit
done | units --terse --verbose
@end group
@end example
@clear codequotebacktick
@clear codequoteundirected

@noindent
When @command{units} is invoked with no non-option arguments, it reads
@var{have}/@var{want} pairs, on alternating lines, from its standard
input, so the task can be accomplished with only two invocations of
@command{units}.  This avoids the computational overhead of needlessly
reprocessing the units database for each conformable unit, as well as
the inherent system overhead of process invocation.

By itself, the script is not very useful.  But it could be used in
combination with other commands to address specific tasks.  For example,
running the script through a simple output filter could help solve the
scale problem above.  If the script is named @command{conformable},
running

@example
$ conformable 3.75g | grep 0.120
@end example

@noindent
gives
@example
@group
        3.75g = 0.1205653 apounce
        3.75g = 0.1205653 fineounce
        3.75g = 0.1205653 ozt
        3.75g = 0.1205653 tradewukiyeh
        3.75g = 0.1205653 troyounce
@end group
@end example

@noindent
So we might conclude that the scale is calibrated in troy ounces.

We might run
@example
@group
$ units --verbose are
        Definition: 100 m^2 = 100 m^2
@end group
@end example

@noindent
and wonder if @samp{are} has any synonyms, value.  To find out, we could
run

@example
@group
$ conformable are | grep "= 1 "
        are = 1 a
        are = 1 are
@end group
@end example

@node Output Styles
@c =====================================================================
@chapter Output Styles
@c =====================================================================
The output can be tweaked in various ways using command line options.
With no options, the output looks like this

@example
@group
$ units
Currency exchange rates from FloatRates (USD base) on 2023-07-08
3612 units, 109 prefixes, 122 nonlinear units

You have: 23ft
You want: m
        * 7.0104
        / 0.14264521
You have: m
You want: ft;in
        3 ft + 3.3700787 in
@end group
@end example

@noindent
This is arguably a bit cryptic; the @option{--verbose}
option makes clear what the output means:

@example
@group
$ units --verbose
Currency exchange rates from FloatRates (USD base) on 2023-07-08
3612 units, 109 prefixes, 122 nonlinear units

You have: 23 ft
You want: m
        23 ft = 7.0104 m
        23 ft = (1 / 0.14264521) m
You have: meter
You want: ft;in
        meter = 3 ft + 3.3700787 in
@end group
@end example

@noindent
The @option{--quiet} option suppresses the clutter displayed when
@command{units} starts, as well as the prompts to the user.
This option is enabled by default when you
give units on the command line.

@example
@group
$ units --quiet
23 ft
m
        * 7.0104
        / 0.14264521

$ units 23ft m
        * 7.0104
        / 0.14264521
@end group
@end example

@noindent
The remaining style options allow you to display only numerical values
without the tab or the multiplication and division signs, or to display just a
single line showing the forward conversion:

@set codequoteundirected
@example
@group
$ units --compact 23ft m
7.0104
0.14264521

$ units --compact m 'ft;in'
3;3.3700787

$ units --one-line 23ft m
        * 7.0104

$ units --one-line 23ft 1/m
        reciprocal conversion
        * 0.14264521

$ units --one-line 23ft kg
conformability error
        7.0104 m
        1 kg
@end group
@end example

@noindent
Note that when converting to a unit list, the @option{--compact}
option displays a semicolon separated list of results.  Also be aware
that the
@option{one-line} option doesn't live up to its name if you
execute a reciprocal conversion or if you get a conformability error.
The former case can be prevented using the @option{--strict} option,
which suppresses reciprocal conversions.
Similarly you can suppress unit list conversion using
@option{--nolists}.
It is impossible to prevent
the three line error output.

@example
@group
$ units --compact --nolists m 'ft;in'
Error in 'ft;in': Parse error

$ units --one-line --strict 23ft 1/m
@end group
@end example

@noindent
The various style options can be combined appropriately.  The ultimate
combination is the @option{--terse} option, which combines
@option{--strict}, @option{--quiet}, @option{--one-line},
and @option{--compact} to produce the minimal output,
just a single number for regular conversions and a semicolon
separated list for conversion to unit lists.  This will likely be the
best choice for programs that want to call @command{units} and then
process its result.

@example
@group
$ units --terse 23ft m
7.0104

$ units --terse m 'ft;in'
3;3.3700787

$ units --terse 23ft 1/m
conformability error
7.0104 m
1 / m

$ units --terse '1 mile'
1609.344 m

$ units --terse mile
5280 ft = 1609.344 m
@end group
@end example
@clear codequoteundirected


@node Defining Your Own Units
@c =====================================================================
@chapter Adding Your Own Definitions
@c =====================================================================

@menu
* Units Data Files::           Where are units defined?
* Defining New Units::         Writing your own unit and prefix definitions
* Defining Nonlinear Units::   Writing your own nonlinear unit definitions
* Piecewise Linear Units::     Writing your own piecewise linear definitions
* Defining Unit List Aliases:: Writing your own unit list aliases
@end menu

@node Units Data Files
@c ---------------------------------------------------------------------
@section Units Data Files
@c ---------------------------------------------------------------------
@cindex additional units data files
@cindex data files, additional
@cindex units data files, additional
@cindex @samp{!include}
@cindex command, @samp{!include}
@cindex including additional units data files

The units and prefixes that @command{units} can convert are defined in
the units data file, typically @file{/usr/share/units/definitions.units}.
If you can't find this file, run @w{@code{units --version}} to get
information on the file locations for your installation.
Although you can extend or modify this data file if you have appropriate
user privileges, it's usually better to put extensions in separate files
so that the definitions will be preserved if you update @command{units}.

You can include additional data files in the units database using
the @samp{!include} command in the standard units data file. For
example

@example
!include    /usr/local/share/units/local.units
@end example

@noindent
might be appropriate for a site-wide supplemental data file.
The location of the @samp{!include} statement in the standard units
data file is important; later definitions replace earlier ones,
so any definitions in an included file will override definitions before
the @samp{!include} statement in the standard units data file.
With normal invocation, no warning is given about redefinitions; to
ensure that you don't have an unintended redefinition, run
@w{@code{units -c}} after making changes to any units data file.

@cindex personal units data file
@cindex units data file, personal

If you want to add your own units in addition to or in place of
standard or site-wide supplemental units data files, you can include
them in the @file{.units} file in your home directory.  If this
file exists it is read after the standard units data file, so that any
definitions in this file will replace definitions of the same units in
the standard data file or in files included from the standard data
file.  This file will not be read if any units files are specified on
the command line.  (Under Windows the personal units file is
named @file{unitdef.units}.)  Running @w{@code{units -V}} will
display the location and name of your personal units file.

The @command{units} program first tries to determine your home
directory from the @env{HOME} environment variable.  On systems running
Microsoft Windows, if @env{HOME} does not exist, @command{units}
attempts to find your home directory from @env{HOMEDRIVE},
@env{HOMEPATH} and @env{USERPROFILE}.
@cindex MYUNITSFILE environment variable
@cindex environment variable, MYUNITSFILE
You can specify an arbitrary file as your personal units data file with
the @env{MYUNITSFILE} environment variable; if this variable exists, its
value is used without searching your home directory.
The default units data files are described in more detail in
@ref{Data Files}.

@node Defining New Units
@c ---------------------------------------------------------------------
@section Defining New Units and Prefixes
@c ---------------------------------------------------------------------
@cindex defining units
@cindex units, definition of
@cindex units definitions, adding
@cindex units definitions, changing
@cindex prefixes, definition of
@cindex defining prefixes
@cindex primitive units
@cindex units, primitive
@cindex @samp{!} to indicate primitive units
@cindex command, @samp{!} to indicate primitive units

A unit is specified on a single line by giving its name and an
equivalence.  Comments start with a @samp{#} character, which can appear
anywhere in a line.  The backslash character (@samp{\})
acts as a continuation
character if it appears as the last character on a line, making it
possible to spread definitions out over several lines if desired.
A file can be included by giving the command @samp{!include} followed by
the file's name.  The @samp{!} must be the first character on the
line.  The file will be sought in the same directory as the
parent file unless you give a full path.  The name of the file to be
included cannot contain spaces or the comment character @samp{#}.
@cindex include files

Unit names cannot begin or
end with an underscore (@samp{_}), a comma (@samp{,}) or a decimal point
(@samp{.}).
Names must not contain any of the operator characters @samp{+},
@samp{-}, @samp{*}, @samp{/}, @samp{|}, @samp{^}, @samp{;}, @samp{~},
the comment character @samp{#}, or parentheses.
To facilitate copying and pasting from documents, several typographical
characters are converted to operators:
the figure
dash (U+2012), minus (@samp{@minus{}}; U+2212), and en
dash (`--'; U+2013) are converted to the operator @samp{-};
the multiplication sign (@samp{@U{00D7}}; U+00D7),
N-ary times operator (U+2A09),
dot operator (@samp{@U{22C5}}; U+22C5),
and middle dot (@samp{@U{00B7}}; U+00B7)
are converted to the operator @samp{*};
the division sign (@samp{@U{00F7}}; U+00F7)
is converted to the operator @samp{/};
and the fraction slash (U+2044) is converted to the operator @samp{|};
accordingly, none of these characters can appear in unit names.

Names cannot begin with a digit, and if a name ends in a digit other
than zero or one, the digit must be preceded by a string beginning with
an underscore, and afterwards consisting only of digits, decimal points,
or commas.  For example, @samp{foo_2}, @samp{foo_2,1}, or
@samp{foo_3.14} are valid names but @samp{foo2} or @samp{foo_a2} are
invalid.  The underscore is necessary because without it,
@command{units} cannot determine whether @samp{foo2} is a unit name or
represents @samp{foo^2}.  Zero and one are exceptions because
@command{units} never interprets them as exponents.

You could define nitrous oxide as

@example
N2O     nitrogen 2  + oxygen
@end example

@noindent
but would need to define nitrogen dioxide as

@example
NO_2    nitrogen + oxygen 2
@end example

@noindent
Be careful to define new units in terms of old ones so that a
reduction leads to the primitive units, which are marked with @samp{!}
characters.  Dimensionless units are indicated by using the string
@samp{!dimensionless} for the unit definition.
@cindex dimensionless units, defining

When adding new units, be sure to use the @option{-c} option to check
that the new units reduce properly and that there are no circular
definitions that lead to endless loops.  Because some errors may hide
other errors, you should run @command{units} with the @option{-c} option
again after correcting any errors, and keep doing so until no errors are
displayed.

@cindex parentheses

If you define any units that contain
@samp{+} characters in their definitions,
carefully check them because the @option{-c} option
will not catch non-conformable sums.  Be careful with the @samp{-}
operator as well.  When used as a binary operator, the @samp{-}
character can perform addition or multiplication
depending on the options used to invoke @command{units}.
To ensure consistent behavior use @samp{-} only as a unary negation
operator when writing units definitions.  To multiply two units leave a
space or use the @samp{*} operator with care, recalling that it has
two possible precedence values and may require parentheses to ensure
consistent behavior.  To compute the difference
of @samp{foo} and @samp{bar} write @samp{foo+(-bar)} or even @samp{foo+-bar}.

You may wish to intentionally redefine a unit.  When you do this, and
use the @option{-c} option, @command{units} displays a warning message
about the redefinition.  You can suppress these warnings by redefining
a unit using a @samp{+} at the beginning of the unit name.  Do not
include any white space between the @samp{+} and the redefined unit
name.

Here is an example of a short data file that defines some basic
units:

@example
@group
m       !               # The meter is a primitive unit
sec     !               # The second is a primitive unit
rad     !dimensionless  # A dimensionless primitive unit
micro-  1e-6            # Define a prefix
minute  60 sec          # A minute is 60 seconds
hour    60 min          # An hour is 60 minutes
inch    72 m            # Inch defined incorrectly terms of meters
ft      12 inches       # The foot defined in terms of inches
mile    5280 ft         # And the mile
+inch   0.0254 m        # Correct redefinition, warning suppressed
@end group
@end example

@cindex parentheses
@noindent
A unit that ends with a @samp{-} character is a prefix.  If a prefix
definition contains any @samp{/} characters, be sure they are protected
by parentheses.  If you define @samp{half- 1/2}, then @samp{halfmeter}
would be equivalent to @samp{1 / (2@tie{}meter)}.

@node Defining Nonlinear Units
@c ---------------------------------------------------------------------
@section Defining Nonlinear Units
@c ---------------------------------------------------------------------
@cindex defining nonlinear units
@cindex nonlinear units, defining
@cindex nonlinear unit conversions
Some unit conversions of interest are nonlinear; for
example, temperature conversions between the Fahrenheit and Celsius
scales cannot be done by simply multiplying by conversion factors.

When you give a linear unit definition such as @samp{inch 2.54@tie{}cm}
you are providing information that @command{units} uses to convert
values in inches into primitive units of meters.  For nonlinear units,
you give a functional definition that provides the same information.

Nonlinear units are represented using a functional notation.
It is best to regard this notation not as a function call but
as a way of adding units to a number, much the same way that
writing a linear unit name after a number adds units to that number.
Internally, nonlinear units are defined by a pair of functions
that convert to and from linear units in the database, so that
an eventual conversion to primitive units is possible.

Here is an example nonlinear unit definition:

@example
@group
tempF(x) units=[1;K] domain=[-459.67,) range=[0,) \
            (x+(-32)) degF + stdtemp ; (tempF+(-stdtemp))/degF + 32
@end group
@end example

@noindent
A nonlinear unit definition comprises a unit name, a formal parameter
name, two functions, and optional specifications for units, the domain,
and the range (the domain of the inverse function).  The functions tell
@command{units} how to convert to and from the new unit.  To produce
valid results, the arguments of these functions need to have the correct
dimensions and be within the domains for which the functions are
defined.

@cindex parentheses

The definition begins with the unit name followed immediately (with no
spaces) by a @samp{(} character.  In the parentheses is the name of the
formal parameter.  Next is an optional specification of the units
required by the functions in the definition.  In the example above,
the @samp{units=[1;K]} specification indicates that the
@samp{tempF} function requires an input argument conformable with
@samp{1} (i.e., the argument is dimensionless), and that the inverse
function requires an input argument conformable with @samp{K}.  For
normal nonlinear units definition, the forward function will always take
a dimensionless argument; in general, the inverse function will need
units that match the quantity measured by your nonlinear unit.
Specifying the units enables @command{units} to perform error checking
on function arguments, and also to assign units to domain and range
specifications, which are described later.

Next the function definitions appear.  In the example above, the
@samp{tempF} function is defined by

@example
@group
tempF(x) = (x+(-32)) degF + stdtemp
@end group
@end example

@noindent
This gives a rule for converting @samp{x} in the units @samp{tempF}
to linear units of absolute temperature, which makes it possible to
convert from tempF to other units.

To enable conversions to Fahrenheit, you must give a rule for the
inverse conversions.  The inverse will be @samp{x(tempF)} and its
definition appears after a @samp{;} character.  In our example, the
inverse is

@example
@group
x(tempF) = (tempF+(-stdtemp))/degF + 32
@end group
@end example

@noindent
This inverse definition takes an absolute temperature as its argument
and converts it to the Fahrenheit temperature.  The inverse can be
omitted by leaving out the @samp{;} character and the inverse
definition, but then conversions @emph{to} the unit will not be
possible.  If the inverse definition is omitted, the @option{--check}
option will display a warning.  It is up to you to calculate and enter
the correct inverse function to obtain proper conversions; the
@option{--check} option tests the inverse at one point and prints an
error if it is not valid there, but this is not a guarantee that your
inverse is correct.

With some definitions, the units may vary.  For example, the definition

@example
@group
square(x)       x^2
@end group
@end example

@noindent
can have any arbitrary units, and can also take dimensionless arguments.
In such a case, you should @emph{not} specify units.
If a definition takes a root of its arguments, the definition is valid
only for units that yield such a root.  For example,

@example
@group
squirt(x)       sqrt(x)
@end group
@end example

@noindent
is valid for a dimensionless argument, and for arguments with even
powers of units.

@cindex domain, nonlinear unit definitions
@cindex range, nonlinear unit definitions

Some definitions may not be valid for all real numbers.  In such cases,
@command{units} can handle errors better if you specify an appropriate
domain and range.  You specify the domain and range as shown below:

@example
@group
baume(d) units=[1;g/cm^3] domain=[0,130.5] range=[1,10] \
         (145/(145-d)) g/cm^3 ; (baume+-g/cm^3) 145 / baume
@end group
@end example

@noindent
In this example the domain is specified after @samp{domain=} with
the endpoints given in brackets.  In accord with mathematical
convention, square brackets indicate a closed interval (one that
includes its endpoints), and parentheses indicate an open interval (one
that does not include its endpoints).  An interval can be open or closed
on one or both ends; an interval that is unbounded on either end is
indicated by omitting the limit on that end.  For example, a quantity to
which decibel (dB) is applied may have any value greater than zero, so
the range is indicated by @samp{(0,)}:

@example
@group
decibel(x) units=[1;1] range=(0,) 10^(x/10); 10 log(decibel)
@end group
@end example

@noindent
If the domain or range is given, the second endpoint must be greater
than the first.

The domain and range specifications can appear independently and in any
order along with the units specification.
The values for the domain and range endpoints are attached to the units
given in the units specification, and if necessary, the parameter value
is adjusted for comparison with the endpoints.  For example, if a
definition includes @samp{units=[1;ft]} and @samp{range=[3,)}, the range
will be taken as @w{3 ft} to infinity.  If the function is passed a
parameter of @w{@samp{900 mm}}, that value will be adjusted to
@w{2.9527559 ft}, which is outside the specified range.
If you omit the units specification from the previous example,
@command{units} can not tell whether you intend the lower endpoint
to be @w{3 ft} or @w{3 microfurlongs}, and can not adjust the
parameter value of @w{900 mm} for comparison.  Without units,
numerical values other than zero or plus or minus infinity for domain or
range endpoints are meaningless, and accordingly they are not allowed.  If
you give other values without units, then the definition will be ignored
and you will get an error message.

Although the units, domain, and range specifications are optional, it's
best to give them when they are applicable; doing so allows
@command{units} to perform better error checking and give more helpful
error messages.  Giving the domain and range also enables the
@option{--check} option to find a point in the domain to use for its
point check of your inverse definition.

You can make synonyms for nonlinear units by providing both the
forward and inverse functions; inverse functions can be obtained using
the @samp{~} operator.  So to create a synonym for @samp{tempF} you
could write

@example
@group
fahrenheit(x) units=[1;K] tempF(x); ~tempF(fahrenheit)
@end group
@end example

@noindent
This is useful for creating a nonlinear unit
definition that differs slightly from an existing definition without
having to repeat the original functions.  For example,

@example
dBW(x)     units=[1;W] range=[0,) dB(x) W ;  ~dB(dBW/W)
@end example

@noindent
If you wish a synonym to refer to an existing nonlinear unit without
modification, you can do so more simply by adding the synonym with
appended parentheses as a new unit, with the existing nonlinear
unit---without parentheses---as the definition.  So to create a synonym
for @samp{tempF} you could write

@example
fahrenheit()  tempF
@end example

@noindent
The definition must be a nonlinear unit; for example, the synonym

@example
fahrenheit()  meter
@end example

@noindent
will result in an error message when @command{units} starts.

@cindex units functions
@cindex functions of units
You may occasionally wish to define a function that operates on units.
This can be done using a nonlinear unit definition.  For example, the
definition below provides conversion between radius and the area of a
circle.  This definition requires a length as input and
produces an area as output, as indicated by the @samp{units=} specification.
Specifying the range as the nonnegative numbers can prevent cryptic
error messages.

@example
@group
circlearea(r) units=[m;m^2] range=[0,)   pi r^2 ; sqrt(circlearea/pi)
@end group
@end example

@node Piecewise Linear Units
@c ---------------------------------------------------------------------
@section Defining Piecewise Linear Units
@c ---------------------------------------------------------------------
@cindex defining piecewise linear units
@cindex linear interpolation
@cindex units, piecewise linear
@cindex piecewise linear units
Sometimes you may be interested in a piecewise linear unit such as
many wire gauges.  Piecewise linear units can be defined by specifying
conversions to linear units on a list of points.
Conversion at other points will be done by linear interpolation.
A partial definition of zinc gauge is

@example
@group
zincgauge[in] 1 0.002, 10 0.02, 15 0.04, 19 0.06, 23 0.1
@end group
@end example

@noindent
In this example, @samp{zincgauge} is the name of the piecewise linear
unit.  The definition of such a unit is indicated by the
embedded @samp{[} character.  After the bracket, you should indicate the
units to be attached to the numbers in the table.
No spaces can appear before the
@samp{]} character, so a definition like @samp{foo[kg meters]} is
invalid; instead write @samp{foo[kg*meters]}.  The definition of the
unit consists of a list of pairs optionally separated by commas.
This list defines a function for converting from the piecewise linear
unit to linear units.  The
first item in each pair is the function argument; the second item is the
value of the function at that argument (in the units specified in brackets).
In this example,
we define @samp{zincgauge} at five points.  For example, we set
@samp{zincgauge(1)} equal to @w{@samp{0.002 in}}.  Definitions like this
may be  more readable  if written using  continuation characters as

@example
@group
zincgauge[in] \
     1 0.002  \
    10 0.02   \
    15 0.04   \
    19 0.06   \
    23 0.1
@end group
@end example

@noindent
With the preceding definition, the following conversion can be
performed:

@example
@group
You have: zincgauge(10)
You want: in
    * 0.02
    / 50
You have: .01 inch
You want: zincgauge
    5
@end group
@end example

@noindent
If you define a piecewise linear unit that is not strictly monotonic,
then the inverse will not be well defined.  If the inverse is requested
for such a unit, @command{units} will return the smallest inverse.

After adding nonlinear units definitions, you should normally run
@w{@samp{units --check}} to check for errors.  If the @samp{units}
keyword is not given, the @option{--check} option checks a nonlinear unit
definition using a dimensionless argument, and then checks using an
arbitrary combination of units, as well as the square and cube of that
combination; a warning is given if any of these tests fail.  For
example,

@set codequoteundirected
@example
@group
Warning: function 'squirt(x)' defined as 'sqrt(x)'
         failed for some test inputs:
         squirt(7(kg K)^1): Unit not a root
         squirt(7(kg K)^3): Unit not a root
@end group
@end example
@clear codequoteundirected

@noindent
Running @w{@samp{units --check}} will print a warning if a
non-monotonic piecewise linear unit is encountered.  For example, the
relationship between ANSI coated abrasive designation and mean particle
size is non-monotonic in the vicinity of 800 grit:

@example
@group
ansicoated[micron] \
     . . .
    600 10.55 \
    800 11.5 \
    1000 9.5 \
@end group
@end example

@noindent
Running @w{@samp{units --check}} would give the error message

@set codequoteundirected
@example
@group
Table 'ansicoated' lacks unique inverse around entry 800
@end group
@end example
@clear codequoteundirected

@noindent
Although the inverse is not well defined in this region, it's not really
an error.  Viewing such error messages can be tedious, and if there are
enough of them, they can distract from true errors.  Error checking for
nonlinear unit definitions can be suppressed by giving the
@samp{noerror} keyword; for the examples above, this could be done as

@example
@group
squirt(x) noerror domain=[0,) range=[0,) sqrt(x); squirt^2
ansicoated[micron] noerror \
     . . .
@end group
@end example

@noindent
Use the @samp{noerror} keyword with caution.  The safest approach after
adding a nonlinear unit definition is to run @w{@samp{units --check}}
and confirm that there are no actual errors before adding the
@samp{noerror} keyword.

@node Defining Unit List Aliases
@c ---------------------------------------------------------------------
@section Defining Unit List Aliases
@c ---------------------------------------------------------------------
@cindex defining unit list aliases
@cindex unit list aliases, defining
@cindex @samp{!unitlist}
@cindex command, @samp{!unitlist}

Unit list aliases are treated differently from unit definitions,
because they are a data entry shorthand rather than a true definition
for a new unit.
A unit list alias definition begins with @samp{!unitlist} and includes the
alias and the definition;  for example, the aliases included in the
standard units data file are

@example
@group
!unitlist   hms     hr;min;sec
!unitlist   time    year;day;hr;min;sec
!unitlist   dms     deg;arcmin;arcsec
!unitlist   ftin    ft;in;1|8 in
!unitlist   usvol   cup;3|4 cup;2|3 cup;1|2 cup;1|3 cup;1|4 cup;\
                    tbsp;tsp;1|2 tsp;1|4 tsp;1|8 tsp
@end group
@end example

@noindent
Unit list aliases are only for unit lists, so the definition must
include a @samp{;}.  Unit list aliases can never be combined with
units or other unit list aliases, so the definition of @samp{time}
shown above could @emph{not} have been shortened to
@samp{year;day;hms}.

As usual, be sure to run @w{@samp{units --check}} to ensure that the
units listed in unit list aliases are conformable.

@node Numeric Output Format
@c =====================================================================
@chapter Numeric Output Format
@c =====================================================================
@cindex numeric output format
@cindex output format

@menu
* Format Specification::           The output format specification
* Flags::                          Optional format flags
* Field Width::                    Specifying output field width
* Precision::                      Specifying output precision
@end menu

By default, @code{units} shows results to eight significant
digits. You can change this with the @option{--exponential},
@option{--digits}, and @option{--output-format} options.  The first
sets an exponential format (i.e., scientific notation) like that used
in the original Unix @command{units} program, the second allows you to
specify a different number of significant digits, and the last allows
you to control the output appearance using the format for the
@code{printf} function in the C programming language.  If you only
want to change the number of significant digits or specify exponential
format type, use the @option{--digits} and @option{--exponential}
options.  The @option{--output-format} option affords the greatest
control of the output appearance, but requires at least rudimentary
knowledge of the @code{printf} format syntax. @xref{Invoking Units},
for descriptions of these options.

@node Format Specification
@c ---------------------------------------------------------------------
@section Format Specification
@c ---------------------------------------------------------------------
@cindex output format specification
@cindex format specification, output

The format specification recognized with the @option{--output-format}
option is a subset of that for @code{printf}.  The format specification has
the form
@c noman
@code{%}[@i{flags}][@i{width}][@code{.}@i{precision}]@i{type};
@c end noman
@c ifman
@ignore
.\".CW "%\fR[\fP\fIflags\fP\fR][\fP\fIwidth\fP\fR][\fP.\fIprecision\fP\fR]\fP\fItype\fP" ;
@code{%}[@i{flags}][@i{width}][\c
@code{.}@i{precision}]@i{type};
@end ignore
@c end ifman
it must begin with @samp{%}, and must end with a floating-point type
specifier:
@samp{g} or @samp{G} to specify the number of significant digits,
@samp{e} or @samp{E} for scientific notation, and @samp{f} for
fixed-point decimal.  The ISO C99 standard added the @samp{F} type for
fixed-point decimal and the @samp{a} and @samp{A} types for hexadecimal
floating point; these types are allowed with compilers that support
them.  Type length modifiers (e.g., @samp{L} to indicate a long double)
are inapplicable and are not allowed.

The default format for @command{units} is @samp{%.8g};
for greater precision, you could specify @option{-o@tie{}%.15g}.
The @samp{g} and @samp{G} format types use exponential format whenever
the exponent would be less than @math{-4}, so the value 0.000013
displays as @samp{1.3e-005}.  These types also use exponential notation
when the exponent is greater than or equal to the precision, so with the
default format, the value
@c
@c noman
@ifnotinfo
@math{5\times 10^7}
@end ifnotinfo
@ifinfo
5e7
@end ifinfo
@c end noman
@c man .if t .ig ++
@c man 5 \(mu 10^7
@c man .++
@c man .if n .ig ++
@c man .EQ
@c man 5 times 10 sup 7
@c man .EN
@c man .++
displays as @samp{50000000} and the value
@c
@c noman
@ifnotinfo
@math{5\times 10^8}
@end ifnotinfo
@ifinfo
5e8
@end ifinfo
@c end noman
@c man .if t .ig ++
@c man 5 \(mu 10^8
@c man .++
@c man .if n .ig ++
@c man .EQ
@c man 5 times 10 sup 8
@c man .EN
@c man .++
@c
displays as @samp{5e+008}.  If you prefer fixed-point display, you might
specify @option{-o@tie{}%.8f}; however, small numbers will display very
few significant digits, and values less than
@c
@c noman
@ifnotinfo
@math{5\times 10^{-8}}
@end ifnotinfo
@ifinfo
5e8
@end ifinfo
@c end noman
@c man .if t .ig ++
@c man 5 \(mu 10^\-8
@c man .++
@c man .if n .ig ++
@c man .EQ
@c man 5 times 10 sup -8
@c man .EN
@c man .++
@c
will show nothing but zeros.

The format specification may include one or more optional flags:
@samp{+}, @samp{@tie{}} (space), @samp{#}, @samp{-}, or @samp{0} (the
digit zero).  The digit-grouping flag
@c noman
@set codequoteundirected
@samp{'} (apostrophe)
@clear codequoteundirected
@c end noman
@c if the troff formatter is groff, ensure an ASCII single quote
@c man .ie \n(.g \(oq\(aq'
@c man .el \&'
is allowed with compilers that support it.  Flags are followed by an
optional value for the minimum field width, and an optional precision
specification that begins with a period (e.g., @samp{.6}).  The field
width includes the digits, decimal point, the exponent, thousands
separators (with the digit-grouping flag), and the sign if any of these
are shown.

@node Flags
@c ---------------------------------------------------------------------
@section Flags
@c ---------------------------------------------------------------------
@cindex output format flags
@cindex flags, output format

The @samp{+} flag causes the output to have a sign (@samp{+} or @samp{-}).
The space flag @samp{@tie{}} is similar to the @samp{+} flag, except
that when the value is positive, it is prefixed with a space rather than
a plus sign; this flag is ignored if the @samp{+} flag is also given.
The @samp{+} or @samp{@tie{}} flag could be useful if conversions might
include positive and negative results, and you wanted to align
the decimal points in exponential notation.
@c
The @samp{#} flag causes the output value to contain a decimal point in
all cases; by default, the output contains a decimal point only if there
are digits (which can be trailing zeros) to the right of the point.
With the @samp{g} or @samp{G} types, the @samp{#} flag also prevents the
suppression of trailing zeros.
@c
The digit-grouping flag
@c noman
@set codequoteundirected
@samp{'}
@clear codequoteundirected
@c end noman
@c if the troff formatter is groff, ensure an ASCII single quote
@c man .ie \n(.g \(oq\(aq'
@c man .el \&`''
shows a thousands separator in digits to the left of the decimal point.
@c (e.g., @samp{1,234.56}).
This can be useful when displaying large numbers in fixed-point decimal;
for example, with the format @samp{%f},

@example
You have: mile
You want: microfurlong
        * 8000000.000000
        / 0.000000
@end example

@noindent
the magnitude of the first result may not be immediately obvious without
counting the digits to the left of the decimal point.  If the thousands
separator is the comma (@samp{,}), the output with the format
@c noman
@set codequoteundirected
@samp{%'f}
@clear codequoteundirected
@c end noman
@c if the troff formatter is groff, ensure an ASCII single quote
@c man .ie \n(.g \(oq%\(aqf'
@c man .el `%'f'
might be

@example
You have: mile
You want: microfurlong
        * 8,000,000.000000
        / 0.000000
@end example

@noindent
making the magnitude readily apparent.  Unfortunately, few compilers
support the digit-grouping flag.

@c
With the @samp{-} flag, the output value is left aligned within the
specified field width.  If a field width greater than needed to show the
output value is specified, the @samp{0} (zero) flag causes the output
value to be left padded with zeros until the specified field width is
reached; for example, with the format @samp{%011.6f},

@example
You have: troypound
You want: grain
        * 5760.000000
        / 0000.000174
@end example

@noindent
The @samp{0} flag has no effect if the @samp{-} (left align) flag is
given.

@node Field Width
@c ---------------------------------------------------------------------
@section Field Width
@c ---------------------------------------------------------------------
@cindex output field width

By default, the output value is left aligned and shown with the minimum
width necessary for the specified (or default) precision.  If a field
width greater than this is specified, the value shown is right aligned,
and padded on the left with enough spaces to provide the specified field
width.  A width specification is typically used with fixed-point decimal
to have columns of numbers align at the decimal point; this arguably is
less useful with @command{units} than with long columnar output, but it
may nonetheless assist in quickly assessing the relative magnitudes of
results.  For example, with the format @samp{%12.6f},

@example
@group
You have: km
You want: in
        * 39370.078740
        /     0.000025
@end group
@group
You have: km
You want: rod
        *   198.838782
        /     0.005029
@end group
@group
You have: km
You want: furlong
        *     4.970970
        /     0.201168
@end group
@end example

@node Precision
@c ---------------------------------------------------------------------
@section Precision
@c ---------------------------------------------------------------------
@cindex output precision
@cindex precision, output

The meaning of ``precision'' depends on the format type.  With @samp{g}
or @samp{G}, it specifies the number of significant digits (like the
@option{--digits} option); with @samp{e}, @samp{E}, @samp{f}, or
@samp{F}, it specifies the maximum number of digits to be shown after
the decimal point.

@c
With the @samp{g} and @samp{G} format types, trailing zeros are
suppressed, so the results may sometimes have fewer digits than the
specified precision (as indicated above, the @samp{#} flag causes
trailing zeros to be displayed).

The default precision is 6, so @samp{%g} is equivalent to @samp{%.6g},
and would show the output to six significant digits.  Similarly,
@samp{%e} or @samp{%f} would show the output with six digits after the
decimal point.

The C @code{printf} function allows a precision of arbitrary size, whether or
not all of the digits are meaningful.  With most compilers, the maximum
internal precision with @command{units} is 15 decimal digits (or 13
hexadecimal digits).
With the @option{--digits} option, you are limited
to the maximum internal precision; with the @option{--output-format}
option, you may specify a precision greater than this, but it may not be
meaningful.  In some cases, specifying excess precision can result in
rounding artifacts.  For example, a pound is exactly 7000 grains, but
with the format @samp{%.18g}, the output might be

@example
You have: pound
You want: grain
        * 6999.9999999999991
        / 0.00014285714285714287
@end example

@noindent
With the format @samp{%.25g} you might get the following:

@example
You have: 1/3
You want:
        Definition: 0.333333333333333314829616256247
@end example

@noindent
In this case the displayed value includes a series of digits that represent the
underlying binary floating-point approximation to 1/3 but are not
meaningful for the desired computation.
In general, the result with excess precision is system dependent.
@c
The precision affects only the @emph{display} of numbers; if a result
relies on physical constants that are not known to the specified
precision, the number of physically meaningful digits may be less than
the number of digits shown.

See the documentation for @code{printf} for more detailed descriptions of the
format specification.

The @option{--output-format} option is incompatible with the
@option{--exponential} or @option{--digits} options; if the former is
given in combination with either of the latter, the format is controlled
by the last option given.

@node Localization
@c =====================================================================
@chapter Localization
@c =====================================================================
@cindex environment dependent definitions
@cindex localization
@cindex @samp{!locale}
@cindex command, @samp{!locale}
@cindex @samp{!endlocale}
@cindex command, @samp{!endlocale}
@cindex command, @samp{!endvar}
@cindex command, @samp{!var}
@cindex command, @samp{!varnot}
@cindex command, @samp{!set}
@cindex command, @samp{!message}

@menu
* Locale::                   What is a locale?
* Additional Localization::  When the locale isn't enough
@end menu

Some units have different values in different locations.  The
localization feature accommodates this by allowing a units data file to
specify definitions that depend on the user's locale.

@node Locale
@c ---------------------------------------------------------------------
@section Locale
@c ---------------------------------------------------------------------
@cindex locale
A locale is a subset of a user's environment that indicates the user's
language and country, and some attendant preferences, such as the
formatting of dates.  The @command{units} program attempts to determine
the locale from the POSIX @code{setlocale} function; if this cannot be done,
@command{units} examines the environment
variables @env{LC_CTYPE} and @env{LANG}.
On POSIX systems, a locale is of the form
@var{language}@code{_}@var{country}, where @var{language} is the
two-character code from ISO 639-1 and @var{country} is the two-character
code from ISO 3166-1; @var{language} is lower case and @var{country} is
upper case. For example, the POSIX locale for the United Kingdom is @code{en_GB}.

@cindex @file{locale_map.txt}
@cindex setlocale function
On systems running Microsoft Windows, the value returned by @code{setlocale}
is different from that on POSIX systems; @command{units} attempts to map
the Windows value to a POSIX value by means of a table in the file
@file{locale_map.txt} in the same directory as the other data files.  The
file includes entries for many combinations of language and country, and
can be extended to include other combinations.  The @file{locale_map.txt}
file comprises two tab-separated columns; each entry is of the form

@display
@var{Windows-locale}@ @ @ @var{POSIX-locale}
@end display

@noindent
where @var{POSIX-locale} is as described above, and @var{Windows-locale}
typically spells out both the language and country.  For example, the
entry for the United States is

@example
English_United States   en_US
@end example

@noindent
You can force @command{units} to run in a desired locale by using the
@option{-l} option.

In order to create unit definitions for a particular locale you begin
a block of definitions in a unit datafile with @samp{!locale} followed
by a locale name.  The @samp{!} must be the first character on the
line.  The @command{units} program reads the following
definitions only if the current locale matches.  You end the block of
localized units with @samp{!endlocale}.  Here is an example, which
defines the British gallon.

@example
@group
!locale en_GB
gallon       4.54609 liter
!endlocale
@end group
@end example

@node Additional Localization
@c ---------------------------------------------------------------------
@section Additional Localization
@c ---------------------------------------------------------------------

Sometimes the locale isn't sufficient to determine unit preferences.
There could be regional preferences, or a company could have specific
preferences.  Though probably uncommon, such differences could arise
with the choice of English customary units outside of English-speaking
countries.  To address this, @command{units} allows specifying
definitions that depend on environment variable settings.
The environment variables can be controlled based on the current locale,
or the user can set them to force a particular group of definitions.

A conditional block of definitions in a units data file begins with
either @samp{!var} or @samp{!varnot} following by an environment
variable name and then a space separated
list of values.  The leading @samp{!} must appear in the first column of a units
data file, and the conditional block is terminated by @samp{!endvar}.
Definitions in blocks beginning with @samp{!var} are executed only if the
environment variable is exactly equal to one of the listed values.
Definitions in blocks beginning with @samp{!varnot} are executed only if the
environment variable does @emph{not} equal any of the list values.

The inch has long been a customary measure of length in many places.
The word comes from the Latin @emph{uncia} meaning ``one twelfth,''
referring to its relationship with the foot.  By the 20th century, the
inch was officially defined in English-speaking countries relative to
the yard, but until 1959, the yard differed slightly among those
countries.  In France the customary inch, which was displaced in 1799
by the meter, had a different length based on a french foot.  These
customary definitions could be accommodated as follows:

@example
@group
!var INCH_UNIT usa
yard          3600|3937 m
!endvar
@end group
@group
!var INCH_UNIT canada
yard          0.9144 meter
!endvar
@end group
@group
!var INCH_UNIT uk
yard          0.91439841 meter
!endvar
@end group
@group
!var INCH_UNIT canada uk usa
foot          1|3 yard
inch          1|12 foot
!endvar
@end group
@group
!var INCH_UNIT france
foot          144|443.296 m
inch          1|12 foot
line          1|12 inch
!endvar
@end group
@group
!varnot INCH_UNIT usa uk france canada
!message Unknown value for INCH_UNIT
!endvar
@end group
@end example

@noindent
When @command{units} reads the above definitions it will check the
environment variable @env{INCH_UNIT} and load only the definitions for
the appropriate section.  If @env{INCH_UNIT} is unset or is not set to
one of the four values listed, then @command{units} will run the last
block.  In this case that block uses the
@samp{!message} command to display a warning message.  Alternatively
that block could set default values.

In order to create default values that are overridden by user settings
the data file can use the @samp{!set} command, which sets an
environment variable @emph{only if it is not already set};  these
settings are only for the current @command{units} invocation and do
not persist.  So if the example above were preceded by
@samp{!set INCH_UNIT france}, then this would make @samp{france} the
default value for @env{INCH_UNIT}.  If the user had set the variable
in the environment before invoking @command{units}, then
@command{units} would use the user's value.

To link these settings to the user's locale you combine the @samp{!set}
command with the @samp{!locale} command.
If you wanted to combine the above example with suitable locales you
could do by @emph{preceding} the above definition with the following:

@example
@group
!locale en_US
!set INCH_UNIT usa
!endlocale
!locale en_GB
!set INCH_UNIT uk
!endlocale
!locale en_CA
!set INCH_UNIT canada
!endlocale
!locale fr_FR
!set INCH_UNIT france
!endlocale
!set INCH_UNIT france
@end group
@end example

@noindent
These definitions set the overall default for @env{INCH_UNIT} to
@samp{france} and set default values for four locales appropriately.
The overall default setting comes last so that it only applies when
@env{INCH_UNIT} was not set by one of the other commands or by the
user.

If the variable given after @samp{!var} or @samp{!varnot} is undefined,
then @command{units} prints an error message and ignores the
definitions that follow.  Use @samp{!set} to create defaults to
prevent this situation from arising.  The @option{-c}
option only checks the definitions that are active for the current
environment and locale, so when adding new definitions take care to
check that all cases give rise to a well defined set of definitions.

@node Environment Vars
@c =====================================================================
@chapter Environment Variables
@c =====================================================================
@cindex environment variables

The @command{units} program uses the following environment variables:

@table @env
@item HOME
@cindex HOME environment variable
@cindex environment variable, HOME
Specifies the location of your home directory; it is used by
@command{units} to find a personal units data file @samp{.units}.  On
systems running Microsoft Windows, the file is @samp{unitdef.units}, and
if @env{HOME} does not exist, @command{units} tries to determine your
home directory from the @env{HOMEDRIVE} and @env{HOMEPATH} environment
variables; if these variables do not exist, units finally tries
@env{USERPROFILE}---typically @file{C:\Users\@var{username}} (Windows
Vista and Windows@tie{}7) or
@w{@file{C:\Documents and Settings\@var{username}}} (Windows@tie{}XP).

@item LC_CTYPE, LANG
@cindex LANG environment variable
@cindex LC_CTYPE environment variable
@cindex environment variable, LANG
@cindex environment variable, LC_CTYPE
Checked to determine the locale if @command{units} cannot obtain it
from the operating system.  Sections of the default main units data file
are specific to certain locales.

@item MYUNITSFILE
@cindex MYUNITSFILE environment variable
@cindex environment variable, MYUNITSFILE
Specifies your personal units data file.  If this variable exists,
@command{units} uses its value rather than searching your home
directory for @samp{.units}.  The personal units file will not be
loaded if any data files are given using the @option{-f} option.

@item PAGER
@cindex PAGER environment variable
@cindex environment variable, PAGER
@cindex help
Specifies the pager to use for help and for displaying the conformable
units.  The help function browses the units database and calls
the pager using the @samp{+n}@var{n} syntax for specifying a line
number.  The default pager is @command{more}; @env{PAGER} can be used
to specify alternatives such as @command{less}, @command{pg},
@command{emacs}, or @command{vi}.

@item UNITS_ENGLISH
@cindex UNITS_ENGLISH environment variable
@cindex environment variable, UNITS_ENGLISH
Set to either @samp{US} or
@samp{GB} to choose United States or British volume definitions,
overriding the default from your locale.

@item UNITSFILE
@cindex UNITSFILE environment variable
@cindex environment variable, UNITSFILE
Specifies the units data file to use (instead of the default).
You can only specify a single units data file using this environment
variable.  If units data files are given using the @option{-f} option,
the file specified by @env{UNITSFILE} will be not be loaded unless the
@option{-f} option is given with the empty string
(@w{@samp{units -f ""}}).

@item UNITSLOCALEMAP
@cindex UNITSLOCALEMAP environment variable
@cindex environment variable, UNITSLOCALEMAP
Windows only; this variable has no effect on Unix-like systems.
Specifies the units locale map file to use (instead of the default).
This variable seldom needs to be set, but you can use it to ensure that
the locale map file will be found if you specify a location for the
units data file using either the @option{-f} option or the
@env{UNITSFILE} environment variable, and that location does not also
contain the locale map file.

@item UNITS_SYSTEM
@cindex UNITS_SYSTEM environment variable
@cindex environment variable, UNITS_SYSTEM
This environment variable is used in the default main data file to select
CGS measurement systems.  Currently supported systems are @samp{esu},
@samp{emu}, @samp{gauss[ian]}, @samp{hlu}, @samp{natural},
@samp{natural-gauss}, @samp{planck}, @samp{planck-red}, @samp{hartree}
and @samp{si}.  The default is @samp{si}.

@end table

@node Data Files
@c =====================================================================
@chapter Data Files
@c =====================================================================
@cindex files, data
@cindex data files

The @command{units} program uses four default data files: the main data
file, @file{definitions.units}; the atomic masses of the elements,
@file{elements.units}; currency exchange rates, @file{currency.units},
and the US Consumer Price Index, @file{cpi.units}.  The last three files
are loaded by means of @samp{!include} directives in the main file
@c man (see \fIDatabase Command Syntax\fP).
@c noman
(@pxref{Database Syntax, ,Database Command Syntax}).
@c end noman
The program can
also use an optional personal units data file @file{.units}
(@file{unitdef.units} under Windows) located in the user's home
directory.  The personal units data file is described in more detail in
@ref{Units Data Files}.

On Unix-like systems, the data files are typically located in
@file{/usr/share/units} if @command{units} is provided with the
operating system, or in @file{/usr/local/share/units} if @command{units}
is compiled from the source distribution.  Note that the currency file
@file{currency.units} is a symbolic link to another location.

On systems running Microsoft Windows, the files may be in the same
locations if Unix-like commands are available, a Unix-like file
structure is present (e.g., @file{C:/usr/local}), and @command{units} is
compiled from the source distribution.  If Unix-like commands are not
available, a more common location is
@w{@file{C:\Program Files (x86)\GNU\units}} (for 64-bit Windows
installations) or @w{@file{C:\Program Files\GNU\units}} (for 32-bit
installations).

If @command{units} is obtained from the GNU Win32 Project
(@uref{http://gnuwin32.sourceforge.net/}), the files are commonly in
@w{@file{C:\Program Files\GnuWin32\share\units}}.

If the default main units data file is not an absolute pathname,
@command{units} will look for the file in the directory that contains
the @command{units} program; if the file is not found there,
@command{units} will look in a directory @code{../share/units} relative
to the directory with the @command{units} program.

You can determine the location of the files by running
@w{@samp{units --version}}.  Running @w{@samp{units --info}}
will give you additional information about the files, how
@command{units} will attempt to find them, and the status of the
related environment variables.


@node Unicode Support
@c =====================================================================
@chapter Unicode Support
@c =====================================================================
@cindex Unicode support
@cindex UTF-8
@cindex @samp{!utf8}
@cindex command, @samp{!utf8}
@cindex @samp{!endutf8}
@cindex command, @samp{!endutf8}

The standard units data file is in Unicode, using UTF-8 encoding.  Most
definitions use only ASCII characters (i.e., code points U+0000 through
U+007F); definitions using non-ASCII characters appear in blocks
beginning with @samp{!utf8} and ending with @samp{!endutf8}.

The non-ASCII definitions are loaded only if the platform and the locale
support @w{UTF-8}.  Platform support is determined when @command{units}
is compiled; the locale is checked at every invocation of
@command{units}.  To see if your version of @command{units} includes
Unicode support, invoke the program with the @option{--version} option.

When Unicode support is available, @command{units} checks every line
within UTF-8 blocks in all of the units data files for invalid or
non-printing UTF-8 sequences; if such sequences occur, @command{units}
ignores the entire line.  In addition to checking validity,
@command{units} determines the display width of non-ASCII characters to
ensure proper positioning of the pointer in some error messages and to
align columns for the @samp{search} and @samp{?} commands.

As of early 2019, Microsoft Windows provides limited support for UTF-8
in console applications, and accordingly, @command{units} does not
support Unicode on Windows.  The UTF-16 and UTF-32 encodings are not
supported on any platforms.

If Unicode support is available and definitions that contain non-ASCII
UTF-8 characters are added to a units data file, those definitions
should be enclosed within @samp{!utf8} @dots{} @samp{!endutf8} to ensure
that they are only loaded when Unicode support is available.  As usual,
the @samp{!} must appear as the first character on the line.  As
discussed in @ref{Units Data Files}, it's usually best to put such
definitions in supplemental data files linked by an @samp{!include}
command or in a personal units data file.

When Unicode support is not available, @command{units} makes no assumptions
about character encoding, except that characters in the range 00--7F
hexadecimal correspond to ASCII encoding.  Non-ASCII characters are
simply sequences of bytes, and have no special meanings; for definitions
in supplementary units data files, you can use any encoding consistent
with this assumption.  For example, if you wish to use non-ASCII
characters in definitions when running @command{units} under Windows,
you can use a character set such as Windows ``ANSI'' (code page 1252 in
the US and Western Europe); if this is done, the console code page must
be set to the same encoding for the characters to display properly.
You can even use UTF-8, though some messages may be improperly aligned,
and @command{units} will not detect invalid UTF-8 sequences.  If you use
UTF-8 encoding when Unicode support is not available, you should place any
definitions with non-ASCII characters @emph{outside} @samp{!utf8}
@dots{} @samp{!endutf8} blocks---otherwise, they will be ignored.

Except for code examples, typeset material usually uses the Unicode
symbols for mathematical operators.
To facilitate copying and pasting from such sources, several
typographical characters are converted to the ASCII operators
used in @command{units}:
the figure dash (U+2012),
minus (@samp{@minus{}}; U+2212),
and en dash (`--'; U+2013) are converted to the operator @samp{-};
the multiplication sign (@samp{@U{00D7}}; U+00D7),
N-ary times operator (U+2A09),
dot operator (@samp{@U{22C5}}; U+22C5),
and middle dot (@samp{@U{00B7}}; U+00B7)
are converted to the operator @samp{*};
the division sign (@samp{@U{00F7}}; U+00F7)
is converted to the operator @samp{/};
and the fraction slash (U+2044) is converted to the operator@tie{}@samp{|}.

@node Readline Support
@c =====================================================================
@chapter Readline Support
@c =====================================================================
@cindex @command{readline}, use with @command{units}

If the @command{readline} package has been compiled in, then when
@command{units} is used interactively, numerous command line editing
features are available.  To check if your version of @command{units}
includes @command{readline}, invoke the program with the
@option{--version} option.

For complete information about @command{readline}, consult the
documentation for the @command{readline} package.  Without any
configuration, @command{units} will allow editing in the style of
emacs.  Of particular use with @command{units} are the completion
commands.

@cindex @samp{?} for unit completion with @command{readline}
@cindex unit completion using @samp{?} (@command{readline} only)
@cindex completion, unit, using @samp{?} (@command{readline} only)
If you type a few characters and then hit @key{ESC} followed by
@kbd{?}, then @command{units} will display a list of all the units that
start with the characters typed.  For example, if you type @kbd{metr} and
then request completion, you will see something like this:
@cindex unit name completion

@example
@group
You have: metr
metre             metriccup         metrichorsepower  metrictenth
metretes          metricfifth       metricounce       metricton
metriccarat       metricgrain       metricquart       metricyarncount
You have: metr
@end group
@end example

@noindent
If there is a unique way to complete a unit name, you can hit the @key{TAB} key
and @command{units} will provide the rest of the unit name.  If @command{units}
beeps, it means that there is no unique completion.  Pressing the @key{TAB}
key a second time will print the list of all completions.

The readline library also keeps a history of the values you enter.
You can move through this history using the up and down arrows.  The
history is saved to the file @file{.units_history} in your home
directory so that it will persist across multiple @command{units}
invocations.  If you wish to keep work for a certain project separate
you can change the history filename using the @option{--history}
option.  You could, for example, make an alias for @command{units} to
@code{units --history .units_history} so that @command{units} would
save separate history in the current directory.
The length of each history file is limited to 5000 lines.  Note also that if
you run several concurrent copies of @command{units} each one will save
its new history to the history file upon exit.

@node Currency
@c =====================================================================
@chapter Updating Currency Exchange Rates and CPI
@c =====================================================================
@cindex currency, updating
@cindex CPI, updating
@cindex exchange rates, updating

@c ---------------------------------------------------------------------
@section Currency Exchange Rates
@c ---------------------------------------------------------------------

@c man .na
The units program database includes currency exchange rates and prices
for some precious metals.  Of course, these values change over time,
sometimes very rapidly, and @command{units} cannot provide real-time
values.  To update the exchange rates, run @command{units_cur}, which
rewrites the file containing the currency rates, typically
@file{/var/lib/@/units/@/currency.units} or
@file{/usr/local/@/com/@/units/@/currency.units}
on a Unix-like system or
@file{@w{C:\Program Files (x86)}\@/GNU\@/units\@/definitions.units} on a Windows
system.
@c man .ad b

This program requires Python 3 (@uref{https://www.python.org}).
The program must be run with suitable
permissions to write the file.  To keep the rates updated automatically,
run it using a cron job on a Unix-like system, or a similar scheduling
program on a different system.

Reliable free sources of currency exchange rates have been annoyingly
ephemeral.  The program currently supports several sources:

@itemize @bullet

@item
ExchangeRate-API.com (@uref{https://www.exchangerate-api.com}). @*
The default currency server.  Allows open access without an API key,
with unlimited API requests.  Rates update once a day, the US dollar
(@samp{USD}) is the default base currency, and you can choose your
base currency with the @option{-b} option described below.  You can
optionally sign up for an API key to access paid benefits such as
faster data update rates.

@item
FloatRates (@uref{https://www/floatrates.com}). @*
The US dollar (@samp{USD}) is the default base currency.  You can
change the base currency with the
@option{-b} option described below.  Allowable base currencies are listed on
the FloatRates website.  Exchange rates update daily.

@item
The European Central Bank (@uref{https://www.ecb.europa.eu}). @*
The base currency is always the euro (@samp{EUR}).  Exchange rates
update daily.  This source offers a more limited list of currencies
than the others.

@item
Fixer (@uref{https://fixer.io}). @*
Registration for a free API key is required.  With a free API key, base
currency is the euro; exchange rates are updated hourly, the
service has a limit of 1,000 API calls per month, and SSL encryption
(https protocol) is not available.  Most of these restrictions are
eliminated or reduced with paid plans.

@item
open exchange rates (@uref{https://openexchangerates.org}). @*
Registration for a free API key is required.  With a free API key, the
base currency is the US dollar; exchange rates are updated hourly, and
there is a limit of 1,000 API calls per month.  Most of these
restrictions are eliminated or reduced with paid plans.


@end itemize

@noindent
The default source is FloatRates; you can select a different one using
@option{-s} option described below.

Precious metals pricing is obtained from Packetizer
(@uref{www.packetizer.com}).  This site updates once per day.

@c ---------------------------------------------------------------------
@section US Consumer Price Index
@c ---------------------------------------------------------------------

The @command{units} program includes the US Consumer Price Index (CPI)
published by the US Bureau of Labor Statistics: specifically, the
Consumer Price Index for All Urban Consumers (CPI-U), Series
CUUR0000SA0. The @command{units_cur} command updates the CPI and saves the result in
@file{cpi.units} in the same location as @file{currency.units}.  The
data are obtained via the BLS Public Data API
(@uref{https://www.bls.gov/developers/}).  This data updates once a
month.  When @command{units_cur} runs it will only attempt to update
the CPI data if the current CPI data file is from a previous month, or
if the current date is after the 18th of the month.  

@c ---------------------------------------------------------------------
@section Invoking @command{units_cur}
@c ---------------------------------------------------------------------

You invoke @command{units_cur} like this:

@example
units_cur [@var{options}] [@var{currency_file}] [@var{cpi_file}]
@end example

@noindent
By default, the output is written to the default currency and CPI files
described above; this is usually what you want, because this is where
@command{units} looks for the files.  If you wish, you can specify
different filenames on the command line and @command{units_cur} will
write the data to those files.  If you give @samp{-} for a file it will
write to standard output.

@noindent
The following options are available:

@table @env
@item -h
@itemx --help
Print a summary of the options for @command{units_cur}.

@item -V
@itemx --version
Print the @command{units_cur} version number.

@item -v
@itemx --verbose
Give slightly more verbose output when attempting to update currency
exchange rates.

@item -s @var{source}
@itemx --source @var{source}
Specify the source for currency exchange rates; currently supported
values are @samp{floatrates} (for FloatRates), @samp{eubank} (for the
European Central Bank), @samp{fixer} (for Fixer), and
@samp{openexchangerates} (for open exchange rates); the last two require
an API key to be given with the @option{-k} option.

@item -b @var{base}
@itemx --base @var{base}
Set the base currency (when allowed by the site providing the data).
@var{base} should be a 3-letter ISO currency code, e.g., @samp{USD}.
The specified currency will be the primitive currency unit used by
@command{units}.  You may find it convenient to specify your local
currency.  Conversions may be more accurate and you will be able to
convert to your currency by simply hitting @key{Enter} at the
@w{@samp{You want:}} prompt.  This option is ignored if the source
does not allow specifying the base currency.  (Currently only
floatrates supports this option.)

@item -k @var{key}
@itemx --key @var{key}
Set the API key to @var{key} for currency sources that require it.

@item --blskey @var{BLSkey}
Set the US Bureau of Labor Statistics (BLS) key for fetching CPI data.
Without a BLS key you should be able to fetch the CPI data exactly one
time per day.  If you want to use a key you must request a personal
key from BLS.  

@end table

@node Database Syntax
@c =====================================================================
@chapter Database Command Syntax
@c =====================================================================
@cindex database syntax summary
@cindex syntax of units database
@cindex commands in units database

@table @t
@item @var{unit} @var{definition}
Define a regular unit.

@item @var{prefix}- @var{definition}
Define a prefix.

@item @var{funcname}(@var{var}) noerror units=[@var{in-units},@var{out-units}] domain=[@var{x1},@var{x2}] range=[@var{y1},@var{y2}] @var{definition(var)} ; @var{inverse(funcname)}
Define a nonlinear unit or unit function.  The four optional keywords @command{noerror},
@samp{units=}, @samp{range=} and @samp{domain=} can appear in
any order.  The definition of the inverse is optional.

@item @var{tabname}[@var{out-units}] noerror @var{pair-list}
Define a piecewise linear unit.  The pair list gives the points on the
table listed in ascending order.  The @command{noerror} keyword is
optional.

@item !endlocale
End a block of definitions beginning with @samp{!locale}

@item !endutf8
End a block of definitions begun with @samp{!utf8}

@item !endvar
End a block of definitions begun with @samp{!var} or @samp{!varnot}

@item !include @var{file}
Include the specified file.

@item !locale @var{value}
Load the following definitions only of the locale is set to
@var{value}.

@item !message @var{text}
Display @var{text} when the database is read unless the quiet
option (@option{-q}) is enabled.  If you omit @var{text}, then units
will display a blank line.  Messages will also appear in the log
file.

@item !prompt @var{text}
Prefix the @w{@samp{You have:}} prompt with the specified text.  If
you omit @var{text}, then any existing prefix is canceled.

@item !set @var{variable} @var{value}
Sets the environment variable, @var{variable}, to the specified
value @emph{only if} it is not already set.

@item !unitlist @var{alias} @var{definition}
Define a unit list alias.

@item !utf8
Load the following definitions only if @command{units} is running with
UTF-8 enabled.

@item !var @var{envar} @var{value-list}
Load the block of definitions that follows only if the environment
variable @var{envar} is set to one of the values listed in the
space-separated value list.  If @var{envar} is not set,
@command{units} prints an error message and ignores the block of
definitions.

@item !varnot @var{envar} @var{value-list}
Load the block of definitions that follows only if the environment
variable @var{envar} is set to value that is @emph{not} listed in the
space-separated value list.  If @var{envar} is not set, @command{units}
prints an error message and ignores the block of definitions.

@end table

@node GNU Free Documentation License
@c =====================================================================
@chapter GNU Free Documentation License
@c =====================================================================
@include fdl-1.3.texi

@node Index
@unnumbered Index

@printindex cp
@bye

@c man .SH FILES
@c man @DATAFILE@ \(em the standard units data file
@c man .SH AUTHOR

units-2.23/dehtml0000775000175000017500000000026514546120100013261 0ustar  adrianadrian#!/usr/bin/perl

{
  local $/=undef;
  open FILE, $ARGV[0] or die "Could not open file";
  $data = ;
  close FILE;
}

$data =~ s/<.*?>//sg;
$data =~ s/&.*?;//sg;
print $data;
units-2.23/UnitsWin.texinfo0000664000175000017500000002472714564532473015271 0ustar  adrianadrian\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename UnitsWin.info
@finalout
@setchapternewpage off
@firstparagraphindent none
@set EDITION 2.21
@set VERSION 2.23
@set OSVERSION 10
@set TKVERSION 10.2
@set VSVERSION 2022
@set BUILDDATE @w{18 February} 2024
@c %**end of header

@copying
This manual is for building GNU @command{units} (version @value{VERSION})
with Microsoft Visual Studio on Microsoft Windows.

Copyright @copyright{} 2016--2024 Free Software Foundation, Inc.

@end copying

@titlepage
@title @w{Building and Installing} @w{GNU @command{units}} on @w{Microsoft Windows} with @w{Microsoft Visual Studio}
@subtitle Edition @value{EDITION} for @command{units} Version @value{VERSION}
@author Jeff Conrad
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@contents

@iftex
@headings off
@everyheading Building @command{units} on Windows using Microsoft Visual Studio @| @| @thispage
@end iftex

@macro label {text}
@w{@sansserif{\text\}}
@end macro

@node Preface
@unnumbered Preface

This manual covers building and installing GNU @command{units} on
Windows, using Microsoft Visual Studio from the Windows command prompt.
You may be able to import @file{Makefile.Win} into the Visual Studio
IDE, but that is beyond the scope of this document.

If you have Unix-like utilities, you may be able to build and install in
much the same manner as on most Unix-like systems, perhaps with a few
minor adjustments.  Versions 2.12 and earlier were built using Microsoft
Visual C/C++ 6.0, Visual Studio Express 9.0 and 10.0, and the MKS
Toolkit version 9.6 under Windows XP, SP3.  Version @value{VERSION} was
built using Microsoft Visual Studio @value{VSVERSION} and the MKS
Toolkit version @value{TKVERSION} on
@w{Windows @value{OSVERSION}}---@pxref{Top,,,UnitsMKS,UnitsMKS} for the
details.

A Windows binary distribution is available on the project website; the
resulting installation is essentially the same as that using
@file{Makefile.Win}, and usually can be achieved with less effort.

The most recent build was for @command{units} version @value{VERSION},
using Microsoft Visual Studio @value{VSVERSION} on
Microsoft Windows Professional @value{OSVERSION} on @value{BUILDDATE}.

  --- Jeff Conrad (@email{jeff_conrad@@msn.com}) @value{BUILDDATE}

@node Building without Unix-Like Utilities
@unnumbered Building from the Windows Command Prompt

If you have Microsoft Visual Studio but don't have Unix-like utilities,
you should be able to build and install @command{units} from the Windows
command prompt using @file{Makefile.Win}:

@example
@group
nmake /f Makefile.Win
nmake /f Makefile.Win install
@end group
@end example

@noindent
The build requires that many environment variables be properly set;
the easiest way to do this is to select
@label{x64 Native Tools Command Prompt for VS 2@var{yyy}}
in the Visual Studio folder on the Start menu, and then change to the
@command{units} source directory.  To compile a 32-bit version, select
@label{x86 Native Tools Command Prompt for VS 2@var{yyy}}.  The exact
names of the menu choices may vary with the version of Visual Studio
that is installed.

If you install in the default location, you'll probably require elevated
privileges; the easiest way to do this is to right-click on
@label{x64 Native Tools Command Prompt for VS 2@var{yyy}}
in the Visual Studio folder on the
Start menu, and select @label{Run as administrator}.

By default, the units executable and data files are placed in the
directory given by @code{%ProgramFiles%\GNU\units}; in most cases, this is
@w{@file{C:\Program Files\GNU\units}}.

You can preview the installation directories with

@example
nmake /f Makefile.Win showdest
@end example

@noindent
If the destination directories don't exist, they will be created during
installation.  You can change these locations by editing @file{Makefile.Win}.

If you want to run units from a command prompt or from the Start Menu
Run box, you can add the installation directory to the @env{PATH}
environment variable.  Alternatively, you can create a shortcut to the
program and place it in a convenient location.

@node Icons and File Association
@unnumbered Icons and File Association

The installation process associates @command{units} data files with the
@command{notepad} editor; double-clicking on the file icon opens the
file for editing.  The installation process makes @file{unitsfile.ico}
the default icon for these files.  An additional icon file,
@file{unitsprog.ico}, is embedded in the executable file as part of the
build process; this icon also may be useful if you wish to create a
shortcut to the @command{units} program.  Both icons are copied to the
@command{units} installation directory.

@node Currency Definitions Updater
@unnumbered Currency Definitions Updater

The script @command{units_cur.py} can be used to update currency
definitions (if your system hides file extensions, this script will
display as @command{units_cur}).  The script requires Python (available from
@url{https://www.python.org/}).

@node Installing Python
@unnumberedsec Installing Python

If you want to use the currency updater, install Python if it is not
already installed.  If you need to install Python, unless you have (or
anticipate having) applications that depend on @w{Python 2}, the best
choice is probably to install @w{Python 3}.

After installing Python, you should be able to run
@command{units_cur.py} using the shortcut on the Start Menu, or if you
have added the units installation directory to your @env{PATH}, from a
command-prompt window.

When you first run @command{units_cur.py}, you may get a complaint about
a missing module; for example

@codequoteundirected on
@example
ModuleNotFoundError: No module named 'requests'
@end example
@codequoteundirected off

@noindent
If so, you will need to install the missing module.  The easiest way to
do this is with the @command{pip} command; for example

@example
pip install requests
@end example

@noindent
If you have @w{Python 2.7.9} or later or @w{Python 3.4} or later, you
should have @command{pip}, though you may need to upgrade to the latest
version.  If you do not have @command{pip}, you will need to install it
manually; see the Python documentation or the Python website for
instructions on how to do this.

@node Configuring @command{units_cur.py}
@unnumberedsec Configuring @command{units_cur.py}

If you want to run the currency-update script from the command prompt
without changing to the program installation directory, you will need to
modify @file{units_cur.py} to give the full pathname of the output file
currency.units, i.e., change

@codequoteundirected on
@example
outfile = 'currency.units'
@end example
@codequoteundirected off

@noindent
to

@codequoteundirected on
@example
outfile = '@var{installation_directory}/currency.units'
@end example
@codequoteundirected off

@noindent
For the default installation directory on a 64-bit system, this would be

@codequoteundirected on
@example
outfile = 'C:/Program Files/GNU/units/currency.units'  
@end example
@codequoteundirected off

@noindent
The safest approach is to run

@example
nmake /f Makefile.Win showdest
@end example

@noindent
to get the destination directory.  Be sure to use forward slashes in the
pathname to avoid confusing Python.  The best approach is to modify
@file{units_cur.py} before installation.

If you add @code{.py} to the @env{PATHEXT} environment variable, you can
simply type @command{units_cur} to run the updater from a command-prompt
window.  You can do this from the command prompt by typing

@example
set PATHEXT=%PATHEXT%;.py
@end example

@noindent
but you'll need to do this with every new instance.  You can make a
permanent change by adding @code{;.py} to @env{PATHEXT} from the
Advanced tab of the System dialog: click the `Environment Variables'
button, find @env{PATHEXT} in either the list of User variables or the
list of System variables; click the `Edit' button, make the change, and
click `OK'.

@node Example
@unnumberedsec Example

If you are installing units in the default location
of @file{C:/Program Files/GNU/units} on a 64-bit system, the
process would be to

@enumerate
@item
Build the executable by running

@example
nmake /f Makefile.Win
@end example

@item
Confirm the installation location by running

@example
nmake /f Makefile.Win showdest
@end example

It is assumed that the program will be installed in a subdirectory of
the standard location for executables (typically,
@w{@file{C:\Program Files}} on a 64-bit system),
and a warning is given
if this directory does not exist.  Ignore the warning if you are
intentionally installing in another location.

@item
If necessary, modify @command{units_cur.py} so that the output file is given by

@codequoteundirected on
@example
outfile = '@var{installation_directory}/currency.units'
@end example
@codequoteundirected off

@noindent
By default, this will usually be

@codequoteundirected on
@example
outfile = 'C:/Program Files/GNU/units/currency.units'
@end example
@codequoteundirected off

@item
Install the files by running

@example
nmake /f Makefile.Win install
@end example

@item
Ensure that @file{currency.units} is writable by ordinary users.  The
installation should do this automatically, but if for some reason it
does not, set permissions manually by adding `Modify' permission for the
appropriate groups (typically `Power Users' and `Users')

@end enumerate

@node Running the Currency Updater
@unnumbered Running the Currency Updater

@node Updating from a Command Prompt
@unnumberedsec Updating from a Command Prompt

If you have modified the currency-update script to give the full
pathname of the output file @file{currency.units}, you can update the
file by running @command{units_cur.py} from any instance of the Windows
command prompt.

Reliable free sources of currency exchange rates have been annoyingly
ephemeral, sometimes causing update attempts to fail.  Accordingly,
several different sources are now supported---see the units manual for
details.

@node Automatic Updates
@unnumberedsec Automatic Updates

The easiest way to keep currency values up to date is by having the
Windows Task Scheduler run @command{units_cur.py} on a regular basis.
The Task Scheduler is fussy about the format for the action, which must
be an executable file; an entry might look something like

@example
C:\Windows\py.exe "C:\Program Files\GNU\units\units_cur.py"
@end example

@noindent
if the Python launcher is in @file{C:\Windows} and the script is in
@file{C:\Program Files\GNU\units}.  The program must start in the
@command{units} installation directory; the starting directory must be
specified @emph{without} quotes.

@bye
units-2.23/README.OS20000664000175000017500000000177010232761052013347 0ustar  adrianadrian     =======================
     | units 1.81 for OS/2 |
     =======================

I have just compiled the source from the Unix version by adding a small
Makefile.OS2. To compile yourself you will need some GNU utilities (like
rm, cp), gcc-3.0.x from Netlabs, GNU make, perl and GNU groff. 
Then you should be able to do "make -f Makefile.OS2 dist" to have 
everything sitting in the dist directory.

I have substituted the 'col' command using 'sed', so there is now nice
OS/2 readable documentation in units.doc. If you have 'less' installed, 
you can view the file units.less as well which then shows colored and
highlighted text.

To run you will need the EMX.DLL which you can find on the OS/2 ftp sites
like http://hobbes.nmsu.edu or ftp://ftp.leo.org/pub/comp/os/os2. 
Unzip everything into the same directory and run makeobjs.cmd to make two
program objects on your desktop.

Please send any comments about the OS/2 version to me.

Peter Weilbacher (os2@Weilbacher.org), 25Jan2003.units-2.23/UnitsWin.pdf0000664000175000017500000040361214564532667014365 0ustar  adrianadrian%PDF-1.5
%ÐÔÅØ
1 0 obj
<<
/Length 587       
/Filter /FlateDecode
>>
stream
xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚>
stream
xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í
I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8,’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢âžÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåIÉ‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄxAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/
¡cì,•!£½¥‰î-fö3¤Ù*IÃx	{aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ
ÿZóéàü4{ÖØSOØá5˜‡áZä®ekxvKº·Ǭü÷…Ü@2aÂ>
stream
xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ	m}u%ŒÒßEY]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ	ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎüñ

ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó	â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj·	¾gÈÈ
endstream
endobj
6 0 obj
<<
/Length 354       
/Filter /FlateDecode
>>
stream
xÚ…‘ËNÃ0E÷ù
/“EŒÇ¿¶E¥¢H@(`5M±‘‡úû8qµUÊÂcçνžc Ì}@#
‘šD“íwÀÆÓfO|ñ¼
`Ò%ÈÝú§$41wfÿ(]j¬€Q†jP.ÒàæNs•B’ý„–T·ËÉ{¸èm™ÛjŨD˜U¹/î«¶ËÊrþ±z|>Óµs§nÈÊa€Ñ«¯l×N²³ÐxÒÅ\RmŒWו·~°Û¦në¢óÛ7[åu„Zp°Ý×`êRÎú/ú6¶í³Ò×/]ŸÛzh
–ið3ó†ç	Õ\9hXwÍfGŠàÉ#‚8ˆ†‡œ*­‰¤\JŸ¾ÌmgÇCN9øª¨@ÈS¥©”ê
§‹$g¤fœ›Hc¸kÚÓœñBB1qLG¼
©rCÅ	K(¨éi×»è‰ÜÖU“åW‰€{<%Ô<ù¤~¨
endstream
endobj
15 0 obj
<<
/Length 342       
/Filter /FlateDecode
>>
stream
xÚ}QËNÃ0¼ç+|t$b¼~%¾‚hh(Ê!$ik©QTˆŸÇŽ$„|Èîx²3;Dݤ)J9'Zd¨MÌ2<ßK<á[Û†âm01àCeš]–Oñk~ç$Ô\”&\KgiTÓwgÞ/+ΧÐéDÛPI?¼ºíŒm‚#Œ»ŽN¦ßüÞ”­íì¶íÚt?¶WýPp7Æé¢„QF2í²N@½ÙÎ9~6Me½ü©#ãOÔ±™bº¶ïþò³5»½/ú‘#a)G”p¦¯‹*1_4á„r÷<3Þ†‚ü+D
5eÂ(¨/g^‹8㸭ëЭ¼wo8f).ÚzƱCS½Kñ"€·M9.ÝäÑ7êÓ˜¼
endstream
endobj
29 0 obj
<<
/Length 831       
/Filter /FlateDecode
>>
stream
xÚí—]o›0†ïó+¸L.âùãݵ];mWU•iÛ41BZ¤">´õßÏÆLÄÚ:-]§\¢ƒ_sÞLJcäAùCž€'xÑnëó{O_ܽ!·”K+òr5{u؇ P oµñ
€àít«µ÷iž,¾¬ÞÏ®Wí<cGAy¤`q€£JQ®É(@„jµÕBÐyøm/–„³y¶ÑãU–.š—±
µ&=„úXM%ߎb)Ö3Ýæñ&Œb‰``‡2
È'êÈ׋%ò¹üÞÝoþù¤“÷¡Ò	Ê}ÏWŽ|‚“&zi…·¬t®NZ›‡Ž¤Œ2Wi}BZa
Àת—U²]'齦s“g;}U>p?&é:S¬~/‚w»0]ë›[ùÀ¾D“¹9„8bs,ÁfU®	î§l¿êx‚ݤÛOJË3Îä­±õ]”¥&smÖn’¦,\E&¯ÐeªÞqSݤ[S¤û
‚T~ì©ì`X˜½œe¸ÝêrIÈüö±|hö¬OìÇ(#gmàŸUøË=B’j.Œ…§¤†‹.|€‹ÃIG‘t••‘'$[„IÙGªºr_åŠÆš@æ÷:`(nKH%Pñ5ªr°â•C@ þE^_,šcÀ£\ë§€³ÝÎM¶nR²Ž
06e÷úG¸Ûoã!xd•hðžç¤0‚nc¹#ºVøº=ŽÈºŽ²
ÝCÉ£^Œú Š´Ú]•¦íé¦=Óô;´Óí˜,Ï>ÁgÖ4`Íë;6`VøDÖË)kÀ¥›ìPz¤184
½²
ʪ¶3GVyªZçSÕ¡YçÓ~ÑBœø/®EÛø&Í®¿ŸÚø¶wtpã»ÉÖR²Å…À˜‘¼¨Êl'Y‰4=q1„„Ð]عñ¯zŒs®váSÚ88%û(ì¡
endstream
endobj
81 0 obj
<<
/Length 2748      
/Filter /FlateDecode
>>
stream
xÚÍYYoÜÈ~÷¯ÐËb)¬‡f¼v_b+¶w7°!¬åM‚88ަm©ð4ÀþøTuUóµÖæ!xú(Vw×ñÕ!qÀ?q–g±R~ª“³üø,°«Íõ
~yûL0Ý7ÊWWÏ^¼	Ã3øiг«ý”ÕÕîìÞ«Þ”;S]Ÿÿóêg ¦´Zû8
ˆ²¯L×2ÙŒ¥’¾Œ¥#««óRÊû«©võ¹L¼»´×·xŒÝ{gò¦në}GÓ_MÛg%Q}èú©Ï7B©$ðž÷ìõÕðÂPÊ'Š)È"‘g"ö¥5Ë"J´/”¦«_6Å>Ë‹µ7‚\á™IåÕÁÀ«d”xǬÂGÚûã<·o¾=—±W4L³%Ÿïš²jGSµ]V–V08ûþãš"¤
|>A‡'Š@žE<‡•D8MàæD8eMë3˜K? I¡|‡[¦N=:PÞ¾©8Ò^w€·4žéÉr¤(¨-ÜÀw7¾‰BíýýÐàÊB@ùÅt´J¶l¥L¦~D;}µ³²„áR(´–ÿv‰ŸÓäÃ¥B„ŠÕTmÄÂ""«43\FãîfÚä׸ÀÌàVÁ÷ÀÖ$0–”4"7R²dÏÇÁÃçãêìù¸²”Ä­,"³’߬ñÅ2ÜB„µðu”>!ñ˜PRâ‘.G`¥òƒ>fq¤Ðâ‰g"åÃCç¶
)L¤¢ùÉ{tÓ ïŠ.3eKعQ`1©œƒçK”3&5à^Vz±•žL¤·5UÖœhgÚ®1[L ³¸“ìã/Cmyp#.™¤ÛàÄÇóMzŸ‹¼£rýmkºâÔaàˆ¥¾Õ—Ås<‹Ð4Û<‘™†J8ç¶e¨2ðí‰Y8	®e­Û¢ˆ–°i¯ ‰HAxZ>5üF‰ËØQÛ š²íÛSúñ^yÆ·c
^b…)ÈþùCÖ3‘5€)Ì––ЊOP6:4 ·µª]Þg£öŽ6Žà¨)r͇§Qm1	
&huk‚
!µ‹Ÿ’c'rHíæNÌ’Pji< M28Ð&Ólû1¢
™Kšøra..ŸŸåì6ÍQž€$—M½™Â­\v$¢vLDB¿o»ŠmÓ[ÏÁ¸„~­öªVÎ4´¡r0Mý4ô£\56-Ñ×à ñÓø¡ùV߯1‰E¾JÄ^«#p†Ø'CïÅž~—g-“«¯}bWærž~œg6ò*UÊÿ»7kq
0tåÿ‰fnMSW6ù=&£¨ß´‘–™á+D%¸R£d^mÑa¬W±Ó%°ÏZ0JfI¹§«½`-DL^‘WZSÔ×LóÖ–<%&V>Q0•O"8UÞGšŒæ}Ö™[¶°+Ä—‡²…]Lk~
le
"!^½áZúc+'›]41»Óé´¦A)ü4
‘­ µ+§á™@è	@Àú¾.± Œ/Ð~\>0'mcfÖt4äÒ®Žö%¸H!ZþŠò‘¬ºæmÛ‚¹­9˜T~¤_÷wå§bxl[÷MÎìÀ<󮌇Ð
¥K’Fƒjì…@¦dâŒ~”ä`ŸaÖšg}˜Uí—ýÓy?ÊÁ”:O„Åî÷ÛD:–cÐÓ±›4¸ƒ.†¿Cׯ»bŸõ¶“rҟʸBO	bÇõ[â%ø¶Š'úQ–¶À¾@2!pÀt·o€ScnÁН‹ÀªºQ
k¥Î˜Á˜$÷€0 vš²]L+&Ø¡_Í€þæú`SüM^«Ì/´QWk RíkñA2ZÔÿ7C™NpÓŠQK‰ËàQ¬wê±UÓ”ñ”Z–Õ"aè´¦?Bç,jÅlD§#6þÒ3÷Œå–펦ÂÂ;ëXB+¯…|J‰tôxr]­|™,à•5ÆÄ™4®à§à2A³÷EÞwÜšŽ]¯*޽]Öe´õж!ßî7LxS"¬Xÿ(ørªdãÄbQ³a ëV.í-n
¶ngëÚ'®G¢5ÝS|^{£òX™YÔ“rT¨+îvV_IRõ¤Z
¹¤B(Åá[S¹›ÃÎüæHÁ•ì÷à/¨µÐÖq'Z½3¶¤ca“¼)ƒ-×¾¡Z0si	F!éå
ä(ï‡5Ñ49bù·¬’@1·L‡¿—ŒÁ²ØAeFMî5éG‡/þ»¶TÃ`DÑŠ¸ƒ`R
‚#ÊÐüÁ¶\M¿Å( FSiiÆõdô3Vb0*±À6¢ìÚø7€ƒKaøŽŠŒžfŒ0 ÒÂbá=*yŒ»+¡’5bý³½Mä΋—>[hBztôXj+Rå‡jòåË«WÃQäËP;ªe%ÅŽg•Tc/Ë®hÐò)A*OÜÆWBNõ
Æ*N!E]üi“ÌœCǤCÝtyÏP÷àï€7Sèêÿ†L0ØMa“Ùbý]]ˆÊŒï[Ú¿ïúHÿBd*
endstream
endobj
87 0 obj
<<
/Length 2302      
/Filter /FlateDecode
>>
stream
xÚ¥YYoÜÈ~÷¯Ð#дØ/y°õÆl‰v÷a,(’£iì9áyþ}ªºªyŒ(YB ‡é£XÕUõÕÑ-yŸ¼Ê«Dk‘™ôª8¾	Ýj{EƒüüF2Ý·3Ê·on>EÑ•Efòêv7gu[^ý|ì¡´õýæß·ÚxNkŒÀQH”CmûŽÉ,µ*Qž¬©7[­uð›­Ëf£Òà¡ÃŠq{_lÑ6]³ëiú«í†ü@Tÿì‡Ò6›­Ô:
…òÞüt;j)õBS å#[¤êJ&BÉȰ-âÔ©
ýsÑÔxØ$
òº¤Á'{¨hô¾ëà\Z…Í{j®˜̯CIEo÷𭊳ÀÖ]Ÿô¬¤Á©f`¢ê:¢É\þU·æ‘šìÇ‘"ŠSOVæ}N"þJs¨::Áƒí÷´ÜÃ1W¤¥‰ˆLä¹ÔM_òrMœÑ"TÚV¥í›ö°Î l†»Cµ-¶@,üÉH3©XditŽ2’3중;˜mAÛ&hNÎN•sÖS仦¥žÄŠÍ6ÊRr‰cWoddÐÃ`rî-ƒ+ÇüO<ÿº[t„–ŠnÙnyÍ^[ÿÁByÒBÉ ¬vùpèiÂZ«‚% 옔
º#ƒ÷L™—¨rS»˜šñðô×kJ¨XŠP«…`‡û§”HŒ0FL~üu`;’S7*	îÀˆ	Ø¿¬J>H=jÀ(Б0©7ãç{U}~‡ŽT©Šã¼£ßSÞö8RA³£g=ÜaBc*çÆ$(ÐËàJ‡I„»e6dÇø@Á§ÁÓèè33# ÑdèªÝp ±–Åž‘¸hò`»=Ÿ†™m±ìt
—ÞÆˆÌâ Û7mêâ,¢Ï`õ©€T"NÓ—Di}ØæG„ˆVÁ‡Æ}FáÔ‘¸¼­hP4'‹¾zÁY$$Î0V¯<ÌE1¥m«òÅyæÄa™¥$¡0P`¶,Œ’CÛVuq¦Üü×
QR;Ôsÿåä’5$¿ª}.UëYªÆÔ­=õk*GJ¤jiþ?Š¡§ój|(¡ãÄSyMìGDaáD•´ŒÖvE’R[‰)©ç“ª0+/TÕ˜ö¢‰,ÏxH´¬Ï¹ë!ÝxoKÊ`€E	™]äß)Ôàˆß{H°(ä=•Ža“zÁ8Ì´ZÚît˜‚Ú*p2VO™q͆‘œW PS"ŒUÆ…dLGIƒ¶úÏhêhçÛ¹ßSt§Î@îdÿÝDPÛíÁegeÇó´k›ãeã!e$¾(L`ñùÞÃo'jjÅ––X²t¢÷}êÞÞÜ<<<®PÑ´÷7—§Q
ˆ4/;'~tš…­/XÎ,>ƤÚ€©0&eÄåt}¬òÎRbC1(sî)’aÁ²¨wr×ÎΟq/zÅ´yödO«ÑŽ“#ÞðïÈoì@󜸄«¥EQ’óÈh œx×üÈ-ñÌ-SÀIò(ÏÄËê!à0DHÙ*9¥sú¥e!0+ô.EdKÉc~¢Å)VoóJ²ñ6ÿ„áá‚"S¹HKx³l†û=‰œ7Ð
Áå:I–.b[øÔŒOøNpo+«ùýÀã¨*ÕÕˆui±Yw/܉èyþÒFÕðw?²tý"“æÕ–¸ÌQ¸ª¥™	 Ž—¾2º‚†÷r*h@|~Ç^­*Úã¥&tÀbÉ—ÿáXQG4–+Å€yâCÍÕ]g{fOTxØv(|¿[žážjÊZ‡äû™’¯x˜V›êpÙMlj¬8÷C;>ÏÂåwFŸ¦`øè¥µfËäo•©Ù3FÆú7nÓ[€vEÜýþnºuÙ´3ÞÌ`Lå9LRª¢‰/ÐNºÅ(ÚÈ€çÔ4æõ½:\1¯	âŒ~ð É²SÁ•ŃÃ5^'gÝZqDhuÌYˆ/vw^Ma,ô+š@Pcz¦õ2î­Ï^-N!™0©\^T
,|ë÷XLiÖì<ÔüÂПî€ÆGÒùÓBjáŽË-¼•¸fï€v kg}ÿËTܽ,’óŠß7ÿŸ`úbfÞyAW™ekÏRLY{½PÑüÛ—*I2É.Îû	蛬ÑUÓëïtò™Ÿf¶Öã[rÚÍöÎò·ôð3^É,?=P¨»j¨§Îç-=oáoo¾ù¨Ã5ü§Iwóó×_nœYž°>hüì®÷«
endstream
endobj
91 0 obj
<<
/Length 1960      
/Filter /FlateDecode
>>
stream
xÚ½XmoÛ6þž_á/Cd fDŠzkÑM‘vÝÐ-hÝnÃ:4Œ%ÛBeÉ¥¦þ÷»ã‘¶äȘ1`C€˜:÷úÜQ|âߤþ$–Êd²Ø\ø†Ú¬&´xÿæ‚[¾0Îzœ7ó‹ë×a8á>Ký”OæË¾¨y6ùÓ»éŠ2+ªÕô¯ùOÀõy¥d¸ò‰³«ŠV[¶È@0ÇVWÓYÞoE•ÕS‘x	Òë4cÞ½+M­ëeKŸ
Ý©’¸>´]VÔÓ‚Ä÷<ïâv¾·0âLW ç?û"J$ã$ÕçëœÒj™ë–RÛmS«Z²¦·…5¨­é¹éª1%“OYÂI|µQ_á€P„Þõ’~ßeY”9oE¯ëÇqôì‰H£B,¼UŽÚÆÜk	@AE¥ÚÂÄÞdE“/ÚºÙM“ÀcpX˜z7–YwMn÷[¶„eÝ<¢íªÉ,o©ô:×ôPTGÇnU»®ÔæHšB	ßð_]dh„"ÌxhíXÔÕ²—w»v]W ¤”Ò›C2€ë¹—“Û¦àÏÆ'8#>›ÚìÈŠån4Næ°¤ù—E×°ín,±`A8n«xɦNQéV•¥q<3¦Î¶ˆaàÞBiâíŒS:zPY6¦`(Y"Ý'´œaÂû½´–P¡Ø|÷rþãíïó1©àì ¯L‹¦®6´né˜oÓ0„)ÔC™_AиÚµP-t±Ù–;\ǰWÄÞnþ‹½Q-çŒ'Oã2ZLmUÆ
24j”¦2ò::7SmÞeÙÔbRô³¨7Ue3ȮͶ%¦Ç=¦an>ýÅdÌÄÊ“ÕÄÞ®M*å ݪܘÖtÆXEì…œzÀ#w6©Íz{±Ÿ„F`@\±Q~ñƒ]üðüD&õAÆ
yèŒýû¨^–%=WyžÑʹ:ƒ:­¥d½·µkZåòfçö?ÒÂTMµÈÑ­qÜw«tn•À§ÙMO6L6ð#ædìYU	Tµ²ìÖ‡}O“qPt'œHù‰Ë¿Sþ!Ò¨Wy#’¸€L–çœ`a¼?’²F*d³x™A±Eú*³¯Ô-êåï‡ns+ +TY¯žaé	oQÆ=_6ÜߎT¸0Î%‹£h˜¢Ÿ0J¶ìõ%D.˜*m]!„‰÷Ùç²…4”Šè<JøذßH¨ˆ2
+4ê#±,°'à
]¿51yÍêj™ì+»_Œì·$„)ƒ™dè‚ØçT¡=ïN<Òïo³ª£½´mÌyÊ´¨Cjc»9äÄ–Ábìû_¾dä¾DLÀ¹?ݹiØKúÞ~W€Àù˜£}Só\$‡%e€%›RÄ…]Nºz-KÓ°ñ͆ö‘È­@Èò¥êÀð²¥ç’ÚñÂÎ&Èþ³0aa»Ø¿zv}×Ô«FmÈæ×07éë7¿|¼>9™BœX¤ÞhjÌ ˆJàä©F4’³‡Ââ®6á¿:

 3kM”Gë#°1;Ì(ñ>œ&!Ky8gpE>ÍàGÙ’Ï]‹yuÜÌÀYÙe‚§Ä,ÃóæÎ±&0&GXu_ÕVv³9R¹?úЫ£PÿÇvœ=?÷d¾…P˜F°U	Á´î6ZqDY«–È‘@ÚºDêcÉv´²È$%1dE?º{°ã¨›Ç
—Aos¦•‚
13S7¾6žŒÁ“³±aÁºW&8®Óâ?šŸýÐwÃÃÔƒ{€ô®FÁY&,’òPwŸá†ô´ôÆ<œ€<ƒ› œ¬èg_Y°¦Ê•8VWÈ-°˜íÃ¥„Nr–Bí·nš©·*h¬¨è±XÒ/
 ¸Â©Ý#¸žvöEm/ôXÕ--òïÐ Ýã€{oW•™îI¤Y$TòV?Cp‡î_|Pn_AÍÔöTˆ–	ÀH$ûÀJ×	ü5u<,4—h•÷˜ëR,:®›ÀÖ­¹s€¬*GèRt¼:ëŽÄAǘGÿkª=ÂÒºk·E[ćvî
׋l)maªosz³jên«éåÓ>J§Ý™!p*lï2`Ç+ˆ¹ω«þ=ñ`7<Œð1<”*X„Ó*RhÇ{[³ v_`ñʦ=}c¡{Ñ'ûõoo™Éè
endstream
endobj
94 0 obj
<<
/Length 1213      
/Filter /FlateDecode
>>
stream
xÚVßÛ6~¿¿"è“4š%Ù±½=µÅZlÀ†¢—në0èl%Î?2Yn`üHQvâ«8ä!"E‘ŸÈ”ù*†_ñ*“’I¾*›»ØkíaE‹Oîx°Û€áæÆòíîî‡÷iºâ1+₯vû[W»jõWôv0ueÚÃúïݯ`»½µM†«˜,‡Ö¸>˜Í\JÁD&F³®]o¤”ÑŸ¦­ºµÈ£sŠ$zã÷~3¥íúnïHüÃôƒªÉêÞ
•éÖ.eG	Æ»ûy7Ý0â…©@Ëïr‘‹O˜L¶"äb›'ŒË„ >UÊÒ,ö¶kh¥èï]×4ª­Hø»'·”¨/!Ë¿ìá@,¢&¤H8*”¾®EiÒ4pq*ó%扮HéŽa·¬ÕmyÙ€Nΰӗ֜\0ïèÿ`¾¢{ýÄÉ~¨kZ”;¶ª	únÿİÜi>N­—(‚÷”Œ§tÍ!{–+yÌx>Qê5¸Ï³›¬dÛ¨T--ü-³ñ–  h°püúÏ^hm‡¶}†Ê<+X!Š—ÿ¸ìtY‚™	–Cí‚õH‚mØ®áLÛ;Õ–$­€Ä‚2yáä /uE9ñ	vOžOÌ;žIn¶Œ~~ÒµQþæq¨´_åQß
¶Ô=©©yTBEÚGTÚÔßJ~Tí!x±ÞpòÆ
Ùx%NùÅ"hÝ’¨ÚÖÿ@žëÑé	OjŒ×h«j¬*—€ªÑÊÉt—+Uœi0n*c¨x
(̸
圆¤x[îÙÚ½25ƒˆ±L£7eÙÙŠå	’*…ÑÑkº†ÅÉ‚G|WI
Ù@½#å”:t®lˆIw<{ðñ¼’ýp"„uºú¯×¡°S…‰ú¾¶
Ñ%Ì6í;K‹J;Àß3¢Þ|(A<‘³¼ïÍàºRIç:¢tÿ‚¹³CT"ªÞèÞ‘pFT*0˜U‘l£G?‹ô‰¤±›Éæë:þ×&e_¨›³T1Ô˜`ñp!Ì:_f*P׳ž@ÅnËHõäø¾DTG]
µ¶K%¶_lù‚¥ùöÅÏYÁ‹ÛGL‡¾(Ddõa¨•%ݤJ·I ”_°¸&÷Ôe²7ðI­ýÐ÷—àœz«Ã)‹²#gž'Pr:ç93îúf*8KãtÖLªt¦k_¹ÎGC#±ñìÃSû๨ê'-ðTÓåàÂd=ÍןžQÛØKpkÇÐG¸[ÓËÕ=’ˆ½ïŽÓ{_›G)eB²Ï¦Ü»¿À‹ìIqîqyº0@)ÒèíÂÃ{°ª!Ý{Skoøá÷ÏøçK=-BÍ_-}s
.Šnöx‘±™ˆ>^ÜÑÓ”µÚPZK_V°2Ë”zqú4šÝl	Ï6fÀÿÑÜ?3,ã;,Ÿ‰\Ä,Ë“yà)iX’Ť-aâÉ–å|EÓ&ÌÙ¼}3HÁñ@¸áHðbÚ°4H,Äþ.wiü’/O.§÷ïq]+ì
Q«K×Ùr˜BCbzDÏ[³%ÄcÇÐC–SÄù“@‚.ÇÏ6BšÏ?¥G”g|?%L¬ëúwè`ȳñø	õ#F
endstream
endobj
108 0 obj
<<
/Length1 1999
/Length2 14018
/Length3 0
/Length 15220     
/Filter /FlateDecode
>>
stream
xÚõtœk÷À
Ù˜ÍĶÑmcbm›ÆFcÛjl›oÎyÐóü¿o­÷]³ÖÌü¶÷uí}ߤ„rŠ´F6@QkGZF:.€´ #€™Ž	–”TÉÌÑø9,©
ÐÞÁÌÆšëBö@}Ç™°¾ã‡¡´5@ÂÉÀÈ`dãbdçb`010pþÇÐÆž ¬ïlf¦HØX`I…llÝìÍLL?òüç/€ÂÀÈÉÉNó·;@À
hof¨o
Öw4Z}d4Ô·(ÚšÝþ'©££-=½‹‹¾•½	/%
ÀÅÌÑ tÚ;µÑ·þ»5:XR€’©™Ã¿Š6ÆŽ.úö@À‡ÀÒÌhíðáâdm´|d(ŠKdmÖÿ2–ú—
à߇`¤cüo¸{ÿÈÌúog}CC+[}k73k€±™% +*EçèêHз6úËPßÒÁæÃ_ßYßÌRßàÃàïÒõ¢òýÿÝŸƒ¡½™­£ƒ™å_=Òÿæã˜E¬„l¬¬€ÖްÕ'lf4ü8w7ú_®…µ‹µÇÈØÌÚÈø¯6Œœlé•­Í윀âÂÿ¶ùÁþ‘™¬ìlœ èjhJÿW%7[àßJÆ¿Ä=xzØÚØŒ?Úzš?~`=ôG{' §Ç?ÿK°ŒŒ#3CG€ÐÄÌöOô1Ðø_üqÿöf®M†ñc0üõùï?í	3²±¶tûcþ÷Ó«	È)ÈQÿ»åÿ*m\´¬ÌZ&VF##3'€•àù¿qäôÍþ]Ã_qkcç¿Êý8§ÿ”ìüï ø÷‚Pþ7–ŒÍÇä]‹•Áðã‹ñÿó¸ÿíòÿoÊÿŠòÿ:èÿ·"Q'KË¿õÿ2øÿÑë[™YºýÛâcr?¶@Úæc¬ÿ¯©*ð_«+hciôuâŽú» `mbùßc4s5sÉ™9šþk\þ%WþkÑ,ͬr6f=Z´ŒÿG÷±]†‡™ü[üXžÿM)bmhcô×–1±²ôííõÝ`>F‰‰•àÁø±ŽF@׿§@OgmãøáøhÎ`lcûײ±èþý‹Øô‚ˆ@/ô‡8ôˆ@/ò_bgЋþ!F½ØbЋÿ!½ÄúÈ ý‡>2Èü—8>bÊý!&½Âúˆ©ø‡>b*ý¡Ž”ÿÐGG*è#Ÿê‰óƒôÿÐGvƒ?ôÑŸá鯛¡7ú~tü~gü?”ÆÿÀ¿”fÿ0þ¨ÝäøQ¼é?ð£úeùü¨Êê‰>ª²þ~$¶ù/²|Ø~¼zþ¡þ(Äöø‘Øþø‘ØáøqnŽÿŽ¥w4µþ‰ö1ôŽ.6ÿpø8L§àGv—œÁ‡¹ë?ð#žÛßø?ÃlèdoÿñHÿûqó1éÿá¿ß@ +ÐviÞÆ;Àüg@ÛCµ®íîø×Ò]ÕJZ%ûv§'D¨Dʪ¿
û;Ä¡äÕmŠ[þe‚Wãæ:¨à–xùÖçï/º±
S»­°‹“ýùǵ}ø0x´Jü{ß_í¾«øZ€7ƒvJæØ9q Êå¢>¸ôйÖö•®ŒÍïÊïU±I½”NÓF*GhùÍ’þ0ÈœÃ"‚t¤Å‡¦B¹pEš½½›AÉžx'ˆ¥†õ<‰d.ðÐØdŠzœs_+WbrèÂ&ÁÖÀ¿E"ó‡;LšZëâÛâ36</Í7¯J²APeÞ*¯Ï(ë^”Ÿ81“IJiÑt¨'fƒ!“™Úb¬ÒÌöÇ3AìkKNnúx5ÊÎF×ù&¢Æ8¶ä4@­b ‰­€Âr7SiÅ!l-¸±	œ…Î_MEºtÕ(úÝb‚dR (8qŠö1Xçyr×ÕXJ!ZYQ	£/àÕ„Ò!«E¾HÜE•u4"k-Îj«ý@ÃjIúRW™þ²dIÕ4;ŠË¥ŽWOË‹g;Ä~—Ø$Õò\7°¨‘5 äU;`yûx[†Òj”ʘ?ÆEïû0!¤A€m_õŒü(?N}ÅɬâèH”´œ?«¬oØB`!ä&u³£þ½Wv‰0-Q—è-p	³ç|oNo?9·œá¯/‡LÉRmŠ$"T°=MöÝA`!ùÄX²Ÿú¦‚‘з"²(^Ñú1¿oÛ‹8Ò[÷3U6~V½–Ù!ú£Ä˜YưÝHŠ•@²`ÜžâF¥øŠèyj&¦Âæ¢ßŠù›Äêg3²»†<®ŽÔÜ>ƒÌ‘‚]Úá
û“”lÛøWï1¯³Ý5	˜W!?q>ÖË8%xw‡¢ºSO')½$éEŸÒ"ö,ÉŽ8ð³ûýÖ« 57Y@¸ÇÕULþ÷g=Ê/=tÂAxxÌ?–ö%I±Ñò`RÛ4ÌÞ?Ó’¦×~e
c¶nÎ(¼‡Æô(!4øŒÖ@•1Äú“ú¾¸	kI×}Väü¶x!Ù6—io|#V¤ó¢ÅÊœH¼½äŒ®¨>QG‰¾!¹£X ƒWçeÝœZ!£öLÃA–Ç®ÐoDò–¼–§ãH¯Šâ»è6ÑéÝÙ‹U}]ÎÒ$/éA¹ôu$PU¸Íˆ·Õx´¬‘n»”ˆc@Dâ—‹“z7ˆþ^~GlAÄÖ)‰(E §6²án€X˜­d8}ïùî{JIŠ)µ(i,Ë„´V黵	 ™­SŽ©¢­¾·Û{gG\9Á+”5»E(YXbð¶oþüv:¿Î9åG›@ùØùìTÛåDfYgt»ÃRØä^b(åñ $©ÉQî<Žó¸Á§*ó.NÕ‚P-av~&e|m,:K_Ä—2š`ƒ<>ª«?F˜³Š°%xä¨}ëî§ÕŽ™Q¾ž @ŸjÏ’|pŒ!ýTœ„1’¾ êâ=xd%Ò¾ò®Óè’ûb;µ°ÐPh_Å7(£0„4.ONŽÛ;aˆþ¹4|õžY̳@	{ŸSK>ßêêªG`Îî¶Xö|4ÿO®þ–åO}ú{Kb-Ó*aÆ­7ŸÛ~¬vŒŠƒòè5ŸEÑòÝjsÓ^c@Šy*’|ÑÿÿÛ~¡Á‰üÜ%ùµ*ÙÍDô(%`ÝöWÓ´æø^Oqªõ:LA¡	^7¾4YÝ!Pˆ6–d”®­Ä‘ýíÆ†i•‹G¢`IQ#ƒ}œ–ì÷Ñìuc1Ñr‹8
ý_c\«°Ð©õoëÚ´@‰ÆEœÄCß9>ôšì—QÓ¡{j”ñ\ï°§~Ýz‡ô¬~ÅŸ˜™ø4úŽÅnf 5—S£öoͤuW¢ÌØ/&ÈÙëád¹Òž‹+ŃÌÙƒ¦z‘ZÙöNF¼—Ü÷f͸ºg¡è°6¢ºS©†·2é³áÖz¹OÎès”Li‰+©q;$ħlSoçÐ/eû[•
Z¢Î·Ê'ªøp>–g°¤®š&u³È§æl^(Bp³è«Dqq:–B?ÏÝZVIñÞ('I­TçD3déAФ‘SÝ*¼‡Ðf÷½®5ìÚOK–	ÌÄs}I
³…F”Ò©\ýKû´ŸK÷“(o̲AAY4Ò“T@fµ­vC}Uf@b—eŸã}}*oÛ(M@ÌÞša¯HiÁ$”ûs4«•ÔØgéép
ƒ1Â}¡•?…ÐÜ›²ŸsHç²LáÁ¸prmÖþ6³²w¾M—»‰"FàË6ðq½jÝÖ½o-‘úÕÔ›
çVTï_}3ÁŠ4¥ÀOïa|,/téYf4Ü=¸p絸m_{HXÎÒúš=sÛa,—gÓxêÓ)=C­CN“‚xƦK¿¢êaº86t>D:•v4j¾_«è9ýv*ì7å6×°ö{Þ¦x½ÖË=]ÊÃN@DaÚ”„2œË]FQBjÍ
Ï\'«7a ¿4¦ïå´Ò¤×¤¤¸ú“D´¤„†¯çÙ¯‚uçî-w"hˆÊö`5Ö}ܯ¦à2Ó~ú2È‹?KH#!¶æ!WMœùö}XØjÙ}¿ÝÅb¾]×Ëܼv›çnɲà·£-u¬½ïæ7G‚:þ½r»Ú«Ý½½$;÷¸v‘פÖ“ˆËµk‚¥nþÍw¾meM³a.m-b,oW¬ †_¥ü©¢N±Š£'íA&³8ï=S9ŒW»7_°´S†ÏG=ì|Ÿ|A€î΢˃Gn°'™o—„Þ w›ÔP¡Î7è·uá'*ÿí«´œhha«2HNºJ™GiŒ
ðdgTÀ|²"'ñï·Ôïó%õDp\p 1F˜ŠPe=l•Ê.·²D"ÏÞø“WÇ_E£ñôä Miº2 |Þ~…K½Õððð‹üu³N@€Ê12@Þ S×=¦«Ojb„àÕêc°} ©:[v¬œãtz—>,“”{G#˜ž™ÁìƒYò6¼ìWü6ÜÎê‚ ¦·Ì™òBw¼§ÝËëÈPEGU5lµžD=ÅŒàóîQ¡1òÕ"á.,wÄSRè"E“æè>ñnš”ÊvP÷®#f{ðöÐ/Ñ2çn$±.@6Î&“O"·ß…ןùr·ª+ô”qÞñeøE_Dq•…¨³Góh¨Ü‚݇t±%ußÇ‚žI¼Á"”¼¢ÈÜ€gT0åîû·úV,\e§e—¨Çb)
ú]Æ^',*9
¯¿å1^ž†µF(šPxõ
"öò÷+e샟šL%M£»{7ºµxaÃm™Ù¦ÙEq›²*R¾“AV'IHÇàxHY^ƒl|q;7{Íže9e&í²«Æ“÷}¡óáGÓźqë0×÷‘É6¶õ,ß«f-ì/½Ä@D¢
¬nf/Óœ+B«hz4Ó\Ký|"«ò7¦lÚãIa6v‘?0pé°E{©Qëî¥t(‹í¨ô:j‡	¯!tÔÂÌ3ølQù:m@¬¸ßì`Vû¥Tã—Ù«Oþ”	«În ½žÂ6¹ÄQV#3a‹Y”íØ¿~ÚœUgªÑYÆzˆEt«:}˜ÉäL—½¾º·ë*¾-ñ>Ó™èÝᲉíþ&~y4R;‹©G»jVñ©É8
ܪ¢´êd[ZÊ— ²½BšÙøÆ‰òÔÆà0Ϧ¾h€¿­mÉb¬ËC긌c­ù‡ÿòH'©ˆàʵø
@
=ĽLÃ,®iÿ^›í5·œ^e,YbfáZˆ>sﶪoÀÍ0?-ÕzYZÀ*äÑx7nÛ·~«9vHZ]~Ñ(Ú-/¥û¤ýÖ­™ËCØ€nJ9
øõ=ÝXóz©åjóŠï°æF°{?b=²èÜ_ýµ¨5‰æÀh*X뺓Í&2å´jv±ë G¤‡DlNyѸ®È߇]M39êÐE•œ­UB øYìV‚þŽÄK?аnË3aÛç“´d-œ@£×]vG7Bl¬'Úh¥¨üu®pÅŒøF9SE(Œñ½eçæ×4å<³ZPŽ2¬åó:6mû„ñÑ_måñþNHTi
<ÝW[
Dç\tàÇ^ã©ÐdÏAKõJ0	 R¸2œµb^_©õÇÛõÐ?-µRÔÁ¾Ãv‚ϼÛs–š6MîáoåY·O“ÂIzñ¬Ž¸¦l9¹éË_ÊbrLZ?’$iêúõT´¼¹…*kvKíŸËw¤¾­×…BMÖ»p­­ ’iH·p§S5²ÅÞ¾léH÷L»=‹5ßJá±þ$ý"¹n»K“¶mmÛñEÊKU˜ú»Ã°‘ª[åO7F(ƒ24(5I±‚ŸÄ½gìSûÌs´öÈȱ,DÖãI×K(¸‰¿	йé¼@£…%ç@GVmü4
'¹ó\\¯ÛŽ1ü	_zTé­{†;ûq“E6ÛÏ1Є0µa™Ã¥ç.¨uØî'îM³ú:ë½Å7¥”š
1ýž˜ÜühM¡Q¡Jg«èj?…hT:Ûs·ÿf
½©ÙjqŽÁm9”Ýɨo¶Bn›»ïÇ2~Ï6Ó1Yê‰ÆwøŠê
­×É&~g’}¡Ë훲‹Î.ŽJ³dª"ƒ—©è:ñÍàúsƒ[…jµ£&zÕ˺ù|»Ä“<vŒg—óÅ=pÕ:*è1‡ßIi‰YYn®<"µÞl¸y¾šGÈä»¶-‚œ]xTmbäMè3CIÖìœO§µ³;tPà£4éµÇe+LóËneì$ÒêL
ä;‘rãµwµà–Cr£~öé‡ß;éí×+:}ÑZÒæíK!	æýœ"¡ŠîÔ'µáu–ìŠsŠê~:Í™uQµ¦¬R)8'ûÞeui ÛÝ(ªŽ7}ß{YÏr$ì'¦|\IóÅçÎ_àö²ÞË,ú.dWAEópp·
LªålƒŽø€‰1]ÞCÞ$Yù§Ù–±1‡Fš¹2fWaAny§zùÜ;¹hMz'NCýZ™<}ôˆù¢ý¤^N|‘b•_Ó3šÏvmóc
p¾YEŒÎÛ¶êE–íO¦qŠîf¡rLå—4Yo$5,0«'µÈÎÐe|ñ3ɾ#éæ+ ¸›á—NÜQ´!Cþ²ˆÚ—¼“,û@o Në­üIîc°TÇÑ!Ôô—µÒ-Qß/Oé—èUüBzÑÎùèe/3Côëš@ÜÕ""`móîÌï»Ô’çÃ$0?,>5I÷k¼Çy@¦’b†ÒEÂ6¼ÜãAw<~’SñïO9™g&&T áÑ¢v®–>øÞŸ¹‡û·lnÀhІÆ|†kh®\g!UÞ'©‰" ‚Hðq@Rt°ÆŒn‹Ô5ÇÍæÎï@µg«½À“Å$£Aøw49ºÎÂY¶&ÞÀ¼¤ÌnÙ¯	áA_Sb.‘vÌ¢Ò´”"°zP}š¨Õb‚¢LíÚäHkÏp,8æZlßôýÊíã˜QwxÈŠ"½53´!èÖÜ˼à{ˆ7^©ž¾qo}3PˆXà\ØìcÕ£ÿbY$‹ï'n\r;Q"€)eÍQ¤Ÿy™[ô}n·ì€ãÌIÏ£¤Øcä¸OTP?
ž®"`
÷äÁ¹ù¡r¶{%ß™„74šD°Êæhï»Ðj“K@©<ÌII8Ÿ\¸¡`»êrdùý—¤÷IÓéJÙ¤k ÿ5Ý´™`qùãEÀK‹íD;Í%gLšO¼F–Ñ‘o$`îaÇÃmì§Ëùƒñ‚lÉÆÃOÀðB?Ï6õ.cäY7ŠÂZ¬«-ùQYµÞ;¬‹<Ö6¨o¨¦UYA¶BSËè¼’´u·BlMAïÐì…œR{ž÷7á²VL~e:Ô¯Š[&T‹ø€áÔþ½õ›6¦¢§]£¨ÏØmI’Ók?‡8‰^¹Á¡æµ9@+,ÃOî-"+LYèK3F»Ò7>CÊþLcGKYÎo4þ¢CûÐפ‹V’Üû]§a®˜±ø”ë!ÔcjãÄÊM”Çbçýn"‰BY&õ­:–;Ȧ±\õÍ©m%“È2Á¹úÛËrIß(úãæÂȃF}Wˆ¿üµ¦|Ýÿ—Cßî¢í~9Â¥+µ™Æ
\›˜üœ£:…ru|÷<¿^1¶
ÛZñôLsŠ^Ê8m%±âš5¢¦
ij`àØ³á¤öÝà8Më‡O²í~¹)S§½uš5¯ÏÚMŽM>q&ʼÁ¶o–Äb1‹Z×|ràþH¡¡%T3Z¨ˆ†|ŒD(tQ™?U8 rJ"_ð-Ï»Ðí÷ÐbÍmPÁ¹RÏïƒU$OGrRðì&py¢²EÂ]E3+{I
Èy[y!(xPñF¬if(¨ßAŒ˜PVr²
Y}ºZÑUxx`ô˜*·^ã2èTEϼjN‹ßïó±;‰+$å=4iÔ~,HNs<-X©'ë,²LŒSï¶&U=ò$±^Ïž¬”¬×)pZí0­ÔlñªQêÅ_3:³·†Ôp *Þ;ÂMdñµA™0yÙè­´þ„?©üE-H”1ÛWò%'É7É¿&œÛ)bt Ûw­û{Z€vGvZ;|Ï$øB™ÿ¦¨`õ´’Xò+6ç®Ðwº¶6³0
3hZ\ªAÉŒ¤èà4ƒðÎí»Oü
”okåZ¸+ïÎsïyS6»º'nå%ŒÎü5ÜðªŠdaÎÏ1Aæ3i#Có“¸xžÅrQÏyO¬ö*(6ŽCê“îã¡E8Ò‹fUEãàfá9´ƒ óml($Ÿ‡mº”Zý¨Z.$âö'löqåx£ýÞðhOgFÁ–ù?é·k9EÛÆ|ÓYR¨áµU¶ͼä±Ë½´Øèl°bu Ó³ojÓ?á½ë˜YtŒ¿ÄVbšÏo;‘ôïat”S9©®è/
d¬}“_Qž:a¤¥Bç9x¢¹ -‰[‚¼kž eõl7N$ý5bg¦´ÏVU#{FÅm-BJ›
cÈÅõk¯wé¼ôàŽ@²IçœÐSÄéb`°eþü…†%DyK’6®Q¬ºGꇊÁhå…Ü	k¿µþñšVCüÕLR€ÜW ×“Ì1Ÿ•:g±+ôê=éR$UN¿Ã>ì,W<Æšq±XYÝ4´¿p‡Äs7	•xS$¬*Ò}–\ÎÎÌy¼	ÎjaE)ÍzÇK¹ö˜z&÷¦ì¾ù9b·ØdàëÀûrT—Œ"/õ‹¯/¦Ò<ÐvB	
]ìÀ{e¶ž¥ˆQðP¨
­5L§Ò²ÑOÎÔÉ”̉”Æ‘D¬ä0ºÃ+þ)µ6F­oºSåU‘e«*[ZE=§PWCñõ—²T“2±ÎU‡•²Ø›ÿAƒœNcKo
tjM­ÕeßíYM(ø€¥ŸSêÕ7WÀÛªŠžby_×»¤m=w¸7|¬°'×ïT¨AVÆ`Dì|WÙ÷7Tþ˜³+ß>jµ/ÂÔ¢˜
L¸
ç¨a·Úõ÷eXQ+p_-Ç¡âEóq„&³À¾#ÜEÕ	¤» Õ)¨
{¾)F±j7‡™ƒ˜y*±†©È]´5âæÁЯ\œ¥¥c©Ž
ŽÉÌ¢æpãC1à>Iƒ)WæfŠë›¼Í˜JZ*^VE‘²9Hn0õw6ɲ	•gîbÂðbóEhýAz×Ì»ŠµMÍëTh_5]DñÐÎîZ c
™ÂCL]a¶÷Z®¤§gr0tûùó+Jõãv4uH™5"'°ŽÏ€[{6XdÙCÍŠA&á(ò›0GYnA€¡B¶ŸÛP3í×ãÉ€x¬?!øxÇ“i]ë­äOÝ€_kã~
UZ˜ÊýÕK› Ó©ë9üpb¸Ÿ7}í¥òrÞ=C 0Ú¸Áç0åE½æõÚ@×J/´ÿtÎ1иÚm5öµq.é…DÏÓ”¾”I`»s‰µ)Ÿ]*×Ç;KdiîͯŸ‘•Î?]Â|«H˜;N`qeMUž2ûuc„ë©IR›ÖµZú~A	hï¨áM©¥ð»nx+é0æhFâæé<’ƒe	ÏÂÓ4%˜\Ùì°.Èœ"Âô™ŽðA£«:`‰%>ß–ÿZ†6YXôÐ ®jÀ/v~F†,س?Ïó;§´eºEXv£»ìÝ#}®a¸é¹[DEÖ~û}ž–mAi¦|QÔ™[1tñ…ØcšÕŽ€Ûu-Põõ&-
¦.a»eפ\8`zí˜N¨!6Ô'í–^±$D ¯Â„Øa›ÊSSâà±J…GëBÝÎDÊXÆ2Ñ¥§4¹]Ãë›ú­X—X)7	€ò–5aøZ…í(é·í6ŒÖ±8•ÍM¾dþ7†Okg¾·¢œÏÄôÎáTžÉLY‡ßówœywÜÜŒº+«ClWˆF°nò0.Hš‡Û'‹²®0~—¸Á^ÍY4ß!š±_¢É‚‚ý$…j.´õ0ŠǦùµÏ·òc
ýÆìå\X‘â“¢å€Þ•èyS½tņRŒôœhÌ©¨-òºßª¥jY••úN<ƒÿ>—ûs`@yîÍx§¤f,kOf򯆬.zÉ:2G\¡j/Å"H—‚3Këüt˜"s¯l§ÈƒÌ¥Q‰¼àKŸWÜÆ¢Ÿ#Y£xærÌðÊÖß3ì…G”SI⿞;¬A¼7„ÆŠÚAô:³ºòÒ0sáëܧZ´RΦ¦7Nî&ÆúuæÁ¤Kº%x±‰·³Ò$º²²°¡¦8 Ðfèüé#†‹…²Ã<Ù$à~î3àuçË$ÙšSËmafxU
¢”÷Z=µí×>l0è°tóŠÎÖï¿ÞšJÙ4€½ƒøÙ›^ø´ˆräšp4å‚'Y/éž’mhtiì,é7­ËN;Ü÷˜ýÒ鉠²ÒUÉ‘në¾ð'—0¿ˆj´v}úEŸ4²(jOþB@a€ŒYëÌcy´ŸR Ï l‘kd-3PÎõônÍÇ¢¼Œ	vX~5ŒGB›íˆwc5*ÍKuÞ"Jm{4šj«úy¹̅®¾¶úÀä„“œÖÒ³ÈPNÛX2î7¤Ó-“©häîX{/û èl¦¯ç„Ú¶ãô¶Ú°è¯ÉèÂaSÖž2üª3£(Î=Ľ}nÿiš¹B³9x¸ÄIL¢0×ûí¡šŽGÃ[v:“æçù”/wÕnwÞWï×çâzÃkvÎ#ŠBûì»ï}¿!:¨0	0–Ò±¾[àãPņÉÒâ@¨o
ÿ,Ó,òzëäá¸i	
ý¾rú]S½…ì÷â	ÅO=ö•<¼}i§ãÁÔvFñÔÞ0ŠÉùõ^òÓ¨ÄÅø,ÜÈn^ˆKħ
6˜ÄëAKÔ£Å
iìÏoÔøÅÅ„¤U
­+Fò xÌ£¨Ä1‰bX21³Š68{}ñ	\¿N×Vh¿ž$*×zRo½­äð‘ù)’ÍÖí?¿Î#ì›Rì>tÇH¥…ïöÍ]v]L±üàˆ  ž)'Òß,KJ"
Y}Q½SŒëcÇÐg’ß~{Ò«Éîß[WÉh…ämm…†0£œê¼ÿœ{}V½c«[“ÐK×Vóì[çFts@efŸ€Ã3ëŒ"]m)6›1œ`zXÇcmÕÔ;XËvvÙ:W4,NÞ3×ÈÙúŒ3¾Ö˜bVÎIèd©bï*ì‡.Ü»æ·ûi¯AFçÖµœ­yuà8	ÿ›ld8ƽWñÉœÒËŸýý)UçjÞë»ÏPx!Òû
µm¼×¥ÉjÁX.Ô.ß;%L€¯€ÐbQógðûswI¯-ÒNýÏÍÇÜŠâé!Χـ,•ádÒþ|[8Õe8"•|˜§tcï¶‹þ–ú3!¤˜>y;ÌKë/	°=PÚîß[ô'r½Jì¦Ùô;¸ëE?ñÞ×Ù‘TÌ÷º‘ËÔç×ðys˜¿lyq†Qí1ër
ñ…»~jö¡7xtø´–_·à+pvÌ¥\×Ô¼Efi_)\4¢FTJ­÷àŽwY{0‚¼‘"š½ð(ž3š!ª]\3™Àð†ƒü!9_YtÙ¾ÝBH*}{ÛЭñ;MĂØ
îË­Á¢µ»cœ]*M¯çÅ{3µ5ÈÛÊI	>egàÓÞ‹’þ&ŽëPqÀîÉ-c¾w¢@À‚ï<ò…Qö'į“@òÃèºe%’s×*ø0)e/F½¼€å,©Ð»U¶6@6L[t=6«ø Põ Z¾KÉ—Z1íI³/ så±ä(ÏËÙÂÆ¯JêäÂ)𡨰7¼Ñ[ýhè.:ÂÅiágJÞµóžù£qÐŒú‘Ž7ûêÝ¡©å˜r);ð‹ÉûF†ÀÔà¾-!,ædXÇ>§†zþ«ø'TNù:×¼ZXæÁ¾èÜH¦¸»Vè'eR¨bâ÷Š-L’||O¤‹gf|€E‰¢4÷®OÜv/Z8«	6
W°èú
¦¶9–št
GûÙI±ÈÕ¬%6tUÝbÿÒÏbÕˆ®Æ'Ý1”Iâä=n·Có«7·ÔÚÞ\afG‡O‹y_ªš6e*ûæ	ð@wiiØÕÕáw8×C|ÕíZä?ë——2w€bæ­B=ЭæßÊ‘ª
ö0$®ºÝb
fŽ^1i;ñ-œ² ˜ÀÜÒ£ø¾ÝÂKØþ¿„§¦ªðÇxMúæ;a|=(ª­Pq1„ƒ&^=îqœ.Äïu»²’eºëެ~;нS—M^ø <õS8¨òÿµ¿sÓÕZÌú{r…!d 	·rá'ÒV¤ŠGr;?&VÐL›ºüœÖ‡,4ð‰¥Öè[tú:„Ô‡å5€¯¢á„ÂVºØ€whÆe
:~euW	/ÇßNµ~á3Dùê{}eiD¸1vè’Œ™·Ûüà®&’œe™™Dr.—·T½žb_”™7DµË’Q2&ø{ð‘ˆ:Ûô:½]Åxö&[¶ˆœ `QÍÍePXµ’¬ý¦yû4(ÇëÀüW$!v…Š€ÊÄ
‰Ì9ÕBðDÙ™×êöx˜Äv#Š2A=û$1¾Å½„`ï'e°Ç¦‚´Ãg¯1BIà+îÁ3®ÝaâòÀ5p`ê|÷¹·ˆq†jeéÌ…b¨?@ü™ˆòØnDò^-¹4
˜9IÈrì1«| _ê{6pëCÒðÆáùÍAàsRµ{‚²H¤ºûàÍ
tOL÷hR‚ZzAUϵûðlšs³iý¨Õ2Èg¬ÔXâñ+(Áׇâ=,sÁOzØüPއÈ
¢ç	²ðÄò Išýé?k„XŒ|D…	Ÿ¹üà 
r²¦CÔ¡Í(tüpGq(ÓÛ⑵ÏÞ¸~ÆóØgX%Ó?E*9J³U~%”
År‚æÞW~ÊdãnÒì;66wY¦=áŽCžG_>*\´áìž[YdœŒíЬúu¦œ³³ôå½üàï?¢	lòÜ×[Ó½óO¨ieÐIÕ’ùo[c
çˬfiÔ^Ú%
Ö!ï^ÉX—É5jX—›÷&/ëŒD‡\ëÒ.db¶£S$˨d¿¢6¦
MDÏPÔ ?q>l܈ˆÀ3Y§öó‰ Ã)¨ŽOæTÚ‰£W};¼Øî_îä„ÞbêÚ»éÚ;øZQ®-RÚg¬Âï3@p±InØEÊ>‰C¾ùÍý!Qê{²¿P*¾¡ø'òá÷b÷u•
î¯ô`{þwœ§ÔÉj#U=s.Me<ø°f aùpÆ»@ÎÀcY—-<ÌVª<èÍ™nH‚QN,GÊ<›š]1_û0<[m ðÞ(õn!Â@ô„—¶ÅÓŠnceàb
TŸËXf!¸žúSÛñHÄè«hqL¢bÃ}ÕQƒÓLæ{­4w¦\ØšK1#âñlÊãO'B…Ût?§ba±NK“à7ùR+ᲂu†7ŽÕK[5!å²"mYVÁ+líÙ‚–f¢;Jœäjm1Y|Ûù
QŽšï269%ƺ´~¡8‡Å	ϸCäвìO"£V†ë!fwyaîÌmRd{2n|^r Äúf’žËÊ'ñâ­+ÉÐïšg"?ÿøê̶\u×Ë`ŽLÉ$uHåQUƒ¸j™3p{«l³]M5‰ñ}ɤ( XÀÞ¶iwöÒ¼£ªsyúÊDƒÆE7²NÁ$J•¨Þ­:—Óå^IöàhÌé
’eðÙG¡&ƒ_ÅC¿VduÍŒú…uÜ&u\4º‡PÏúËTO¼fŒQíyØl­jî­ÏßNɬÉ5´k
¢éàQàÛ˳â~Œ…
&“<~3’"ÜK´ø•‘‡åfk¢BVÜV
§„t¤±
 þ|ê“üNêOŸœ«ƒ3¯çl.ϲJ’£nËI¾¨çËý"ÕœQUjVÞêhaÈ8¨ËÖ^³4$GÔSJ²Lþ…Tî»oH¦’`‚æ¶ðå¨ôÁŽçâR%†þÝr2ÏNî59.Nf(eÙo÷¸3
÷WEÛÎÚ•Âjƶê‰d1„)å1ëýéYiUmº‰³Ä¬s'<ž~í¥h5Üx&J©ï"„£xäö-·W"ÓcÙ£€,2"©uaˆ€‹<ØôZz­LÇ61À}h^n·´j¯ÊN|Á‹)bÏÓ
üYJZ—¥×XÕ0,B›Dš]àÆËí²LÑMÌ9ÞÛ’BïT~Íó€<ç=­	B"WözÛL$£sâkOßíøÆ‘æ"r¶YSýH4/.Møp]á­ÕU¯ˆÂ›…—-š»@{¢OÞýeó2$£²÷.€}{ô[ý>¯¾ï \•´óͳÃü®û±Épš¬(¹(ïq>*hϰ٨7ÀyUáh>Lë¦C¼ôµƒšþœïJŠñÐkõ…‘ÒK^ ôZÕ|ß•©‹C+þ@xqTn\¯gÖ9á‚‚"Fd¾XHo5Ýzbk¡o9JøSêÎNüä¹ï­+"´;¡ÿþcñÔú2VûE'F»Ýl,îàÃ!}"_Æ.•…häHëÓÃFç[–p2xeü@×Ùæm=®˜ Ño\úîLμ	ò½iô¨<ÅWvðl5÷9ãPœM+z·¦— ›4q§õ‰GZh¨SPÍDžà¸xí¨}¼¦Ü2ˆ
ìjÇž\r¦ï||xlþ6_,h¡x8‚3`s¶§I÷Ý¥Íw
.Âx˜bŒÞL@/‘.·EúïÇÌýÞ¤{›Rìàs-tWíã+;ØfdýD’QìD2̪Á¿Sf¤¥ùa°Ž~ûÚnO«%tVˆªYê¼qçÿå|ßêÕƒƒ™,úõ&ËìHXä‰tÅEæ•kgAñ³L¥Ëh™3\± ˜/i4bÔT¼ôLbB‹ÜñµKµi‘6?žvk‚·cçnßhFÁGQ…ÌÍ\gÓ»G:E㈎†y4Lùžo0
6«Ä³ÅDÔÕ ÈáóoHGm­cRÇèP¯çŠ$,XÜîóï{™,ÝäO÷Çqḭ́÷Ü®¦†™-|UdÍ&bÅÚã/ÙO°±_)Îx#xÁ•éÄoµ+~>üP‘Ç­íßp*f±ÀÕ¾;ÊaÊÑÌàJEHÜÚ”Z@ºjÙ°úÏÇR4EêL"0]n‘fÐ^ÜÉÁV$-&îÈ¡Ô}nh´‰Uê’ïuk"x	9R!€
tV—q0H˜ò²s5ýö
àú¯u\_ªß!*·pO{¤›FÔ.¸TûÛÖ_ý€‡n>3ŽqÈMÔÿöyõ¤ÃÜî4õ*äc6'}ü‘>b´½¨É¡”3€dÁ5Ý¡Fó
!+öh@Ï'ìÎñ‡7ÛñÜ•g:mg Ðoež}Dž_á-]">>€îŒ¥5ç¨oÚB ¿QG)Tèw¨ZL³¢€‰|-+eE2H-@C(Š!U,à!uŽŽ…¾ùh$÷
ÈjnÆ-Úž˜nˆÓòÖöY1ÐÇ´ï™ßÑGp!X
ª.€ÝüØWù+ƒzª*íèá'nt6‰•Å4Ø}W87Öþ}Ç7
wð5àtê§_üáÂ16êTÓœå¹+ÿ4(6œâ;ŸPö#0Ø«B…Å…Õö¶Þ¡!n£BýÉþ/]L}ØÍÔ“Œ‡åÞ3¸p£ Ö¥ä"÷õ­UÄgbÁ.o8˜Š.ål¿ù¥^»Ÿ˜]ÙVÇ…kÔf;¾d´`#¾$	–ßí*Óúø½èÚýÒ[û“äÎtÂ”z€µ>ôÊ“‹bT9§ }Šg0¨U¡ÐŽã¯ÔEK4ç‡a´ÙaÜÒÕóD±CÞö–Ʋ.þ]Û-ÔRjÐp×^¯8‡¥c¦ÐšìHHcd#϶45aÚ-}QÔM
È‚ço/)6aªg!à8Áó	öÕ
nA/“ýUæ=/’1ŽßyB¾nÒã‹F‡ôÜ‚ý?™è7	VLF¶:Y)qúžß’ì/
6#]b“-ÊVv«½"J`ý9X(w²¹õ7#ºÃes—lZ4Ϧ:v®cœy’|`¹m°õ„½¯CSØtídtd<—·ÅØÐ.èª4¾uÛ	ßä¼Ư9]£{»EBዦpù„"Dý9W³·@òÈÃ]£`ï:EŽËF¦
…ÎŽÀÇ–Þai6ÞŸ.2ý2qba:‘3CùÙ•µvDÆ’¤˜zž¡Óˆ»>—½Ÿr'_?óQ´Fò¸€rr¶‰Ÿ’ß}¦9ˇëÄísmÅDˆùÒ4õìšBus¢ëáEüÆÉXØhêùNgã+CNQ:`Õ{GÅkf_ÄøÃ¸¯všÕ!ïƒ9`|YÄ6»Žq¸¸'ÔÌ7‚pÝéоRN¥ö¸bRh(]gœ¥¨|¿
k "¦7Rx±y–H!jOe,>3¬|~ýh1û~M§¤µ7–0rŠûë7H.Ç~ÂÉì¬ÍÌO¿ŒDòÃG6í…Š.êåä×ìõT1(\;ø¸eápö¢6\Æj‘Ç~vR6¼þÚ‡X%(ï=Ÿ{x*‰%xVPFs­f¬îÛ“ _+3TðW¶-Å<¹’m	ß”\òÛU|UNºÑïÓî[üZ‘ܨÊĪ05ˆ$|ç_ 2“)}ƒúà ÜRQj«Z¡‘©–—uiª˜im²7òV˜
T3¾ P½³©ÑÎtLL!wµBe%
&ˆm)¨¹o
ÅmçÿºE­Ë
endstream
endobj
110 0 obj
<<
/Length1 1398
/Length2 5888
/Length3 0
/Length 6843      
/Filter /FlateDecode
>>
stream
xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„Š ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ÃÐDH	†²ƒ«£8!°0H¨¢§§A 1aHÀÍmŠÀ¹ÀÿÖ¸Íá,…”þ„
Átª¨‡BµÝ]€`1 XR|KŠ‚@·ÿ¢0Ò@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p
Aõ 8G¸+!#â4AApœ÷?BðÊ:âphiOOOaˆ+V…qçz"pŽ@c8Žñ€Ã€ç-õ!®ð?­	¸¦Žìoƒ	Êç	ÁÀ…
Gb	.îH$dšhé
Ðpäo°îo€ ðÏåÁÂà…ûã}üåBQ®hÒtÚ#\à@u]aœNAÂÎ,Šàñ€ \ vÀ¯Ò!@u%# „ÐáŸþ°PÃ
c.ç=Šœ‡!\³¦‚ru…#qXÀy}ªJ¸wo‘?ÃuF¢<‘>Kö$Ìþ¼
˜;ZÄ‰ps‡k©þÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4

´'´÷CØÃ	?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0tþù×ÉšÀ0
éâýoø¯‹¨˜ikê«
üiù_Fee”ÐGHL($*‚AâRÀ[„ƒß?ãBêø_-¤=
xì¼^ÂEý]³ÇðþÙ>à?ƒé£Ô…yÿÍt+JøÿŸùþËåÿGóó(ÿ+Óÿ»"uw—_vÞ߀ÿÇqE¸xÿA¨ëŽ#¬аÈÿ†ZÀﮆpwýo«BX%¤ÒB`qaøo=«Žð‚Ã8¨ãoÚüÖ›/œ	7Daç‚ô_6–A	,›¿M,aåp¿y.Ã	KõÏ:ÔPì|ûD%$â
 Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h	) š0ì\øGl¨;CHþ‹„ÄË¿Ö÷‚Cã(¨L°SupËA¥«§Ðò ,éfêÁQ¡Á‚û¸.µa›…x“¬ÌIgê`õûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8ìbÇÏö.Œ&øì³qŽÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓøþUÝñ1Á“‡¡Dý–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(ŽNM¦—MUœ¼Â|:ïòÏœbtz;+а®çs|ÉÕú[ŽK[Ö7xÛo9Ú&ÚGƒ¿àÙéÐÓÊ©˜Üü•HØTvIC|Â>Ö¼#
¡ùz¶ì»³vXˆŽ÷ähÇÐüOw-ËwÝÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µÜì²HÝçò»{>xñÓ¼íÖVežI·Š(d}4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­ÛãŠ*ô+÷¸J|ÿ@÷(%
äÈ~ºÞÃ$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…HàQ}´?Ù NêеxÒg†WėÛ${òº¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Zò›—èoÓ-„ Ü—ßé%.(Ò8ú	]™â}DýÁ¨7h-þqt‹ÒüNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»ÌaÙjÃqfw†²¹ú]™Í¼`î¨ûa?yý–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîwŠ©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Ððºýø} äxÜÐÅê"Ž7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|zÒ2”CMÍaÅÞ=~ìœ+x?Ú.>ý;¾¿‰BÕ"n£L¶¸~…”~ú¸{ð¼)04I7ræ‹E]µh•©zœù<‚¤ÕK¾ÏþƒfÍ‘%‡µ©ÚÞ+§tãÞHcª¥%Æu`z*팋ÔþÎt<ºz''#Kó†ùþt ¬þF}€Lécgúr Åž,ôÓ×Ü2ŸÝá
žðöv@߬ۋ}EóGûßêæä¯L.Õšæ~ìE}3öLY„]Ï€7mD¶(#šWÙÙ^11zm¼ìœ†[™¼“ÔÌy+`Ë
8ƒšk1W’HòÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ý-&í…‡÷T…ã}þWš:U¾V;ïFx^©cÑÛÈä¯ëŒôð~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Ð7óJÆÁÑäS"Å’íþý -gåøðîS—oòžñ³wÖe?iÞ©ì¾èåAÿòŠ_À’ºWg†Ã
Þ:¼³ª‘±N¦¦çòšSAcg–3Õ’>óžxÙ™øaÚÎ\Íô™“†­Ãp˜Ñ³ªjJÞ¢Ï2ý•FÔfÁ*h»Õ·Š2*D·ák<ê–¼Q€¼Ÿ!‡±‡E
ƒL1¢È¯©-Í6;å!ätÃö³ï‰KrJÜA3ûq1Î"ñå<»—Þ—Ö}¤¬šÓ½k~ï™Ýñ;Ù– ÷'FyµQçê€êwºÚuc[ëžôÄ™¥Tîe,õÂ\ŽL5Ùz‘çÞp³îØ¥‹Ó™‘¨1ŽA_k`…uÚÒ
+¾)pF¿œ'‰%QcÌ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹ì”Þ€jO¿ª‡šš"5üÜGSvIÎ	?ïVy£¼Þ×;•Kñʯ6y™Jbå]LJ¼¦Ðœm¾úP»žùú!™G/«3$$×’?=`ŸZ@ŸòÁ^‹ÆÒžYŽXžQl„»åÇÓrÚ·gåõ¼¤mVB÷nD3_ÏÞÐîhò±aŒöbëØ$öò˜2Ùéú‰ÈJ8ÓaÚ—3òÌ38½Å(ñ3ü&«tÒÁ<3F]C…¸ºž¾kú*å+&z{cˆÍ1êIù¤ËtÝïö×/-ÿãÿàtÓ¢#Ku]j5ŠkkÄw+ûFƒzä\ß@dã)ËÚ¤n‚ŒÍÌ(Y[‹«¾9¹ãn/ïG&FWc·Õ+ûùÚ–Lñþöã´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Çš2ÜŽRk".´0pšLMS©¹†^aºÑ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF	ª”»mwð„žÜ¹²¡•ŸÑ=šzóÒjªþõÃ7gŸŽá([ø…fìZáË»ÑòŠLû1•Á«dUOÇ›,H÷С£ÛÎdyAƒ½J¹´¼ÖzKÌèh(iö¦cï–
$U¹Ì¼{ï-ǶSr/¡ÈŒç:}Øý:êw6‰D?~©ôرƒ¥
ynKªý6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+E݈iе1Žê
¾­â/þWûf2¡BjC,Ë!	¨¦vŸfÚ$–*Ú~¾Ml•þEÇËM¬£pþ
®˜½,c-ö½ïÅîpPþ€ÜŠZœbEs¢ð¦èýyLM¡t/»¦|)|uÒp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨ÞLc¯öúyŠË·¨YG+
[»{ëRé
\¼³[½÷ÍÄ®T¸¥×Žîn.n«r>?óh‹jÜu:¥#ŠQHÍ9šîWbiX‘.ÁJ·Z÷°ÊhŠ–‡¼¬Vpi«­†2Ð/îïÜ€SäO­áÀ>аˆôÄÙɆ&%LŸ8‹,ûÌ‘­
%¢2s¯?~ÛM²ø¥PJƒ›.=Øòf£»Aï‡ôHÒòä5Ô$`ƒUâÆ³øìfPRä§IÅÉõþKª”#7¥d.=x²U{¶½Èžs½RÎAå{^\màŒÂáêÆ<¹LŒuBÆŸðO3¡"B÷“ªc{URåé-
‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄÐìޢ䀗ʬö_¶è.ùïkœ‚ÔR)‰
fÁKõ…1^ˆÊHógn—â+ž'–ÑŽ£?;è_ðô¶ž·ÊœÆŠº¹~;UÈþX¨S´'ã³»kÚ$þ6´=çõãbý¼ÍQÚy²VçùNؼ×+-G5¹ž âðBëxkÐ4¾Ýºù›ÖÃ㯢3Ìå7©Ã.¦®wYRV¦Æâ¡î'ÞMfÆÎó$±„7’º¾ÖçoÛBƒ}[îŽæš¿ìâ]ÃÏ­»úx¼|Ô¡ãÏø‘¥%RM«`‰§²‘Á9Î
ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûÆ¾Š›wú=¨:¥É)ÊCš*„ޤÒÙô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SãTÙÙ×p47¡µ|(Še`Ï«Ÿ;VªuÕHx«oÒ	íýÙüC/:³xkLåÑ}åÜ…¨ÕJ¹LìmòC¦‹[¯¨õL[š>œ5Kg5TÃþE¡x
NÞÿAu?&uë2ÃU:[C“39™3µÃÖŒžíˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJÝ‚Hëø‰ms1À§ûJTe	fRÝ=]¨X~4öÛ!µZáž‹s±"ÒH`{@Æ8.™!êý.´‚1x¢Þïú‹Uµ:æ¦A7ŸK±,Dg'¡Õ¤[=û²²‡Õ ôT	9¥rZ»kÅÚ=¶ßß$Þá3öÚœ_‹%éô¢”žt,¹IѬªÉ¼ž3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸþ¾[Ïæ(Gé®ì˜Š`ÚNŠ8*6•:íÖ[zòk—\J¹]ð; tˆ?ös‚ª¡Š¾¸ŽUýÌÖŠ‚ÚÍÆÈáý$Îõç›39;ñŠ&¹G¾ÚT|g;šVYÉü‡=ÌTeùú“7­2N
¾%½ø_úivMã}Ý«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,ݤĤq8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézÕ%œn˜ÔP(¥/Ü÷ÝÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.Ò¨IêE6+]rg	´')÷—C•ü˜žXQ-xß§”ó²‰~õÜŒôÅãö¹'’aNÊ“‹R
!
ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köõä£Ó²§)ë@@ ¾nìK!aí,S4§X¯’"ÏŠ·â˯ŒŸFŠ‘…·'£Döã†X¨¼¨’¶wùoÕoj¾³90’Ýa{`
š‚L/ÔL9I¤Àî`’5UÁœ-з–ݼ‡e{®/xQÉíez„_ü©ñŽÁ¯ònÓ7<4mt§â‚ø‡«ùøo©nzò¢…CÔÓ§˜A9‘*š6°º©Ÿšõ±'sÅ&ÜlxE•ê+T	Õ¥½¼Skz‘.çÞ¿—ŽŽ8óŒU÷ˆ%ôÖha™†À½öþå誹ȶu¹F
~ž@Ó[Ï¥ü„ÅÞLžïnsIz-Åqµž£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"TÒ1UsH÷’ê-œ~^+%¡U{pÜÇÓÁðð#YwqÁÁÝ&aPíŒÐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+Þë3ÝGw™sKû¤t4l¾jnŽ£vðEAßúÒ=d-[StjZÚ~Ž›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èð¬ N&F¬CžA­x,6fõÍD_ZêI>ã_׊æ(Ìfù–Fí¸‡Ž'QÑ
©«ò‘’Ô‹=þ|©”ñ€çO{îxJ¼áì_ðuN+á…3s‰0Íj?oÕ jœO¸Þ³û*›
¤·‹ºéˆ2]ãîÜZ¾ dœË+_È?xD9\ò¥WT"ܱeu³ÙWKXÂý•­‘aþþøC>ÛOSŒŒzê×x’ï‹'H0%ÕÜ/š
~È 7W
g§Ðà·Uxk¬®WB=ßp:6à°øhÝn?9GŒ$9%j•èÓÀJšâ¾êtnÐ[ê¼Ý(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Õ´)y x¬eúŠ+,ætÐ;c"ì[ÂÍd4¢iåÌê˜mÍäÂ35÷D½cFºé5­AÁ×ÍÞHŠªÒ%DQtD!Ü|Ää¦Å=¯„“ÞNÝ”#¶×0zþ#é°qЦ¨õ-/Þ/ÍâhªrC©~6á‹ìÙØ~;ÙÝG5ÖºF¡ Mþƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ýì²òg6¸ÊåÑJV-L›t£8õ<\Ï]…p„_ú¬ªÄ¬òoì•ãsË‚&,yŠºxÂÚÏVFº	—Gõ°·Í¼/»Ö9X¸Ñã’hî%¶kšõìÒ·®ž…ÌÎ?R+‹’Ž3y‰ô¾†ðô5Ö;ŽºªÂ)Ëày‹¨û0\æA®ïã³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚þŠãSÊIÞ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº|æ½
•§åšŸ\£û8ÒŠ¢AöÁ+}÷h³¤Å®ôPnÕ¹ç[²|2}u^c(hÅà>¡Hý\ÄI-u¯fïf[`¸9–Ç£x«úãUCαwÅ6z5tz0#KÞÅiÖ²¹–Ñ÷x̯õ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv
endstream
endobj
112 0 obj
<<
/Length1 1398
/Length2 5888
/Length3 0
/Length 6843      
/Filter /FlateDecode
>>
stream
xÚuTÓýû6("LAB¥a”Ò0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘þ3žßó~ï{Îûž³}?÷}Ýõ¹¯ë;NV=C~E(Ú¦ŠFáøABÒÀûÚÚê a ˆ€0€“Ó‰³‡ýmp>„a°H4Jú!îc``Þ¦ÆáÚhPÃÙ‚Ä¥AÒBB@a!!©¿hŒ4Pì‚„µ€hà¼vtÇ á¾Îß@.7$%%Á÷+¨èà !`PŒCÀð!`{ !‚„áÜÿ•‚KÃ9J
ººº
€°h\Ž›èŠÄ!€0,ノÔ;ÀþŒ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?—	€þ“îOôÏDHÔ¯`0‚vp£Ü‘(8Ðiêªj	àÜp|@0
ú¶Ç¢ññ`0ÒlƒüjTUÔ‚ñþ™Á qX,Òþ猂?Óà¯Y½vp€¡pXÀÏþ”‘ïî‚–û…vEyþ}²E¢ ¶?Ç€:;
£NÎ0uå?¼	ð
ÃÅ„$%D$Å0' Ì
‚üYÀÈÝöË	úiÆÏàíéˆvÚâÇ€y#maø€'ìâ0Î0oÏÿíø÷	¡Hhƒ#Q€²ãÍ0Ûßgüþ1H7 ¹ž~  ÐÏÏž,ñƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ý€žü"  ¿°˜$$,”À?xÿ;ù§¡bÕQ¶h|Äï~ñõwÏ.HÀõG!ÜÀ'ÓAã©rýÃt!1!þôÿÍ÷_!ÿ7šÿÌòÿdúw¤êloÿËÏõðøÁH{÷?í›x,"Ö ™˜ù™-þÌ*;­jàÛ\?Ò3Hs4~e¶gÁþZkÿ®4v/DiÑžÏÓІávI¯ fü&Y°êìwT<®¡kGõj DY·ŒŽ¼½¤æ icäàx¬Gë_í+€Æ¦êmý1ð–Çg‹êjà0•ý“®DÜxQÁé™t_‰Ä¬TÜÕ¸ø8š¹­(/A«ZùØ(iFÚ5’,]è÷¥µ=	'Åu%÷å/Ë&5ƒýd¶³·®UyôãŸ6÷·÷Fš¯O–l 2:Tµ-_ò£®ÏÈë¤ë¡ÍÜ›Ô7¿Ç"ªBªÕPpgítž<¼xGBüÖ¹½óše®RïI¦GЕn¾l“³x%lÎ_lò¨q©
Õ‡_ëYoõ›Öz.±ZÁ½Ê\f@žþn"1”åïb+;²4I—jæ!#Ó]	.¥te&Ú<°Ž°…€Ù2š?Ä‹B¬\éI¤Tj°À#•Æëý$ã>å—š74U[¿Ü\ݦRO”iƒÍŒ%ÈæZžz‰¿ZT9uŽçª+è^®Br«4)ŠO†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F
˜ÝÙfˆ™è}ž‹d€ó?ãì÷–ôñfµ|ª/s/Žs¬ÕU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iXŒÐRìR’l%ªux1dûä"í%q‘Mê’†ý|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊñêTLù‰ý;„ÆÓã’ß®Q±ðV·z<ŽàìDô,2¶NÙ|¸ÉNóÕèŠs=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú?ɅŶÕÎSp.—‚wn•CÒe`aßP³èÀJÉ^!M$´ŽS£Í|{º¿Ø1‡§K‘‡‘šügã ÝÇwY2³\ Ð=ù¦ïÌ€|…Ç0³Be›¬éý˜µ©€= £~BFǤY
œ0GF·¤¾BÌÑŸÇÞÖÅ–LUTÁ}N^4š\aAT|ÕÈìå~ÌüÊ“4¥0í¨l©3ôЗñN©eì‘
Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–Þ_`Dyé²…]søôp¥'µJùú„⻌“žUf²ÝÜÃÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ã`#ÞqÙNOMUyI‘+PNqÅÉúÇa­hNî23µAšÔÙg÷cß­Û]ë£'õ>)ÁÒ§:¬MúñžsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZŽ$nþ‰þDð	‰N³Ø=ó¡^Ç$céUßEƒ×^q›ºí6ÆŽŠ]ŸÞ÷½æ¥üï9k-ï!ú›>i²V´@‹ÂÛ’¿˜ôUŸ9](Wõ‰„ÄRÓ(o’|@"Δ¿‘ïèùíŠ9KË̼kî7×¾ìLƒË8Õ>×ða<“Pb9^{ÞÔT³s®çé^Å  VWs[í1ÍM£‹MöÝÜØ½|‡¨:ìšÇä`Î @n]êz”(¤Î8¯"u¡ÝɃî:˜L7HkÛÐ1WÎ^V¡¥÷™aó’X	¼BÖ¼eÙØ3ňè¿Ð’Sº(âT:U‡§O™>y“²ŠÈçi0Bê†Ú
OEg½K×ÉTÍSÑ$ù<î«
.Žá~‘ºuséè©%UcíñƒœÀÝ…1UѵÎú½âï_ˆ® tâJŽ,j‹Û]Íðä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Ð
øÞgëa‚•ýI¹´òÖ	÷ã7r×0—oˆÜ¸eÁaÑA›5ÒÓYyP£±Aä}) ~ÃiîªÂÃw6ésÏÔÑÜ|_+Ôç3„<’||/Zý.Ïô‰!3ÆÉÁºt‡d#Ìd=Î?ÜpKTXXã-¿¶ìG5ªLº7vÊp©*rPéÙ©™˜èNž«¶Yñ²┪ůªjvONF)ž÷Ò_çpù!*&|UÓûÍïa\à¢[QV
oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúšB=t+bÅ­ƒ…·ÁHÜv¢ÄDýfýhc_,!B©ï¢«ÍÿÕíß=»eê>Ðd«j?ó…ñ¹žnW˜É»\¢–ZéýñKk¨’"žˆ¬°gÊ%±wõf[0Ûõ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f´m-‹8Rè
JÚ´¥„ÍÆR3áüÃàìDØö€òÉøb¥[.êÓØÊ–£E?h‹ŠkoA€Xc\²òfVÅò¢Ë^ð,ÆæîZtm^q¥MY´‘{¬ç±¨|#—òÜÞ
$ëÇø ƒâ*ˆœß­½SR3èa¹Ý20šOûšÆh£ã{n7°}ØñéѨç†ÙD$ÁŠq$‹ŸôÝ)âÔ‚£²ñ;G/òï9
ŒÆìRÚ»^Êóèì ½ÿ*öá„}<¿9Þë[f¿sL«Â^`-iw§mf—Ù,'<@ÞàÑ{ŠÔñô+ì‘»ßVùvåòÔFÉ,(Å*Cd¬gÝ),¨¥V¤cŠWÛö¶8>öòSö)ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—òê
9æžß7øòc¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ÃzëŒCvèÕMNŸ	êa€úèá¿À ny@‘ŠçÂêØ±í>—=³{¸ð†râžÃ›Á	¡­	i¸P·½èJ«6F[ëüÂZöºÕ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä	.úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5Ì3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“ÁÌ@ëjêàˆ@IÙï«Öü:Åörg½áù/®,ßOx˜ˆÖÊ×éÓM«ìøx™ó1A@лó8Õœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„
peMÑÐ2Ø48#ò¸¢d6­°c-6RÌõ˜*þ¾Çû‘RŸ%i§sÕ‰G«<,ÏLÁ/ìjƒòQšêñ–&Õ°.šÃÌB?vFÖ5‰¼l±¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aÃ9ºÚ,Jh¥~±û$Æã×ëÚ3^Õë¡ÈÜßhÖ§’}ÐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaÕ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlÝ?¿TÊÏì"Q\]”|!¢hΖ·‹kAøÒÃßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7TÌ¿xùEǾ§6tk@Ôˆ½1:cèm$i¤9M”ýªU}íÖ-„ëù@Ù3·§ò?ØôÔnꦨx¹{¼ÐìWÊ8M ÒßäHŒ4›õ,ØØë
¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…þÝ-òég”ÈB(V½6‰nóŠþe›-ã1¥ÜNþ›¸LØ{c#‚°lcþñ^®Ëö
ŸoÓg„e¼Õ®~ÄЙ;Ødº<Ü©þfép/#°œy=Î܇Krþɤe¾#âc¤MZ€_Ò)Gb‰NrZâxÅYÒr@zNMÆ_“„LØõ€Ò*»o\¾/i‘PaT+L,¯ióªN—Uuz6‘~‚ì,×›X_·*ÛYU÷-\&,ÚøX9u{Ջ䘌½YtÍað)¶­L|“‰@!ÚÖv3Ã~¿4¦Y];Ó-²=×TLÖÚ¿	È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´ð*ò®Ë¶‘A·’§ç[‚B=ǯ$£Ú
AOÚÉNŒ›wew\r¾m_v?ÙÂ=ÌØðyyUà?3oÒ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë 	ñÔ“NïÐp)},ƒì¸…šÊÁóÓUãŽG—ö߃N£i£¤ßN3õêT–—­WŒ$è]5˜Yjçc¥¶ÃiójØ|ahZ—蟅«Â9l핯ô¿ÞH&n&Hó
}óâMx“ÀõHzÿòRk•Ú^i>çp?³Œ¨þšqÿu	ÒÆy*~=‹£ó/íýUØåÑ»ÃÊ2_‡öRÁ•ÎÅ˘a‚üGì쬶MûijßF‹6/OnKÌ?}"	Q ô·§|NÇeiG4í”OÙ¾AòS¡UxtI^¶5fhÙ"ªs7ž’à‚“—*=«|öfJAȸJ(ì/BOrg h
³©5ñžàÊ5ÉŒ®jÞ„áá‰ÙÂÚîµI>Óí…ëeõÍ,¾ôåÞ<¼60å)_¡¯aUì›.ŸK/èÅv=ßPÉŒ›Xõ1,4§Â¸2zß3>o«…¥Š©$@‡*~°ÖKù7}2¡SxœPé8êý‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_ÌgòºyÁ$îŠYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€ð	S^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à׊	;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹ÆjŠg¹¥âǼ`×ÌœYß’Ä9ÈeÊñг!¥å­1‘˜«‹¥7 ªÙ“xóõA?öPÅüU¥+øÙ‰§ùD˜vì/Gù¬¼ˆ?ß°?ƒ_¤jƒ_šìœ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDõ‰‘3mc*	Ÿ&|T²-Hyt(uý³1½‘
”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}nãôgyá˜dùÕôjÓÍDLK~â«dâKô$ߘ¬œÝÝ™P×Ì+˜sX¾ÌIÓ·LÉæ®|þØöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l
vÚ­‹ç„^3Ç}<5ï˲ï¦Ï
 m!	+*Ú|i#y4Ì´Ü~›RP×y'щË$ðìÙ1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥ŽÇ9E'	—ÏúBJW%ej¾ä;™Í	C/‚(__‚‘xÕìîŸÈtEÐo­¦«i´õm’j¿z(ЉÊR·½°r‰}2×ò“éêùÀ&md›‚Eè/½dÃÿÃQ <Öê/=ä&|ˆÂ¾kï xpímTëýX²ORcÑòÕ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖŠ›»n]^{¦›Â	¥=ÃTd~@Ý $1Ë™jRÅ)\u›.·8¶Qëk—kÉóÆÎÜË'¥*ESÛÝ#È\®W›	Á”Ï{îôb™ê¸‡‡.Ž4+	&±›ï6wójóë>
stream
xÚŒùP\‰ÚŠâ.ÁwwIpww§±@ãî4@‚CpÜÝ	î.ÁÝÝnÏÌ9'™ÿ½ª{‹*èõÉú|ﮂš\EYÔÂÁ(årefgaˆ+ª±³ØØ8YØØ8¨©5l\í€ÿ#Qk]l@ˆ;M]Á2	SW°¢ çf`ç°ó°ó
°±8ØØøÿkèà,0u·±(²ä@@$jqG/g+kWp˜ÿ~ЙÓØùùy™þvˆÚmÌMAESWk =8¢¹©@ÝÁÜèêõ/
:!kWWGVVS{g«wôLWk€Ðèì´üU0@ÉÔøOe,HÔ
k—äê–®¦Î@X`gc¹€=Ü@@g88@]V ìýc¬ðà?½°³°ÿî?ÞÙ€þv657w°w4yÙ€¬–6v@€²”‹«§+Àdñ—¡©‹ØßÔÝÔÆÎÔlðwæ¦)QU€)¸Àÿ”çbîlãèêÂâbc÷W‰¬Ñ€»,	²w°·‚\]þÊOÂÆhn»ë?“}rðùüXÚ€,,ÿ*ÂÂÍ‘Udã䔕ø	X„ô[ftp³±±ñòs€N §¹5ë_ô^ŽÀ¿•ì‰Áøù8:8,ÁEýl,à?H>.¦î@€«³ÐÏçOÅ¿;;ÀÂÆÜ`´²!ýf‹–ÿ`ððm<úlàÝc°ýõó¿O†àõ²pÙyý6ÿ{¾¬º’²zº¢ŒÿTü?˜˜ƒ'À‡™‹
ÀÌÁÍ`ÿkÉxÁüþM£bjóŸ4þð•Y:øÿÉܦÿfìþŸ ûÏqÐþÍ¥äÞZ €î÷’°q³™ƒ±ÿ^õ¿]þÿmø_,ÿoKþ’r³³û[M÷·þÿGmjocçõðÒº¹‚@Ñ| ÿkª
üçh6nöÿW+ëj
>Q•ÝÿÚhã"eã	´P±q5·þg[þ‘kþuev6  Šƒ‹Í_3x4ÿG>-ó÷àG‡x%ÿVÁ—óï’ s‹¿NŒƒ›`êìlê…2q|ØÁ·hôü{‰¬, W°\žÀÒÁ鯉òpXEÿýƒx¬b¿/€Uü7â°JüFüVÉÿ!^6«ÔoÄ`•þ8¬²¿€Uî7G—ÿÀñ#p<¥ßOùˆOå7â°ªýFàxê¿8žÆoާù«ÕúÀѵ#ptß]÷ˆliú-Í~#°¥ùÿ7Xgî`î%\\Iìíûÿ5uV‹? ¸{ÀßàÿY¹ÿp€)€ö¦.ÖÈÀEƒwã_26p[,C0­åð/¥Íï0œA÷?âþ¥wpsþƒlbõgñ;¸±Ö^ŽÖ@Ð`™Í\‰íÜÄ÷@p§ìþ€à6Úÿ‘;¸E¿™¹Á® ðuü¡çð;°³Ã¿Ôàb«ÁdŽà—Èhù»­\ìÿ‘:ÿ«Û\à¬Á)‡?&~å³:ýž8ØÂÉÍÁø/:NþÿHÿMÇÎnÛMe÷Èåwa`' ½Í¿W†û/ û­å“¸€_ÿKÜ»
ŸœÕï°àç.««µ3ðù‚›àêáð‡˜Ã힇ûœ™ÇËööü‚é½~gvõ:ÿÃý¯‡•¹›3¸Á®¿NÀÛú_ü÷— ÐhŽ´0ë`.j[Úr÷C”ȃy{ôíõ¶v2=³Ï‚s«ÛüWúŠôà5çѯƒ]o–7%é®EÉž}kàÛT›}ŸŒãÔ&¶›‘æÇqûÆòE«{I‰™5Dv|Ÿ|µ‚ÞC7B¶ËQg9¹ñ¡©ä`ÝyôH{V÷–,
˜ÝVÝ©à‘G~*™dŽÖŒ2*œ¦Î6˘Á§€se&A`À<óDŸ¾¾™Âü6öJ&Ljäw͙Îs?ã½RªÁáÒA@E ‡O}9ØnÈaâî,ßó¿²Ú3¥¶õiŒ9;LÃ×¥W³ö¤³³<kNI“ôtÙi’Ÿ²WciU«€µÓ!%¬gëe¸,Å^d
ñ¿¸çÏû©ò¹d¥»·çÊ#‚½lïùsYN´Ê4›?s窒oE2ìÕ
ˆ…„õðßXìýºùþ]ÌgßAëþ¬Ìã£Ø`̆ohö§6µÀo.Ê)Ò¢‘P·›3݈f”Çbîäöõ±èÚo6G:
ž<˜Jd%¨ió{å÷…Â}ç%ò»	~Šà~º®ä¨jU¾£ƒ@I³C¾³MiÜ:X¯uþB(F¤®q—Cé½Ñ=79²Iþsb“ÊǮ̠«§ È•mGC>·˜z¹ö–.*âÅ2¢aUÓC´f‘¸2mº¸v40#F	ßÊɆýnôHWL›¾ªÏˆý:›iûË;Cä,¶ám¹‹AÕ*öµPØ÷·ºTkÂ5Çwžx¾~›ô”ÎVõ'J ز© žý’I>7¤ÀW©Ÿ™Šqµ™@Oe¦Œ`¾‡‰±)4C‹=P›x®†¥Â)™MÊ,P‰A‹±þ2.Š&‡^Á»ÐS%.7
!çZAÓíÃ÷™§‰2Hk¼{¼ãpfVf†(á2’µxMjÎʃBŠûK¬Ç¹úG*ßŠ× U¡ÑÝÑ$dä	ÿ:¡Rv¶b_„”W¡æ}ûÓšúûùôÕAë³Õ¬Ðµ²ý@„ÚÚ?Ò„	L„/yq‘‡³`õ¿¶]òyªq±Ï\¾u»“XDGäIilðs–wcßç|LÕ‡€µIÅ­‘q-«š˜ò»ñÂ'}ñ7'¥6Xs:
4hjÚáRær'×O3¾•mÊùqZ]ñ„Ó·cIȶFòýBQî^ñ›.[ép¬»Ïþ—Yƒ»n”ó7§ÁT
N‚··Ð_24&uåY–åñé;™ð¤‡ä}L?Šë‰Ig¶"‘’x-Ñ¡EÈÓ~èæPf›ÒJ*ç‘U¡¢²{Ü(m`NÀ[×ïÀ?œŽFÞõ"ÈÏÑpP[}1«ð¿•&HarsðW,åèÁ÷^u‹OÉ
ŸæaHmf(@ííBý>ñÊß>Z´&Ü“+ÿלÿçØí†Á™Õ7×2áâ͘±ž«GœÆ¡GkÂNU–…’xCZÞè¢òÍì˜H¾6‡'ÙŸ¹‚Ådù&‘áÿ»kÔ€Ø[‘Ê«‡cr¶øNÝlï{ªãûñÛþ@êž²ö‰AÕ
C‡’î5@¹ñ³°¬õOt·½l1û)8µy‡xŒÎ
<º-cí3(3Ñ—y_Edc¬Ù©$mŒµâ¸VT¯-ŽWžÀïY•F­·¦®™d"Êì‡Ù¬Rçd_ê8½H)S6ÍÑçÆ¥{õžWô¡íK_›¼Ç¢¤à1íJî¿Stɽ+ÂÌk‰Åj‹ûíjцYVX²!`Ê>
Z-áM 9‚cüãÛvŸÞwvR†’­þhÌŠXEÆ~3ÇÀ‚>+%ÈAeªœ¸{ZZ‚óÙ-#§ÐP1Ë•Y”3×m˜Zøø¾Ï’†u³úöÖàíº…Ôúƒ¼ÔF¶Ùcr\›VPŒUygÆ¢ÙdYô
yÃ^ÉLâÌOƒç{S.Uv¼Ãþ€ïü¿œ´ò
‡óñ.Fïs\,bÒ@hÞqðe¹»y³Ä
™Þ†1g%ÎÈù9%!îJm‘ŠÒ¼üT²
6/4	¢óVD ;/Èp9ÄX)åÚ!yÄíC•‘<åQQü!÷	«“v94»µwºÛs5´£Ú‹ãÛ!49lAò€œTVD›…I7D³LÂ.q$¾þoQ™ü™oœH^,úYž¿V\ÙEÝÊJ2PEÇXô¹rÕç9Ì<¾0š\‹óN”€„øÖÄÃU+Ƚ)ä¤þ[ßy
ò<<	0uI#­pK–,ï%à`3^nL”®½Ý8Û¤#E±«Çš8a7Yæsc¹tc<Ù\ x¸|'xÆà=X3AäÐ\±–å	=À–ìŒ1;@€©Í.å9v2½—´°z±‹®õÔòº®]ĘȠ0¤ôöÇO*tt¿èDÍ ù—r3ß[Äâ,Æÿ‰
Ô +^&ÎþÐãZb!By[Ä1þ^)|:RþdÖ”`nÇÁt‚]Ôò|”ÒeD¤àúF¾ÅKi×ã1d|Ù›§5†–¡¾‚쯛½X¡X%Ð.üBµÒ±¨â’&aZû9Öë­ƒ=Ô8ª	£Rù*­=¿&0B¨J>·RLpr¶ÜªðÏñéE»ð‡CÒšl–‘¢9/jß(}É?p™ºîÿRO&g‚’nD¢½FÃÁåYlç¼C5Í¡}ŠUå±Öw¤Ìoöš»M¡\ð
khD»›A
Óp…µÀÄ«$JµñãàÕ¯]DR%Ë6¸çÑ{FJ€ã\E“¼êÔÕJMò¼±Œj)³GúÎùiOº×½XǺN@¿–Êyb”üÈÛyÝp•‡+¤Q)HMÉœ£Ë—¨³)ùŽt™(ÚªÚwzª"£è²ë®Ô¹[¯‰éúEô¼=4mOYÖ£ ”J‚}]Úé%Ó®:îsZç€éµV1è+´œB6.2]¢RÕnÖÏñT¤²Z%y©Úµ¥3£÷if«] Üc…Š\C„%Ó<ÍlÈÆ^Ÿ§˜î¿NÖ–›vr¸®Ø“©°œíE_O\¾bwõ]^€ôÖ Ršßß¹\Ÿ9¤a›‰øÄyÍ"#‹‹“Eúà™#°hèÕ’î°á×Íì\T’-¨˜'n*F§Óh„Ûa0Ðí°P|ýÓjøöX{ë-Gû½½ŠÜCÈ6Œ«Ä¼Ë‡Â¿}¸âvŸnA€ƒ:¸l¹žïÖ4Í%ç#˜É³GJ\
Ç·òX ‡GB¸ãÝ–BÔñR7ô?û•Rvoç 6»_š€H–˜áNÎv¿W!õ%eeíá¤XrÍTÿc°åŠ'W LXŽï¼öSà’4é,ö],
N±+î…˧»
Š©ïúpw쉣)ÇæÜJwü%Žï8xåšÅž/k]X¡O"ê¬è®Š=qT™Ð\ßé—ÿâIvém S£â7äÁ¦ùø`ïUNoSKá>¸oÛu£]©Ð£&fD¢&fj×~èYmœ5§›!PÅ­XX³¶s²„}Ó\†^KPôÈj›¶Þ»Mî·jòåäP‚F›8p dkVU§‘
Nf­p}ØU6¯¬1``†eA—ø\d„óÝ9ññÕh9¨µMùiÓUT	–Y”™$k¼Škd¶d…_량Û+mBúcü¸H^,|õŒØS×¹LV×€ôîËž]»ªcÜÂï9Sôê2îkó/X£áÕ	hQŒ¯¶\aä*mE°=¿W‡HÒ±I	Ž6á,©:AÅ÷y¯AÛx–ùF0Sè³h~Ë-ÈÕNAœ=A§À=B˜„ä7×ã4™$¼9îÍ.®ÎØAœ«ÂÞíO
„RçAæü.—¨¸8úÕŽî|ª–
´	8¨ºÍjï¨Ä-Ï©ýŒð¥ï^š_5I,[×kœªàr‹ÖôkïíÙí¾*‚ÃÖLÿLÔýztqO>
)‹0­»]4õ@žzÏ<_²¢áˆô1í­ØÂ°¬!Q :û-€òrª	ÃmX_õƒ‚u‰.óv°¿ºó‹—)7@QEWºxf\”&šØ¦xO72L„;0~em‚Žé.=îrFwHý „ŒmxΛMgœ`ÏåD¤–®w‹ã³Ùcï“Êízi+(…vS\?Ó[NlIy§™Ô÷×çlÊšCˆ¨ËÐ$
½Â¶ÄŸÀÝA|XARÁÄ›Z•%œ½—¦e¢ä^^-›çSŒØ™æä¹žg°‰ÁfcŠ/³Ÿ6X-ý8×ÓôoRH'b”íÒZ*ºLÀO“éhk>û=ÝÔÖ7èöÔF!NÏQÛŽô“Ë´F*˼"ŽÄß×E
î…W^Äý’kpÏF«
2\¦D¢Z€/A_¢·âN
UÇ&i>þù£ó\$¡?1Õ´´&;E4À<âþƒ6d"ÝE,œ3D}!å’ÉÜ8H×ÇvÉ„Ó×ʤܤ‰VÖ.ë9`½’|»æ)ûzJ¥kèÈçKœdEòéÛQGÓ=#ä yëCå÷Ð&õ'i›Žw(e|n^ËTΉ+—_Ý,ý̺¹;½üÉŸWg2ˆî:ŽÐ4™Ê Û\³èwld.²Ú”Ãz–èÊÊAû$RZm/Nãp¸ïJÝöÖ{˜¥>nœ÷x‡d†¥ÉèPÇj»Ïw@¢Ž{oá¯ÿ‹ö¢TÒøÕPÇù¿\çp]¸Å[.þ—yŠ3ô–ÄfsNFdùsåXÈóû5–ôëgwÚÀ~{LÚõÍ.‰æá;¯'2|ÞÜÝëYñê²^ûýZ£º
i7ncé4ø»Úö‚GtWÖ¨iä—õèá_gHë\Ÿ*ÙË@%Þù9Â1îX–Xñ[S‘<õBŠœ*Þ›ÌM6JËßr‡Ëóè?l†Ù’uv:-â´
^q+
ìZÙê¾h8=šÄÔu~³O"q}#½hA
¯–½HuÅ@9d.ùÌ„Mÿ«É´$o°Éú׿þt¡Û+‚ú.>¿|{4ëF3¶>—ê	ŒžîöŒåõ¦³·_ÔÚ,;ˆú!MÜîD }aJÈpf—?îÕ¤ö-ò°fzM<š˜žec FèWŒF¼1™l–ÌÌíò ì„=2%%BÉöÞ±¹P0
ÅÃô³ú±;(ò˜±í×à‰¾sª]Ÿ²
w‰If1 ù UØ	ë{_F~ÂŒ|×°ËwLæÈ¬0A3û}*oò`RSDÝe’˜s²Ò>èR"Üäþ³¹ÏÈàéC<Îì³êÐF‘’™eãRKÛjh¦bôB¡&b‹÷Ä¥ÕÕˆéVÌg·©¬‰¡n,¯•†’Òq¨†¨«›W.aîÏ\E2©#9is©FãN
@‡ªôdÍãK”ÛüøøqÞwGô}y—)2 Ï™PMEe¢¼û>Ô„X9\Ÿ{û¯î]¶ßóËê\Å[æ§O@ÿz{~dÄZ(Б<*L|3Àr°AÞ1ÞMÁ ·¤Î‹Ö±¨KZ@¼{j»„JB3¹ º'‡Âø}çc{c3æ"æÛëD¥ìm*÷*uB
]ŒO”Køå
I¯\£…'»Âic´7G·Ý÷RxZÒ
³LŒ»¸.8¥Ò/yëF¬
ÅN5Ý0ƒ7ÖQ½è¥÷÷z¤¥Þ¡Å®"(œ·@ÌÔ´o{Šó"ïlé…´­M¶[>¾{Ë|õß®kIÈÍø&55é ûMŠ;Gàõiˆì![â?C%çÆQñ„ ˜j‘¿™¢ÓȪG“º}0Ø%|¾5šN€&!„FLAìð=PHô£Ê¸Mó¼ªö>'Óf¨r˜	zR6Äq^’©”Øša/Q7¸ÊÅÁ³¾ÊV~=I'qÖZ
ê"ð4üÑ×òŽþ×é·ÎZÃ@»Œ{hn‡¶7ú»ÙãR‚o˜”hŠh±lŠ#*•T;e/d¦G®ÆÉ:„5ŽEæ¥Nñv•^‘áÕu:WØ*…Jé›­×µgá‚Z¹,¥$ê­c—Xæ«5 èÔa'˜IÃ@~ÏLÈõ”$qÆÅ!¯*n‘u‘£Õ`µÞ]Ó7gœ-“Huó®Ç//ºÜ&±xRþÆižÑ!К™¾‘´:ñµýá¡Ò"èš³oxd‘
ÈRBw—oÞ=	j?B
¾›)àgeóê5 ð™ÇA8åÔ\ôî;tÛ’J·„^È»VY+¢—üü‘=øI3?ýÁƒ¾üÌ
+â'ŽÓ´Àº…-e~cÅ2ÎGkx§~äüôTæF‘x$yhiÞØMŠ2_Õñp¨’‡m€Þ…·‹oX°_nÂL:VD¾@ eÉŒ}Ka—(çiìì™:2GÏ[‚¸Yýj‹úù„'¹tƒåj\Ò2â\ó£EüÀ§{t_¸Ÿ®m¶ì}i¢»Î/8åå/Ãrî]Lòd¾ˆ5ac_µV?NGJ~JS
­Ñ_^ÒìÔ †	^\6g¼¡^¯D‹ªŸlk ³«Nî)<­®ÃIÕ"”JnÚô¼þœg‰Ïs·©‚øð¨Tkm„›øÂCͬJÀkZ"ÃëV1Òý	dÌžøˆŸ|Jw³3³{Í“ë”+
‘ÕCZD>I±Yw3çq¸Ew”ÂúÙ¹±ˆCû´Êï£st:õç‚‘)ÈÖë	ŸÚ&	ÑJr]Ëô9rÑ™F?ˆW$xw˜-þàbþÅÓº‡„ž­¹»Ú0~ë‚#sFžå¢HÜXØ%vX"÷¤¬XãeC­áöÓCÆ`XäûxV§ëÐèf3<îs´™]ç‘Q2ZžCüÚY&r˜Žiæ0ä)ÂHÙ%8T¡YåþRFm!Ù½9ˆ§eœÞFSÑSIÆ4€_]&æšlúÔ{v
^©‡Hûë{m®yÔÍ)mT‚enYçe’‡kÏ«‘-}Ãwr¿¬ìiÅŸ>0Áúiqu©XÞeЧ^ôFoמ}ÏNb§a‹È¡Pùšê
™1³ü	áGLp0©ÁÕ9e%£	ýAJHd¾Ã'ï€	ÆÉ2‘ÎX?Ïrïw)íÕ¹òª¡ñî7uü™Ò.FœÎh’.49È.ðF²ü‚
âOÝ	ó+ÄßÙt5ì»™Q^¼ê«¯Ì(Tëˆû¡6®+‡Î¿îêë¹Sbuû7Òl-Q\jZ,«^ÉŸR6()‘6q):ÞÙÃ8Ât6Oˆ†b”êQâÂ7;H+Ò}öJ`Ív‡ZÚ¦.¹MéoR%|b×$à‹jKªžÌpô*±
H=Æâs±¥Êw#J†8½ñK /º±ù²A¾7®:| s-xöœ¤J4=ÑRžlú¨™‘B	üŽg£ü¿Xš+¶\›Ë
ÔÔC•"­I‘xP}øØlœt&Kµ7J©‰e[„z»Ö‡q |÷Z{XK¥ì–R·ötԛʥÏ=äuóíšu…í•ÊYXÂ(¼SŠÓT)’‚Hé}öÈ›3
î–ëDÓ¢…á|uõÁ2g§²‘½OÛ߯dÌÂÃ=¼™·­í«Žº©·
ÁWFOd”—šŽWÝå“z?wÅ{¶‚gc¾k4¹§ÖBʽP6´âNÎÀ««µMs1ô&Ùô&Cå]d¡z»RŠÙ¡»#q|s§³íN¯Ã!
NÒFK-ÛkaËÆ4ò}³˜`c
õ–é²™@1œN3¿ŸûxÐm´'ÈÍr ’[Â-@^S„á8†oñ>gÔÌߊr‘˜ð,•oÁAðõ?øxÊÑ&œ¼MhlFj‘‰»—rPÿ„ÿ³r²ÊH(DÙÕ,òf"æ{.iä4™jñØ:&ª‚"%>XPÑt5ôö‹ènÒs×…1i<.+'ºE„˜ïQÓ³*¥1,š\ï`ž$n“Õ%#Ú.!·ì qöly;89—­€$œò7hSÕìÅ[¥’…sŸ÷÷›^2IÊ”ÒÝ^I£ v5ˆ˜yéŸËzé$ñmqØÚnmIû ±¬—çrʰȠÚï¾ëë¥)I|ߊۉšýjþzðMzâÖÛõ¸;[³W‰'¢öŒ?Gyü’XŸvébÜäöú{öfŽç·@téÖNnto¯´°h2á·Úÿ}ßžÈn–ráXg	~4§~·«Lj/SPGóº‹ôfÈü°WañÃußÜÆ»Ô¶	-ÿÂþD]¸«Q¡úIf¬Mq:ЏUÑÀéaçè†Usá遼˜ÙÈä`³INÚ~ˆd£Tƒ- Ï«¥ñs¢,Km÷É=Û×sŒúu¿I£Vý¨Þ®ÚÌ=ÇÙ–Ç‚kjäÒÇrò@U“o³»þºªØƒs©þóíìÅÐ#Z†0¯V½¶«Æ—÷K,	¯N­]°Å=ãi©¶É(ÊŸtâ=‘µP½-®(°·Åiê=eò¯²ù ¤—gü Ø˜bZ~ibÂCg»(ð`{R‹³†ÉUcßIé’–ÚÊ{ÖV¨gu…ÿírƒ+QõФ&®3ÿëO§øgŽ
$‚y—±–«ð;ÑÕX»qBÊdi¸Ó‡G´­¦|R_ïß:Gáâ…<_uȑޘZ±ï>6}⛤)\W‡Õft”1z#1ß4åýãPêʇMXþ-Ï`OÑ»Â
_¶æëÐÈTñeDoYC<þÎಈêš(åç·mz¡ü®ËL‚!«>Ÿ8{ö
GQitD0†s4!øqPk¹³«®â5wXÕe÷´ñü¾äohu¸ú怂“!FåÊ’o~Ž<. ›2köo[gËZÝ/ÒWÎAëÖÜi?=nÿÈ?õ˜EôŠ_O•&ÂÝhà›£§áÕµá:‘‰ª1»I¢bRn)`{*¤F%‰ºmìn18o2JûkÖ™ðïØðDJo¿ÊÏ…^ëÑ~u›KÆsI«1¦àÁÛ>Â;Ù&$X|¬>Ù´Ú€sÎf]©Õ´éÍ**ë¤$âàJáÁªfFn¥ÿ³Á{q|yÖ<tõ:g爎í"v¼ø‡<©.·Gj4QÒ¶[Gq)žtƒ›zA~uTÛ§k\/*ÌÖXÿtd“ÓâoÐÚ“E‚G¬‚ã?q€0˜ì£œ>uþ‘û+óÓczÍpIb(.v²ï
ŸRª¿DiPbÇ?6e&RÕ´,3íI¡}ì/Âåã7è#+ÐA‚vbL¥m¥0ÇåšÄmÖ{’|]œ/ÓKB°œÐ°U.Ðß#!óùî.2P¯žöÆP6ÿþ÷v%!i—¦ÝCÉ9¡áÁžw–$gÙä–KU±K†óCÊÊöºù36ôƒJÌ©îŽðÛªù‘†Ë†‘¼¾
óÚ¢ºI³«„å’êÜQR@^æ¸%sÛŒwà “ÉÇg·î‹ZœxC•–F"Л‰éÑNyB}Sä¢Ì©tѯ…¢¥ vÖâh&‰£,2?z9ְ슶«"~@>n…ç»fZãwßJì¹ñDÄq¯c”_Êžu«ã(‘_„y²4„>OÂ{dÿ@ÔFam~˜Ž<•ʘ
ïàÉP~xcgžFùìMᨥ赒lV¨×gèQ’qún _vp>î)ÄQªêÉ0Öo6#ýøçûÄD—™Œcoò)ßP	wïÕ„ÏVø?ÔêxÍ#¸ 	†A'”ë­ yÕádu8Û€žëd§úÏ”€©‰ÁX¨TŒL]ˆ¡M
ÜL‡ÕÕ|”R†r½7MUoa`B¢)§0&bzÆ'êj›”ÍÚufàtÞ“´C¸ÄRiá!˜ºÞ1¿‰©z8¤jMºsÒF¿Â«&ÏÊ@ß|’ÇH†œ^£óWT=©+ÒÛ³ŽÚ‡öžùb‰kX_?I¯‚BS¾Ëv­ÍM]CSÒÛ·œá0ÙËN·^bþC“±KïÚñçƒ;ãÞ¥;¥ê—­¦ª®]Ì”›àêú=[øÙpäy„äxm-‹oZlž¯1Lá“s5¹/=jE+O‘gº†Ñan«M#ý[{ÎŒý¡ï*P±³Xc|lÂlNÁ%n®‰BÇá³ø¦ß*ïòR¬j<ŒŽåдÃîÕ^k¬J݇’(Î×ÃDŠVZA˜ÄvÆÁ/?ÏÈË”lä>$B\õ…øõ걋˓_½´ðzT4ÿ*ÿ)›)Èa±QßãP¨Ö~"õ!`¾ûvb¸à‹È]ÿíýàÊcßèózZJ„Äyv;lƒ¦Gm=æÕ 3ìBsJé×iDƒ—_éŠ!šwqéGe§>v7ÆoZv*‚°±ÔĤ—tÄœvð[ÜûB âvúÀÀ0£zžCáºØ:TMY6w1óægÑK%1Ÿ=‡"YLNESÁË~bâ¼²Ôùï7,¦irØm‘utš™‘
g þëÔD³E7"íÔ9ûûáÒÏ¥ÝQüÑq¶óÂ9°aVg/²´Àôþ·¾–œ¼­„Ÿ°ô)O®¯Èu¨=åÓ¼‰’†>ßsë^„¯ã”Èw
ÎìÞÀ³{¶7](ÙÃWn݉ÃDÊ>rÆsìÂß:ƒ½ÁN/§v³
WuÓT:¡¾)r˜ÕET3ÿˤ)‘BH<·›•fË^™	HÛkUð…þà-é”{-À4µ xÊŽn
ÈÛÕ´•²Ê"‘UØ,£@Óÿ¹NÄ}|Ä羂Ì×}‡%^2þЙ6fástÏëûµ8ǯ÷Ž.ÀQ]{~h€g[âk	¦Í¨PIABcŠ^ì¿ôLšqŸ¨«R—þ׈]„ñ¦áe%jJEŠâ9˜1¤Éq`¿B$÷l
DõBn=¥zbòvŸ®Mn7Dð®ÑXp”÷sñùµzê·âkÌÍ×µÀLJ$¼BÑŸ©Ø—Œ’w²Áõt¹°:&ȸ\éˆF“Ïh*NGtÁZ¸ü­>s%d)–…r,Ì„?Ÿaƽ «úPĵ<Å6MgQà¦×žYë‰mà×.6ô¹«%ðFLU&zpÈÛ”øaeä<2ßD¾¶}í~Xr÷yÍtÁtœFvžq	œÆ‡üöWæÈ·­‘¯”¾U·×4„EzÏ
Híå¿þðßÕ´,é^ICRg„vïÑÚí‡ÀOj—&mIQÞÐçKŽ˜@áV“àRcÎkg{0—á~í-(b‰Y~·ÜÕ¥Þ-xyIíïÎwj®­¦Ÿ‹Ú­çUjKëöþ§Ã[ÝS‚_¥0]|”/Cmgƒ©£³pÃÎp8çîdÔ<¹üRÉ_yJÊ’ð¬ÞI$
}H~ËE‚×øySeixóËL
&E=ôiU@nùk]ð»L¢‹ñvùõe‡b¼ÞÉ'ŸŸ•vYZ’Àû¯ÙJÏc½]|YC7šOŒè’õÌ•Bj¤][€Ý ÃúdI_‡o!Aé)ÝÊ%óð®`К¡S€hz\bÀAjå+,§Dh sƒ«¤¨«Çµ@VŒ.	w1,¦¨†>1Açõ ÛOy#—‡wAÜbx
öý'8‰o-‰b‰>£
èŒU|§Å)AÌz¶àøRN…ž	]Æ›ýêäWªr~&ÚÍ¿¿{,qÏT[jÔcJ°´`Ò«¨CTÿµÔÅ]
VjOʵº¸•Å,6Õò~ÖX˜eÅ¡÷	
÷˜°	‘º•"}b)’ÉAì(ÒŒ‡Ü|FñöÊSµÌÐ5ÔÉáyW
øáXlÁâAmê4ѽžr;»Ån4量HÕT©càm-UÓî&^Ð}?á‚¢ÓTæ CUýšÖëµ@~ã§ôÁÔ¦GÿE8ÑF
/¬ÇPíœÁe“äXÉGE* K'‰F]kÞVéðHëí€RÑÂÞd»¡ìÂÝßâ0½ËúöÛ`dà“*Ö»)¾M¼šù1ÉzŸÛYÅwÉÌŸÑj5q8™xým†w‡*%x&­ehcJâ»ÄÖU—›ì©F,è…”ÔêQ
?lŸc{“ê8¶Ã{©í\Ñ|gwJ¼À²F³O±ô}Sñ…d³ãQ®êuœ	䇄#±¯ïç~R˜Â
ŽÍ5ËÊó…\ùâA„mèß)k(&¾]‰f8Ùl*ì·!T`¹n^*%ëÎpRÖ)ÅäÕÐ̊ˈË4QH`ÕìXáµîð	.7]ƒ˜Ã4žò5nY‘ŒPÕçH²É¾|sGÅz¸Kã4ÄV'å<ɾ¤“ÈÇ8‡Ïæuììg˜¶·½H¹Pm  ÀS×¢07ñ³òKRÌ0Qô»’»Oº‚kòÖ¿+ÓI"JÆøºQrHß³Jh=tqf¨«>„ÙÉ;¿’0CžÚÉî†x1÷‡KsNO—^ãÎ2>ÃÏPhrÏG1—wòYÉ×Öø©;cõ`ÈäÛí‰7mªf8F½¯?¬„=ù,¥ÎgëZÒ×òqgž´?VÛFbËÚ=ÎXä_7UjV2—›ü™\¾1ÄšÁˆÎ#¡ŒüÆàtgG,êf(äå~…äÃ#Çì*Àö2LA\@Cä3ÌgÕü$:P=©©Qœ_¬ÓÊ«ˆ>áXáÿi«ÿä9ç‹uô]·+¿Ï 2N_wµU$qy®7 ì8b`[Aý´Qæ£g¸9ÄL³Üës;=Œ&Æ„,@œ=°g
ê¡I”x§ZÀ_÷ÔXâ6êU¢t¦±Ða…
r&‹‡‡•Mh&Ÿ¤7ú©´6Ÿ«6ùZ‚a³q‡¹Fžˆìb茆­QÁò‹ƒ"öªnIâ)mŸ»šþ‹¬‚xYT/o¬H;V¯QµÄu&e¼¦«I{9ÖõÒ&ó+-Œ‘Õä5EïÁ]®H-æê8KGý|žq„¤¿¦ßyÇÎ3\ÿà‡ fp}Cª5Ń&sG•õ ‡ÏñF+·¢ºªê6)#‹ƒ,OHÅÕíƒR*Q„ûö;-–Ÿ”gq¬ïu›"tSoD'ýùõw»¸õßÜ‹{8—–ë's÷ˆÔ3K ±¢«X-»¥£k¨Ì³j§jš®h‰òPQmo%вž¬Ó̯
‚åªÔ"—­™äìVX¶÷Î+
äŽóP~Ë^hW¢„á9ÖVO¨e­iËô—ñÚ̵†D3$歷ÇóÂzšãôàp†¨œKÈWb%)×^5@V‘¯
k_Uo×Ý]'­C]~ÛŽ~¨I0-™[F“7›/ d½‡ç 8‹ú™Ø´)3,‰g©)…ç±g÷Í&"`?g‹(0¤í–°™À ù ƒf»!}Ópš$éi#>¾ÌÍ'¦íj[DåŠHŸ>ÒJ]RýÊ´0Ì;t´£ýÒ¢-ƒ5ÄéÒº7ð.ï„Dž°Ëžjà#ï׬åVroUÕ.½¤y:‚õ1½[!ù…³úõ*A3‘{áº=£Sïî"‡"U÷§]»ÆÇ÷#9Ÿ?¬gœÎeÉòMú<@ô ;æ=Þ^4ŽšÈp¦gHP^ñqÄJ\¤Û“NqÇZ÷KB/ŠV·Ñ{¨•§ÇÃî·Öµ%eé½Q…¼á6Òak³<èi™¿´¸VÄ~=¢¢ØŸeÛ
gö%^îã“û$¼Ú±›ó1âô“ZÃ’(¬ãšo¶up ¼ð^i0%ÛëãÚ'Dб ùJ4«Ò5Y£úˆÄvpÕÜ£ÿZGN0`!„¶˜¤Í=Iè”äìdõ8kO¬I™Ë}¿^·Ãµ¢'IZ7»™õQzJÃõ„Iu¤È? üe±T˜äÄãG¿ë'Ê×9ÐÞªû3É1Âe
ö
÷«!ÈooÞ\¶®ŽÌŽ¡Ý”jq˜´0¯82ú¢ú3¨Ï‹´-j™±˜GV¯¬q˜VCú8Žš@J,Ä•EËNdÁûj¥¡›ØÆ¥Â%'¾Ü¨¡8Í´¢?–ôÙ«?dÞYR%¿}+iØ×'ÉF³ìJ»”ošë3xÔÌu Ÿ±»§’”v›ÖŸá#l"tEû!kLµÿmLÝEÑ5P™2ǧC’ZåcŽÿ±®2Äýc‘£¨®Í 'èç%î—¥bYògÑÃ&Qžûs6LLŠ[Óûû$vuóÕ`$3û_­Ýó϶¢gagqÚÙ"Ë%Å4UKc•=åéåIs†Ù'#sá3Åñ§æ€_Ú@RZGk9å^¸uT|Å“QoŒ‰Q¥çãÓÝ%Žl+ܱ1Œ{à¢Á–¼eRšÓz&‰lc¬3çÞê%¡à@Œ‹
:·cæftdxä®}nç+lX‰´rX©B/€Ï‰YäŪ2ìmªõ›ußXfâ¬c¤÷~¶7·u‹D)Åhý²Ä•ðu8ƒáy‰H®Ê-Ù.·®Ün‘®(5^°T³Y†§ ¼ÐOçâÓ·ؘ–I€ãp_-»|ºy6æõ†WÃàW’LáôüJà?¡—½ÑÊ=>CxÖcà;ô òæ…ÞÔ]i˜aMOî$Ó“\È¢ˆG‘
„t,´O}³¤Á~’bûÖñ¬gʧq·ò¤3DÜôø%Šeà9‚2œFÖ@ˆ‹ˆŒ*…á¡î÷hóaí©ÒÞPú¡ÏHï!Ã5$ÙŽ¯7Q|ÎÐSc[' Ws%xW8¿ÇdB	ZÊ?†\I*I:YÑ"¼	K¯çþ˜©È±ÖËèüZ.ÍíNü’¾ä
†_õó;£b+v*Hê°*ðF–häcïõL,‘øTËß‘¾ÅŒžº»Ÿò‚©÷m`•³–Ïd²ê~1Æ-°
µì¾mÌ<`a~È›{*-N»èW€‹AûÕúmÏ€à
’*µ3„hDÅFB3¾ø¹E¸LWÈòKf)Œµþ
´,E'»t…¥É¤Õ)Kæ«Éc×f¿›z$TQ~$y¥ÝÊK+¶Â;6[‹g­‹2	|’ÌqŒÒØèõ[¶q H2È£Yxç)ð玭 Ö.Ô>Æ
k ýb¬3¾ý·D‹ªÊD•ñ»Ù7©SÌXòþébÂ	I³ÇW‘ìÁö!šp2fª.%/ÜyD»!ïnõž‹ñÍ>}ÎðU‹ƒë¨„î/=T“'>U[œ¹¢ÀÆXúpž†A‡hÙmÂr žÂÿÖ¨ÙfI‰‚"΄}šOÊ÷&­w‡–¦‹¨éA5àþ7{r_«{c™mãÙ-÷‡+¬Vø¼´Üá€ýmSŸ¤RGø-¿'ø·	q(Úçµê°ŸåáÙóëPp©Ÿò$뼎ٹ}ºÙj|¬–Ë¡kCRé¶=?™â]z­n¸|êkç/ßxKv>BœÅnÌdºå›ðüáÍ<µ#-ÄØ@Ô›æÿ'"Ýè7ò±•c䌫Ü5ÊžÒK‡"¥¯ì"}SÏ'Øc?Çg™{¸žîÊhðA_f÷ˆÈ™$H(• qÇëçD¥]efd‡
0ý¯ÂOÄ™GLëM¼ûg†ZsÓÁ6!ÀµhδToìÜ0_ë[TJ—<%†åæ#ÿ”ŒÜ–Ðg²½^ú zZˆEmÛ19¿”ŸU…îx;dsÞfãëJg–ºç9äI:Tf•yx©Ãⵂž"¯XªõIñò”á„=î¯Iç€r±Y)ß7©Äb%¶WÖÛDd8ÐÀsG]E©¸«%ÓéêÅñ;Ýu6ꢈ"±"ù9…I8ʇž…;
á.w˜Ó€‘£ÎM“⊅º9båvè/2(‰×e=í  <ž#{Z^þ_SÅ
˜Iæ·+ˆ9Ã{)úlˆŒôÐÀ†“íDp%¬¹’]¯•Í>凿bøi‹Nôpβ(P†³{Ÿû«S©_ÇaD›R,!fÁÎ`w‡¯Ö@’ð]Нoø—²âÜŸÛÊ¿NÀBs‘
nÉWà…¦e-hŠŒ6Ã¥£uUe)|ºŠ+w}þ×¼D̉	dnÃæRŠ„Ñ'12KÊXß“dn§wG7¦xQ>Ùl`®Pˆ²“G'
ÆKÔ¢	œï& vEzîÿžÛDòu›—å4Ŷ a-‹LQÕ:ê<¶ìt¹Jßáá²ß yԉδŠ7Ž’°A[>þª'
(¿¤E,	$„úoª\Ñ™H…dq(l´J³‡Å\ÊÍñ’Nê1æ«éÏг>âI/±ñqÝ•Š!
Œ&ßãÜÝ·ŒRêW€Ùj7œEåãÞÆ™i/FÞ«IW ô¢®­éf›…îÚz…j±–»*pÞëxºewJHuºF¥Ô˜ÛZ#wO•FŒ%
…,‹õ"4jÛHØ"+àã%j½ª]æº[–àª_R]aA	îÉã ‚›øN~Yáô¹
¨ßÜI…ÇÕJ™~ó&3†gŠJeÛ!0ªÊ“G!∲^Ÿ¬ª²ìð^Ž‹2ûIºvÝ–4#*¶>¡îÿE¨ª¡ð‡Øp3â£ÿe0X`}úpÃX4_ˆÙjßcì™­££ùÉíÏôR·«`€0P¦œMÞßv§B­Ñ ÝgÚo¡•"n°ÜÎH+¯Bâ¯8)r|ä`{O8_€¨©ó”W%ÉöCÒwÛ™ïÌ’ž´å8Ç}¢ÛÂ_§Nņ9É:¨jïÑÐp&Q¶oH}÷ÄyAar±ó©¿tEá¿…=e>pé?î:L˜¾jÍÑ1‹4S;²­*´t%
$ð¾m:6¥úÇPèÔPi²mZ¡Ù´…ÂÕ"Öƒ¦f©¤ß›÷X1¸ŠAQæyE‰%+GôÏVý·®Êío-
­d¤Ešà…mB¤úyàúš[ª=™§4wW0cî+’YÇÓ9î%Q]Õâe¢¨öÜ#šÝ»BqwîêKãb%íºw÷´"”ᢳC…Ü­Æ­ë8ª†^.@Õ6@b-¨YÚÖ€ÖIE{‚À:Š„©5R/¿L t‡õÝ®«xp éòȈ*g¨
‚E$+¿«âíÍlI*(L0ÛÑð‘#f1ʯ³é('GA]w2fº)])•¹³ñŽÏš‹ýº%×#´gš=fް,ç\r; ã¼¹"¿ÃÇz|F’ŽÙÇ*ù~ÍÆ\NÆæy®Þì—”ÍÁÚ|4lîWJ$ݑۋrÐ$œ¥:2-׿+$£öaMAø…ƒ,¨~™Q,fpØU´R +y¡øL)‰JjA؇æ¶0|¶Væ§Î± –|í<
÷Ĉay>Åx.FŸ©%®r€KÉyõÀ3Üg8{߬zsG6§ë)œ'a™öø¬û”¨
kóþãâ4âHEHÏä‚Xáõ|àÜñ6Poýy4v#g‹þíÉ2Xñé,6XYu—¤"	h~V¢„?꡸ñè•v§«~ó®ê´¢;²=øô}Œ£Ø_¡óÂÙ >}þž/
5`hJluRñ`œÔU§~è•BouÙ]ÆØ‰Ò´.³5%A7q">DeÓ63<à)
¶ŒÜíÏõ®²³8Öê}†Rº²mó	cÈJŸ7{Z=ó–¸WCË>òû¹Ñ»àY×F,ǶL¢…9èäÚù\ƒ'xRLÐÆ#òÖº¿ŠôzÀvÜ)ÖTµý_ôüü6–pU«Ð:ù–Û´K’•ñè8GP+ô¡¼@ÙßpâŠC½y;ë¯ü—ám$E4±Ë2o*×U‡?iX$VdÓ/”ïEÁÛ—›½ÅȨˆóämoõ%EöÞ˜Ò€G0íÕ/;¼)$ïÏêµ)ƒôÓ¥¼®|´]W"Ü.AîCY†>V좌ôoA†e[íܘšÛ+RJ_l¹^œÍmesïì¢C,ºÞ³	‰·”+Eµ‚N|µ”Å	3!}-Ð	ˆ~¥8¾Vaƒgµ0‰À#àÉ*}I]ƸÄkɾîØ4)
ÿÝöÅv‹®„ÎE}ºqYDÎ7cÏ¥†ÄóvÖáfM§Ž3“`/‚¹"•ÍÂ1.A
¤˜º$‹VÚ9»%„®QÒ׿¾Ç3éRylf}¯&ëâ…ý/#ø†ýVoû8ÈùÁVÓæ“ g&‘Àý k§kÛag©IÕ*žRóA²^MŽGMøþEd‚ý\äŽV‚&«uí`2nŠ|œÆÏ?ú´³äL(&,WÌ3ÐY ¤oĨS-
–†Sž;h–dm?Ù±àAu~?ÝÎDôf¦JVC?¨ä@ã!2Ü”Fd’0)é®1vxƒ9ؤzûxœþ̦ŽKÙ’´….<#j™]ºôLB§úf@$1šˆþS±,àï‡;NùF~$©Óô#Ѝƒzë§è¯=·â-MñFËz3t!<ìóùNûa;o#ývƒs¬×ÖV@c×鞎l„ÝøÊ¯JÃ>¸ù)ˆD9¥€Yîì5ˆH¯ìmÀº?‡œ>+‹ßN‹v0W$¸ 'DÀª˜s«v>;…zmž–ÎW¥$ÂRPBÐw´g†ä2Òõ7!Áz0e>Ï«P1
Ÿõ¥”9WáG¡/;­=£u?¤¢—;¬àÖ^w°èuÿ\+ƒ¬2Jî#TÌŠš‚ìü™æZæ”çT†_¢DnhP˜ì<ª[”o¢˜¼E^Î…Õuß&×›Åu‹ÒÕÀ¼î%Z>gÊH©‹TçàZ±9@‡y7
ÚˆNÂB²çz®)Ž4£UÂÔCÐ÷š–O43A˜ú5بl‰ƒLsí—9T’–Æ}Ì–ÅG4Ø[vl×í1¤ü¿\Ëulj„¹”'^°œpq1?0Ä앵×MÆw¹ýÜ´ÔÂ[¿uw›ú€"Uà«éMÓ~ÁÓךÿ¿¾«î?C:gĨ²»2‚Ù$Èæv}òe@ÿâ8˵`Ç™:žN¬7E#º	‰ó''ÿ6'ß ½<1“j³̰K+ü–"‹Ï/Õ\²£äQ¹Ïn¾Œ?àî^iÚQЬðߤ; Ò=ÿrÌõѧlîWÀd$.áÄœk!ªj$–†
ò‡À&ÂYK6ÿ┪à£9鱸ç;±ƒáÈì&xpÍÓŒ§’KØ×(í<Ö#Z”pé/»ž¶àðX,‡TÑ"óI	òÓÊúI›×åhMUÙÁ¢ÉÜ¥ä
©LÛ±èuŽi~údÁ`­J„GF
×Ëy½%*Èm‡&²Q„ßg^¬%ÌŸÇwž¾¹}¼Ñv@S„&é¸<îWP¹ûó)ØÚ!‘HxMÇV^e®ÂÀ¥_rŠÒp
× gMáP¬|úĺIZt;@žAm?Κ^¡P«‹WÓ‚9¢{pŸGzï_
Ch˜FàÑ ûÕJV(7ÑŸjÓtåVYd„)’nzìÜåPû@Þ
‚‡ImŸ“²†¾2FLj˜@m°4vù¬~`;Ùä”°U^4Û1@£¶“#²-¯(ù"(è}±ä¿œ@¼w½Úe½q	·çä…ŸƒõYFø½ì•ögó¦Ä
æì)VÌ	ÚÁÝ|ë*ú)©—O”ƒ±°ÈÃëðÖï.o—Æ‘¿UaN$ì¬cõÚg±ÛšÄIø2u¿c×…éÓü5O¿¾æžÂ>PŠBý X9«­
¯CYɦ‡vœØë:V”S'P10
ùK´õ¯ÕÅín©J]ðw´¸û£ÃiaOÖÍúök3øfx¾>฀ªD_ËAHÏ'ºš÷ÜË—uõiÿâöN6Ô÷n“ž¡­¢9ÅÿYìfèUòâ¼KêqV‰«l APœÜ8f°Ý^^£Ïõ*-ìE#åßϦ۩9³åfâË’o«ÜÙD î¢7±ªŠ2'
!t¬Çö@F߼Ѐ¤nªÄ–¨ƒ°_o£3Ke7­=[Ÿa ……ãÐw‘ËÊ"°1ë^®¦Œ‚ÛîäRA	5²ùl„ų‰H)ËO-6Â]5Öµç
 |C”+–JÁäÏQXkéÒâKë)Wr²vV
¾—åx4B«‹noîU·ÏIO?˜­(î»…_·þ¥4f:1ýå.¸YÇò=ˆñdï‹8YÜã¶cJ+ú
ºVx[
{s'„›YÒ{•”ìTTÇ™½¥o²»RØu“Ô¦—)IÉôþŠX¿˜Z[x
j
ë«e0Ý{‡Jõñ˜×Ä^ =
ßÄïZ!Þä2.zŒCÙ3CE=ÒÓ¥ô•Šà7p%Yñè0óþ³‡Õå•süÑì4[-]R…z	J*¸øšö
M7çCÿ.f:Lñ¹_ÌB	Áp
m úg	ßN˜“¬Èóa)³˜¯P<‰tc’;‡>¡ö¡3'‘öŽ¥X5é
é¾Y›”k;S^:¹¸ÁKˆŽ@”øÆ«åáÆ},´e“‘«ÍÀ‰´îÆ„ÒhKBI–Šâtݵ„é[™ÓÜ9Æ¢–{Æá w†ëÀP„:¾fZ„Ãó&Ì!Ås~àÌŠ™aVÒï†üj½s¡¨ˆâþ×ìñʰóS®DƒÌÍŠ‰Zì¾DÃS¦Ô”:Ë>4€@`(l°HÙÕ…
ñ.z°k¼¾ãUXãT£¥t«PæWû¾ÇÆ€w®õ¹”ÿâZˆa‡5ÞÈIx›V¼Í©k›XMf!D²˜›v*-wÝÏ!Š_Õ>XWí²6,>	Œ#i;ˆÁÁä1WÄŸŒ¦@àò—¯X_"îP\Å1êl1ÄØ´vl„³ž‘’s8kï‡Ï“a`OÇdžÄôä6‰þT¢D=ÑF
íuÈ2µRXµª`X\À’
ϼ±nYvJõ}Õ™
â¯Õœ.D‰Iͽ¥ƒCü®~l S?Nu¯L-–Ú3Z	AQEû±‘Õ9†sð¸ À:’Ê…—}£û„~Yn1ޣɣs ËwÁÞƒÑGq`Jn\.Ø,­Ï¤ßúÙ
bÂÐâcžÌb“éâáÕìk§ìÑÿ}nf÷ÖýýHýZž‹$ä†&å9"k‡eè4&u»«	›dó´º#ŒºU›Lï†Y‘eIò*ÿ°H>‹ï†IÉÆš.tÀƒf¦.À£Ø[û®@¬Êxìnít÷z·O²©©ÉR]Ñ!èe²’á`È2ݰ;ä»"ªÇ¦þ™„Þ AÅL07¸B 	É|A:É­PkÀ&çôD]	2‚Ø÷‹!š=®°èVjåL$u‰7@Çÿ­¶«ÂkŒ{ó†øi§ªÇj—Ô5—ÞÏœ&íatÁ?6ÎìÍ<-7o~­¥ðܩȱŠ„3ÐÉ?}‡hœ—9iž
LÛ(sŒ<–ŠÌ\Rù6çHË” €t'hê='¡CÁ¨,•ܽÀúVI>ûÆuú™º|+â‚9¶R«—M;‘x
NGÜÆ?ãžt¾w&T9~úÒñ‹´ËU‡ÍäµíÄ„u&(µ…•²²$HÐ+,ž¢#ïq.tfpW,°÷€êïN¼S5“ëÑŸ ,Ÿ“\pùáIE8èŽ{µb²ÏÌlŽ0v‰8l÷EoèCš©V˜*>¼g7Íq3Žé¢‰)ÉYÑÃhNåUét*ÀX•hXd/ìU9@èá“„I\/ìw„ùœLŽ,ˆ–iøw#Z³Þa¿µÆ0Ÿ’1À©2„n|+¯#džTŃöHc»NcÂ2âoØf˜coNmUÈáÅ+O^æQІñlµ^æcÝqõý»úq9F8îPèQ Z´Ëù­ßçéŠ>
endstream
endobj
116 0 obj
<<
/Length1 1492
/Length2 7948
/Length3 0
/Length 8950      
/Filter /FlateDecode
>>
stream
xÚ·T“Û6¬¨ MéM ‚ôÞ{c´!$@(‚Ò‘Þ;‚ôÒ{‘&Ò»4éHGŠ€|Ñsî=÷Þÿ_ëûVÖJÞgæ™Ù3{?³W^:-]vi˜HE²ssp‰dÕuÕ¸¹\\¼\\<8z`$ô/;ƒŽÃ "ÿÁ…ƒ€H´MˆDÕaP€Š+ÀÍàááâðpq	ÿ‹ƒ‹ä€n`€:@!pdaÎp°=½Î¿LÖÌnaaA¶?ái'l
„ÔH{zEk  ³ƒÿ•‚Ỉtáätwwç:!8`p;	f6€;iÐ!@p7
àwË
 èïÖ8pzö`Ä_]˜-ÒÐØE C\¡6 8½:@WY
 é‚þEVû‹Àø{sÜÜÿN÷wôïD`èŸ` µ5ÌÉõCí¶` © ÆD!Ù@¨Ío"‚€¡ãn@0h…&ü)PÖÑþÝÂvF"8`Èï9§Ao³<ÔFæä‚"8¿ë“ÃAÖè}÷àüûp¡0w¨×¿-jcû»
WgN}(ØÅ¤,÷7mÂùÇfBø¹¸¸…… emÏù{=gÐ'÷o3º‡W^Î0g€-º
Ð+°-ýƒã…ºH¸+è•×:þápslÀÖH€ÈÅù';Ú²ý£ÏF^r¡åÇ
àúýù÷“Za60(ÄãúŸ#æT34Ö“–eý»å;ed`(€»€‡ŸÀÍÍÃD?¼úïý«d·¿5Àô÷€0þ;—­\€é¡›rñsY£¿¸ÿŸåþ'äÿO忳ü_…þ¿)¸B üLþ?~ âñ7­\W$z
ÔaèY€þ/Õô×誃lÀ®NÿëUFÑÓ 
µC+š]˜ƒOà/3¡Fl´ÀHkû¿Dó—]ÿ÷¸AÀPþ}Áع¹¸þLJž1kGô%‚@+ó„¡ÿ^Vj
³ù=k<ü ôÀA5ñ¼¸ÑCiBýÑ2€“
C¢Cè_lapœßç*ÈàTýmú	8Õÿ„xœºÿ 4Sÿ߈›
Áÿ@´î8¡ÿÑ^Ä@'òÈÃ
àôøÿ«kW8=×4‡nô_øÏ%¡@Ö8³S0kч-•ÒOÜÙׇyøð{ßž>4\“§tÛÔö“»<áÍ	›‘î˜Ø»\&Úå)¼­w4"ãr4_òN	!›­iy`kõÍ{„Hüç.BÍ•gCµ½ÝÄ’jcGvРÓï~*5ÎLÎær´>™¾­(ÆØP~^f€õ¢î;ÆpD…/F@«tzk¹L•ôøD›òsıÔð^µÂöeJÏ ÿjï\1Û]ðJÊ“|gÕÓô‰ä­.*UËÀ8ÃZ—<ÅU4“ßiKÀ&+Äg]IzÑ嵑c¥ãý£‚ÛѨàK56ÜáæÐ©f#MU’Þ5õžuǰƒsÒ>%¾F'ËÉû5Ïô›Â¥¾Š8l‡œ Íêïyó~Â=hê–$7Ñ÷¯à~aèW76_ª5<6,­^VNzË9ÅIu?°€{&ÝX¬ìS‘én#´]~æh­z.tHmaF}Û		Õ$|è‹®£Ê¥ÆO)ШKÂ'äÅxn®Ð{jˬH×9×{	šœîó¨«6kÇc_zgG5-ªi¢Å|‚Â'êîõiö³¨…OÅ»Â\ œ½ÒÝàV•Mwß/Ï;èÜv=Þ)üÖ2d5©q7võé:£Ô©·CEº^ì/0|<1˜°ÛIgÛ®û?–éJÏÖž
$î¸Rµ}·æ³©qÒs-E*TaÁÒì+¡â<×|æ­ÆV™*½R8z!æ7ºYBYo"È¢ôÂJFp%ÎáØ†Åìq»#ÑB'™þ²·gÓ’}äáÝòfQî7½ˆzΗ²÷'oq/qÖò ÷dmbQ¶ÕåŸîÛÊåçg'ɤà^×_=Þ8|ÆsÝv q¥ùýÅìÄ—~UOå†fßÝæý‹{k¥E¶%ù—SÓòÆ©ª5¸*ƒqÞ˜=fßùi¹Õþs7Ø%×é£q"¥]dÂTÂêBý/l~:ßè#«q>¤ù‹'AsiÚ7KrßÂj¢J%€:Xwžˆ³nMlûcgµå)=çù…ûÆÓ`¦…°á`«]RµI†«¾ƒ”óöÅ/ÜÇçQÏ—t¹~¸n>åP…‚:õ8lÃiˆŠÞõÜ‘
'ûDÊiØì@¯#/ͼrr50'Üܺ[4ÆMOŒÉPÿ¸"KeÂegü,AmGÑغϳKÓüt¼šøÈºœ¸óºà/HÅ$àï§RHA¬Z…ßQËR:3¨èëÀD1±ª0úÀ­¯IÏ[Ŭ¦¥ÚpœŸ(®õY°ÖäªúA¾ð“F†WÚ=„U÷꘤+0\Žò
û
÷P]1\ÅÃ<À‚4%ëUOµblé”Õ½&6˜aëVºkO»€.ã§j“ZqÝ8qGÞ7Ž´4¡=a ëš…Z\Ž}1h»a1êû!ÎSxÄ‘/õjÔôj”’×øý^	.ݾÊ=qÃG7HÄ&NùÖcqž%ºÅüÙ¥=¹Äa-ãá=“½¯Ò£–:c"	ëû|î³éöGåì–éÓì£ûž†{å/ÍH´GhêÄnïùT‘a”DЫdã†ó"Þ¼u/¥z&ÕÄ;à~4WjUõÂúü2~zß]mtxÆ6~Ôã%†9]<:f’£íp~šÞާ5èWÊš£SDX²«q/^âK¬‘ï=ãBéÍ•ð°Y×wÍÁÒ,“Ò_|È~Yç¥#Ÿ(´¶®lì&ià±/<Û´S hi(—K’ÀúI_®|¹ÈBé"¶ÊÕ€S̽pÿ@ÌæÅ~ù†´¼s‡Ÿ§ñ±ƒŒ	…ª	¤_µöÄå9)Fò]’'3bMš5Î_¢õ#ð'SC­¾\n#¦™ͧ%rc‰zã(Bôú8ÉE;uÅa/˜ÅyõÈ•Pš²F„ðºh§çö†§A6¯÷3G&Ó“„´Ý÷îâBíÒÎ|Æ…}-gj\bê¡…ç°¨¾ÓUû ”®:>ݱÎò¡ŸK«+wv2ÅbóX×ŸJªYJïiDê>ÁªÒ›Õ©Dç5ÂaèÙ&Jk€r”~Ö¹ä;[¯Ç(ëÕäXF´ÖpáÏü£Z*D®ñQ˜Ž!‰’ýÓWÀ-UãrX%õÏcóIJêKx‚a.”:‚&ȸ¡×Õÿçæ8g(Ü­a`H
ÇñÝyXBÅáTo_rÙ`ŽÅÍ<Ò#g§üWÇ,~'gP=Ì]·Y%”šù8Ýœ•`5x­ýdÙÜëYi³nä±î»¬¥Ô¹Žá©£Tëúºƒ.íºµLÐHfÁt£AÚö¥SS€”·p|ÎèRrÃ"¼ã1HeÛ¨Mr€FÚ'l=6ER¾NÙØ‚mÜÍbù}ñK{CÒó‹þa¼ŠYûñÉF†Æ§ônU킽rd{ßÏ2¿k°:´|˜¡›–+¸Iº8òù =ºò4Ò¸×wÝÿV6Êô9Ÿ–±ª¥%óØ °cá°<•§fÙ[ë#ô¤±Ñÿr!ý-ó+Ÿ0OöšXÛÏì~|)ÙêÕ+$oJlÌ퓺Èl„$^Ì{fßK¾<–8Ï“_›ÛLû‹TŒíUn§v¸,Y
X_PÖ,ó<Éi÷(¶Øzhp]­5ë;àv’»üв„²]¨[KDÔ¹¬%î~²[2ˆz«Ý²„,”M"D­óºÆOlòb³ò[œ¥?Ñî¶•¤ˆ™ƒ|¬
@‡	{aogÃŽÈŒ½U\ñTIð\<(ÂÖ\½ZŒ±¾ÛŽïÔ¡Ôú¨™ívÛU8ø[CÔvW<¿v“bé"ŽNä…ÙÙÔ”¨rÖ!–ѳO÷1ß›¬Ȩ̈ÍLóN_fMÁýÎÏ®TôÒ„âQYùÏâmî'çIÀq\êBº:ök5ØŒtÛpYUq>]ä‹Ãÿ±x®×æd%º¿¿)m`4_ø¹‘˜^¸^”?z-¼ñ°`¥7Ï”D¤ùS—˜Œ×öûp¦Þ0߃€Vü¶Ûm‰Tƒº
×íìÇ€bž(GŒvÉÊ'ßbÙê+ø¥Ø›+ÊgóSæ±ËÐfê-§h-1~èð+O“º1¶qx¸¡¢é•œº’õè0|–Ø$IÃNxË‘'^Q,ÝhP•.ÒDN5Õ­±¿#n¬ñ»×°ºpö:Ø!Ëþõ#¥»N¢~%××êë'¤Éé—F¬ìÈb{Û6â“Ö§±¯&(9±‹è³—ýíÝn6¼
¢’ã¨8>d-ÜíÞŽÙò‚;T¸‚°?}à”~-m󸞒
UÊC™ôÅmªé–<ª^q*óD’ŸnõÐÉ8–)þ4VñÜ_¹÷¬“FržDt“—A" =ëš,aas'v‡_;¡ÂÛ{v‚"ƵnÓ'¶eÿ8u²èk4÷“íõ~çñŸáÝtVJ¨¢¸ƒ‹\íµàƒ4ŠõñîŽîš²üç,ã$Ëýâ|êù²ïj³É=P€a7Á“âN{ÍúÓ”}µ…ò(™œi£¯mæ™CþÕóéæÔ¬*Æà›¶7•÷Zù	ºÞ5ʃ,‹9Xh³zËžÅ$~ÄŒËdÀWbºõülLyïzòq"c˜tuÚKUÜJ{ègxñÓeƒÙ*¨eU^­;x3tô4‘èg¿¸ÿðž"m?ò£¬#œr´ÉFÏDÁ"]ÿU§À Õ¼¦/®T_>$ãK}ÌÒ”ó[w²Ÿ¬^Åš@'ŠvÔÁH&å4Ô|d†¸ãñŒnˆæ¹ÀõÅínòæ‹5F)µ%ÿìÂ𮍼œ ŽM²W'å^0ǹ̕“ï¢n}GnXb”)%P¿2òè›´tdMÏÖXþëÊŇÎr†‡ò¦îœ+ÉóŸ­-ÓÓŸ0ôò¾DhÎú‘ÐGc=Vòäeùf„JC¿›&½ /þæSˉå
¹Ìú(iX•7å`õÁ…ÖQfôŽ-û4N#².à::à=^ìÛ›C¿Áxò¡AQq_³Ñƒ'œ¤”¯‡Ò¹u²¼;3évk1¥l2ÔöoØÓšOÝÏQc©‰þ¶·§LO¾)>v¾ ~Q1jVÝþi£+mòK“EvšûJDx²øØó#ö-|wš{d ¹€ÏAzS«Œµò%)Æ{à;HÍj2*úþA1„=¶ñ*Ñé6é4ž×V•ã‹•/!p\DÜVÌ·.{xZ©N{~Ãû2ø1ýÊÿ(CÙünÈ
A€AR!ŠÄ4¡BzŽyÌ&֞ŎmÞ©cÀ™„6ƒtÕŒ6kf»dж™Wg&ñŽÆ©Å%¸œ'ÏG™®|–ÑÕËL4\5D‘Úõ¹e3nR5Ò;ÏŒ[ù¾.f'О%—“uü•€×5r1_jÊ1ø×™íVŸéØånlù‰Œ7ŒL4µÏ„áˆûrô ¸­BPì%_*ÉEÝ\åSÅ2¯D­Fö2õìÛä€Íd’4HË®uì>²hÉmZ.åˆ
kÐö3Ñ4ËŒ)“ýB>OžÚ¹Š¿¾f+ú‚(c ´Hä5í]Aa~ï;uw”q—0Çkßí϶‡°w/÷^H‡†E»
	b{ºKè³zÖ©îÒ‚jñ3Î-\"‘Õ­ÓïÁÔÍ®ùÓÀ=àN)Œ*ÎiÜKïÒ0b
òx{§F™m“xÉðÐàU?Q$¹§@¦‘Wñ.5q¥Õ¡113º×½þcvç¿Ôã²j|â^¿ÿÉKzÓOHeÛ.[Þ¯ž#Þz5§Á•3gXÖ;ºùµ{ú¸ïE0·Üg –ÉøŽ3È©x$›ùuá’‘æšÖa+
Z§¾`øõîìÚ|Õgî[roÌø4Ÿ*…~¢gˆ8¯*äqʾݢ"e4ȤFŠLÄHŒ÷¨DWogJ“2;o¨¾ºd^ø½Ã‡xeÁ/ø„ë^3î¢mêŽÄŸoƒEÖÙÊWÕKò¼ælG(ˆvžÕ33ßtiP®æE÷T·èSwß&áWÊ×¥8wxàÝæàqXò1TÙÏòRÓ9÷¬Rûf®fTÅeÜ?Ø&Q™g±\%ŸK$Ò]ׯš100ó\Oá9¤Ðàyö8Œ#'Ú­®9î	ñè«Þ˜½…"*â
eÕ+DØMøøÆñ ®0Í©ÿ¹¢ú
q„—$Û‰4
t»^Ð2ê]Üc(m¨à;ítÂEhð<çÑ×&G–•h»‚7Î$÷Ú·23n?KË[ê|­Á•o¦ðó¯Ù:‰Ö1]?}¯we €/Û÷}œ+¢HJÙ’rÊg(ס3˜ôR½ªNÉ;éàŸU²è\ÓìíØ–MQ¼“Âw	ä…òQÓ>æ$r°ÅKhÆŒ©(3×P®(fÍ([Å_Ìûà™å3Zâg¯O%à„‰F/Î0îÅr}zÏ÷ iÌ#‘pÖ“qµ>W—¨þnüz«õíö‘.JŠ0¨p£{Aï¶êàÝŽ?‚óÕEü9˜ªÝ¯Âø.vÄýš¶ØWù¿Ž¤ŠßÁzV	èœR¿ãb!š·}˜Ôd¢*Ú
ìò¼UH¾Wr¸h€!Ð%bc7·rKG
L†>4^$‰ ·Ú3ã1¿{ã…Ù•?ý Æs‹“ÐŒéÙîÄü-»²yfv9J\ßr6¾è}[ ž
Ú®}è§xŒ'ÇëÜÝO–HK'¤‹y{îèé¿ýªt"DhûÒðPüÛWuðy‚F&æŒ
è‚ÜÄ Ü^sš?¤pîêÒŸ›WìF{¾c­V©EÓ"ÄØÒA¦Q)«lúœ¬¡ŽŸgT&d¸åò%{Ôõw…h#餕­ÈwØï-›
D–ý>÷%6:?ÔÌ:O#•ü0ÒDû«Œ€Uáâ=/éYš¹`D0/•æýTqeÛÈT†f‘få˜$ØÉ£ób½•Æj£-íÉ}J6—7Â+ÉáWù÷1z	Žž*¹(~ò1k—uvê]Kî6±:¼ÁO|J¥É;Ô™3¡¼š^7y¸“}S
ÎZQ:ú”¥<ºI½¼ÎslmþÅìu_ýäj/¥¿KÌ
Ÿ9}9yí4ôDËH6kÉm;kYòª”S§xm
f{¹Öœâ	*kº½¸oŠ™Î
­–(BñÕÏY逿reD©Q8S%)¬–×|ëZ
a"övvÄëPënÐ×!¶ˆÛч}Â}+‹iët–軸$ν›óª%ê:¹{PÙrÁÉ2zF]e=èà|Û¨ˆˆÛïÑt+EJ÷TÖúâ#çú»)¿`¡x3[*UíÔ˜ÝóùÎDùí|boCÑ©“Œ‡^Ÿ×‰¯(¬”bs´B‰±)ÚñÈÜ0{º–4©%ß§ù¿³ç5^„'%¦·÷äñ8›ë½I.¿ÉÕ<ÏÎ)K	Uìd:žÍ"z¦§nJ±kÅØæ˜Å«!¼Ž6¼ªÚ%éÀÒzºÔçÙõvjmƒM?#¦†MÔx=«#u·þÉ·^Y^¼oO¢‹GÖò͇¤ðøJRà±àÍ…¯èTGh–ÂJs!ôíªÎiõë›Þ!hÈU­À@˧Ci'êë²®Æw»Ùj¦O—Ù^¤«L2œÝÏÐsÙóÈW½š7™Ääªér<ѬëÖ»]}ôT`Õ=PÕ¾Ë:s-Õa­ÌôàÙdnTm˜Œ|…M“CŽ‘_]‡¯iLŠÉS$sá»\ÙèÄ@òBT㥠>ΓÙè7÷eÃ^¦ní4ÜëÍ1~&>W¸ÒšÕ{íkßµ²µFÿÞ¡Ù˜‘‘NƒCï/3–[™!d+·Î+?rÕ+µ<2Ž|Þ}n×í‡à¸|Jû%²yjh»<­µ%gw›K¯°k¾ømÔ\b˜Fl.ÈOG”.0Ä9+_±gö±xŠÁt§Ìõ¬mä[ä¹Êÿµ™­.Aêñ°ZÊé9ë'êÔ¦R°¹IÃ\ÝV¦—iœ@ér)e}'ãƒØŸD3‚õ[×_ú9åB>ÐÔl%1¦M¦WŽQ#êx3æsg³
ü¦5¥b?ZªØ†›H?1FµDʼsÚÆÑÙMJÏ::ׯ„†CȬèQ£fS\ÌÓrDûº
=%¶ßF,.4ž¾
±à‘àÁÐdH£ã§ðÕ†ÅUÄãJÖl·ÓÃ¥ú?Ÿ­Ë…7Òùú/$þúCM¯ UÇôÈU[«äú±­l±ÑEËéˇ]û³ž@jŠ#šE×sEy*â%¦ÓÑKÜÐt6;™>ÂhZ!ï'0ìF[­¦/ËzF?"P¤›'\¾ÝAç¹HÆWóØŸ+SêÄL¬¹®üÅŒZ0Ìup¸-»TR‹\9+ÆÜqS8™^&š¦ÚúoeO访«}@ç/éH§åšOˆ;AÃQVÒ¾ö"ï¥ÒôSløpØÔË
Ô{
Vôõœ_" º^DõžÙ~å¼¹8(_µZ$Ÿè)#Ú”(NrvaCÿr°ãÄ+øi óålÚb¯	ÒX…œqå¶Rs)-$L“
3tV7®ô`©¾¡;öIØ
¸Cį!õ¼ÜbýQLþÖvXʸYݦS¢&ŒÖ3Ø
\éÅH2¸0ÈÝD¥È¾n`y¤¤Qìl¾¦­!aˆh›*“-6®­´^ª+>zÜÂ=uw­YÍçȉJrrÏñÑSU•%û§SŸ×Ï¿@"Å]Bãšsrv%˜*VZï2‚Z[c¸¹8–îhïÏØ¥Ô,CmâivE\G´'4®aæä©A”:f¦c}géÓáb¶«ªnîýïi	x°r£˜”‘“¶LŸufÕ5VSl

ñù“›í¾üt;ë"—!gU(¶ûÝäøÊà€ð‡Ûç„uááçœõQ?¸‚j¢~ç’«Güàúâ¥ë‰0
¥ÓæW}^âHœ1ß%ú÷sÔ¡öw,éržÆ~ßÚø‘u‡>ãöŒ[Ù•žÌ¼{\›iÉÄi û#Sf(Hgœ‚Šü	@4ݶø!["žÃ»iV­'˜ƒ:4|‘ÝN’	\Ä÷Û=†¾ðø56‹”²‡Ö\çMʳ&ÿâóOa*HªWŸöü¢)IÀ©Î¨¹Ë5ײ~´Dë6‚GìØEŒÛ/IÔf–Ý àB}ëÉ.½Ó½QÁ¯«MòÐÆÇÜj±Ëc|Ê*¿Í´ÎåC»Q¦è‡ã¾6¶ã¤môÀšÔÛr¥˜†}øå¥ªv2ÀÜ×¢‡Íÿ»qǪaŠÕ—ïD.EÊWŠÉâ쥲™Éxóc“¥õ’òj9[Æ„OÊï[ÅjûGŒ
K£›Ÿ¥ŠtkÜäs­$Ï¾Š£yj®Ö³FBЏUFÞ+µš&ò	é.Q6,¥Ž»9ЬŽ×â¾Îä«¶3DáþÀ¢,b†sLKß:6—ø*ŽZÈñþx…®æÛzÚŒá^`fE÷ˆ}nx0ÙËÐ>kO³ÊÍ­¦r[è=†£±Úö>bˆ¾äeäÍÖ;‚«Z¦5ÑÛ…lö÷幪)ëÕÝ#¥Ï;
G„ áš$ñ©ï¶»+ðÈŽèÊEO›2ÅvD„¿™ùôNxAágñ`c³ŠÀ¸á'uö9l ¶úrBX>¾¢<ÑÁd_ÿrª0
Ë‚ÁÃöÞéefýjâI¸å[±iU?};Èö¨ É^%‚óFWhÆ:¯”œÕú²s¥XI3ÊÛ¹»Q¼éÚ8Bó¬ 1©:X´ï$²™ ãÝœw´>·¹'*ö}Xfç2WEÃ&r¯GëÔ÷€7„hîR<Ë^¡2Ž’Léýc‡kÈOEéêž@Öak†/”
7ÂÔª Êøa†£íCQ¼Ê•Õ1¸(‰—¼˜}¯âpdv¾ËÇÆ*§XzQçN>S×uH¶‰³@Éð¹8›i¢O›„Æ–„Ï·§÷C+u»¦$Ç,‹ÉâÛNå7b:ßö|7ßz©¶®ippñ
`à­ú+Ðr1›‡ÑÊ»q!…’ÿ]{ÿ¦ø0²Œ§;ß÷à=³ÔgÝ#QÖuIsãA>¯\}š
¾s·zP4{¨z¬Ìû€Í±¬á¾jÙ;%½	äcrÞäf?*Ê߆ÆÏÐÛ9\¬>4Œ¦ÉþZái(•tq0Ãlcé~.Õsë -^'6SÚ	;Rö;W½Kâw÷S"û(§ëÀoñ§_½^:üxŒògIQŽnùRÅÇôæÐßî`‹óœ5ïËE³MÃAÒO׿–mÃå§å”?ÚCû̦rV+’k‡4>­†+ð¾íõ¬}n¬ÊñƒÇÿέtò˜ær.»{Å_îAvpúÿ¥œ—ž
endstream
endobj
118 0 obj
<<
/Length1 1576
/Length2 7823
/Length3 0
/Length 8855      
/Filter /FlateDecode
>>
stream
xÚVuT”Ý·¦DZ@@šDšº»‘ia„bè”îP¤én	‘néNéRâ¢ß÷ûâwïwÍZï¼ÏÞÏÞgïsž}ÖËD¯©Ã)m‰°€* àHNn.@VMGUW—x¹@ &&]Òú·‡éÔɆ€‹üƒ#ë#ïlr`äU
¨¸Ø¸yÜ"Ü‚" €þá$»Â,j\êŒÃ$‹pðp‚YÛ ïVúÏ+€Â
àäø¶‡:Á `8@
Œ´Úß­Ûtéñ¯,b6H¤ƒèææÆ¶wæB8YK°rÜ`H€6Ôêä
µüj ¶‡þÕ@׿ü‡Ka…t;Aw;
w¾r[Bwët”UPødÕ?€?·ÀÍÅýWº?£%‚Áƒ!„½îƒ[¬`vP€†‚*ÒÉÃ-ÁvΈ»x°+f¶¸#ü.PÖ€ïzü³CgˆÌéÌå³ûÕ%ðWš»–‡[Ê"ìí¡p¤3ίúä`NPÈÝÎ{ÿ:âp„Üëolƒ[ZýjÅÒŨ‡9º@•åþdÝ™pþ¶YC‘~$tw°PGÔbüµˆ®‡ô·“û—ù®/„ÀꮨÌ
z÷‡ãåv…N.P¯:þp¸¹–0`µ†ÁqþÎ~g†ZýïTàsƒîDÈ
ýúýõfz§3KÜÎãoúïƒJÈÉè˳ÿÕô_n„;À‹“àäáåp„>ÿN¤	†ýYÈ?B•áV€ðõÞmÔjvýS,Î	+àß¹Ôw†XþÖ»	ˆ¹{pÿ¿Uÿ;äÿû¯,ÿ½ÿwM
.vv¿,ÿ¡ü/Øfçñ'çNÂ.È»qPCÜ
ü¿©úÐ?¦X
j	s±ÿo¯2|7Òpë;is
sñ	üa†9+ÀÜ¡–š0$Äæ·Lþ0ëý;;ª‰p†ýºjœÜ Ðùîf
òâî:q¾Sçoôn”þ½ª<‚°ü5s<ü°“Øt'*~~€÷ÝpZBÝëä‚#w!€»}V'œ_G+,‚™þ@ ä/ô« å? 7ýäaÿ€B ÝßðNŠ@ø?à],âtú¼Kåü("ÿ.êÎùû’r† œþ±>Ï]Jßð_;qqrº»%~‹÷n»þƒ_IP¨;‚3=‰€ˆ¾²­|Õ|Q.M对6ÈÛ! wvëBLJi‡ºÂ…öIüE!_Ö©Pâ[9Í>‰Rct5tÔà*ùHA·Â2-\÷‰£)…QîrU‰©‹à`±‚:(c#È“ßmÉzt+íÓ2IÈë#Hýh.Œ6650©h‹rJ°56'Y…É~|×P²óÕÁÿÒ*²
IÆUi«¹dV1­Ý=XÒBl>1Ù)ƒÏï7¬ˆƒ¬<° 2,ihãùaÓòTªõ#G^x&óÆ1GÞ—óiUô8_ÆÇâN‚ZdMá—O	ùr
“{<§Ê‘¦nCãl¯D&ñRl±­Üüwòl”¾Gyfî|y)0¦Ä²ÿŽx´
6Úoθ†ñNýµYp–òãÙ)ýð!ë-¥ 醺]г[»Ø5ØçfÕ؆W	Ÿ‘‹8=/uUžmíA9pï9¡kȵ™?çPïy³³¤õm>]š$ñ•WÐ5jæn»'¬0OçLˆ@:G]MÚ‹×K=‚«†ÔF¸Ùc
êMÇÆ{¸(˜Èu¸,Çíœ?«>NimMã#ÝìÒÓõ±†žæs¯-zZ?táåßof°æ£tÓ‹£rêx	9«<ö[K.Å,ðBç'Ç.­Û½B*v%Š1ëþÐ2•Uã!ÈôÂ|“œ‡¡‘þFЖóÁ¹‹¥‘óE½4%-«éE{•¶áó±'¶î¥Äç¦I?ÇÕeÏI]Wš;¤eœ:¾vÔˆVž»`ÇfÏݲ㠓IStw^&
tÀ®‰#ž\Ò±Jï-+P#ÃôÉ[\+i(‚¡²f»
è³¢³¬œ¼ôjØEð¦ŠOQ‡„9âFÁ²Ó`ï!-¦çU”û[þ=Y™ÖW¡£UZŸ[¸`Ѹ©:þûëµ¶{…·Çê-
ÍÔo$ko>´ócå‡F83¦8‰³PM¬Zìûm^8ŒYÎ}…_=è}x\YU­Š|%ÌÁ¶DG¥¢	vØ)ž<“EŽæÌdÀiµÿrçLëÕÑÈj>%¢. ëpãÅ’6eÆ}ÏèvžÔmnß=™ÓÕÊðju­	@z¢â«¨ãMKeîQ›ÖnFèfÓšÒZ
¦¸Ò©Ïx­Z¶RK>Ç3^(F,€•KêÉzˆ‡V¬¾Ãó.Oi6Ê	´,4¿˜îS®ƒÍèKMâgzQC\´®ºÆ×÷?D.*kf.°äDjZÓIÎ\¿_ž³QQàÛ­¬~†á胷“¬uJôV]¦N$ýëOwÚÚ›Ÿ5kž|˜×çÂj2َω%ľ`.ôyÊ&]/±›žññ¿u2fÞ+ûT4æ÷£äŒwüé»·C+uh¹‡zÀ·$ßö4O¢ÄW9‚›>ˆ­°¯òr6KáÊØ8€ÙÄÓñym71“Eþõ€™\RŶ,ƒ«”ñišGYþÙl
s¯2=a.²~ÿðIÍ}m"-Ùb¥5·Ä࣬ºÆ[”fBËX]H„U@ÔËÚwž\EÙÊRÊÏG*[ÍšÞ#k(ù*[xœéš¯–UodÇoïðqí”|ß„äJ·?y§ë;'ßÒn‰Õ£IìØLö.§®™ÀfL@Œ¦×¼r°5¢¨‘¸¼Bëò&sæ	g¢4§j+0oèóÅð7iB˜IÉOPÞÑþ |£6°NºÅõ­Ì×K¥dÚ°à(”¬'ˆ§íð['•`Àçý€Ç š©ÿÒ«=uÙ0–1ûܱË~”Oi Ï#ÿýÜû¤ð‘vcXÅŽn.We}“©Yžäf¤[ú¥R+Ý–¼ÚÁˆúã¦êý‰n»u®äö	ö:¾VŒ'n[\y>NˆáÔPc´è»ÒL¾Ð­ÚªÃWý¢þÈÇT>Ù;a;·ß;%MþªAW³ï9Ï$[êð®Ùúa¶l³i¹Eîø†¼û1s•«ûµö%/~É=!3=ºU¸TÈ/tâÊ.G|Té1â°èÞ®ÌÏÀ™oa:ãÑ.¾Å–ë`:k5õ}†ÈSMÃÂÄþ!yhEà¬*„Ë6èŒ÷r<-K·	I+åLDÿîø.J×Pbȯë|aÁdŒâ•Fñpÿf‰2óÇ’å)Ë^yg*Ö5siö0ùÓJ½°£v«<	Ýíú ãŒäB¼Égy³aGù<5XÖ¨ô—µDO¼Ù_»_úË÷
µ—„ã|$­R)È>ö/åNÌÔt:j™®ÔxŽx¾ÉBÒ&O¡ëbËh}ó6êX‚!aAIN¼”§mÓBXcJÞŸ~é£F¦öásjáÙ͸‡uͬ=ù~GôΊ™ÞÆ …+ö$`°³xEØô¶üRíƒ,B¢÷/ûh³ã­æÂªÐÞ„o1NeHFè¤óŽ=™µ§Ö	å,Ä€E’p˜’ë0PlÆ} lÃ’àâ­fF;¦šÇ\z°/åݰOd¾Ð+ZkNY'#1–jy4>Ú×
ÉÇõ¹6‰Þ½n½û¦Qh\ºrÂ5WAgк-VqÕO®ó˜ê^픬J-^˜"ª|ñËçvœŸ7)¾­šê 9,[§bf]WdcÒz\U¬­{Ol}2ôWT2¶hrEu†x/;jMXî×½´Œñ+6‘Y%}5~½áEhZb²t?òçñæ@§UÜmg]n$Sš‘p/ÜÐÃýÈÇUãmÄÿØØ&|M'iÇEŠ»poÔëÑ÷Jm‰Ú—¸û}¬‘»¾ÃœoOqìýìW·	Øã”ÌøŠZÐ?WrØL‘Sõ¹ËƒÉn_Û<73qd¶(ÊmKjPH8™£ŠYý2ÄC¤r_‘Æ©pµH3Õ¢P›ç4@tçmQ{ý[vl>ºŒé¬ð‰9c"î` ¹íy‘&ü{ÎòÑ)-ˆ79]2ÖšŠGWGŸ7-d½Ö»Q°‹qf9&.oV”*Ö06(àoÔ¢8QÚ $N³«
¯fv)âÊÕRè_8[|åâŸW¤h2Û`Õã\@?n&Õµ©³åhìªØé><¿÷ñæa¨é.È—‹³$MC8.^ge 8èé<{ŒÈ2…íÝYê8ÔUa[)Í1“×i¬5ùÁ#	oŸµSšex ¡:Ñ>åM4"ü=½uQ–À¬Œ`¨—·œF¡¶c˜–›öF]ô£Uàn‰ÓÏ–¥&gûŒ+}–k*R¢
‰ß¡|M’¸ÂñJô½ò3paÖ“è{¤³’+¶*žC‹ƒ¡ dÚ<϶nÙ,x¸È[ÅŽ
ÀÇÖ¿åÎÿD¸*â‹Êè¾A’³ô
c8Àâ=VÏœ|ê¹#Ôy)MÑ/9rŸÐ¶hÙëÊ4þi¥¡rÞ‰Yãû
™]˜æF}èÍÏ­M¯Å±¶Æ+ª”û£¬ÔÄ9ZòÊx\Á¼Þo8øV$u‹Wõ}áÛ¹¥ú1…î5§GsZêôô@¯Ç&+Ñ×ý:~`h_"Þ˜à+¥ÇÓ{	öøÚ©þoÒ‡™<ÈÜ¢k4_7¤R¥Q¨6zŽVãõâ‰Ü c¿!¯ÌRÛÝ[”×p„â{^濌ÅÕytè–Š!Øì²Z±-ÙäŸùDyevUy!Ók—iŒýägë-ºPÜ‚’?2,öú‹3Z8.âMÖ=ØÀn/…Þ÷ÜËü ×l¥ø¦WøÛæÑD”—·d'WDƒ/DvM ¹S7íÏÛŽâUm.êîexzõCWîä”è`¤÷ìE<³¾=”Àn,Ã7Á7ênÆu!Ä=åíÉÑÏЛØ5:ý	ÇÔÝaÌP÷e#ò1Χ®?t˜î¼¶ydª‹Ï‡¾•TÞø±TúضU°¾h‹œÌfèý>ž8êÏÜÛ”÷$Ãýªf¦â•‡¾vnÌùë|y<–ÈÀ´N—¤y˜PL•2pmt„8%å™cG`ÙÚ`Õ—|XÈÓó¬eÑ细ÇT¤ŽˆŸÓ¤p±@Réö˜$„óá8Uh*ïObÛ•dð5†¡mìÞZN.@Æœ6󙋿”Õdi0ŒÐrÀ¯·b‰ã¬Ý:˜‡WÖŸ·[¶ëc3y
é¤ݳoJåAçµs«€ÐÊHv“Ó!ñÀÜq]NÜñ“:Dã…lfh³¬ŽD7}¡¥hB Üð{-êZ//”ú^gK0mQõ¢qÞ)vÀ\ý| êä!š!ä2‚뤈ӄÇrépl¹À-e‘•Ó%v&óŠÂXÛì¦VÔ}2ã¸rø1öøgÆ2“{brö¹²Ÿ»ègÜ‚z—þŽÙËœæƒhæãÝ›Ðh	>=ëh¯˜îMæ£ñj»›AÙÂMÙ  ¶V£kIß®üñYgžøK4ïÈ\•¶¾9\bÆåúl¸Ë)
ÃÎ
ÝÌ4ŽËâù÷Vx_DËl
¡[yQ_\×|µ£’ê¥P´v÷‚_훿¡EN:#±Ä-´¡ûÏ>ñÌùJ…²N¸’éeÂfp(ìx¢ÉÞEê¶Íè(ý•Æä͔ǩ}Ù-Û$ƒiÖNû3 Ì=vh£?Ø“í©\•Ðc	,
A”j
§Ûªª,+Ç	
bRù“{$έq»‹Ó½^&ŽãƒqN²œF®B›‡ñìTjgh®O#/ì%¥í\R?,ÄÑVÔD:9²¨iµ¢ôlVÅ3D0–‘£_±CØ8•£Ô
ßãÄ¥¾À(~iޱÆ8gvô¹£á¶Œœzâk`
§ÜÔȘ†b¿xª#ÆÔ Fè±¥p}U´X‡¹Òh)?¼®Í0b‹¢rýF0é2¥'½Ž·e/hH'þ£ê±æj;Rôå«á_MgþŒazš$„éõeï«®킊 ðìéÝ-kïr“¤*É×Ò¹%Öûº!¤°™F/Ž‹Œ6záé)¬{˜Åo·$ܼdIë¦)öÓî½ß4q°tù5
’Us©lû‹jSc()tódzñ/Â[NwÏ‘Œ¤_¸¹©ÇŠŸtšœP¥>â^0øÑÅQvàî´á8X9W—¼îá¾JÓc“îPy¬®^ð²å×ûšrC{ÖáëL5&øCÕ„ý© ˆR‚
g9¯,+ÿÔ>M1-¬U¡Ó0àüóÑ«IW¡Ñ
÷„©^‘[q‹6ì¹2hœå¢Jl(Œªó7êÞ½Äšåz¿Ìwí{#”21FÓÞù‰}^¥®2$rkúöÅ4§¥:Ù;ΖA/ieñ²¾lQ5¥&caN	»C×1¥šwåy’Ò@
”uÍÏúÆ ûÞ`âëÚr!tæðú<á·±úÁY¾Ó†Z–êüíÜió·a¸Ó¶X¡Hßš ÍäükÿwÎùOnáx¯–9JZùk÷Ô²T0F§èë?ìÄ/lSÂËGFä×&/PI·*¥[v¨ž@å¢ë“âçgã°f±Ê”À-Gê†c¯– ¯ì	>W#x³‚‚¯p2èÈŽo+¨–N]†DKn©~ò1<}¹ \„ÆZœVüikfÓ3TP¾òÅ‘9üî%9UXFñ¯.¥w’#|!„!ù‡.…S>žÝV†^ùŒ’ÿC¿ÔGšî­Á\èvµðö’Ìù#ÑL7¨;ø•­Ž”–]ýq3Ö6]ʰ6`ÉþâÛ¾þ"¯$k7Á¢ÔNϵ!E„²¿BÅàs¶¡8.\¾iœÉžgóëaôìteéÝÆ£däJ•kå[ížó]BÜIaIhÉ´!ª%7&ôÑ‚N.à÷æ×gȨg!„ÒÞr¤ÿx2h`›Ï{ð`Ý#Nõ`×Á%fÂIø=¶¸whºt\æìÇ,ÖSGw­~¿ïcœ†»˜£5±0Û7ÃùÐw%5Ó²z‚$š·”"{[w¾¨n½?ÒN‡7ó¥ûàþâ–dñÐ@B?•Ú
ͱ;eUᵯYޝg§ØÍù›)’€Ghn}1:¹¸%ù„:yiÖu’Ýî!ÑXôgn¸EQe˜ô¼&q@ÿÖö°Äõ™’a/!…LŸ]³Ñs‚LxÜüÏ¿„¹vû/«š;êõgÜ}]j­ˆ¿¥v;ÐB}¹PʹÑö<ì~+Ò\°Æ×]ˆõúÉ.#¿AÈ#K2Zɳ"7ÒEiôó2劓™g«Ô Ú#è4÷¬“/ƒ´Ôdp­×Vk’O°ó/.DUMýJ¸5Mé~MöãÛÚ3½À®Ä1OsX‚U©Iʈ¨Õ¶|§K*äÙ›Êp[Fñ'
B݉ˆºø˜³ºL"O«YÏ¡ë«øå›œdVŒQΜ°K‰£?M?Ó[®]“|vɈÃ46ñµæÏc,»®ïžª
Ç•aí@¿©*Q¾æ.³âUîˆbÚ¬ˆ`vÄŵ$2ðá%ý5Îý#+¬\~~lœÏÒž_ò>b_=˜˜Ã?ÖYÅŠCÛgç­ÒŠã °¶¨ðB‹.Ò™<äÆqîþñïg¡ìyñÌÑ0:ºúå7¹u‘°Þçs…Yjõ™Ò+‡m{Ò„ô½û¦ßÃzêËš#Òcøv<fDì‡EGùº 6¯âå"†+wZ¹ÉDßkKÁšz.»ÖŸ^
ë+k+Án æžxºø”4™Ü*w™ysãï÷/·7¤G_LBiŽMS°ÛÓl£÷v½¸¦ÑeG%Pà},œ*6ëƒÏßÃJÚlvÄñÕÂìUx/Bˆ‚ÞÊ?té}-¯\rW…þ8,]ÿ:u\ûöž¾,}…·{ÑúaÇyº«_EÍÆ e8ª
‡AnÙÛEŒØ1.êi±d†Ž´Ð¾ÚJ·y„™Ñ÷U'üD‹v™§7HØ;Ðÿª³#ŸÁ_¿{Qlq?W¡Nšüµ!®y"k­˜ã„2*]Ày™Ò7ölT‹õº+ÈܨÆtú¶-©Ý’ÅâYšýB4MùWàgé¯ìùÎQ½Öˆf<úVVªã¨wßl©ÓÇö/àòioϸ=“JçÁztıðús…E‰{ê>mÊjå É'ýÉ„uÓhAÕ.º>Òg±úÆ›±¯›Ðöpk”Oiìáùî›órx›aéCš‹˜M’´_"¾^*jŠ"Œ¤”…’b#“S«¿=q‹U,§gßC6ÝSç¿ÌãM™ˆðPÓ.J+i5¯Î¡åöNáuß`u±hpÊgzÓû˜äøÁãáíŸ:³õYŽTbœ		Ÿ‘ã»§€m4Öx»3rP’¯ŒÇ? ý)’=LÚf›×%ÚØCHÏìТY›4\͈NxönoÜItàühÕj›8Ò1jž· H޼ü–¥.d„hç#|×@µªÎ¹ÍŒýS1
ê¢Í¨¯oMY®Ÿ7Eõ +Žˆ\úž&©è{e7uöwÏôô{æÌÀû©HVg€]T?J{Aes&YêzÅ`¥tMXkoþçˆ3–°:ã•Ç<³%Ù‚«…9Õe2ÁM]5"Ê泌
ײ_P§n,”ó<­(¯•Üô÷\áÆÚÐ0ÐjõI;1¢TÆð~žÔ`Ó
̈-*Qöj4oµ×ùÑá1r¿rgze¯÷SgÈD—ÚÙÆqQ°J=æí“ÒÛ™8.²@
:h"D- ß[Óua¨#ÛYþN³sƒ4vÐ>Ô:èÀË:.ï{9®ÁÁ:ÁnÖƒ–Ê("-6Švh ëÞy¿Cìî5-FÅËÙ°¬÷‡Ü!:ÏCëóX‘Ž'b3A]È~—®@rÊÁ‡-9vŠt›?/ÞYS-œÜ|ðÁµ.>'´ /+ùæ]F»{Ž÷øÔŸJGï]Ûbï1úµé16c¿ú*æ )ìVS‰J›Ù>YòôÁi,ËSß‚e|£Ÿì›Ó5^­v
Ž„Þ7jT3÷§ô4µxô­Iœ•²J@¦§‡|Ï™ðYíBÅÞAÊ~{bvöø’æm‡¾IË>5U"ůÆeûMî™|Ù¤–:bYÊi”x›,~˜6–ô6ÊY{mÝ|VFû@¥§?aÓ@„ì}1XSɰ­êôóo†9?kÍܧRžÓ$ø:‚â»ØR
«„±jNæ"íˆèúm»ûÒò*;ýu5U]ýÄ>‡AP#ðÎÛÌÑ}Ày’„VS‹í›ò™U-B¸ÅÕ—£¶:GwTvËÙQ£ç|¸áŒÎÂÌÓó{HÅy쥉<Ÿ$ÂÚ·/ÄѦô˜Þý¨"³ÊW!ý
¥"Q^pêÀ”!Æ«”ì̆¯^,˜hK÷H󠦄š,æN®»Ì"
.
J5¬Fyl.ÍìYW&”ÔÉ]à`‘	+Ô¬}?®?~Öœ†¿éúññSùùâÚ5ÿž%…/+N»^Þåà|½!âû.šD؈{d‰œBõ¶”XÀ<{\7§{ðÂ2pïysiPÂô,æS!ê®îFÙPÌì&ø`os¨¼ª£Òµtã,ÉÍ5‡K’•rM1þÈ#Mþn7u¶“U<
™ÂóÝnÓ5S
Y"œ¤|¯¿©5c+ݺðQ¶n9.Éi‡kÞ™pL0’pWwRj|¶Æ®ŸÒé
ý0j¡ Î®@ÃÚ(A~“A5áTu$pBâÝ3•ÑÔj7Í}¼‡Aß!ÆéÖ”|"ªí,Gýþ˜*pÜøƒÊ3"Ѹûí¶öT*1Ó¸uÇåNû—|J•	‡Ý¹Í­¦Í¥±<¨z%‡Ô&¬@÷¦r/Hã¯Û²	þǃAIàÕ6ÅFx(ÏNýB|è…Ljo®PbÓ­¿·G¤ßH¿ã†züf=6ê4I)³[ºEøèFÉ!ñrƒX9¡ÖÍAšãíIi òz?móÏoLåeUžá§„KFÅE+Q't{mɘqóî§™EG’°b#‘‡ò†à’#×£BÛÊu±{äýÒ×Q;aøÃ¸çyøz?­†>
stream
xÚ·T”‹6Hƒ€H#0H÷Ð’JwI0ÀPÌÐ%
‚tw)%%%Ò]ÒÝR~xιGïýÿµ¾oÍZ3ï³÷³{ïw­¡£VQg7ƒš€e vp6Nv @RQ]¹Ù@.L::
Üü9&ØÚ	ýÁtƒà2)ü¨µÈ9Ù8¹œ|BœüB@ €üê(9CÌŠì9¨†I'	µws„XXÂâüçÀhÊàägýË nv„˜‚ìŠ ¸%Øö!¢)È 5…€ánÿå‚QÄ·âàpqqaÙÂØ¡ŽbL¬Ü †Áf€_%”@¶àJcǤhXB`+Ô¡æp#ð °˜‚í`&Nvf`GÀCt€º¬@Ùl÷7Yáo+àŸæ8Ù9ÿu÷õ/G»¿ŒA¦¦P[{ÄÎ`±”eØá®pVÈÎìdƒ>؃œAÉá¯ÔAqUè¡Âꃙ:Bìá0vÄæW¿Ü<´YÚÎLjk¶ƒÃ0å'q›>ôÝãŸáZÛA]ì<þƒÌ!vfæ¿Ê0s²çдƒ88e¥þá<ˆ0Ë,Àp/rÀ°«©%ǯnöà¿”œ¿Ä5xyØCíæe€½ æà‡LÈ€;:½<þTü7Âää˜ALá°Äó·÷1Øüoü0Gˆ+@ø°~œà¯Ï¿Ofµ³qûMÿkÄÒºš*RŠ,ÿ”ü¯RBê
ð`ãã°qñ‚‚‚~^A€×»QAþIãSY;s(@ðïlÚôŸŒÿYÆîƒ	ðß¾” ‹0þÞs} /Ðôá‹óÿyÛÿ2ùÿ[ò_^þ¯{þ¿É8ÙØü¥gü›ðÿуl!6nÿ0×	þpŠÐ‡S°û_ª6øïËU›AœlÿW+=ƒ¸…Í¿„Àd ®`3ÜÔòï}ù[®ùëÒl v`(òëÝ`ãÿG÷p^¦ÖïØÃRþ¥?\χ”¶3…šý:3.^>ÈÑä†	|Ø%.^^€çÃ=š]ÿZc»þ`x(Ï`uÄü5S>~‡ä/Ñ_ˆ_À¡ô/8T~#.‡ÚoÄ
àPÿx¿€Cë_$øô/úU#‡ÙÀþ>”Àñwƒšÿ&üBP'Ç?ô¼Èð¡›?  €Ãö7|8»?àCpèðÁ¹ýð¡¨?q>‚ýNäA	{¸Ñßê‡Ô§ý0.¸ËŸ¾ºàô|HÓù7äz ÿí뿆kêäèøðŽûë&ÿü×v›bÎLBM…¬*¯ÊÅÉ]ØÖP—›B£t;CxáôS™–
hɯF$ŒÍJHúT¦‹‚F&=É™®]õ[S}â_gÀ¤;W%ŽØ²zœ¶Z€)Í dCü	¡«O£U)põõb´'oùÛ¸7K7rïš`›ow¶€ü<êxrx„xzÓ.R˜.5í2ü›®>^$¾£^¢“†¬æÐR$òR¢1œô‡Ûª^dÒ·ùùžÔ®Îî“lùö2¾’ §¤îrÔé}ºI	£Så¾Àè%x/$‹b¸ÇÛ2û¾¡Žîa{™¨¶Ÿ©¦%8?
}„VgªóˆlW«&ö€J¡6L@*Ãä"jÂ~lm@.ìš©¬ˆÒ/ÌÓ>MÉФž[h‚ïù.|ü²‹kEæ
R>Ðüûft2ó:ïóR¢\1T¬^é«è¥¬…Ïå~zw<~«§kÍ5ßÖ7ÑÉP%sã%l[r(ióüÎKýgºñ$͵7é·µ»¥Cý%ùÛ5Q)ˆ¼·ªˆ0¬q$à©öžN8ÄsiŽö¬ë"(Ÿ›/‘¢"û±Ô³­fƒ¢,WÁqé¬3ø#]L'O4{!
ÎúÓš+÷w¼çd1†©×¯{߆s…š¸•W÷îæ¼4Z}™èŽaH´à7c°pФgÅ1AüÞ¨Vúýy2`é+¨Ñ§óòZï9KsÓvayÝÅ2€>D á©'Fð2Ã@ÎÇœéD²y„ê‘à²j¦ò{AÚ•”5‹¬Ð/¾Ù³;kçÇj¦lV˜¥Ù‹®­<¦øÛZoÇCP¼ìÄc™èŒY|{Àœ.¸:èµ›6»æ±_L¿+P÷
*ì+ã /ù‘¢›îƒ›ì-Ž(ô%º{¬”g~v0mXº¡9ú±¤5:dͳÕICp6ÊEê>'ômOZ
ÉŠ'²ü°ïךf>¬l5þª(æ)eº§K´³ëüxéÝ*K“ËÊÌì–S%a§™µ×’¯ªâñ˜˜½('ÁFa„üj„ÿ_B¬ä
«¶¬÷?2ç™ù
ñ¨[ÛTÃFÓ½|x0ò[®1ÈíüN#~ú‘;›“¡ßÖú®+@a•„Ûåîòâ¼1gèuØæóýŒNÿY#&À÷ž.Y8ÁžKU\[>Àÿ‚ Ê*Ütö…T*s9Ÿûû6pÍ™mòA€ºpLiPâ:y®‚•ìî…yIÛ“>cÃÂx!Õ‚qò$ú}<±3%õòHb¤w•£úé¯tµYÏr2@þ´om€ß1OGîr<¥æXèè9ÂEÉ×)^zÂzŸU胰/ŽÈâÖ3.LªIµÓµÔOí¯I|ð,q4$÷DØBŠ÷_+¿h-=l,#„«¡ÚKÝ/@ofMDìíw¤Í9cÑ–vÚ_>úAyja~»+Ï« Øºg«<ë°™·í#d[Êð•’FGÿj¸ªÓúAOïf:5¢J4à%¾*?Ô›¯5ñ³nR>%Æ#ðЍ
›¿W4êÊ8Ç=tçÒ‘iŸî7ª—ËõñójÚ.ÆÖ¥&@Y8¼_úYd~yΪ^MWý¨¡å^°ç,ú†´u^^ýKL^hµ}>6™?Ç…€€²rœÐ‹üjæ]}Íœ$­/¾aÎÁ}nÀ(åï]õ±Vñ˜"1fù·ºU¥‰€º+©Äf·Å¥Õn?­á¢tÛ?\ø´ˆ`-×»cJŒ7ê}§N¸šG48Hô±R<Ö¨€ …Ú!ö£µ—Ê-F‹E^ßu9¦1¸¾l4Ýeß:ßaÊJR÷Å{Ãê
YÇ;ñXf”yX:©µ©à³è‚YߨáLyʘÄ3A‹ƒŸ¼¥èb/:Æâýá†çŸù¹\“¿Xµãáeü²m”ƒaàÂ.W“yÈI	naøñ¬fbþ5FĈÿ;ðT’ŒEE²kÒ‹?W™˜”WcG:d0×"(¦H’˜nÖ\6Jú©J¢OÎ:yŠõ.×[fIœ›àjÉnÿšàê<í=@ß2ü“ª.¢úÏË!ÐøqÈîÆ¤Ã©È×u1R`­Œ…|èyE¿±'Q°
ÒŽÊÞ-ÄBŒ*sGÈ8ÅwÓÛžr¡RìŒ ß¡¹]Ò
ŦŠ?¹ÏØ=½²SééÙÌÅ¡·ÁÙŸ Sb/›ÜhŠ–rêjÙCýHé‹]Ìõ5ÿn4ò9àwj	&¤‰ÀÅR¨+u[K1kÝ *ÖζmWüs%]––Ѻ©Á&gr åYÑÉýéåB¦à¨Mq=ùÇ,$²7#|LYO;Ç¥ÂDJØglá;ݪáù+ÝŒ³@ón•¢Ÿ(¹•};áI!ÑÖãk¦|Š)AÞ;Úy{uùôglà‡è
z=ÒÚcëÏÄ0¼¼röÍr¢ˆÚË¢ˆ< Ñs‹â…©«¼ÔÚíòÉ–Õ³eV;XÚòOZ4Ó§D\Ùo{¡r¸##¥ûñqÕ˜xùvmgŷ܃é°ÉÇ-_¢Ìí«WlAŸ˜bŒ”¶º{–”¬¤£šÍq•RwP“òõ³Wb¼¸ûKózÆÚ5Z£K]ügŒÍ¾Ÿ“:Ux ;–i'Œr²ˆ33ãq0-icÙuꌘL+ˆ®«ºuàý`)3{#]ØÞ/0¤ÕÕÝ"käD@µnÕ)ñÆÚ¿f¬Œ)á;sw­<8Å·w‘™7»çÏŒ°èµìsǤÿ>¶¡ðé$'€æøÉM"3+Ÿ<^§½EÔ‹1¥~¡È4ü/™xà™1Lz·˜'(ÞSB’í<\»ÐÁ…C›‹/8ȯ1Ÿ×êØ˜­—‰ÏJóBöN{·I¿~nØÃ4ʶC©ë?J‰¬Ü« û4‰öRì壋åÖM,s¦x'|ÓQŸrIÓJü>R»Q§:øäµ_Q†ìkÖ¤ãžÉ%1RGR•Qñ¦×>Yµ0¿œf¶pÀù%Œw6øî»‰³ƒ©Àô:eš’jÞëÈ-Ë"߯•~àTkÿÀÖíâ	C.u·1p&{oG|ëvÁ	VÇqjÏø†®Ú@¿T.ôBh²nUç#¡Oy°î¶ƒÕ t‰—0¦qY§?§'t·™ü“ý$˜…_ôB"a¿—ay‰ÒPßq¶—µ•ÿ=rÓø\É“æ2À 4à‚¢žUÅÚÔÓG¬7¬—-;›fœjUCL”«’Qéþä´Èg¾‰ 6WrëêííÖ
dñ‚jŽö{†ˆ:KüxÇX­!Nò å(r0”ëÿh~l~ß¼è;ÇZs+	ÊN«ô‰:†uy¥ŒHã¶5™z(L¹Dd”Õ‚<¿²LšLm5dáW:ƒÏ/?ÃóýáG#Ô=#Áî*ð”ó)Ä©ùb)ù‘ Zã.•æ¯ñânFšÚXÄÀ²~µe
¹J-7×m|1Àå¼&²±Û<}_wÉÿ¥QÆ­%½~û%í¢…vR©QšC&ðÖþl
Éxù_ýϤ
y„ºÎ^á:^â`šL«$ÁU¶OëÇ‚Jâ¹N.Çz\¸UŸ|œ|\t•Ÿ)u¬~Tù˜¬¿ £=ÙÄ”$·C~´ÅoH†üŒ¼ˆgàf¾¹ã†×wíµ ¯ÞáU˜äd¡¢õ1aNä*œR—ÿìR%iãkÙ˜+EE&-ôV®?ØáaÜ7
~áEôf
m3÷s}’_uÿ8lHÐùýøöžCÚWM>7Õ3+2»•i½	êz}
‰ÛúH›’ˆeÉ©ÒÚMœÉ«Ž•tcÃçO±ßPòéÓûÊÜÓ.stN$¼ Mêƒ&´Uêó§"íé«™ÝÙº:3.±¿.¶ÓˆÎ½j¦n‡X½©U/V”Ð=%…‰röhãô~Æ¿¾µ¬ýXKŒò2)º%lbØÿž}y9â¸Æ~¡ 2ùí9Šƒý‘gþh%åÇʯ¨zÃ5Bâ/d[¡±r£Ý±Š&‰žðMEçwµLÓmé|÷D GÃê4ãuƒ
I­¸îØéptn-ˆÉÓa°õ±(.UXïm^B¿‘W˜–æÍô©	P»2çH©á:Þã[Ëý,kŽ@8:ÂS¨éUIV²T1‰QÔúm“yþDÌ÷½L%Ù>‚/™¯§òô ñÒ"Í’‹	êĺç°XËáFPÄk“â]*¨gMªlòuÌ=÷ZsÛ
ÅÜшžÆ:P=Ÿù5Óà(ë¾[P:$¬TîĦt~Ä;óöu(ž¤n(õ²ØñÇì5× ØŠËiWÞÀɸðçj R~\NÎAÁª¹¢}Fë£YÐN'*–“Ç’Gð˜Ë6EMÆ!êÆ6ç~rè#¸7æËÂ{œ-ZG_sæFd§Yc€yOúM¯ØMò¯ÓÝ÷]ìñýP@;7;X'’‡ŽG"ñÑ‚ØG*^[˜
Á™Œu<éã±ÇöÌ8¶áÞ®ìÒOÛ3/
oÒ\TÅ™×ÐåLöƒëјb‡âU±ý†RS®G_Ääâ6y¼àÇ¢ãÁK¹~¾ú9ï‰ÆNÁÚ«†OBV±vÓ÷1’-‘¤
Ó>A
Äʪ0¶ó‚…4áÎbv{êÏ™ë\Éчg!b„¢,WÀÆ^Ye÷a¤.¸n:ÙTÌë	dvƒLM|2ªåÜÚvÙ§xyßÏÂ@«Ó±&þÍif:븩j?¿|‚³76FŒ$ÚåÇþ,í~ì˵ÏÞè®'öJ‹IHM¼èÝLñãZP°¨L0ŠÄúxÙ&ˆ±W€T+b_Œ*L!+ÂöÅ.@&ñ“êíXotPªßž…¨”G»]µ°ä Mìt¿¶XU”xiG}”‘›éUÈ·Žg¯¡,óÌÍn¢(·_“ ª)Ü$týÌÜB¸­KÇ¥,·Í; ÒÌdñu¢[dtE®ó‰uŒwÁ¹Ú}JG†‹’16þ—ðØÛ]¢i«™}ƒ"•Ó™Ë2DF&Rùݤ{š6‚æS˜]豋¬->›=RŒ·K„¬ †&¼ÙÒ1˜Au‰L«LžôLEqKT•—Ê×­lÄŹ™úÇ‹µ@l^²%MmáÃæwC'7¬szìm
b»	Å©i²¬qá2_8˜µ|¹¦À÷TÂVo'Ö%×è\E.d…¦	œïÑãc«Ã-Ö%/ÛÔ®Ìß‚Ó䜔›Ìïévì#¯œXZŸØK#1—²~þ™sÖ‚ŽT
ÃôÎh*=g?κÕ»ÓwÁC‡DIeîƒo¸P5Ô“ª$¿Ùø‰å¦.lé]ôhÖ€Š*‹N‘é.ƒÜÛ«¯Gµ‹1¦O`d¦ÐéPYU„¿ÃÒ¡õgÔøl/ˆñ9tZÌP1ÀãGüäê·M;ßšÕ’¼ñ¬LXXzA%’Ám_ñÂ\Ȱ½Ü.4Iಜh5±‹Ï|wÚ‘ë¹êjºˆ– RwM ³¦¸&3ç÷V+¢7t	Zœ
]œmäö%–ž/áâó$p>ËÉS‰¹öä™(‚¾3Å¿ºyàrå½ýÚK.-Øùºc‰PyJˆk5]/ÕÑÛ‹ÛgÔáÕ*Qט	9¤•’´CßSKÁiæä&Û*ÆÐK+uõœ¹²Ùbj)LM™ƒØŒ­Ë¬Ûé–Çæ†%þeT»)ìÏjùÞ“Cù®Ž·Ýzõ\FwHŸGÖIù´ŒJǸ¾[GcIYu[*/žÄ{“&ufWÅCé~žmU*Ñf7<¯.áCd8ÅØ`Seš¸™[Zœ.âÎÅÕ‹I9rFoàÛÊ+Òœ"?û…3^Hu²mq›)÷v+Õ/6'Ðò~RN¼fP–ÇÔ%JæJ{>Å÷d¢d6Ø,ч£¿6¼¦iwU‚*0ËàöúKÈU)‹Jìª]È-z¡+;rI@Z-s`Ĩ8z.HAmtY`Ñg¡JæiOš4¦xÇah²ßNæîn.~µ~WÄz@mè”æÆ䣳·¬$g·H-_
~RIp—ÃHúq¥‘.SÚß_<âqªÉãÉ.DΧß*h±»ÕŸO©sÓ¡Ü93‹o;=üXFI<5Neuk§é­§+IÁ¡x÷ÔiЗîý1ºiŸŽüMä$¥Óú“	ôŽÁ|Ç'ÑåÞ}
ŠV2ìYJÓ‘&­HjsŸW@DŠ…¾(•ªeDZoôžKHØÊŠœÕ½A^n­º¨lÓ”ñž>Ï!´6ŸË`ÄŠ€rG!-åø©xi #Ù``Qh£JÍ£VâšV¨†b.Ä·ö¢uxŠlM½ïyÂ
Ú¿Äc¯_W—
C#zJ7”µ[B¦Õ—å÷øÚZ\„R*šÍj±naoœ¹…ÕÏzƒ§Eé›hi“ÚTÍRnrS›hpÈ*¦3Ö õå…ÑL1rôªÓt$F¡<½”jÏ_/ëbëÔ„LªñÝÍFdïHzí±ÑTÚpZDô¢¦[s—ÏaÐ_Ó?»ÊÉÖÜW8œßeº‘æÍQS‘ØË@Ù;{ø‡mü†"fÆÂÆÕ½]<¼bÆdo™¬ºhGú,m
 Ñæò2«…l€öb&ë´ß2-2¨D»‡ÍUt–)vÞÍ|ŽžDÚ)>FÛ!îÊ3p4g“äð¤Þ~ERÄꆹ å-é)65|ˆG²Â˜p”ø¹å¢²ÈStEBñ½eÈÆém¬aÁ{â	†·L”#êO_(oëÏ©ÕÀ‰܈›8×…u7ÊáÈ*éK1”Ó\:d–×Ëaͱ&­Ñâ³?UJÝúDYûhE Ó­+
Ô«µ›Å­Ô§‘wÏÍuöÏŽ„4¹ïéD~\I$³5¯¬v]c
½	hÑ0Ð7q”\¿Z^qå¦Û»°µ»a#Kòìç;ò»9›"$XaŽ¿gÒ‹Dq»¼«'
ºÅ†(‘…zÀgž$£Ä—>ï³<,õS>µyg­¹LdWY^?)ñjñnë/¾é4z¶{Ô ~oPÆÿìMëøôÖµaŸ,=Ϋ9~áÞvˆµu-Ïé»eZJxžÂ¬µ‹.î¦N\Jê':íðÈbäX±K!zH2»Á¢éUÁ6€N‡ŽP`¦ø)šè
z~%Kè§굩fJ°Í¹^Æ"éaR~;cëm a™§†7v*¹›û ¿myEÏ׸ˆÃ 8M½ïÍÉ÷ÈçŠÝ¥°îÌù4	® ªé©¯÷»&šž‚–7÷ýÁA¯ôÞ–ë×­}ÛËr¢GŠš.¿É_ðš—4Lúð$$ðw¢ˆrdx†BBÅšÕ§Gqe¬ãwÒù~^³
8u‡å«ì8»àg‡Š)qRfžKàá7ÆyÈ€òÃFÎéYE§Å=2ioÑt†¤¢7ììÖ"ÖTWn¾Q±Bu“ÂfÇP8œåzª{ô([b±çô„W£úOöy?õ×ä¦*£L1‡7­\iöýø–3gÃJ¸ä«n»Ð•p6¹Ÿ{*¯P
¡å¢ÁiQ8Ôô‰|^Oe¾¤á"ÎE4¦S7Ò.n™c1Õàña3 £=Jv¸)5Þºñ’ë«ns9;’úYN±Ìj4 ãXˆ\1Ú»¡Ï^Ióøœð¶¯TÕÓÍ&ŒÝƒª`Îø
œÒvžŸŠG½<‡Br—ŒÊiò×äö6J’Й—"2¡G®u˜s›û?03]Vpž©®ÉƒlH
Y_)ïí`e³Ï·0V‡8’!Õ¾k‹»Î)bš¡!ZЯ-¥1ZdÔŒœ©½snõjÄôœ{`ktxÛ˜bèyîCÈDþéˆúåhZ¹æÄqä§£–¥r“ûº8cik‹ìPÞ½^I_÷ôP÷IÁ9?æ‘,"ÄMºߘ-û/kV$ò#€Ÿ†u5e’†M<+?/š€t£‹™Lª:›cW|vâÀâäk0bÝQ7Â+ïê ¢¶†QI8Âk)ÛVª‘®"ú2¶k´8oD©U´9'Åp>Ójáh §X·ãå’øs¿¹ßh+ñ¦%ÏÚeǘürŠ§Ë 1ÉÍn”„•}–…s0†Àû-<ÄmÅaô’±û¡87~ÛJG’ñ9×6Ÿn½³Àɪeí“<*£ŽOÖê+YÏØN=Z¯¾n‚OŠ;Þ•˜‡ÌõÔÁ ïÓ¶wÅLqÛ™Fn±¬1$ºý|_Ãøï–gÕˆ_ùÃØDyÚKq¢]æ°‚L:•%ã¹*´‘ëO4òµú]t8
g`¬hè9Žtí¶{»e»c£\v-Fb³?ߦè^@T´˜<—±ySË„(Õ­Ràk"©bvpÙÛ\`sê˜dí§²£!&—"ªi©rh™àó¬xÔh	/õR*¹ûûZ"êA*kýä9–yÆÆÉ"„z)dËñÀ½úIçD.|ÔʇÌ>iùGÖ~W¥½«¼‹¬1y'¿ç^×R/¤»z,p\˜Ý¦(~$P%b2&Y!ŽÙQ€O°Ô@W5\‡ÇU^¹Ë”‹âŽãey"C&0»ìFAa]Œ¹‹ÙÖiU~ž”%4GÿDŒGqK‚Áá±Ö¢²+"òMà;%ûƒ4"…¢vÜÛ·Σ
B¡ºqÞ
ãCâî‰Æøè*æov)Æ?åúî!Û¢UL5µ%?áyˆJúèIÄœÜ;ªþÏlOî_£L¸µg³yo·\¡ÉöIæÔØ4XMÿ°á§(ºÚoæ×KÜŠ*”Ý¿ª‡Ç]Õ:Fì³ÐÅ}†|Y»Cƒ(¨(-ÁÍÎKºªwŸO\‰Z1Õ‹|LµWÓÕ§‘Ü’XÙÓbËÛÍ]rL¯¼Pá
Øpù²eüÕÉ¡@Zèz<Ó˜8Ø«¶DÀp!¾HašMúPb¹óù»iöè"ìñ;Á‹þ¯ Ïß*ßh-óEOß!,Äß~çm(ãuçpTtCŒœEˆ*Ã!e|šßŠ<Z“Ø•Èh6ËŠ÷~*CâõAùµFSt—‹/86,Ý$­Z¨¦¼€AÑwvXcµÙÉ£‘{\»¨O%mñ´àFT{àåì^}þD¥ÄÕ„ï|Å›­±tܸq^|Rìö!G~CÀ°åÅ7ñ£ÄÑ¥MŠdžQžq—o!©ˆÌûÃø®|aoÐwˆŒ!—Šò”ØšöŽÇ"ó!…°“7¼"GeÃNßšÏö„û“`¼EM½è5ifÙÓ}%m²gÐ`ÎK³ÃŸß,K°î–ÒõZ_z·joqqYê^°ä~~k†aë~hÆÐRåEß¶9dcóT&™÷Îz¹æ•ë4›Ý±”¢ÿu¾æ½cÆ0þ¬”ººIk´šäÛ¾«ãÚöPMqwKŽö8ӼĘ–EÖ›‚ÀÛÓþ3‰çî}»º‚óH…cƒEãW“RxîY'ч¬fuižá¶”1[|
Fq	)V8i\joÇ‹ky0g@¶Š=iYƒ¡õp›í
f¼†/éE3á*OAÄ>Zè·¢Œ eß~ÎSà#*-/æÚ9*5_žîŬõaϋӔi§Fx™´áÏ÷&¡Ó ¹ÒL’b½„[ô.•fþ,’ubgàÑçögVÍOG.]i»çY»‚oÍuLÜ[õÚ_Bøùíé«аwÜP3M^õIZ8ç—É1„*~æ6ºüRÔÜg«~æºH0ÙÚ]Û@•¦_*&}xFK²%>©ðTQÖ7]£êÙûÖî³vßõ®Ù<Á%OëŽS	7–EBzz™v…¦ÎcÔ7™Ìqçß?ûXÒÆ=äÖª#w>l^A>klx;{CE#v¤¬&B¦§Â×aí»;8)Ì«±ÿÁ†¨?Ò[Ç"/¥¿ŽGJ¿¼g3ÌJ,ñ‰eYqùµ‹ë७KÛ‡¢[!c2¯m߰Ɉð{“
‹%|Q’e³®B>¼yO/Óþœ{ü±•¡¼$U	›@ND»¶hÍà,SÓäœ`ÍA¡Wü~ßT‹ƒ)µÇ}”~6}ê,”p¤JBI¡^ó2Ý©ÅÎ9ØÌøëôéd§}=׎x	îAÔä׌+O y°±€¯âŠæì0Wa£;¬­»ÈóÝ¥:ÃáÙì|$¦ç{©ýh¯T<çcË/‘·”f3¾âfsDŽÜ­Sc$
<ÜûÎó«Èû×cjVFUµïFï§àíg­o£öÏìÞ¹<£;ý(!‰áXÁ»!;]3™|æ‰
'ѵÞJÍ÷ +¡§i‡èá†#Jžé*=¯vØÔ‡ã3nEupŒy±ãs°?ê±:¶Üi%zeÒøÔÓÆ`7‚­,Oüd„¬qÎïL’Ú4ç…08
=\ÚPÒ5‹›o#87&¥]RU»›(³]P¢ÁÙðÒAÓî‚$&ÄGÈÅÂX‹7mËëkÂ8”Ì·Z«Õ¶Òµq·÷ï‚E}ù4÷C¾®ó_=‘ /€vÈVbµ}‘é\îõB˜õ÷ÈDo¹K‹ÓÖ£gX™¨ZÍÚã_,³ˆ‰KO
W.0šx„ÜqŒ¸ܺm±iŽB.hñÊ`e–&bpe…ûvG#œÄ{uÁH[WrþÛäèAº³HÚØYË]…&kBó×g6S˜}
©CŸðÏ8¥¥ä¤ÄTû£‹“kƒ=­û6Ý&ŽnÊW4p¯M\Rèó¤zý'òâæ s-)QZ‰àoMj“ê7d?A¹ôYÙ•$ëæùF'"<z@ÝÏ5Ï–†à/Á&7Ú.oÇ*ÅZê»ṏå‚I"¯vÚIx3£¸?œùvîܧ¨ÁDå¬pGi„xJvü‚!ïGÒQ_E)w>ËGÒ#{@…ç¦m}X­³~×»Áæw¹*¹ÊªnãC+X"Ô‰~ee•
ûáî¶æ°I)Öý‚ÜH‘å½ÚÉÏl×%½ï>$r”¨j†—Ìñ½uŠ«,d)do\«˰„CB¿éRw¯}²X­Ì6$•ú°õ2µ^ªDUPÜ<#éC¥ÎIëvÉ{Êqaä…ÿ™¨n
endstream
endobj
122 0 obj
<<
/Length1 1387
/Length2 5972
/Length3 0
/Length 6922      
/Filter /FlateDecode
>>
stream
xÚxT”ÝÚ6Ò"’HçÒÒ-Ý Ã3È
Ò)Ò  4Ò­¤€´´‚tIH« ßèë{ÎyÏÿ¯õ}kÖšyö}_wí}]{f
»¡‰2åÕ@!1B¢Â@Y€ªž‰•(Šb$\\¦pú·„Ëꎆ£²ÿPu‡‚0X›ƒê¡€{€¨8@TRVTJˆ2Qî²5'ÐÜC!¡h.U”›;ÜÑ	ƒ­ó÷#€Ì•‘‘üPv…ºÃÁ $@„q‚ºb+‚A€	
‡b|þ‘‚÷®ã&+"âåå%rE£Üø^pŒÀІº{B!€_#ôA®Ð?£	“pLàè¿&(Æä`
8ŠDcC<¨;[`¢­0pƒ"ÿëþüÙ€¨°è¿Òý‰þ•ŽüƒQ®n ¤é€ÁP€†®0Æ#!!¿€ …y‚àð»u@CÙÂNøg>4Øî†A£áˆ_3ŠüJƒÝfu$Dåê
EbÐ$¿úSƒ»CÁØ}÷ùs¸.H”ÒïïŽ„À~ñp1CÂz@µÕþ`°&’Û¡€PFRRB}€zƒD~0õqƒþvþ6cgðsC¹`Ø1 pûAâ‡yBwh€ß:þ¹"@à`ÀêG’ü;;Ö…ýµÆž¿;Ü`
ÄÒOüõúד
–aáóoøï#±P½gj¡-ðgä9UTPÞ?!1€Œ$ ***	’’ü3!þ§ÿˆÕFÂP™¿ÚÅîÓß-{þáïðþ™K…e.Àûo¢?JÁØ7Ñÿ3݇üÿXþ+ËÿJôÿîHÃøíçýðÿøA®p„Ï–¹¬
ôPX- ÿjýKºzPÜÃõ¿½ÚV
ÊHG,£…Dïïüe‡£5àÞPˆ!vú‹5ÙÍ~é
GB
Qhø¯þ—+2°öAc©ùÛÅjèŸuÕ‘`ä—ØÄ$$ ww	ö¬±+	€Ÿ(V•¨÷o2D„‘(6€1C¹“ü:XìM&†»ƒPð¯3Ãüò’ü£ØÃÝ+·ßTÀ–ÿ{ý[ÛP¨7L27Ë…9¿
k»¨VföZ&\ZîˆN°ê’ÀpÏ<ósÒ%ÊÔœx¨byysè©áliÄø´?3ÿþň÷ƒ7ÙÁ‹iZyõÞU•C¡ü¯Ço¡l“ã¨ÔÓèUªƒD#V
{k|kžd‹éËp©.ñÍÊWèÍû2»W@Ñ%{3æ‰rnÇ.îc+vÎeÌ ÕÊ8jwëtSm³Ñ+ÜÇð¸s•¶XƯ>«Öqƒ?¾Íîë}*~T Ó]%ù2‚†‘Ö÷{îPR?#]bö½F4·ŠÄ™jijc¡k÷"ž½Ôâ÷É‚¾ÖÄ~qzG}ÕàÞ5xÔ¢$¦ås»XìÖ²L¿ŠÝlJŠv¬~Ê©ÂUÁ9L?¨GäuãÓ³k;~êM¢ŠKέtqçb‰…ŠÛnŒÝ¼°’™(*f“*îÿô\EÒÁæ6³˜¿¼›
 aâ¢1ÔÆÓgw^öº-(|ú¼^ny+y²Õô¶m°+òŹÏJ7œ`Ùž¹Û³“ب-qöžÊœ_]S£3ƒê´ã‹ÏŸ4ÎËÅ7líД»¯$3;Æo.N‘oJ5cª»‰“®ÝJ6\9h’’œÆe¿”µr¾BòÝ3ù&ùTé ࣅ±ÃkjFŸã)kVou}%°Mpp?#¶ÕÉë¸ïd_¬Ïss'Þ°›p¹¥b5|(5½˜§òÃ,ÐŽ¦äу<Ø“ïq§›'õy–ʵQ÷Ñ)«vÏß±¶ßï‹cI=ö¹»'uÓ[«þÛþ!à¦l?GX!¢¼!^¢Eõc]´™uH·í¤‰Ø½ë¬áä+©¨õ¹Üµ`7Û­zý·ïeUÔÔ<³á2â«/õ‚¸eüðI£ÌÕÈN¥©É@cõ!bÓHa'XÉBQgž¾`ךóqSUí7M·Ã³n–4-5,"÷ú}Áçx…!Òß=
Å?|±4|료ê¬Ù´»icñY-D¯™0ÊêÎRñqDUUüÔ»KCõCÝ+±U;±æ/›KQZ©~$¢ÞŒ´;´è™8%ØÇYÇádV¬§xR»«¸œìÆ?&åI>à ¿`(ŠXÕ¤HVz¡Ÿ$a{(žmº^+
k‰0ùE†6ð…Õ‘U¥&7&¸Èï‡i’¾ø–dìûœæø¶í9fK¥æôáäîZ_FÆŠJêÐÎtÀ·×}s¹h1ê±ÏâJµ]åd¥’
˜M:¹É$õ'”qãšNÔåy†½åJÓf€¤’Á†(õÇ‹.¸ï3øÉ¥ˆâYϳ~>ÿÖ82»5ùÕb;ÃÙÈ»~|dC%H_kD7s‡…½IXY±åËd7]ï	‘ã.WìÏÕ.Ó·›päËÅo¥^zØâ˜D“(KeHªÈS-x"2LW‰_fÄ׌¶q„Ÿ—ÒØˆøE÷
(åM¦	94þÉñóž·¨%¼ÈcëIQ¯ǽ5‡—¤×·;#òòŒ•~3Žw©ÍŒ˜3T­ÛöÔßßäД -úL¶O”—kS/š¯Ìð:6EÀ³šw­Ù|êËRŒfIB*DÆlAë»èžg·'ÿ]“çìÎP„¥ ˆ·ófwjMÄ£¯È‡Ú†9ß	ÝîûaþÍÑjרúîQ|]ªï¹5Ä0Ý7ùÖt¬Ü¿YAUûv™q¶Iy-¥ùM;ÑQ3¢u•ocìÑ+`
7Œæ¯{…–ÆÁŠ:p¼\æ#o²]h‰òI—ÄÃ9žŒu„pYgוw›+Â;©©£}7¥ûzý; ?}L3Ÿw×›»öo<]f|XüÎQu1ñ8ñ`öuKæ5_‚ÖuÓ(ÕÅ@‘Ì£–ÄÞô‚b+ÿÞS™Ø>÷Ñ)íÇù(ç*³=3oçüá낄âÕÓ¯¾vkg!ÔtŒî㉟7
!Q'mGíëc$"B'áJø[†Æã±LWò}Ù`)0ÍßÃ):ƒˆê且—¿‹qþX^@ÌŒú2”iV².ßzÝ¿*µ0Úæò
›¼yïUó¬å¦‚.qŒ¶°§ã¹0þäíè^ëäÛ/XCÕn«¿Irs«Òà//9­YL÷½ŠÀ“‚ŸVisÈz¦'„„ñSÜ%ü¶q¬ý‰<—`%Š•›—Üþw—Fz_<=ï`gÚ«¦þ¹3W&&Ôp7ÿ‘ëgôÝ³í`7v»Üb£¶ùÓ5ž"ý,ͺƒe‚trÜÞ’á×Î6uÔÈcqK…{ù¾Šsj{Aòúá×Úd¬Oü28Xñ*pÌIóo=îv)ñ¿@­Ä\à|Gk­v‘Å«y­4_ؼ"mgN Û…<óSO¢,ì~ì<ǸœA%ÌIg¾¼éÄ„É>óuátqá´¹³[E‡†5å«¢lUÅ·HS::þ.žsöÔí¨êY²ÑFF4¾Ãr	ˆÛñµúãg,¦É;4Æ¥ñí~L)S%u"wiŒÞý,pÕ‰óãö•»;Õ™Kìz´j
—z7J_·›ýü?ýÕCË ÓkÈ#Ì]æ©X—#bÅR1WF¾Ü¡QØIsÕ^êòJÁ…ÏmÞÕ*{®y¿2fÊbö6#¶l 7zÉ»ù¶©R.P1åþø@}éÀ3>ïh ÃòÄè9ç7ÎWò´LŸBf²w Jâ`>Jñ2¦4ò)–).~½-–n¦ŒíÂ\9UÈóåt‚w·vÆjQZç«<
*&ÊÎ(p8š“º§És¾¢ú ­Åÿ%ßál»[™T|5S¼Íß²
ëoèéµÔ׆‘=ìóän¨ÊyYšoöøiƩم!G«ÎHD„@yÛ„UTŠFXΛzF‡03gêÖÉ9ºɼ¡æµÒJˆEØWžîËÙOÑmn(kÉÖU>[¶ÒbuM®_iÕê÷kò
í7¶µÏd$$yÆ©Qò>MKmîÈœIÑíˆÈgüi3­á"—†|kHWŸJ$áÙÜY¾¦Î¬¡Sí#ý:ë&|íA»¨ UâCSzßÅ	ØõÍëw'ÓRb/ƒ¯ÙßÁ~+«‹Nßãi»ZþÈi`|"„h>ðAIÕŠ¾˜¬tŒò¸'%žH¹Swä¹¼Óy¨³`á—­7¹(®8ÿ¤TïÈæ«¬£-•ç­„pÊtË9‚0•[I×£‹-iâ…
—µåóØM_D„o4¢é?ã™Ù¬U†&É[Æü¸q•$Q÷:&È=H£à#_Á¿ì Š×ñÈ–¬Óˬì^“ài¸è-J½<¾öàä|6o€E7w74ß0™[
ƒ¡À=óÐô•Óq¼3<þ„M®Ñƒc»VîÛ“Ô´.Ïö¡ÃËSÕGµŠ÷B[E’48$Í„«
›„¸'tŒ&ÀŒƒ“åãò»Á_ÐÛ‹{¡Þ¨{6Ë3eìï¼.%
>
<Î
ÂìJP˜¯•Ö
TP6V¼|}É*Sk†ɬœ.íóÙ\ìI&2Í‹U•¸Ôtw\1#ì¡”xÇù4–Û¿:¾¾3†øQêGͲµYéܧ;dùU„zžëK¼Î˜âÐÕ%Ù—Ñä—½,››^#Üw7Ã
f™¢\É…cŸÇ½<¼nlÝÁ0–ŽÒ¿ë|{ƒøOÈfO›èKšYò×r·(Ãè性yeg¡ñ5Šgá«4÷3î°éD9Fâ—ön½è*ݤ QŠÍ6­HLñ€Î8¸útüít>¼]=òP‹ÈNŽ&8æºê‘–¾š.nÝt`òTªw
(’HEq#dN,›
ÆŽ'×µ56e»0)³	„&f#à>rg1UWëÂOåR
Á.ß\
JÛq‡,«xB_í³ÑgSÐuÝ5+~5£¿ ­‹‚8/ gÈÅ)#H3n33}IÇðX¦BèdÔ¥jõ׉3 ±Ò~½6G±®Í9"‘Œ7ú¾Pæ¶ÎÄÑB˜<[áFZ¥ý¸å…r£9ÙÎ`ÏPï1Ì‘ÒPDÝíq6¤Y9zÉ‘õÆ1Y%&'v¤wÎp?îDNÅÖ(Þ 4Yük'¿Ê
ñÚPd+gã’vùÎÏ<;Bèû÷$·Ò9_/Ù‡ÉЉô®ëÕBƒrgßôìLT×_c£üì´†gSäpØyýj»u§ÜnGìîøÅpZŸ>ågKWYµõhvMã½ü¥J/¸ôµC·É0Eõ³ž„¡S˜šEVÇ»ôÌ5è?G\´×Å,d`i¥Ê±‹ž†qLdCùÏ–|粈¢nŽâº“ý„i’¼þkºIݧ<Ü8+jºZ¾Y”„”ÝÒäÛ\DZIp+¼GüOÐUhï½B­Ü»:T«k‘³Ã{NÅ7šïKŽÝÇq\w2²¸OOŽ7rï&Ocõù |ÉÚ/ýõœZ¢L6šóÂ@bÉp-Ì«Ûn,Zî³(=6Äa»>þÕñá`
L½WÎCþÇ <#œå¢‰Þ›RÚ
^¹nðõË®=õ q±[Rº_ÓR‰¶$ƒjšÎ•*žˆWuŽ+-Qù‡A“÷œ•FßÙÆUuO
Ž›è½Ó½®ê(b
×hZÌ"à&{ͦž¬0áß gOÑKêùëâÖ|•©õxšÐæ ŠáùÔŒÉùÉR9a˜OÌ!ÆÓ{JÖb”HïqßÇŽö•)„#¹ì¹ƒÀ惛YD•÷'I¯£UIËWª”j:lDŒo"aY¼ŽJ^6°"óŒ¡.ëÀG»±¢_·Ùl)”Å=+®÷¯dyNT±4ˆ]ó$%ñý¶nÚ´øm8÷‘ÖáöYÖ5ë,_ŸÑ¤)N|¨hł˔ÄSˆ±òg{ÞÞp%¿y…Îè5…o‰U›>J½?›Í–¿ÿþK¡[K®ì—vx×GÅAªÁÎíßrH Tùþ •X’¿Ðî±¶ó§kwƒ#=ðœÇcПŽ]aAü;°î	CwÛsÛ©Ê”›|SB~ñÍÕÓßÄ(Kºê(¼ßníߊ2ê%>ñRqK\i»2¹jÍÍâ˜)Cd9žùÊ5פkûL=PŸ!x3´íæ^â¢GÚ¨D¨Ôå~ýL<5Ñ=19ßèáb
ÞãÛq3î¿Xœ{]ÆqS¬Þƒ$]š$q!Ð3W.¾ÄÃDL[Ó\|šþiÓ!ÊèÓÉaµ	‚:Ϲ÷ÀÈäKäɈC¹´òˆK˜FÇ÷>m~LØæåê9½ú‘à*Ô\l‚J^EÃG+|Üoþé…ì“ÙœØx“€hÔÌÛdŠN#‹–g¡W§ã‰wø
|¿·ƒ›ŽÁ)åVÜ—KfgGiâ?ïÈïJQ§XÝ̨;»x{¸#¨,Ô^ÒˆIÉV¼|“±LfB×éóo¾2m©ŒË$ünP”7e›`úıåº`«p¼ö̽ìÈòQßÓ³Æë$¨¶˜“EÛeWÒµåI2ìó……f9Ý^`{ÎB…‘*¯diàÎÅy[®œ£ÝmïBUsq‚ôñòÎbÜím“èìyR4)ô~AƒWí“ó#ýé…	5ãý¯ÛIóýDcîéMèF5õQÎÙ¤¸|Ùº‹dÜ¢H—³%žÚÕÞð×>ØiT`Í&Â;S-V<»RDÇINÆ~i¹¨Z70l¼Ú÷TÊQŠÇ™
¢ ¦5Ï
rS†)w¸{EžZ•[¾çÖú:žwÕ“Å£HÒuÑ9TY!¿>ÿ8÷ù"AMðæ;èURJ´qbå«ð¸„’`Ë~a±§[($t_Y¡á\x¨†ŒÎÓö >
stream
xÚt4Ü[÷¶‚袆!:1Œ½÷Þ‰hƒÁ(3˜Ñkô¢%ˆ.ÑKôNô.D"ˆÞû_rsÿï½ï÷­õ}kÖúÍÙ{?{Ÿ½ÏyžÃD¯©óDÊ
n‘‡ÃOx¸¸…2jºJ<Ünn^.nn“.éùÛäqA@á0á d\ `äOŒ¼ªÁaeW/€G@˜ç©077ÄÍ-ô7î"»A­j\e8‚Àa’;yº@ml‘wûü½°Z²x„„žrþNH9B\ –`@
Œ´…8Þíh	vèÀ-¡¤ç¿J°ŠÚ"‘NÂ@ »»;ØÁw±gã¸C‘¶mââ±ü v„ü‡	 kEüÐ[#ÝÁ.ÀÃj	!îR\aVÀÝî%U€†öXõ/'àÏáx¸xþ·ÜŸì_… °ßÉ`KK¸£æ	…Ù¬¡€†¼*ÒÉ	ì~Áø]>Ø
u[Ü~·ÈKiÀwþ™aéuB"¸P‡_3•¹;f9˜•ÜÑC"p~õ'uXÞ»'ðÏåÚÃàî0ï¿-k(ÌÊú×V®N@=ÔÙ¢$ûsçÂùÏ‚ðsss‚gÄÃÒøk]O'Èï Ï/÷Ý¾ÞNp'€õÝ_¨5äîÇvƒ.®_ïþmáð𬠖H€Ä
ÃùOõ;7Äú/ûîþ] €çÜwôãpÿúýïÊäŽaVp˜ƒç࿯¨¢®/'­Êñgäÿ
JKÃ=ÞOxùO@üÜàéÝÂ÷ßu4ÁÐ?}ü#W	f
ýÕîÝ9ýݲÛ°þàßµÔáwÌ…XÿCtcn~nË»Ïÿ7ݧüßXþ«Êÿ“èÿÝ‘¼«ƒÃï8ë_€ÿ#v„:xþAÜ1×y§5ø`ÿ
5€ü%]5ˆÔÕñ¿£JHð¤`6wŒ~ÂÃÇÅÍ÷—Їz@¬4¡HKÛ¿Xó—_ï—Þ 0ˆ&ýõÂÜeqsÿWìNd–öw¯⎚¿C;
ý{_9˜%Üê—Ø@ü°‹Øçî®ï,~€7Ï*­ ¿ÉrÁàÈ»ÀÝŒ¾k¸ί‹å¹ëhûË÷Çä¡ÿ1ï(„ÿÑÿ0Ÿ€®ÿ0…@÷ßæ¿Z´tuq¹Óëo.Ýõÿ·ýûq€@< –83SpK‘`»ŠàƳ2)j÷'kC ¾Ý‘GØ«r”nëZ2¢ç‡¼ï£¦¥Z'¾G/o
nkí
rÛ›.ú¤D	?œ©jÄ´¶Xáô!»ØB¨º‚¾«´´™ó¬lî~Òþì~$9ÎFÎ鼿6™¶¡ Êü©äô£í.KÍO.<´¡è(,
AA^<´à&©´¦ér©ñ‰f%FÄäÐvÂ#ùó”®~ÿ·î¯Eœ¨ÐåêÍÍN*Gi›âo~´P©˜Æ™VÛå(.cYƒ_°Z t$‹¤+­Ž(¬F+iÛ|RìYBïJF—YŠeØ[º/õÎÂ囩{‹lA}äL¢n®/?KQ{q±‰˜ü}ÜÎéûò£?ƒ+¸Þ©ø¨–÷ŽÆ›ê"ÓÇSr9ûSIj4u½¿ðŒZÞï
r‰rJ7=Zñ×BɈƲûâ`68Œ,×Ëiì PÄe¢'ˆÜ¿¤Ýz¨ŸCã#0¼3  Í"K¸6²ë>Ç·PÊw({:¬.2áS<‡ÝýQf
áS8íå`<7U'0ºÎEÒ“‚|Šl›õš0_äAò¤7%sbáȳñãtó%œ ŸÙlÑ(Ôzüºn…¦?Ìä6¸R-œÂëªü'ô65É!}Ï ù6ä‘^ù€u\$n±ïp–s´©%gˆä‡DïðÊ~v¿ÝE‰He–Š¢ÎJ·cÆ×•GÐJÆý
—8ÙoéÞéÏhÅIl¡ÌÿÀ¡à(rÍA-è2÷%®põ{_шòöãÊû$¡ã–µŽòǃjbXÖ\Ä㟋W¨ü(ÐŽãÕnþ\}‘5Á B÷žšøëÅ»¢X)ÅX½’½ùÇžVæì6;:©H§Õ=BRbJn#VÆ¡IC7*vƒ—ˆè-MŒ›XÉ}[Ã=ª\®.0ÝSÞ1~4o?,µ¯uÅnÜÝe‚Äc»¼D‰òÎËGËoï™âLªÚ~,É»TB>ô%|ÅZ!en^ç”Ò¬9#Ð>Þû©î)
R[^Yÿ!cM©åÁ`)ú2á뢟ºíÇH&î]ó¯a²×–8Âbœwö¿ÂðDâ€û'†Õ™ij(õ(xîFVePÞÝvý¨”ïŒ¬ü“ø>\¯µOwb̧ž“yOÓ¨	!˜kzžR83a³‹}©9bJ¸~G€íÿ^™W^ŠiK2Ö>3fŒnépÌ
€Vl’asØù"ÔÒ“'j|Á´˜6`
"åwUz¸È<¶`õ^é~޵AY#²Ø$ùܳy“DwŒfq°Q˜©V=ªã q\XRýàókóë
Û%C„‚Cå
Ó:A\÷`2èíNƒèmuŒþÓ§Ä%¶3S§`éGf!ñ0TePimÒ'êµµ¯y³g}Õ,}ÍÛ’âr®_¤(–mGa.&S•BQÓ¡äv¾q#]ŒçïV;qô´œXŽè/›”Ô¾V ¾Çžÿ2žo(­ßÖ\؆ZËæmÎ:©¾”ôYˆ¡îq.ª,û>cOQcñ7OOã,@JŽ¡·'Clº–”ûp4šIÅ9•\ÿö=J€¿pŒ„N¡ËcPí1
jÈ}¢ŽC“íæ®>·‡B+^.nMw¶Ýè‹™àéá“ú
­.G“fÎøÂ0ø×E>l©±›^Qºá8›®ƒ§ÓG­å³yÆs™Š’`n¾»0µQwÐÞßVÄ»`Í!½ µcäŠ=#‘™%ï;³rY%j}–åÕÎûzP–Ê”Žõr¾È3¾P¢¨töQŒŠ
¦@–ðÑòÓ`©ÐœM\9[æfçë義Ýò]èéÔœíWb¹Ñ–³«ïA¿¤¥i@…Ñ;í¼÷…6´¼tpVdɉD]ã'µ`W|•ÒvHJs'\ÜÃ{Þ@ÝÿÑJÏÆ»R)‹<¸Ü¯ª<
òOö!lªÍ˜Xo7Ü3œq°>xÿäB~ÈgÐñ€+Ås@ªÕHPÝtÈ6Þ®5nM“Ç­ô¥ñ°Ÿƒ{‰r”½*?)¾æ~åš¾JP>¢S;	|fŽÅbÃÆOÚW´!l\hKðîÙk…&úÄ:O€Pù¤K‡-ªeú*pµWQÉ"œrø
£d¸‰ nö‡wÚë5rGšGUû¶U(ÓƒM^&ò„dJÓY-^³•?¾«ù0ÈÈ•¹ûJOëjÊÝ(á.áev:táÓvíQyãÞtÄ“™ðsk9™BÂQ2*…“Á•œ<錱(ŸQî4©km{ÃÃ¥ýÈ­ú[I‚ãÚòÄ`}÷dY÷ñâVÅÄ[ý7F#Pg¼²Ôù¯ÂïSåàárö3‚€Û(¤‡Öþùï²è˜Ø´™ú,ægì
3ƒ°âéwÉR«±ûå´žÈÐ=D$©ÔNÜʾøxPmü!PL›—¼—ìÂJœþÙìPÌ–PƒZ¸VŽ¡D þ¤Uår	*ö|;ÇôúYé¹%sÒþnàÒ±SºÔq>‰-{]! ƒÓ³¬ãõÁ‰AN‘ž}hJy-iŸÇa«/ÊXh¦k“¯º5]ãzqdé%$±kZ5îyUÎ*ò!T>·½y4ðdúÌïéGò.Âホ.󙵿p?oN•R3ɰž4ü.QãaB­;Kù¾Ó¿Ø}‘=ÇÔ÷éšu´UW"Ž2(e‹ô˜Gƒ«Ê½f

YPüX|³qúX&ú‰¹9V‰õ<ŽnB…œB¨ÿe9$UÉUŽ4.!Omƒ;Ο҆*Š{U…Op4¢ðÌ¥#q*ë;`÷Ý¡êjk×i“`‚­ð–Ý#èý4Ù5Kš0A{®³‡íÒv"¢8¼ÂJ`ñÙÜ[–V¦‰èýeØéxùÄŽƒq§ÌÕtÀ’ðûÄå—i,>OÆž!dSü¨•~Ùü×t¢K¹ˆáÁ
Þ¯Éø¹yÙ4‰gÜÙü‰0ºúÂ·â¯Øé­î¡^9Õp€Ðü–v‡[\zÙD”EêÞŽ†/)ƒª7Çჟç™m­‡þ¤ù&&¶FD}ÿ0%×-u".ì0šð°¸wqvPðLÿyÙ8þ&nÛ(ÛÆ䞘cßòE_ ðíõ'ž‰hB‹Z´²yB×ä¾ýòæaèS-¹O-×kWaÙÚsA­J'áNUžP‰/~gHB¥Ž•óÁ-äyû@+]Y_ f9'E޼âgíïoe?l¬52f¼iQÓÖnh5ÞirÏ;iºIÚ}º]2SM”Í=-rïPût/ØW~ÎÊP».®/rÇ=ªçûîS=X­À²#Ó˜½C³oaAë¯ÂA–š
r^(¶¶&Ò
Œ	&l3ÇÄ`Àý U%øF†²¸G¯ãb0e7 É~
®(ÈM€×ì_F.?ÂO|Mà°¢d«b†\qLW…œ6ÛܼO
ǽ¾
Þl¦¯°©zÀbÝ!á\éÞü’¦’m4y‰<=fÆEËä}ŒrÍöíÙN¯7ç]^Q#-јXßóJ™xèsPz2kÊ*C
œ\‡¯¯ÀÚ.<‹+.WWe$’2a¬¸¦éµ5Ë·Ú¦Üy¡Qƒ*Hâ]ïÉéÊK†ÉÅüÓ]Yë3ú¥E1Ÿ¨øB­/8è+ÂWû	¬-÷ŸGvø(E#ÜhíüSúì‹5qmhV€{•b÷¦ObÍLôPh3kÚ½6éðtw9õG…ˆìwf«^Ý>ºõ'áÿÖ¼X›žì×r(ÙžIS°·:YÞñÎI¿ï“¯]Žv­ŠJˆûƒ¼Û„ÔMFÊöc7+–§¸à–”  |“€§ÿ,¿¬èsDD–NŸÆg<)7	‰¨ä×™‹
“h+uqúö17‹…á÷¨h‚½>Ÿ;Œ›Ì˜¼÷Æ
*Å™™½h”°ÈÒŽËð
.ô›t. zRÑ»úï9æQÆã?ËúÆã5+_ýH‡ˆY«út8¶Ù–à„Qé¦ræ'µEµsJnñÄ«Ô;Ow¬‰T+9
Y²^™ Ä~fÁMÍ&GÛ†ssÄš°¸ÌßéB85ó‰Ùð6f¢7w>kV7†SR7(DĽ÷æ´p‚òÝNY‘×çÆñü¥‡Ã›^ÉSlôyûxK1¯ž½cðê¹¢ù¤9#yÒ	_'ÑÎpԱ⌂i‰mpkp=Úwµ>äJÃÏnÑ…ŽE!t¥þ­=ºŠy¢Ô÷kíãtvì9œ©§¡bëa@Ÿ‹j™\CPZÀD¿ÁÃVzw©äŸÔöŸ{YtÕD%uFƒ£Kšì5­)‹ëÄ%Š~¬é¢€T€ÕËë-*-ÆÄE3&OÌôF~™Þ.WÕQÀß./¶ÀÑMÿø‹ *ħwz0a¦<ñž™zÉ”Ú'’ã9aª¬‚ô|Ì´„Yc=©«–L+QI3ò¾ªù’=œeý`µÌ…!~/ä
ššãnR5´û¦I9üËt¹É–;Ô±íG‡j~ÖɲežZíh¦½x¼¢ÒGz>‚Ƭ´ÜìróÙ
0‡tNqIqÛ:"ÁÄߌ!duŠ?–CHndŒ¤Û‰5ðéów™ª½ºç¡•“$%ãgÆPlÎÅÂD÷$—*Aª|ݦ-èÍ“ù04ÓhÁ%RÞÖ½â7ßNòD=k=¶¬Ö®tkòX=®.u»OVË1g,ó–÷¾ø„Mf|iLÜ„h´}	Lj“_Y¢O~Š£}“‹bê·tqƒµÓx	ÑÒR}ºµK2Óp 
pšEÉ2É%ˆ‹Ÿj>Sìøyé/Å´ñóò%Ÿ%Q›„¡\àr™ügJ‡ûxæPwô–6üG­àyté•!ôTÕþu±"d›µajï²|6?@›“ûàªØ­¸«Ú=lu‹ù Û‡tÀëw\ýëÍ96àFðvŠ{(
¾¼^ŒÃ_ã¢ÊßÊé^,¨{ÝR¤˜~–À|nÃ(>ç‚E(µu&â¥S‹
ÝœKñ<ÂÔÓ¸oÔ™© ‘îˆ>úAµgçvýËþ=MÇÒD5÷vg‹œ$aœžþí4|Sù¨}Â]ê©ÕéäA*†`ÐãìtW¤;kÍÕ4 åiXIEÕÊ@î/ßðź¿†’œqÊ/À=M¬Í®MEÔñ=õâ1óØh'o‘Ÿîírö¶Ò§BÝ#<2^S>òößÄó”9šÇ“±ð‰i¦øˆKXÛ"R¾’ø”ľ-áuÎjú­Ê–ÏAÓ›Ue°Pµ×¼A+â}ÿëa+Ù2LlCÅâ4c«Ùôx»f6^9&Ø5‹¥™Ì_E#ÿ¢ÔQ›Ôx^‰ß	J¦áÇ/>b#ùl–5‘ƒj´]èúÛ§/µ	ܽU•ö‚’øW¥½x!'eœøÎIR½í	sh²[u|êÒE®Ø­+žH‚/§uŸó_3äÆ$qI´Ä–Nçæž;Ì3§­“RGhû½2p—¦z	3éäPâwf¢èF2WÑ$¢ÇÐó†î(hé¥:%EÛ&qÝßAjèð<ûü½Îc1o£ôŸz¯àªLƒób×eg€æ†J·Þ "WßbgDY`k§Ö·2ùR	ífGpfËÙt‰j-CÂÏójË"ÈcÄZ\5ö•‘ÖiŽ$A¨ÞÜÈìÆL]=‡ÒÃÊîDä½5¥{÷N­£”ú@c€êòÑJúµÑä³QÕYý¼œSOåZ	l4­š¨è FQÞF[™û´e#”øi;t·•¥`Ïï†
·Æ½z
ØÍ±O´!}‡9Ón%c†ãØJìVšÚÕm|¥ñx9.n!X¡ô!^#„Ž·pôMC¹`ï4ç¤òf=Ú%yb\=B8´GÖ¾î$F¡›‚±Ãy¡•÷lý¾RÝåFp¥´Ü¦r3³K£‘Åý‡}e:Ý"~ÎòB–ŸŸå[Z&SÖO¥4[©öäXpw'õ·E½]°í2ú²W¡DªœßgŸP(•5C¹â-"ÃqP²4tq¦M‡	dO¥0Ë–sL>„QbDsi+¬ÜJ…B*Š‚Qzºr6@)|pTD’˱
G%ÄÑ=b«.éÏɲczðàª
J§Lˆ”žN÷Dúâ[Ü®ð>h΂f_…#ØØLI
æ0N '…IQivwµÒEÔ ‹%dò*5­åÉóOÞöߟão'±ÊÐO/¢ÊZ´cÓ¤Þ“+ô š±cÚþ4úl»«}WÅà:žç 5z!i=øÌ)ÙœÉ%äÏpî.Ú¡@Á}b©ƒîïs“èÂC)uÕ3{5`YÐÙñ‘ò1–bÛ¡ÈáÍ]GÅÊšj^Ù†ÙÔíŽ	·øÃ¬—˜²Þ_Ë)_P˜Ž¢¬fø‰ã+ŽoÊ7[v~U—%“Ù[˜BƒÒm F÷V‚k)*ÂцKˆ¥^¿V1R³¥Nr”;Up2̘ȌµßY•â)§æ ]ÉïPï÷j#±µ=Ê•Ý3ÙÅ;É!ßñ3P	er;ÞT2ÓZ®,0ÝÅ¥t
Þ
}©ÆÀn¼ç
“;m.³“s2A´¾%í²EÌ­"¥ªH’ñgTûÜ}ÆËüã¶?è½e `ÃV›v˜«ŠŸ¼È˳­043¿gbØó.ßs²2´Ùä“?º ‡“R»^h¤ë*¼êДܢY¼®C=ÅP
«L,…Šz©î¯yQüÌjõ—îã-03!×a&¨ç7Lý°PtÓ½tHaÁ'ŸÙbf,h)Ä{®§]ë¼ðám”¡u©çï*~SŒ;±¶-”«ŒQNQJè&\¡Ù¶PÁà®_Œ;d÷®.³vé›\BŒâó<}vS
fhXbƧòªÌûåª>ÿJ[}…Þ)²’üƒÈLÄuƒ«XÅGüeºwEE¿’¢ƒ¡tQ®dŠÏ?d–D®¶ö"Ü¢N‘ÞH²ÀçN“íª†ÑüP$#IÃÆ¢é 	gˆ°.ƒ¶ÔCòÝTÊž°ü2«ÀsÒ²é©U¹ALDÏ
Ièÿ˜W}ýœe`Ýw³y«)@/¿X„˜”‚ËWÄÃå9p,%‹¢¤÷Ø&Ä›¬¼²Û2ƒ¤Ô5*™”ü¥§Z:ìt9{F¦Íf^õ†Cñ‰J®!eäl‡2‰éåxœ
^)ý¥x b8št	ª6å¼Ï€ªÎÜMÚ› êjPŸüåY½:ºP‰y•Äùf*cÞ&/%3ë	ôúc…‡ó:Qíu$šä‡·¾äo0sØ÷žÔº¬ùn-á­ž')Ìóú™SÙ9T»½/¶J‰”ûÄ$oÓŸ_“`1øidá8”þé¬ßzÙQ'=ŠG.£ò>ré%·Ûá#CóÀ¢lÙRÏ‘$»QD#w°µïlèúV¥kǧnK²S
¯Qïm4g’¾´‚”ø6hT1Y,ž¼ŽÀÏê~Í£#€úq"%ŠiÙfPLÄÂ4ÁâQòýûsjþgËé±Y%ƒ¼ä«™A#æ5œ¦kè‹÷¥mÀ)f“ÔÙc¥.=Êc½ A!]ž8ëý¬2‘·«-gƒ6,¡¼r'DÏH¾0«±cV·±)(WàL1¾NН¨*¹~•ï5í•õ¹‡]’¼XçU1
Á+-›JË·®½õå¥pŸÇF±ˆ E¤ÃøøÍŒ€TµO¤]^/£š`ç7ÞåÑ ˆ”´<®$Æ»L”§tæ‹j»#Œï—‘oE§˜ÞäGT‚ÍUHô44jZ/7ó³t¶»hÅTÇ))Þ+¸ˆE|¯”q!
=ê»Ö[Ÿh2USÎÞ°~㙼Šêìñ#ƒ™5"ˆxÁ£×c ¢È‚“&Eß‚gƒNz쿵·sꞆq=	#u¦Žy@cFê–jÏÒ«<÷Ũø½ º4/ =•1KnIê 
5# ®H+&EŽJüóœEOçû´|·[¼¦áƒÆy­ú6ö9³Ï.±oÞ
y¾(¦RP	K0±ƒûÑYzÞÃÐiGƒ|{Kk§_†W
%mÉŸj‰Iš&ËpjâÕŸØ
dŸ?QÙ!sWê	¶®œ³YÀÓµJÌ´â2‰âz¡¦ì¯u„A3ùëôBÎjŽÎDź²#‚¢ #›K˜&òªº!jÇ¡Ne•-$œ‹Ê#á*l쓇,>Ç´u5pc¹XœMñ‹ŒÛ³ƒñ-b«7X£m`•YåÞVQÝê<¾WžŽgë³JÛjàø6´æcNÊ[OÚR¦*dª¦å1à„!ö%ÿѧ͢ˆ±Z¶VáIõ:…Xœ"tµôƒ¾ËÀˆ×ò1§1
ÊŒžý󕊱Ctö2ì52Á7¥ëžìœÝ‘å#ô«^+ñób½P´·ºªÄ„,€´1ÑÅÓæ"œx¹±ú¥XòÛØGœ¯Õ˜Œ%UáÀ—Faªdæñé:[Æ‚«V›ÉlÚ™†Uíä+ß	…UyjŠ„7¦j¤^/1æxáææi¦+ÝúSŒœr3|¶ûŸ¾º.úF÷·k·]™Ð·æšÙÝùÒÞ÷¼©;ÖÎÁ¯ßL¬tmíz« ñtŒÀ³Ž¯è=‘Ï6‰<Ê7XÍ“úL	Š™H!ÙcÛátKÆã…Tïû’~®
endstream
endobj
126 0 obj
<<
/Length1 2116
/Length2 14336
/Length3 0
/Length 15620     
/Filter /FlateDecode
>>
stream
xÚ÷PÚÒ
cÁÝ	6ÜÝÝÝÝ`°Á‚»· !¸<¸»Kp‚,à<ι’s¿ÿ¯z¯¨‚YݽW¯îݽ§ ¦PÓd·„˜ƒd ŽnÌì,lIe--v6'25µØÍô;2µÈÅqøG„¤èöj“º½*C
îövN;;¯€ƒÿ?€Ðl	Pf(@A®ÈÔ’'o°µÛkžÿ|ÐYÐØùùy™þ>w¹€-€Že ›
Èá5£Ð 	±ƒÜ¼ÿ‡‚NÈÆÍÍI€•ÕÓÓ“èàÊq±¡gx‚Ýl W‹ÈðWÉ èߥ± S´lÀ®ÿrhB¬Ü<. À«Álrt}=âîh	r¼fhÊ+T@Žÿ
VúWàßͰ³°ÿ—îß§ÿ";þ}haqp:zƒ­V`{@UF‰ÅÍË	t´ü+hï
y=ô‚íæ¯KdÄÕÀ×
ÿ]Ÿ«…ØÉÍ•ÅlÿW¬Ѽ¶YÚÑRâàrtsEþKŸØdñÚwoÖ_®#ÄÓÑ÷?È
ìhiõW–îN¬ÚŽ`gw¼Ô¿c^MÈlÖ 77'äyYذþ•@ËÛ	ô·“ý/ók
þ¾N'€Õk °èõ²¯+ÐpsqùûþÓñ¿™`	¶p˜ƒ¬ÁŽÈØ_Í «á×ûw{Ù^ÇÀö×Ï?¿N˜%ÄÑÞûOøßW̪ )-+!Åøï’ÿ딀x|™¹ÌœœnN^?ÀÿYÔ€à«øÇIyG+€ÿ_b_»ôÁÿžº¯=à¹T ¯sÐýs#6n6‹×_ìÿŸ‡ýï#ÿÿfü/–ÿ×1ÿ¿ŠdÜííÿöÓý+àÿÇtÛ{ÿ;âunÝÝ^w@òº	Žÿ7Tô¯ÅUY‚Ýþ¯WÞ
øºâŽÖöÿm$ØUì²T»YØü=ÿ2kÿµgö`GÄü×Ë`fgcû?¾×å²°{}=\_Gòoèuwþ7£´£Äò¯%ãàæ]\€ÞÈl¯“ÄÁÍ
ðeÝFK×ßC`eq„¸½¼Vç°‚¸ ÿu¥<ÜVñ¿LÿB¼VÉ?ˆÀ*ý_ÄË`•ùƒØ¬²€UîzeQþƒø¬*ÿE|¯,j€UëzÕ¢ý½²èþA¯,zÿEü¯>à¯,@·?ÎW1æ@;W{ «Íëk1ÿEܯtû×®ÿÇòWóY-ÿ_ýIñrvÏ?¯i¬þ9¬Öÿ€¯šlþ_KÿòXmÿ_˱û|÷ÏD¯ÊþÀ×Õfý‡ì×Ç„òøªÊé¿ðu×Y@.¯óŸöpñümCþËõªÝÉÞÝõ4¯ç?4¯Å8»CÜ@–æÿÐÅùo£+øïqÿsö5Úåðµô?ÌܯŸ‚ÀÿÛ|®Wÿ{]ìì¯2Ýþ_#Üÿ\æ+çß_T®—¦~e÷ü9^[åõøÚ*ï¿áÿ¬…»‹Ëkƒþ~å^÷ë?øï/-Èd¼²±µ­í¸­'ödÞ›ž£ÞÓÍ gö]qét¿GGH¥¯É	Þt¹OéÅ\Û•¦»[%ò=imDˆhKVoð{4MÒ˜ÙkG^žÆœ*>o E"aÖÛ÷{röÓ	²ƒm…îR ÎwvçCW+Ĺõì—õj(ÿ6¾¸§¾_ãˆòX>˧kôyžºÀsGGF(NÍÄÀÄ)ÎúÂK=’t]‡Ãe„TÃßn…dÔCo8B´*£ýÅùrÿ™ëGÁ¸AŸâƒ§'I“·}ÊT‰<·9v3¹­EÒ¼JôÌh¦dÞ¼âÅ‘rÅ:Ûwb
ß,«ÅfÚeN¡'”#~÷˜–9‰†›7ȾoiN×%‰V¹Æ–ãÖg]Ý2¨,>,.ˆH†Æ'–žød86I“'ÒËu¸ðû-ö;|¡“Us¤ŠaU5¾ÄãÈèUL¯¨µF¦bYƒqÔD¢æœZpK÷FBå'áëòÃq’¾äãÚwãs=ËÞ£^Ã5±õuCAº4R†IsGPÙ4ØM{m‚”ü$íajþwþ_“6»úf€×‹¶,¦O“qù«cräMëŽûq&Ç·ƒž	#sÊÍs^-øûúÕé¸ã"§kh,.{8•‰NV¾lRÝ~¯“zg›´\æü×…»á)š§~g_ZÖǽ\ŽC·éÙ‘Ñ´Õ¢ØÆQ›_™Ñ-æ9ÛÏ+¤0TÈ–ƒŸÌ¢©ja¨aÙQA˜”Áù—eôñe~Ú3çƒe'±Vðw8RMÅn·˜ó–齟ó…+³s¸'~v¼g$þR|fËÛC}{IÇßÁÆ¢'‚ž‰Ób…švŽ|«½6-sT÷;±•=ÅMz*x¶y½Pm¦0€¨¯¨^ÆDC4975÷ª·Ä?Á$‡â!†ÝÚó÷GwkI~^g—XÅŽQ-¯Ï7 Ïñ;É}T3ËVæÅÏ i¯`}Ú¶áòßÇÜ‘2ï…m¿rìt.À/Zà&z²£Æ=ÞŽršçÉGäD÷x·ÔÄG³Z,([;ŽIÞ;¾,y(µ²>¥îr*x_’«’ÑÑú–%,Ô¡{Vd[à“Gšqšh¡#ç©y Ó¼­­Ýí9®L2þ­¡‘].ùIΤ†û‰ÿÝ/ñÛŒ¢C'TkCôÇbê>ÓéÒî3ÁF@=KÈ–£1»|×*O]À×Âa„J0Ùå–Ð`¾Ÿ¬¦Ìv¿l_Ñߺ/3;Áš11#ƒj¤K­š£…wȼ'EQ¤ÅPÜ™C£ÉÃÊ‘ÞRSaP>ôÖä”åÐ@ã1ÊÛe¾X0Á׋£
üvxý^ŸÅÙ&£ïÍo}⼫û``y©çøŠJµ¶ÓÄg³ªª_;YÊüuðßMq¬gÍ=)vÒQÇ;\ûƒFµfS ª¤ºa̓Gt)Œßƒ<Û“Í^‹Ëàbi÷zͶlLà{Qµ´ä+å¢@öß¿buN|¸ŠÿÝ—o†½~³¸”x³´ -%sŠÜD§†«ÐgoÝ¿©ˆÊ×îš©,e=U½£…LmFsJâJG¨8 À"y
žPä/ìò’`ÆñØ‘~œçò2å&‹ÜKÈ_i{ŒÎêgúõñ³åŽ=7­ù˜ùº3SšÜ
@5¹öo`IEÅñ·A¿ìÕg÷	²æ¡ºE嘯¿z¬Žæ-YaaX ?ú;Ó°·Û¾bŒvpnÇšÙÏêý!ŠP§tiç¾âo§]•wIÍDX¨›Æü‰0ý°¯r°¡°KMfW?Ó=¬²wyä)Cë=.‹Û&RèÀý±ã>¤ÉÖ/8“­xþó#(%Ì
÷¬‰QùìÊÀÕmęɄì( ¨RtW<ûõI³Ðó‰ç¸™1¦OBŽWŽS««ÐC|pÍö)üžßWª',´QáèYÜäIlœ“–ž#ÉØ`óÏÛêkDBUð†´‘8ɇ¶x1úùUݾrúÅ]p»°Áþlu\~~XæCØLÕÍ q–Rèìˆ÷]ûaV›aÐs<2ºQˆwÓ·FÉi«ï·=5öö¡ÝègHèi¦¤øQÒÑŸK¤ÙàÅe¸Ö·Ý… GÛà…_º£;èÕ^Ó¿Jƒg‰âý±fƒ@qòõ¯w[bÀ"WÚ±¹hâå$^*ôË‚~wØùYÎ"AÔ‘V‰µD£=ÎJ¿ö“̱B(%¶¡“q/Êê›Q§I›ØåžüÉáÚ0|SÉ>_•ÂEïa’	Èc«¯ït_¨ÇõRB¯á¨–#ÌGøveL,³$&É4è y™µ~pQäÄÍxëC™Ñ*7=ÑÁ¢T!ÖüUÆ©P7h•¨EiEK	'
úþ¬÷™æƒÆ×~é¡ãR¥Àãð~(8ÔKQz>šqYy 	¨0Àè¦
}ú½Ô)*¬-ó}bhÿ©j(ǵ{q¢˜yRÌØ«ÑbpÝÌå6K÷	ºüé1^—z쟲wÔW
.Ï_„6è*¬eMzûj¼ÔŽàMw6æ‰z¶ôïõäƒ)o[R¨pE­šyÉÒW³6ý±Z?è}‡Fp>æÐî0j…üx¯ò¼nùe¾~X„M¤âº#Ÿg¤€wm ùUܰˆH?„ñ·»ƒ-ö]'¾+z"[ø}éÁ}C%9l8CŽ^]„ ÌRþ†z¨ßú:(ø–ÓO<ÉGf[ŸëFaY“Dn4CaûóÇ#ú€\êœÏæ†]Xª¢}—‚xyž›­CÒUÜE¢”u÷üªåyÎâ`Rô`h,£ï~¹úsÄùª‹Ó{¾U8vCÐÛŠÇsºÇj`sÂhe;s'™û‘œÜ:âxèæ%2÷ÊË|ûIIo^•çà“ÆL€|jþ²¦±«1©”¬
ï’Ï:VšêZ–)õe\ÙÌÛ_ö¸$‡`T”ÞâÃÚ›ŸiY/¼ÛŠ(|£ñöÐ#,k¨0k²)ü¦÷HdÅæPMÑ	6¡rÒŽ+e“i˜íÅó4!½HK HÍ$`h«9‰ýë–ƒl«Gœ·5¿ÈçFJ2ö£’FU ÉJù/¨š®X#òZͱóWØ+ Ã¦r$v;{*¿*ðïS6g§‹Ndu/¨ȮܽzdC¦‡ÏåAö@È(rå’+Á¬thTfþ;£M´B‡¶èuG†Ú˰=4TÝ£¼')ù«0ª:åšm–Ò%‹Ø5{RS²zF¸wÖ{õÁpþaÞDˆ‚¹„ª–[)eCKžYä!EþŠ=Âò]¶ÿM¦|lØ»:ÀÔ€uüæ†v	,hÆÒ*¼5]GËpeÿ)
}÷Ls5Øæà*¬QSke;nH?d÷;Ii^CȬU~8lÁæÙ^‘ùÇ妓‰H¦<ÌüÊŒ]k»ci>œfQØŒ¼e3`¤
«™ügŒƒÉ#0lé½Û«a¿Ø®Ÿ dÉ&”1Ð…gwAï-T·…	¦C2&
Jÿ&Jý4J߬ôÀLÁT¢f‹Ìæó¼óå*…àËÕÔqC—’òïÊ¡óƒló®”eE¢t ¯9D1[~ßqF;ÒBì¹`MzÅù¡g!Î/Iã«3©(ÖEí}Æ>´æý"D~QǨá›1xQËz8&ÎÐtÓ ÉôÔ6œ¤ºè9…»¸¦”V…ÏC9’QZÀ#9z”2¶e®ü¼ìýv2°Ä_pJ5Þ¬ÁõwÝä (îêü¼ŒÒÜuì,ÂÔÿÖÀq”´¯4›s¿74=N÷©ÎzpòP‚צ:Õ¸k~Ékz^«¼S“G»£ `a[ÎYlŬò¡I€SR2QPsÔƒRè=þpƒ¸(¿p×|ðÃá°/îý½òX{ô—¥}G÷Ü’÷„Ÿ¸¾åéŽo1²š†™—R¹ÝT$²³|ñYšë±˜y¬ñý^!$”íqú{­eÜgñW„Ð=ÊÔeÚðtÑ:ÿ¸üaSeŽy°Û—ÌÑ*ï£éòÅS€±naïâì¼HÑú.ìG¬ë÷äjÅšuH
$G³£U?k"°5.Ú‚'»Ûà÷4Cë¸'S3ûóF#Îâ¯0÷d3´ÈKV'ø²·†‹Ggl4|G¨&rQM¢“EDyë˜Í³KŽÛ‘PÈÞåÞ4Ç’zRù]ONFë©Ô‹†½Ç„]oK™z¥ëÑà­‰bæØ5`£[kGÁU0n5p—¹_*ø¬ø{Aäeº–lðó”Óúû¢uAŸ‹ï©F	š¿èb¥¼‹¨‚ro:îæÞ¹k§X#QȳûHJ
ùr+ø
CéoÉH²ÚÚBxPR5h‚-Ã>‘>ê-îfaLF‹|
°4мº‚¢Þ6$ŠÖ¢0ª2a†ƒ*|ÁOäv"X¯wê›å€híðK¿“.Ø¢åê°?b°ÝFmí—t…Æ´ Þ+t<û†„b}é?3(íGТÜ9¿:ÿ]ß4vÐá„brb^ÔÆróvh÷Q&2U¯<÷+[ªpûÒ»úb°¯ÌÉfæûðö·±~*dƒ°tÌäm|”
¼O_¶b°Ö–°VDb6'“àÔ#•~V+7Æv¾5rU4â€,É/Óù\ï:xGŸèÌ=ú¸Câö#E`òq!L‰2Ú
Á*Qc•àDkCÄ‘©,©’"êNØAc–å`ê]ïÒ7¹/<}We vŒÔß%!ñ)ˆ«1èœ3“;™ˆ)¾ƒKªØBÍÎJ2ihÕ¼ñ»C¾W%U?«'ç:VÚcR­»zDiTHz“Žžú*ËL‚TSåF¡â&9Ï{1™²69¢<¯Wù’e5S«~˜·}2TÝÞÖ¯ôºŽ0ˆ_k…0NuŒº½ÿ	‡<€¦Ô„«ÄÙËiÖÿRŸ´ ÐMÒnB0‡¤h½XHΓŸóÀ‘!	sB7ÛrØw¡Nîž60ÁT”…źóÍÙíhÚåóæb/ÔQ„¾`Œ®¨àUsÏ2/pQðàÖÂú¬ñ-•XÅÚ”¥ÑV-svp1Ý“LÞøËûcê_—æIŽU_ÎXÛ©ZýÂKƒ´Ë·×J¸iÐ-Ô3xhüÈÆ¯ŠXg‡Œ
 ޱ”?/‘‘¥)ÍD×#ñŸWÝäÙ\!wšB-VFhVÒ¯’RÑþ2ßn\!©?×’3[Œ<š¸ÚÀïíÔ
Süµç›÷±Á¥Q‰€Xáúó©[±fX)sVeû!Ó
zNµ˜òŸ(ŠSù­Cõú©ÕóJÁ=â±V#h
 y		Ødª–
%KöŸ	Mt<{ï&k]Ì|=ºi¥Ä‚Ryž+÷1Š R8>c“æŸHY0‚5drï>ÎvìœÙòaeD›¢e™¶l™g¾dÜ$ä¾w]8^
6ŸHtN
Øb~k›@mOOéñVQ€cRæ!L¾âÛgÀü)¤Jwn}št*È\;àö]*x4®ý´ìc7ÿ©``j;3üûUÑŵYüÓ%eBÉbg]¹TéÅÛ‹w´L3›y”j–& ³ïO `qøïJme&pEuâ}x6/7»Û—3bMpËÊÊfGß|.)y£Ô¼"O6:{ÅÎVnP{¢’LP-ú¥`Fê°©Ðy"Š×ð[(«[¼Õ Žiö#®úk:’§`Š4© oÞ’­.…+þ*ÇË5HXzÑàqñ6’F‹xF)œŽ
4šîCàÀ<¶ó†I©\6á$ÎöqŠ»AÛôÍõKtÏ/h¯36<>Rgz­«='¯fÁüjçÄÅäO‡‰¥´„µ]C4®'€2`¼½dž¡ûÄ$[§p[½L÷e»ÚT‰Ó“a›kvžFs‹ç¼ÈÅã›1Sž{zѺª!g®c:¢ån€¸³§Æaàò¨%ZšôǾlÒ—ã¯øÔ™oK*\ƒù.JÏl~ì#¼E—C=W4™3“HLG+IÈ—±´Õa&…†!°ªù’á¼ï¬£ôoÅŸèƒÃ•±1K¤7öÙ’}ylýg(†ÉËM9´7n[“Ï÷t’¦Æýøš¹<ÕanßK(ñà0Æ®~RŸ{k™h†ÇÈ&%ªmR#ƒ­\$3%€ÞÃÇûæû‡ˆÂ,OÃè„jœž’Z¹£×Æã)’`I€
òz”Z"6-¬•4±&Ía˜eÉÙîJb³ÉéOQÕ3ú>ªÁ\^qþ‘æÔóAÃ(5ñ´èóˆUOÖRžY
ùåS âN;\ñ<×íeó«¡Ù†Ç.ª2z9㟓‚}U–_¼Ó¶‰:a­6nnÝÒ³`±^ô¿NÝΡ'“%Z{A%iÐ~+}¾-:ˆ´¾õÍ™üª¹ç/ª§šDÙÑ^=ÊogH¬/¥ì¼2·6N¿küá>‹™
ñÉÑE®''8N«#Páó'»Nph³ÅÈH«›ÄþRô÷5íT ~º²k¤
·ð.DälDŠÈ¿ŒÛ,;ä;“ƒ2ب	º-¡ª:.lFé—øú’†OŒ8‘Ä(­vg$âa™ÉN£–'þ>°[«~îAÝ%ÓdÙELóE
¨Ïƒûâú­&ëèm5ÆÎE”¸¸¢ø-"×výCuÈ*æ³»R!V‡´ð—ž}9~¿³¼bªŒ6nƒ,¸"[ûq±»
~~¨Ñ!óyP²þúœqUöü½YOÁ‘'F½¾¾ áÓ£ªúçu•êp·G'eZ½Ú•\*U%ƒ
–zëž8Š…»7õPi<³‡ëÖ w/³"/z%!ûz§n&»}i»hzÑ…5O‰ÑÔ/ôÌv¼P´÷šƒÆ’l㬣b+2ÐPÍÁßxÃ{¡é‚Ͻ±aN0.¹bƒŒ5ReÁ:$pÆnZ¥3?…ÏŸ…†‡é?¿'ÕÖ/Þ£Þ–BgUñŸ©Æt(œ©r¿Ó£²	z;¯Dw
}ÃØHù¨ÖEÍY‰*Aå³Yì;K§ÜÓ¨ËlTœÆ0Ý×/ãíÕ]¾@e9÷Þbû©+¦UùÇÅåû72¿ið°	2:‚¢òúô¡¼Ã
K°ã¾¾·4µn[öW:ÆöŠ®ò(ÉèÞùé8ÿ²pÞÀ/Ñ…×uDò;ÂîºR¤Ern%'ÂxK…¹ÑrliÝóëgôšPÙ‹Ÿèƒ¼d.›…vò³öT2ʽ–•×ÈÓ§,¾aÚäB»EMØÜ1€îñ Žp¶Y÷Tî‹ØÇ O¿´=œæ	UIÃMϵŸ[.	4°…¨îÓzßFdG­ÕVE¹"FU6	ˆ|CÞK¦µO÷5ªƒqAË¡w‚àfáÓ%É]%¶#aYcéäoíÇ¿¸#çüx´-®$Ž`3Ñú¢.`á'æÑ‹‹| œ’“ئ=Ð#5493´3“9g€ŒU¼«²›±Ïk«Ãakç+kL&š»ãÝÒ\[H40£êä@ÔHö@˜«œªž=º,À‡ì6vHûÔfAKÔxààJx¹hÁÒ%(HÙ//¡óPëáVåÛä̹âÞï¨"
´Òeºõ«=W'pb†Ö“/z˜ºÚV	”ª=Aµ¢ÅŒGÌÃO·bKeqL쾃‡Êò4l–ý‰LlòA#Ìò«¤wÙË
þ·_¾§ 5˜¨µÞ4¯à-ì·Ø±ÆÛÁ ïwÓIAö›Ÿ2j¢¾Š ª¾´¹Þñ¤ÄÑØM†^¥‰·þÁ£„dN
aát¸ÝGƺt_±$eѲꊕ”J›W$j»ß¦×žÛèÕã#ë‰[nˆUÎáãFGGhò‰O¥â±ï9ÍÇØ}ú¤ ö©dD¹ß¶ƒ×Ôvîö®`6†~Za¿+ñÒøZªcqã-{zkË
S¿³X²ñe¶©’cœB“ûîc‹Zê'N¡\5i•åT³,4¯ÚŸBqÜáeÝ|0É¿}­\Z;cMî~Ž0™²•—œ\\ŠóúÆ`üð,äPü]x‹±+E8 ÿ#¡Õº³>±Ê&ã	¿CåÇ–iû‡n5æ	”•Ö^8lçÊ~§G“\	)Ýá
æe»JT†`ÐÈÍŠ=¡rrÞG.,®´j–‰æÛvwzè™ÖÎ’/fU–jvÊ4Èߥüej·ܯín¦b[Ú˜¤L‹ñ91Ý[´oŽ›{81¶‡#ü’ZúóÔW.ýqðQ
¢õ!¿Ò¾eµŒ&·˜òc8$¥¤‘„&Â*>ëó¥¥ý‚.°³a	-:Es‹xαZUðÚ2zYV‚ó¸Ä‡’ÜÙú‹¼Ú;Å—§:
cLqO–µ‹¦žÕþƒh™€ÍfD¦1Ÿ§ýìÀ<7¿/b*Ë–[¡ÙYW´¢ƒ§ë“Âèn6¬sÖÆ2¾ï!2R»ŽtÓJûàèóÕ¯:òÆ›"OrW†ùYhæ~Ó)![ƒî1ŒN>Mi%D8bœc?õjÐÁ0cìnCý¦þå™´ÝF/“ìªØ“8]¹ê…‹SoøMp1½Úõh¶Û9 ©Ç+àZûÅ.K[«P?2âÅÖj0%~j‡É/Aë	7ô¼G‘@ôØVùP:6Q•åî¦•7èhïå2¤s§¦îßëÅzxCeœ«†jñ€£P<	¯é7t¢nŨ\O=ï"@”;GÑ©¾TrEÚùY[–nâÛ˜<™€… œ˜§S¹õÞ(ñI'²òýÝž·þit®a¡^²ô»+/T‚µ]€BEÕ@³}g{ftO¸RZ\ŸñÂçÃ0íot®0º§.ÅPÊ[žÃà¶o®‹ÚV]¸$Øg¾éaf‚Ê&.úºðD¥…æ‹9?óÑ«3Á|P·VÂÜÌcC|]Ü–Ú³e+–	cìNÆrÅêaqêaå½cøfÉ{<Ò¡­WE¨>ÛìÞ–^ by±ÌèI,
ÜìâÆJ·uc@?ðPÁï
…£šñó—	 {TY³‹'•Qñ›³ñu	Xl´·ZèÃËç%þA§Ð,Ž˜jÚ”œš0n¶"""xÖ@GåîŒü¤—r¾X§›ù¬cgMÆyfb«ð‹÷øò}X<K² üa'¥Ea"_¬«|¯í;-€À·‘¶Ç›/_lû¥’éw&yÕBP>­[´mî­ŒÐÏÝú‡r1î
%ödo},,¦3$ëõH“œÁš_E¬Wc3èD¾¡UçkSüd‡FËbû©`Ñ•HŽ*mv„›'¾º¼õ>0|¬Ô¼Ü‡
Çøn-2½ÓÔ²i&:É*ðÄýñÔsWÅ Dz¿èÄÊÓÖgƒ’*‹ÅNm]÷oxÈZ,±§ömÃ1ÜEË[}°#WUg¤·K—ZÖ_¥èoI¦„> }hÞû™ØU¾æ.·xÎÝžÛ˜ãƒW>	\ÿ,=òš
dbœ©ô&‹oÈξ„Ø£l°Ek=H¢¦‹*Œ¾ù½ c‚öM‚¼õiòÅÌ¡CL f6ѣ픻Ÿ!5D.¼:•k"ZÛG¯…ÁiùkjLx™élŒ€íp…x€j-Ôù½ÚtxÇiLxÛ*bÔNLÈ‹ùízgãÁ®Íœî©èaA;ኞ!‘–›Õg*=Hnß“ãO£®†ƒ>(˜Ð)Á‡Žé|¡tyE1j¦’ä°BBB=µTá§5ñS×âò¼ÚÅãÅÊ0p‰ÄA0Ý^~<_Í„œ?B†¢9È"žòE;¡`x«fÓG/¬åàè1µÄ5¦GvÛ®—Œ}C0‘Yªd•a]´4±Ñœ®±+]½cÓlÞ?¶ìç_#wñ*<¤ƒ«÷Ü)ÏZT•KÝ5ÁËÄFkðx’rùëË9}€l‹“µêªôd5µh"µ&­ m–­S]‡Oåeä´Jºzˆ±+¦Qö¥”	ô‚æbîÐïÖý›Ì3áåë+³˜µ¢}ì¡æ7s¯+ÒÀéÊ9ˆO´¶,èÙ+˜Õ”(—5B*(PpTÍ!x)(B³w}Én<ÁBæY,þËR!ŠŠÓÈ<9†f›Æ®û”¾ôÜwXT´<•.p0,_E¼%ñµ~—,lµ¿¬I m²¡M§´.Ó’šs¨èwS¥ÍõÇëSËqš’͢ј–ÄÎNê›vÖ–†µÑK”“{ãc‹b½µ€F›G_ÛOìæs?-‰4›R§
‹lìñ`öð6àÄ1ì$*
M«-¼g17+pÙW»4ÏÔ³iº®ZËRÞò"Õ)eç?èß|¿¼e8
Wg,-^
Ø…ùìü‹!ÚIöîN|†úå@íôôꄳ·ÏB8Øud¢Èâ3€ÁüÓ{Ð'kA
”ö*º†”•‡ØçÞ¸ƒ~q¡b#™|Ó	·‡™јüÓbÚ̉1J´´§aâ¯it~!èbt3
¿–ª–«Ç×·[Fk×¾§ø{l 3_}š}“ý«‘jùÎåß	¥9+Psü~•ŠÆî ¾~BçÇb…L”*@×É”'Û
…Óê×ÛEµ`nªÅŸÚ݉<ÖM.EÂtÁ8_xLDIS—èc4*r¶úïIî–*G8:~˜E4Òá'Û9ùZÑ8"+lã0³³¤ZñnØF¸™â·»áµ°6¹Ð©’A! ºõE´—›L¶+ÈÊ×1µÃ@×Ù5wS2;ú7ÄL˜ÁÐØm«bÆ­ÊYÙ³ÊâÉ]?ø¸~¦¼¿kÜ8…Bv3'„˜<\¯¼Hœ•·A1ÐÛ	iTý¹E7]øMë9Z¨Æ®NH±f}—0àH€ì_üî²ÊÖ$’Öϸ`ýpƒ¦2‹lÕ$"`oGÓó€Ë:&‡•û•N&²ê¬…KªuE_ïÙJ>GËqÅá!“zD5Š>*@´c9ŒI¹¾LdbµzJxly¥š{`gß•Æÿ¸§§»ÂK[w—œ	dÝ	N©CuMûüs½ž—ëÒPd)ádÁ¤¤Ë<"ÁG¶qNìSæM}l¡J®Žƒa3Ên»­ù»jý	ŸꋵÇÎ^
õ.2à€ö•$ÖÛãø!*xGª½§Á&íN¶ŒŠÂjÔ¤S´’«{ô^N=ærà\ç#­÷Á@Ùd[ÿãï_DÝj¼¸Òé¼ÀuÇàRÊíî*¯©+àÐÆp{È;Üxb?D:¢žÛGaðÿžQÜ*ò´;<¦A²¨7—6µ†h•!
¥an?›eÜÞˆ—ðÑrDÇQ/pÅÙz)+»8eŠ8›y}o)g×âÝÚLòß­ID´‚RzÌ£ž¬NÞAn!ºríB&úÚ¹ÍÒ•üUŒÓäªÆk²z4gð?»7¥„$"4«ŒBˆŽIðßz¯6ÝUeÇG.iÆ©ñ1ÆœIÒèË-⌶oD2›^Ôtè<«¾.gÀµÉ[åDyéYÞ»÷µoêTôÁ¦N$¤-.>y	¯ØÃ¶í\Þ¸Gej(.öuªrVL
9àFÃu(ÆUŠ5AzaüÖò»æú»y<(«JFh}sbHûaÏZT`r]±Êq׃k‚¾Âj2Îq<¸jÅ¥'³üp4Ò rf³çÂîûééUëÐò½£‰2-„ÉÊtüWèº%ɳãÚhÑ2_	DÀ};&!5h3ûÝ¥éæz›ã!å06æØØ[qAD7¶Ìr
áül^G4ØMùAcKûYoý”tŠw9¾Ÿ¡¡ï(ZÔ¦5O6ºäÏ(ä£rK‘ŸÛu—vvt@jN¸$›ó#ŽtU{ }AÏÞ/þE…8Vgå‹èÞrÛ¦ŽKž|Ù[0j‹6HÕæ]ؾö-¼¨Ê7”Abm®%÷´;‡‡•¬ó/¥ÖÁÂÑKÝ’2E]°ø*È—¢œ´CåšhÒ‰"Â-¤o0$„ߌbyz!ÌËŒ'<º,ãrbè–õ³(‰º„ldoNJ
¯[@J„ZX´À¦.Ù—gH@·õþæ;ý×(pw®ÙœyŽç$œÂÅ·6RÞáa£"UáI¼O˜ýêÄÛ<çþÆéÏ…û6?Û…ó³Ü‘¶éˆ¤¨Šrˆ·w»gHæ‡2œ¢ûuU$,–†ZÞOóÇÖöwˆê"2ô½yÅòd+{ÏŽ»Ò!@œ„åki¶ñS2•C?¦ (Z9QÖ­ÌÑa¨$fÓÕþvÅëû±A{ͤ»I¤¯¯Í¬¿`·:>×®ßT4MÕb¸QG³3JUÏnÓ¥	ÖM1^'j¡¡£œ{ºuC‚|'E¬&-ÿä	çDùÒ¿›ýÿl‰n‰
endstream
endobj
128 0 obj
<<
/Length1 1530
/Length2 2664
/Length3 0
/Length 3637      
/Filter /FlateDecode
>>
stream
xÚT	8”û÷·Un‰ÊRzS¶3cmDYGö%*ª[cæ™7cfÌ‚ÁT$¹¹—BˆH¹Ê^–"R(*‰,¡²¯ÃJ¿—´Ýÿÿy~¿gžgf>ç|Îùžs¾ŸóUÞâ´WÓ”H÷qt[£…6Ìí]]1Ú­£…Fk#”•]!6üfG(ï™,ˆN3ü‰aÎñlØfgÃD{:
°áPŒ€Ñ7Ģр6ýF¤3
¼/Dìµ:
d!”Íé."SØð9ßþjuƒÅ —ÂSo	ð4ÀϦ€Þð‰<ØK'@ ›ûK
5#
›Í0D¡üüü´ðÞ,-:“¼K	øAl
à²@¦/H[ðÞàrkZeÀ•±¾:öÒIl?<`"€4¡A&Ÿìµ¶ í+Ùî+	,Àha¾§[Ž^LÑ–‚ñÝ›§q! ATpÄÙi±ýÙHO#.ñTŽÇûâ!*Þ&,•Žp¦Îîp¹?	1Ø,-D]쵘³%hN÷öilb±>ˆ	à¹sQË—ëE£ûÑ¿!D#’Û r(7äí-–9°	ñÃFÙ€Þ¡£€>èO  på2À%'fÑ÷ÀdÐ	näA$þA²ð¾ Àfr@^àÏŽ_ƒˆ
x‚dˆ†ø‘6ƒ¤¯¾&äDÃòÃèÅÏ÷‡a…é4*÷}éŠQ¦Ž¶–Nû4–[þî43£ûš@S[GÐÓÖô±zï×,Nxh¹
ôHk‰`¿Oé[Á¾Ë
P[^uà×\tX·  öCæ‡Ðzhü…ùŸÅ¾òÿi|1Ë•ù¿+Âq¨Ô%¿ÚWÂÿñã½!*w™ë–ÆwÀžoíßÔýà×ŵ‰Çûß^k6ÞS™ú}ùƒD'ˆM ,iã«ÙmqϨ
t¢³ Å—ÐÄ ÑÿòÁËEð‚_,É%ïί'ZÒtââ’iëéx&ÏE a%iëéx‰ ÿ’ˆ”ΆC¸;@¢3‹WŠÅ(¢i	aÐz
ú1hEû	j(Æw¨«#ø
éÄŸºŠù„Ó±~‚pû'h 8ß!¬IÔÒãÃ"Ðá7é;K ¸Kð—Æ	&Þþ%mÂSù†—žô	ˆ¶f:agè±üÐÒ¹¦
~š}ϵu%«§ÎòE÷÷ZÊù¾w17š›ÖI‹h5­hê˜ëZ;¬ñ¥ÈëÀz´×ïoƒâ#×·Ý.]Aò|‡z±Öx~˜eÇÑî·-/÷8ªC#’×»<öã›4ªo@úLö½J´2R)Îþ'‹2¾JµpDKBèù_«dwìБ
-3M,Ë6Ë3mlºo½5eò|ôâ&Üà\|U¶^OõëL¤ Ô¯04$ɰå'튨ԗ·=úhTî­´”ýxN-„_¬æÉzêt.]Wžä:U4œÎqT

fæ÷î©¿yKûÝËÝ|W—ƒÐíäƒçû´V¿¶3;ÛÃÔ.=ç¤Vjä®iþâ¸9ûÙlúî­î,“ëÀ哪ŠÏ›[Ü^¨©ëð0ÁÒz^£.¯›Ã¡´“ü±ÔÜávOÍ·Í_e˜$ÙX¾«]=
oßÔÌÔÖŠÚî”oÔ^ú÷¬ðtC“Æ7Gø'5µã*Êc{îÈõ·5Î6’:ë/‹{¾qD…“ÔâcÁTÚçègü磳9.2˜Gâ{&ü*»Ìb✷OwnÿHŸn”´Ê”þ£âr’ŸîùöÉW¼›|fÝ‘Îâ°ßo5*gI–tÄð…Øµb´ÈYçãH㊪}[øåZ¯åóJl†økî‡o±“*œOêÉM8£p¦^¶]ÌçÌ%J€Ç±téäCæœl!džÔw‘ƒ™êC]Rt4êñ'Irû¡\%O“8Õþ±Øæ…†]¹[M·ÙbœÙ×™Ó§CI—C}ÄO¶ÂS÷¾Á¬6ô˜UM(¹Ñø[á­ŒØûûöSýw>óoìcÎtôqD›åí’±ƒ9<…[jb*‘Ì¢“vQÁüÛ¾;?w_+æá5‚i~Á®{©
cê¨+í{>©´XÞÆÉ-œÄ=¥“‘q©í9;ý}ªcgæmÒ¤ÂÏkä^´†¦U¯R¡Ñºì¹pÇXÔ\5£ª'%øÐæš>Óª˜ã±òêî'Ý#©¼5´Ó»–WÕ?Zf‡+28TyU9Ö…%ó9¤â®ñöÄÄ>T'ªsuˆÑÕò¤êÌñÖþQ£<˺œ4Fp‹Kr´õ}ߨ2ÓY§òUŸÍpk÷GÛ(å³Þätàå’Mô+;·²,úbV­[&•;Ì/MQlù—v?ˆ´0ÞãQr:ØåÝüÚÍ	"ECgòÓdÚKíDµK»ÌóË{Qˆ˜‚3´HÁ7”ºÛD®\~Õ–¦õxcÀÅ‘ä‡÷¾Ö—Ù/–c}¤õXmPÜPoŸCUdQÑ5=F~Sâ:·ü›r'©núØ ‚.íñG5+þP.»k;•¦9 FÇšïPɹ얄È=z'§œT:ÿU3û% )ʼ‘²9©Ž›Ñt#ñä“°…
OGl|DQAËu&Ò7„©mÕ±Í}ÏûT§í¶Gª¨²¡© ܇z’"÷,ãÖ…ÄRXÝ™>…rT­â¹ýéSò}Ɉm+“®>ÂG$ÞAtn	Ø{-­8CþÐtç#*/½lñ@¸—ƒkb€ºªà[Ã~å•ý›çón	F70'‘x³m;øÇä”bnUwD#s¨×G‚GnÿS7†mPIœ‰‘2c\ðªT_Ý•!ø^¿R ÷%/ÖømÁ¡³¿LÐHkl¤Ww\߈¯+%©mÅ‘›Þ¿
Èû£ ȱyMiÌçi›G¬«Bd†Ç
ÇÛæ]AøfïYÕ5¬°Ÿ?¨(zÜï€
‡·ö×W8‡éœ.‘²jÌüÛÜpÁie#Eà%êP“еíýZ öx=Ÿ4³æà€Ö›Á׉›ª,)/¥æÁ.NërTŸüU[VXomõ‚üùáô,µÞN£ÒR™@6N¤U8ÜÑ´‰óÌ»iAß ÿ$åL‰¡Š{¸‚C®ÄÃùξ¨'£!å¸Z†ÄåÒî“þ‡[R
‹t•†;«*NJÿ¦«lôßZ¯(JT‰;Áu}òö葆ºœAqÔV?ïDu—ß0˜µ­©|ÃÍÁÓýë)·<ÅE¬;Ç$Ž­Çþu	mÝk´Ò;ÛÒ>‚êW
êH1z_’'0üZSPTèM AۦМsfÁˆ¢=ÃöàŒ÷‘ðOÐAYÜK•@Íîž=ÁáN1nq
k/te^Ê‹ËT@
ç1rªv
ë”ÝÞÝäj×No+Ϭî?RcæeZ#[f_–ä{kÙä¤P%‚ZŒm¨u
±Æ,sµ2„“->_&›Fè›ÈÙÜä²fòÔã½+Ä'B¼ß™59+…—®ñd¬l>¶ïH³q†OßÃË4p|Ž9ëv÷N}Å›FÓèðÊÈÆj²k	
SäÚ¡ŽíaZŒ8YÃ}ô×þ!^7ùJœMIŠ4öüŒðê©6¤LûÌ’Ó;X‘{gV£ÚŒëG>¯—R{CöËÔŒnã׸»ÜÕÓKº(¦tEœ!ù»ü7ÈÿÅwST°eja-"–úBâøctø ÇÀ“(»¤ñJteè«Bƒ­[Xì–«æ'(ŸÜŽ#}šOÊJJ¶TE”÷›:…î–È*ôê`DªÚúÒ_>>¿Îrº~,î±§ëÜ…sYõ×#/G-ôÖÑ‘çƒpk¦Ðœsäº×ÉÓÃɃ¡ÛäW(Åø‹l·µCçO:µkH\—áüáû>nxØVq5aƒu’Ì&ÆšŠuŸ«¤×†NÁU‘=²ªvOZU9οUðÌ5¸•wãŠmý™+Ö“§E[»Æc•ǯöHEdVžç]«§I:6~ª˜x˜Þ%ô.µœíöÔ+!á½›5ëÊóÂ_$¢,®ü_éNvêh1¢¤:­«ìJÆé¬ô„ÉQUÇ"JdÈcšž¼Á< ëY|"V£`$³û°¿ž¢ìhrh¯YÂx±Vî|AJwgb¤í\ò;²
endstream
endobj
11 0 obj
<<
/Type /ObjStm
/N 100
/First 820
/Length 3209      
/Filter /FlateDecode
>>
stream
xÚí[ûsÛ6þ]~lç&ñ"€N¦s~¦yÖg;¯ú2E¢c6’¨JTœÜ_ß”DQ–mÙNgn®31‹}|»X`IŰ”iæS&4Ö2¡˜Ì<“Ž)á	3cŽeÊ0á™ÕK™Ë4“‚yë:R2‘:cT`’Aiu‡4U˜Ÿ\!'?eSFFj‘2~óñOjÁÏÏø'0‘vYÌsÒvè|{€PÐKâ
c¬Ç“]Æ” «fJ:ÐáªL¢Ð?Å•ôÇs£tÇ€pg˜Ê \¡,ðÞÊ¥Šeàï ,Ã|eµò"c^ºLQ
»a’ðHˆ=©–øW{@ª Ä{¦I¾€MÚaT¤‚ͬAÇ¡8	ð&¢#ÀÈdð¿H°T4d¡’'ç#*€PÚf¡4¤ŽŒŠ:Ð[΂‡@ô8¯uG n<Š'ЀˆŸQXH’G6’’RÁp§(x,©Á¬  r4bá#Gê{ĨÆ(ÚБð4-ðB_
“f¬$a¹'Z‡Ð®ÂSì“,á¯%ÝRé:wøé·qÎøQ÷SÞá{å¨ÊGÕ”eXLÇ~œOËÙ¤—O±²Âƒ—y¿èî–_ÙYŠäeë処O0ÄÙÏ?·àÆ?fü¢F¨ë®Nón°…ú˜Ë&eï$¯ØôÚ?dü4ÿZ±s¶W*µ4†ïî£ò•ÊñC,B‘ÝGQéÛŠJ»¢|g4*ÁçŒRé!"œ"j+£¢Êp‘ñ¢âEÇ‹‰—hFKÛÀ½ÃOf«pÿ¢}îðÝrÒÏ'Q±ô)߃ÑZËD#Ad¸¦´JMšd»ÌàÞÐí,ORž–Œï³ÄÜýE¦&ñÒ-E
—dî{J4Ö$H‰Æá>½ÚHù@"•O°³,E‘xõ}$ê(AªD§A"¤«D|/kq©O<¶ N„þ÷§½M(Ûqi–¸ôjqêaܧ³,QF,ܧ-Ü™ªï#²¶D¹ âÓDګׄ~ qÊ&ZÕâ4À•··ÏÎd½¼{ÿ,’Öh6|¸67öÓhã¬3²¢ÝtÛmdUÁ£I~ÞíåAÍÅÍÕî¬ô‹Ñ§ãôvYT嬢îëQñõÑ‹âsnªbPTE>¼šSÎ'å®ÕE |[Œúå唺{åpØõ©‡ãj]öÓ^9
´5Ýa1\v¦Ó²Wt«¢E‰·!\ã¾7›`é}#Âýü¼Dؼ÷»U>‰ÌoA·®ùhZuƒ„£oÀm®êU#뺕£óâÓlR“Í sú{o6IÆßj¥®!Xãvðµ;jOÏoÖ¨Žg£QÍ®öVÓòHnGº&!´£{u,1[ЯÉÚ™Uå³{Kêð¼rdóÙʼnöÙÅú»]l\ÊÖÝ÷‚ôa´H4Š ÂËhŸ¤z¹iiЇ—ÏO’qÿüÇ0Ç™Ór¼1^-O8•¤¨!´ÎpæÁiN$¨õ³Ä{ÿ¡¥5[&Ã×ÇOcóð[ªò§?òóóß±X'Ýþ?‡ÓQÒ+‡­4éÒëÓäH´´ØgÝ-nóØÛH¾TQÎó-j-§îsv¶QÎÜ-¢œ¾&”6øR˜Ä¢Ì2t˜ô¡zNŒ BÎLÅ­œyQUãéOœ_^^"ßPKÊÉ'Þödv³›¶&AMN¤7i/ªao “2K$Šè;ÇE£°C¥ïÜ}¯%çïPÍí‡üp¬-T÷‰Aù|ªkdw¼î’nƒäå­@òY$u3H[“Px
wŸDãèEÇÍ!ÁNô¶néõ”4&ɰeÙ+<“	½"ºØ…–‚hS—x¦T PóÙY¦TgFRUô—ü‘´”*“ÍÒ’5±U(˜46RêkKÚÇ6ËȆ•V‘…VQÑ«FšG-ìW5Ïšƒ‡ía[µHЦ¦°ÀFÌyž6„mÀ9sih‘Ak¾^ë…Œº
ÈKG‚5Ë^Ã.8Q†'f%7á©úÈÀ_~ñ‰õË™KêØª`™ÂN®èMeˆ‰èwêgáyèÃ#ߌ^é‹R§~ôŒýˆGD"âèLxêÛ‚0iix‚ p`VÐè7Oë`ˆOå’‡SdF¤YRG
å"Э%ôCÏpE9£w™íÚøûïárŒkFÌ‘!Tb»NWd Jý”tc}´>ÅYƒÞÃ+Z‚ˆ^Æu—‹^“*Æ¢Z¤…•±†z7¥ÉM)3¶ë)³^Ä´Fcª‹fedEØf®SÀŸó–¤‰µÄHûK*îuƒ¢ÁaÑ»^ÃÛ´5džfÁ%h…–Ö{ZbÑN̦”£[J0‡LBÔž­ðÁB‡lœaQŒÒ·@K0‡µ…4“¹$õ}î°8ekúŠè|À*‹Ðm<”Õ@N¦EFg”ïdôS¸ŠpDjø—ž®xÝSŸD¯„yÚ8®
é¡1ÃÕ^ZŽE„b?´•ûù´7)ÆU9‰åëî#ïvŽŽÿµ÷½—»ï„ÄÀ ûiÊt¤Ø
¥Ï#£Ø#iè›§ò”Yé¥Ð´G¸¨£ºã_òâÓn]†&c
>­ºƒ¢·3ú4ÈYÚá'U>|CŸc;ü]=		<.º*J~à;|—ïñ}~Àùþ”?ã/ù+~Äù	?å¯ùþ–wùGÞã}žós~ŽÿÄ/xÁ|ÈG¼äå(çc>áS^ñêb’缺,ùŒ_ò¯üÛÑ6zK?ShVp7aµ÷úÙ/¯öÕ˧"½+%	+JÞÚÝ€•º«GBÏѲ²–M°Æù¤(û+Åð¶=9Úyuú.Z´ÁûJÌ-’ÙY”™­,’ÛXôþàéoïw`Ññ&étnPêïcÐ"œ3¿Ñœõh~âù×VD¿ãïë¨î•ƒr„v8ì†ly>ìw§<…Ë<êÏ‹/XålâÿâÛø"aüÁ?×KaT`%Ìר^Zòó*ö&qÄ›ÿÉÿœ•UFC/ŽÒšæÃ"*5Í¿€ÿ´øÊ§Rcuq}‰Ë‹ÿ'Ÿ”«þÓÛøïÅÛ÷§;”N^lr`6_côK‘ûD¤_,±Í$ÀKà¤|²š?D¶m;ïöwßÛNO7Y')<Î	…¾ÏÆ	±bÝ.Œ“Rn2îšðìÖi”R'%Θ2g£~>™öÊIÞ¶v«lyðþõÑþK²öd£'ëÜâ=­D¿Ù‘t{‹•hÝÆ}e¯±‹¼á͵u—Ðrûˆ[Åyµˆí¯+@È­’ìÛ½g§oŸï7:ÝÃaôƒ+Š(kÍ	Ä÷Ý’¬N7º½WLzƒ¼WŽ¿MªU»¶JµÏ_½9Ø}»N7o‡f±TõCmn£]t()€ùåªY[e g{Ovi—ß¼Fu\¢ô#Æ{,ÑÛm {õæñK}¢-ƒ6Œ.ïVüc·÷9&ãùÎâúÏYw€¸Ž§¢åv@¡„OêÌÿx0›Î³ÿã v¦é×ÎþuΟ5óÃú‰Jn—}~pô&b½áüA)B¡"†3oîõæ³G/$ùñš:nN‡rC:l|±ÛæáýÚq{™ðËÉðáá°˜L+ÒŒ‘Y/ºó‰»·E¿º˜†Ÿ[ÚÓòõ>êC£íõii[úÑÖǸ†>t³PçÒÛÇ϶tu{ér{é­£b[¸¹Áº!Ý<€+Ú'Ÿ¶>¶­5C#}}ÖO+mÖ‚ÕoÒÈ»¶Bj{…ÚŠ–:r=VÓuÒ¥:þðioëmuÖ‚W¨¦:ªá®;€ÑÞ|ÛÒ×£7ÕMñÂ/ÑXK$wXLí]³­½•èÕ,í¥­ÏZìêl£>Ù-ô¡oÊSú¨<£½iù]ÕKñyÑŸ²³øVÔ¿Ž_­ëß•Ô?#ˆ_Ç?\Ã\lb¿_7ÕÎIcM]ÀnÍøuV
P7Nkp˜ª¡"pXVû1ò3‹™E…ÑÖ@íнZÑù¬£Iþ…ÙÅZû/<ˆ
endstream
endobj
139 0 obj
<<
/Producer (pdfTeX-1.40.22)
/Creator (TeX)
/CreationDate (D:20240218205815-05'00')
/ModDate (D:20240218205815-05'00')
/Trapped /False
/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) kpathsea version 6.3.4/dev)
>>
endobj
132 0 obj
<<
/Type /ObjStm
/N 15
/First 112
/Length 634       
/Filter /FlateDecode
>>
stream
xÚSMÚ0½ó+æš8¶"!$
]iUJÑv÷Ô¢*
†µš”8-üûŽ'K BÚ"Þ3oÞ<Ûüø|
„3à!xÄÎÁ›Pà(#À`܆	ÏbB)øœe„Æ!>ý	€0â"˜  d0œg©‡“ŸÎü°F›¨™ÒjL¸'7ÁlvÑéOÚNÞéÄ™6.Ä-ݲ(‘ÈF«¨lYE^aÛØ»âg-?éðó}Ø£Ìm:yp§“_,ˆ®ßÐp¿¥¡½4¦³OoMeákØ¥ÅßµO8ã“×øD»ÃX{ìÞ90z)šÜŠf­ßŒÜá¡áÝ ËÓºOƒ~žºµãø:JE	߇c2j`¨!­¡‡Õ"ä5dýÎ+•§‘’ñ—¹/Ç]¤D9‚ÀôlÑF™JÕð÷o¯¥|¬d²“ÙAý•ê5¯”©Ïäi¼’¿…	”L¤’zój%‹<ÛËCUØÎ*ÃÁ?ãªøp<ôû®‹ª-‰Ïºb)ö‹dž•oz
¬µ6|:Eé1#ðí„ÇØ–FÙNÿ<ÈĈ™—eËH3¡kÌcVª(I¬šÍ÷Àù1ïܶŸ÷ÆC¼1û(FíÔ.þTe™íQ¯†ôÒŠvwߪ7	[¿/òÔlmºò4µëo0TxØîõNíô÷ð´;|–;$!ö
{ÿH}ùnîÔÿLXŠ	H}‡ÛGt>
pº›ôÛ9]cÕ×J¡ç&Ó<&c5y{kñ%ß!ÅK)šj“]E¿DRÂt
κJQ¸kð†Ïã8ßÀYÂlæéâ1µXç·øÖøJo¿L
endstream
endobj
140 0 obj
<<
/Type /XRef
/Index [0 141]
/Size 141
/W [1 3 1]
/Root 138 0 R
/Info 139 0 R
/ID [<68AE5D9140BB0AB2012C26FFF61CB8B0> <68AE5D9140BB0AB2012C26FFF61CB8B0>]
/Length 346       
/Filter /FlateDecode
>>
stream
xÚÒ·NQ…á™cL°É&›d“s0`²É9C…xE4´HTTÀ#ð,TH444t°ÿ4ŸÎ=W{wïjDDþT$$*΋‡/%ŽH¶‚·ô¿ÚrN`ŽUmãÒÀQ	Zw>È?dB² r ‚éê½ÛN	ÁlCtBC>´z¸v|B”ÎÞ[ÅÐEgT¥£³/-ƒrˆÓ¥“* ºéì–UP
ýt©Â0@g¿®ê`„Înz…Kh€&h†6hT	ÞÛ{pÐí*å¶»ƒÐ«ù²n†T¢¶<‚3‡	˜„)HÀ4ÌÀ,$aæUº¾í”•ëwK‹*·!KK*O	KË*¿–VTÃ~K)ÕD‰¥UÕ«7Kkª7£–ÖUŸƒ–6T?ï,mÂ9\¨ã$é\æÅe^\æÅe^\æÅ
ª£qQÇ“œÕ3B
endstream
endobj
startxref
132400
%%EOF
units-2.23/configure0000775000175000017500000043736214557020500014006 0ustar  adrianadrian#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for GNU units 2.23.
#
# Report bugs to .
#
#
# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
# Inc.
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##

# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
as_nop=:
if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else $as_nop
  case `(set -o) 2>/dev/null` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi



# Reset variables that may have inherited troublesome values from
# the environment.

# IFS needs to be set, to space, tab, and newline, in precisely that order.
# (If _AS_PATH_WALK were called with IFS unset, it would have the
# side effect of setting IFS to empty, thus disabling word splitting.)
# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
IFS=" ""	$as_nl"

PS1='$ '
PS2='> '
PS4='+ '

# Ensure predictable behavior from utilities with locale-dependent output.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE

# We cannot yet rely on "unset" to work, but we need these variables
# to be unset--not just set to an empty or harmless value--now, to
# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
# also avoids known problems related to "unset" and subshell syntax
# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
do eval test \${$as_var+y} \
  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done

# Ensure that fds 0, 1, and 2 are open.
if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi

# The user is always right.
if ${PATH_SEPARATOR+false} :; then
  PATH_SEPARATOR=:
  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
      PATH_SEPARATOR=';'
  }
fi


# Find who we are.  Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
  *[\\/]* ) as_myself=$0 ;;
  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
  done
IFS=$as_save_IFS

     ;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
  as_myself=$0
fi
if test ! -f "$as_myself"; then
  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
  exit 1
fi


# Use a proper internal environment variable to ensure we don't fall
  # into an infinite loop, continuously re-executing ourselves.
  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
    _as_can_reexec=no; export _as_can_reexec;
    # We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
  *v*x* | *x*v* ) as_opts=-vx ;;
  *v* ) as_opts=-v ;;
  *x* ) as_opts=-x ;;
  * ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
  fi
  # We don't want this to propagate to other subprocesses.
          { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
  as_bourne_compatible="as_nop=:
if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '\${1+\"\$@\"}'='\"\$@\"'
  setopt NO_GLOB_SUBST
else \$as_nop
  case \`(set -o) 2>/dev/null\` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi
"
  as_required="as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }

exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" )
then :

else \$as_nop
  exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
blah=\$(echo \$(echo blah))
test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
  if (eval "$as_required") 2>/dev/null
then :
  as_have_required=yes
else $as_nop
  as_have_required=no
fi
  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
then :

else $as_nop
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
  as_found=:
  case $as_dir in #(
	 /*)
	   for as_base in sh bash ksh sh5; do
	     # Try only shells that exist, to save several forks.
	     as_shell=$as_dir$as_base
	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$as_shell as_have_required=yes
		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
then :
  break 2
fi
fi
	   done;;
       esac
  as_found=false
done
IFS=$as_save_IFS
if $as_found
then :

else $as_nop
  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$SHELL as_have_required=yes
fi
fi


      if test "x$CONFIG_SHELL" != x
then :
  export CONFIG_SHELL
             # We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
  *v*x* | *x*v* ) as_opts=-vx ;;
  *v* ) as_opts=-v ;;
  *x* ) as_opts=-x ;;
  * ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi

    if test x$as_have_required = xno
then :
  printf "%s\n" "$0: This script requires a shell more modern than all"
  printf "%s\n" "$0: the shells that I found on your system."
  if test ${ZSH_VERSION+y} ; then
    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
  else
    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and adrianm@gnu.org
$0: about your system, including any error possibly output
$0: before this message. Then install a modern shell, or
$0: manually run the script under such a shell if you do
$0: have one."
  fi
  exit 1
fi
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS

## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
  { eval $1=; unset $1;}
}
as_unset=as_fn_unset


# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
  return $1
} # as_fn_set_status

# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
  set +e
  as_fn_set_status $1
  exit $1
} # as_fn_exit
# as_fn_nop
# ---------
# Do nothing but, unlike ":", preserve the value of $?.
as_fn_nop ()
{
  return $?
}
as_nop=as_fn_nop

# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{

  case $as_dir in #(
  -*) as_dir=./$as_dir;;
  esac
  test -d "$as_dir" || eval $as_mkdir_p || {
    as_dirs=
    while :; do
      case $as_dir in #(
      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
      *) as_qdir=$as_dir;;
      esac
      as_dirs="'$as_qdir' $as_dirs"
      as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_dir" : 'X\(//\)[^/]' \| \
	 X"$as_dir" : 'X\(//\)$' \| \
	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X"$as_dir" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
      test -d "$as_dir" && break
    done
    test -z "$as_dirs" || eval "mkdir $as_dirs"
  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"


} # as_fn_mkdir_p

# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
  test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
then :
  eval 'as_fn_append ()
  {
    eval $1+=\$2
  }'
else $as_nop
  as_fn_append ()
  {
    eval $1=\$$1\$2
  }
fi # as_fn_append

# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
then :
  eval 'as_fn_arith ()
  {
    as_val=$(( $* ))
  }'
else $as_nop
  as_fn_arith ()
  {
    as_val=`expr "$@" || test $? -eq 1`
  }
fi # as_fn_arith

# as_fn_nop
# ---------
# Do nothing but, unlike ":", preserve the value of $?.
as_fn_nop ()
{
  return $?
}
as_nop=as_fn_nop

# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
  as_status=$1; test $as_status -eq 0 && as_status=1
  if test "$4"; then
    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
  fi
  printf "%s\n" "$as_me: error: $2" >&2
  as_fn_exit $as_status
} # as_fn_error

if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
  as_basename=basename
else
  as_basename=false
fi

if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
  as_dirname=dirname
else
  as_dirname=false
fi

as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
	 X"$0" : 'X\(//\)$' \| \
	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X/"$0" |
    sed '/^.*\/\([^/][^/]*\)\/*$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`

# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits


  as_lineno_1=$LINENO as_lineno_1a=$LINENO
  as_lineno_2=$LINENO as_lineno_2a=$LINENO
  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
  sed -n '
    p
    /[$]LINENO/=
  ' <$as_myself |
    sed '
      s/[$]LINENO.*/&-/
      t lineno
      b
      :lineno
      N
      :loop
      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
      t loop
      s/-\n.*//
    ' >$as_me.lineno &&
  chmod +x "$as_me.lineno" ||
    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }

  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
  # already done that, so ensure we don't try to do so again and fall
  # in an infinite loop.  This has already happened in practice.
  _as_can_reexec=no; export _as_can_reexec
  # Don't try to exec as it changes $[0], causing all sort of problems
  # (the dirname of $[0] is not the place where we might find the
  # original and so on.  Autoconf is especially sensitive to this).
  . "./$as_me.lineno"
  # Exit status is that of the last command.
  exit
}


# Determine whether it's possible to make 'echo' print without a newline.
# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
  case `echo 'xy\c'` in
  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
  xy)  ECHO_C='\c';;
  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
       ECHO_T='	';;
  esac;;
*)
  ECHO_N='-n';;
esac

# For backward compatibility with old third-party macros, we provide
# the shell variables $as_echo and $as_echo_n.  New code should use
# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
as_echo='printf %s\n'
as_echo_n='printf %s'


rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
  rm -f conf$$.dir/conf$$.file
else
  rm -f conf$$.dir
  mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
  if ln -s conf$$.file conf$$ 2>/dev/null; then
    as_ln_s='ln -s'
    # ... but there are two gotchas:
    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
    # In both cases, we have to default to `cp -pR'.
    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
      as_ln_s='cp -pR'
  elif ln conf$$.file conf$$ 2>/dev/null; then
    as_ln_s=ln
  else
    as_ln_s='cp -pR'
  fi
else
  as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null

if mkdir -p . 2>/dev/null; then
  as_mkdir_p='mkdir -p "$as_dir"'
else
  test -d ./-p && rmdir ./-p
  as_mkdir_p=false
fi

as_test_x='test -x'
as_executable_p=as_fn_executable_p

# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"

# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"


test -n "$DJDIR" || exec 7<&0 &1

# Name of the host.
# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`

#
# Initializations.
#
ac_default_prefix=/usr/local
ac_clean_files=
ac_config_libobj_dir=.
LIBOBJS=
cross_compiling=no
subdirs=
MFLAGS=
MAKEFLAGS=

# Identity of this package.
PACKAGE_NAME='GNU units'
PACKAGE_TARNAME='units'
PACKAGE_VERSION='2.23'
PACKAGE_STRING='GNU units 2.23'
PACKAGE_BUGREPORT='adrianm@gnu.org'
PACKAGE_URL='https://www.gnu.org/software/units/'

# Factoring default headers for most tests.
ac_includes_default="\
#include 
#ifdef HAVE_STDIO_H
# include 
#endif
#ifdef HAVE_STDLIB_H
# include 
#endif
#ifdef HAVE_STRING_H
# include 
#endif
#ifdef HAVE_INTTYPES_H
# include 
#endif
#ifdef HAVE_STDINT_H
# include 
#endif
#ifdef HAVE_STRINGS_H
# include 
#endif
#ifdef HAVE_SYS_TYPES_H
# include 
#endif
#ifdef HAVE_SYS_STAT_H
# include 
#endif
#ifdef HAVE_UNISTD_H
# include 
#endif"

ac_header_c_list=
ac_subst_vars='LTLIBOBJS
LIBOBJS
PYTHON
mkstoolkit
MKDIR_P
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
OBJEXT
EXEEXT
ac_ct_CC
CPPFLAGS
LDFLAGS
CFLAGS
CC
HAVE_MKS
MKS_DRIVE
MKS_RES
MKS_POSIX
PYTHON_VERSION
HAVE_PYTHON
RELOCATION
UDATADIR
CDAT
UDAT
STRFUNC
DEFIS
target_alias
host_alias
build_alias
LIBS
ECHO_T
ECHO_N
ECHO_C
DEFS
mandir
localedir
libdir
psdir
pdfdir
dvidir
htmldir
infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
datadir
datarootdir
libexecdir
sbindir
bindir
program_transform_name
prefix
exec_prefix
PACKAGE_URL
PACKAGE_BUGREPORT
PACKAGE_STRING
PACKAGE_VERSION
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
SHELL'
ac_subst_files=''
ac_user_opts='
enable_option_checking
enable_relocation
'
      ac_precious_vars='build_alias
host_alias
target_alias
CC
CFLAGS
LDFLAGS
LIBS
CPPFLAGS'


# Initialize some variables set by options.
ac_init_help=
ac_init_version=false
ac_unrecognized_opts=
ac_unrecognized_sep=
# The variables have the same names as the options, with
# dashes changed to underlines.
cache_file=/dev/null
exec_prefix=NONE
no_create=
no_recursion=
prefix=NONE
program_prefix=NONE
program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
srcdir=
verbose=
x_includes=NONE
x_libraries=NONE

# Installation directory options.
# These are left unexpanded so users can "make install exec_prefix=/foo"
# and all the variables that are supposed to be based on exec_prefix
# by default will actually change.
# Use braces instead of parens because sh, perl, etc. also accept them.
# (The list follows the same order as the GNU Coding Standards.)
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
datarootdir='${prefix}/share'
datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info'
htmldir='${docdir}'
dvidir='${docdir}'
pdfdir='${docdir}'
psdir='${docdir}'
libdir='${exec_prefix}/lib'
localedir='${datarootdir}/locale'
mandir='${datarootdir}/man'

ac_prev=
ac_dashdash=
for ac_option
do
  # If the previous option needs an argument, assign it.
  if test -n "$ac_prev"; then
    eval $ac_prev=\$ac_option
    ac_prev=
    continue
  fi

  case $ac_option in
  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
  *=)   ac_optarg= ;;
  *)    ac_optarg=yes ;;
  esac

  case $ac_dashdash$ac_option in
  --)
    ac_dashdash=yes ;;

  -bindir | --bindir | --bindi | --bind | --bin | --bi)
    ac_prev=bindir ;;
  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
    bindir=$ac_optarg ;;

  -build | --build | --buil | --bui | --bu)
    ac_prev=build_alias ;;
  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
    build_alias=$ac_optarg ;;

  -cache-file | --cache-file | --cache-fil | --cache-fi \
  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
    ac_prev=cache_file ;;
  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
    cache_file=$ac_optarg ;;

  --config-cache | -C)
    cache_file=config.cache ;;

  -datadir | --datadir | --datadi | --datad)
    ac_prev=datadir ;;
  -datadir=* | --datadir=* | --datadi=* | --datad=*)
    datadir=$ac_optarg ;;

  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
  | --dataroo | --dataro | --datar)
    ac_prev=datarootdir ;;
  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
    datarootdir=$ac_optarg ;;

  -disable-* | --disable-*)
    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid feature name: \`$ac_useropt'"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"enable_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval enable_$ac_useropt=no ;;

  -docdir | --docdir | --docdi | --doc | --do)
    ac_prev=docdir ;;
  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
    docdir=$ac_optarg ;;

  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
    ac_prev=dvidir ;;
  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
    dvidir=$ac_optarg ;;

  -enable-* | --enable-*)
    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid feature name: \`$ac_useropt'"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"enable_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval enable_$ac_useropt=\$ac_optarg ;;

  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
  | --exec | --exe | --ex)
    ac_prev=exec_prefix ;;
  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
  | --exec=* | --exe=* | --ex=*)
    exec_prefix=$ac_optarg ;;

  -gas | --gas | --ga | --g)
    # Obsolete; use --with-gas.
    with_gas=yes ;;

  -help | --help | --hel | --he | -h)
    ac_init_help=long ;;
  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
    ac_init_help=recursive ;;
  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
    ac_init_help=short ;;

  -host | --host | --hos | --ho)
    ac_prev=host_alias ;;
  -host=* | --host=* | --hos=* | --ho=*)
    host_alias=$ac_optarg ;;

  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
    ac_prev=htmldir ;;
  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
  | --ht=*)
    htmldir=$ac_optarg ;;

  -includedir | --includedir | --includedi | --included | --include \
  | --includ | --inclu | --incl | --inc)
    ac_prev=includedir ;;
  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
  | --includ=* | --inclu=* | --incl=* | --inc=*)
    includedir=$ac_optarg ;;

  -infodir | --infodir | --infodi | --infod | --info | --inf)
    ac_prev=infodir ;;
  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
    infodir=$ac_optarg ;;

  -libdir | --libdir | --libdi | --libd)
    ac_prev=libdir ;;
  -libdir=* | --libdir=* | --libdi=* | --libd=*)
    libdir=$ac_optarg ;;

  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
  | --libexe | --libex | --libe)
    ac_prev=libexecdir ;;
  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
  | --libexe=* | --libex=* | --libe=*)
    libexecdir=$ac_optarg ;;

  -localedir | --localedir | --localedi | --localed | --locale)
    ac_prev=localedir ;;
  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
    localedir=$ac_optarg ;;

  -localstatedir | --localstatedir | --localstatedi | --localstated \
  | --localstate | --localstat | --localsta | --localst | --locals)
    ac_prev=localstatedir ;;
  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
    localstatedir=$ac_optarg ;;

  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
    ac_prev=mandir ;;
  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
    mandir=$ac_optarg ;;

  -nfp | --nfp | --nf)
    # Obsolete; use --without-fp.
    with_fp=no ;;

  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
  | --no-cr | --no-c | -n)
    no_create=yes ;;

  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
    no_recursion=yes ;;

  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
  | --oldin | --oldi | --old | --ol | --o)
    ac_prev=oldincludedir ;;
  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
    oldincludedir=$ac_optarg ;;

  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
    ac_prev=prefix ;;
  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
    prefix=$ac_optarg ;;

  -program-prefix | --program-prefix | --program-prefi | --program-pref \
  | --program-pre | --program-pr | --program-p)
    ac_prev=program_prefix ;;
  -program-prefix=* | --program-prefix=* | --program-prefi=* \
  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
    program_prefix=$ac_optarg ;;

  -program-suffix | --program-suffix | --program-suffi | --program-suff \
  | --program-suf | --program-su | --program-s)
    ac_prev=program_suffix ;;
  -program-suffix=* | --program-suffix=* | --program-suffi=* \
  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
    program_suffix=$ac_optarg ;;

  -program-transform-name | --program-transform-name \
  | --program-transform-nam | --program-transform-na \
  | --program-transform-n | --program-transform- \
  | --program-transform | --program-transfor \
  | --program-transfo | --program-transf \
  | --program-trans | --program-tran \
  | --progr-tra | --program-tr | --program-t)
    ac_prev=program_transform_name ;;
  -program-transform-name=* | --program-transform-name=* \
  | --program-transform-nam=* | --program-transform-na=* \
  | --program-transform-n=* | --program-transform-=* \
  | --program-transform=* | --program-transfor=* \
  | --program-transfo=* | --program-transf=* \
  | --program-trans=* | --program-tran=* \
  | --progr-tra=* | --program-tr=* | --program-t=*)
    program_transform_name=$ac_optarg ;;

  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
    ac_prev=pdfdir ;;
  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
    pdfdir=$ac_optarg ;;

  -psdir | --psdir | --psdi | --psd | --ps)
    ac_prev=psdir ;;
  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
    psdir=$ac_optarg ;;

  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
  | -silent | --silent | --silen | --sile | --sil)
    silent=yes ;;

  -runstatedir | --runstatedir | --runstatedi | --runstated \
  | --runstate | --runstat | --runsta | --runst | --runs \
  | --run | --ru | --r)
    ac_prev=runstatedir ;;
  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
  | --run=* | --ru=* | --r=*)
    runstatedir=$ac_optarg ;;

  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
    ac_prev=sbindir ;;
  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
  | --sbi=* | --sb=*)
    sbindir=$ac_optarg ;;

  -sharedstatedir | --sharedstatedir | --sharedstatedi \
  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
  | --sharedst | --shareds | --shared | --share | --shar \
  | --sha | --sh)
    ac_prev=sharedstatedir ;;
  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
  | --sha=* | --sh=*)
    sharedstatedir=$ac_optarg ;;

  -site | --site | --sit)
    ac_prev=site ;;
  -site=* | --site=* | --sit=*)
    site=$ac_optarg ;;

  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
    ac_prev=srcdir ;;
  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
    srcdir=$ac_optarg ;;

  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
  | --syscon | --sysco | --sysc | --sys | --sy)
    ac_prev=sysconfdir ;;
  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
    sysconfdir=$ac_optarg ;;

  -target | --target | --targe | --targ | --tar | --ta | --t)
    ac_prev=target_alias ;;
  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
    target_alias=$ac_optarg ;;

  -v | -verbose | --verbose | --verbos | --verbo | --verb)
    verbose=yes ;;

  -version | --version | --versio | --versi | --vers | -V)
    ac_init_version=: ;;

  -with-* | --with-*)
    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid package name: \`$ac_useropt'"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"with_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval with_$ac_useropt=\$ac_optarg ;;

  -without-* | --without-*)
    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
    # Reject names that are not valid shell variable names.
    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
      as_fn_error $? "invalid package name: \`$ac_useropt'"
    ac_useropt_orig=$ac_useropt
    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
    case $ac_user_opts in
      *"
"with_$ac_useropt"
"*) ;;
      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
	 ac_unrecognized_sep=', ';;
    esac
    eval with_$ac_useropt=no ;;

  --x)
    # Obsolete; use --with-x.
    with_x=yes ;;

  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
  | --x-incl | --x-inc | --x-in | --x-i)
    ac_prev=x_includes ;;
  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
    x_includes=$ac_optarg ;;

  -x-libraries | --x-libraries | --x-librarie | --x-librari \
  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
    ac_prev=x_libraries ;;
  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
    x_libraries=$ac_optarg ;;

  -*) as_fn_error $? "unrecognized option: \`$ac_option'
Try \`$0 --help' for more information"
    ;;

  *=*)
    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
    # Reject names that are not valid shell variable names.
    case $ac_envvar in #(
      '' | [0-9]* | *[!_$as_cr_alnum]* )
      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
    esac
    eval $ac_envvar=\$ac_optarg
    export $ac_envvar ;;

  *)
    # FIXME: should be removed in autoconf 3.0.
    printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
      printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
    ;;

  esac
done

if test -n "$ac_prev"; then
  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
  as_fn_error $? "missing argument to $ac_option"
fi

if test -n "$ac_unrecognized_opts"; then
  case $enable_option_checking in
    no) ;;
    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
    *)     printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
  esac
fi

# Check all directory arguments for consistency.
for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
		datadir sysconfdir sharedstatedir localstatedir includedir \
		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
		libdir localedir mandir runstatedir
do
  eval ac_val=\$$ac_var
  # Remove trailing slashes.
  case $ac_val in
    */ )
      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
      eval $ac_var=\$ac_val;;
  esac
  # Be sure to have absolute directory names.
  case $ac_val in
    [\\/$]* | ?:[\\/]* )  continue;;
    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
  esac
  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done

# There might be people who depend on the old broken behavior: `$host'
# used to hold the argument of --host etc.
# FIXME: To remove some day.
build=$build_alias
host=$host_alias
target=$target_alias

# FIXME: To remove some day.
if test "x$host_alias" != x; then
  if test "x$build_alias" = x; then
    cross_compiling=maybe
  elif test "x$build_alias" != "x$host_alias"; then
    cross_compiling=yes
  fi
fi

ac_tool_prefix=
test -n "$host_alias" && ac_tool_prefix=$host_alias-

test "$silent" = yes && exec 6>/dev/null


ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
  as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
  as_fn_error $? "pwd does not report name of working directory"


# Find the source files, if location was not specified.
if test -z "$srcdir"; then
  ac_srcdir_defaulted=yes
  # Try the directory containing this script, then the parent directory.
  ac_confdir=`$as_dirname -- "$as_myself" ||
$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_myself" : 'X\(//\)[^/]' \| \
	 X"$as_myself" : 'X\(//\)$' \| \
	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X"$as_myself" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
  srcdir=$ac_confdir
  if test ! -r "$srcdir/$ac_unique_file"; then
    srcdir=..
  fi
else
  ac_srcdir_defaulted=no
fi
if test ! -r "$srcdir/$ac_unique_file"; then
  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
	pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
  srcdir=.
fi
# Remove unnecessary trailing slashes from srcdir.
# Double slashes in file names in object file debugging info
# mess up M-x gdb in Emacs.
case $srcdir in
*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
esac
for ac_var in $ac_precious_vars; do
  eval ac_env_${ac_var}_set=\${${ac_var}+set}
  eval ac_env_${ac_var}_value=\$${ac_var}
  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
  eval ac_cv_env_${ac_var}_value=\$${ac_var}
done

#
# Report the --help message.
#
if test "$ac_init_help" = "long"; then
  # Omit some internal or obsolete options to make the list less imposing.
  # This message is too long to be a string in the A/UX 3.1 sh.
  cat <<_ACEOF
\`configure' configures GNU units 2.23 to adapt to many kinds of systems.

Usage: $0 [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print \`checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for \`--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or \`..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [$ac_default_prefix]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/units]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]
_ACEOF

  cat <<\_ACEOF

Program names:
  --program-prefix=PREFIX            prepend PREFIX to installed program names
  --program-suffix=SUFFIX            append SUFFIX to installed program names
  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
_ACEOF
fi

if test -n "$ac_init_help"; then
  case $ac_init_help in
     short | recursive ) echo "Configuration of GNU units 2.23:";;
   esac
  cat <<\_ACEOF

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-relocation     look in program directory for units data files
                          (default is NO)

Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L if you have libraries in a
              nonstandard directory 
  LIBS        libraries to pass to the linker, e.g. -l
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I if
              you have headers in a nonstandard directory 

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to .
GNU units home page: .
General help using GNU software: .
_ACEOF
ac_status=$?
fi

if test "$ac_init_help" = "recursive"; then
  # If there are subdirs, report their specific --help.
  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
    test -d "$ac_dir" ||
      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
      continue
    ac_builddir=.

case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
  # A ".." for each directory in $ac_dir_suffix.
  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
  case $ac_top_builddir_sub in
  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
  esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix

case $srcdir in
  .)  # We are building in place.
    ac_srcdir=.
    ac_top_srcdir=$ac_top_builddir_sub
    ac_abs_top_srcdir=$ac_pwd ;;
  [\\/]* | ?:[\\/]* )  # Absolute name.
    ac_srcdir=$srcdir$ac_dir_suffix;
    ac_top_srcdir=$srcdir
    ac_abs_top_srcdir=$srcdir ;;
  *) # Relative name.
    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
    ac_top_srcdir=$ac_top_build_prefix$srcdir
    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix

    cd "$ac_dir" || { ac_status=$?; continue; }
    # Check for configure.gnu first; this name is used for a wrapper for
    # Metaconfig's "Configure" on case-insensitive file systems.
    if test -f "$ac_srcdir/configure.gnu"; then
      echo &&
      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
    elif test -f "$ac_srcdir/configure"; then
      echo &&
      $SHELL "$ac_srcdir/configure" --help=recursive
    else
      printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
    fi || ac_status=$?
    cd "$ac_pwd" || { ac_status=$?; break; }
  done
fi

test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
  cat <<\_ACEOF
GNU units configure 2.23
generated by GNU Autoconf 2.71

Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
  exit
fi

## ------------------------ ##
## Autoconf initialization. ##
## ------------------------ ##

# ac_fn_c_try_compile LINENO
# --------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_compile ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  rm -f conftest.$ac_objext conftest.beam
  if { { ac_try="$ac_compile"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_compile") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    grep -v '^ *+' conftest.err >conftest.er1
    cat conftest.er1 >&5
    mv -f conftest.er1 conftest.err
  fi
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; } && {
	 test -z "$ac_c_werror_flag" ||
	 test ! -s conftest.err
       } && test -s conftest.$ac_objext
then :
  ac_retval=0
else $as_nop
  printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

	ac_retval=1
fi
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_compile

# ac_fn_c_try_link LINENO
# -----------------------
# Try to link conftest.$ac_ext, and return whether this succeeded.
ac_fn_c_try_link ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
  if { { ac_try="$ac_link"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_link") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    grep -v '^ *+' conftest.err >conftest.er1
    cat conftest.er1 >&5
    mv -f conftest.er1 conftest.err
  fi
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; } && {
	 test -z "$ac_c_werror_flag" ||
	 test ! -s conftest.err
       } && test -s conftest$ac_exeext && {
	 test "$cross_compiling" = yes ||
	 test -x conftest$ac_exeext
       }
then :
  ac_retval=0
else $as_nop
  printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

	ac_retval=1
fi
  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
  # interfere with the next link command; also delete a directory that is
  # left behind by Apple's compiler.  We do this before executing the actions.
  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
  as_fn_set_status $ac_retval

} # ac_fn_c_try_link

# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
ac_fn_check_decl ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  as_decl_name=`echo $2|sed 's/ *(.*//'`
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
printf %s "checking whether $as_decl_name is declared... " >&6; }
if eval test \${$3+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
  eval ac_save_FLAGS=\$$6
  as_fn_append $6 " $5"
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$4
int
main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
  (void) $as_decl_use;
#else
  (void) $as_decl_name;
#endif
#endif

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  eval "$3=yes"
else $as_nop
  eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  eval $6=\$ac_save_FLAGS

fi
eval ac_res=\$$3
	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
printf "%s\n" "$ac_res" >&6; }
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_check_decl

# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
# INCLUDES, setting the cache variable VAR accordingly.
ac_fn_c_check_header_compile ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$4
#include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  eval "$3=yes"
else $as_nop
  eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
printf "%s\n" "$ac_res" >&6; }
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_header_compile

# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
printf %s "checking for $2... " >&6; }
if eval test \${$3+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
/* Define $2 to an innocuous variant, in case  declares $2.
   For example, HP-UX 11i  declares gettimeofday.  */
#define $2 innocuous_$2

/* System header to define __stub macros and hopefully few prototypes,
   which can conflict with char $2 (); below.  */

#include 
#undef $2

/* Override any GCC internal prototype to avoid an error.
   Use char because int might match the return type of a GCC
   builtin and then its argument prototype would still apply.  */
#ifdef __cplusplus
extern "C"
#endif
char $2 ();
/* The GNU C library defines this for functions which it implements
    to always fail with ENOSYS.  Some functions are actually named
    something starting with __ and the normal name is an alias.  */
#if defined __stub_$2 || defined __stub___$2
choke me
#endif

int
main (void)
{
return $2 ();
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
  eval "$3=yes"
else $as_nop
  eval "$3=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
printf "%s\n" "$ac_res" >&6; }
  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno

} # ac_fn_c_check_func
ac_configure_args_raw=
for ac_arg
do
  case $ac_arg in
  *\'*)
    ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
  esac
  as_fn_append ac_configure_args_raw " '$ac_arg'"
done

case $ac_configure_args_raw in
  *$as_nl*)
    ac_safe_unquote= ;;
  *)
    ac_unsafe_z='|&;<>()$`\\"*?[ ''	' # This string ends in space, tab.
    ac_unsafe_a="$ac_unsafe_z#~"
    ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
    ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
esac

cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by GNU units $as_me 2.23, which was
generated by GNU Autoconf 2.71.  Invocation command line was

  $ $0$ac_configure_args_raw

_ACEOF
exec 5>>config.log
{
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##

hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`

/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`

/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`

_ASUNAME

as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    printf "%s\n" "PATH: $as_dir"
  done
IFS=$as_save_IFS

} >&5

cat >&5 <<_ACEOF


## ----------- ##
## Core tests. ##
## ----------- ##

_ACEOF


# Keep a trace of the command line.
# Strip out --no-create and --no-recursion so they do not pile up.
# Strip out --silent because we don't want to record it for future runs.
# Also quote any args containing shell meta-characters.
# Make two passes to allow for proper duplicate-argument suppression.
ac_configure_args=
ac_configure_args0=
ac_configure_args1=
ac_must_keep_next=false
for ac_pass in 1 2
do
  for ac_arg
  do
    case $ac_arg in
    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
    | -silent | --silent | --silen | --sile | --sil)
      continue ;;
    *\'*)
      ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
    esac
    case $ac_pass in
    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
    2)
      as_fn_append ac_configure_args1 " '$ac_arg'"
      if test $ac_must_keep_next = true; then
	ac_must_keep_next=false # Got value, back to normal.
      else
	case $ac_arg in
	  *=* | --config-cache | -C | -disable-* | --disable-* \
	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
	  | -with-* | --with-* | -without-* | --without-* | --x)
	    case "$ac_configure_args0 " in
	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
	    esac
	    ;;
	  -* ) ac_must_keep_next=true ;;
	esac
      fi
      as_fn_append ac_configure_args " '$ac_arg'"
      ;;
    esac
  done
done
{ ac_configure_args0=; unset ac_configure_args0;}
{ ac_configure_args1=; unset ac_configure_args1;}

# When interrupted or exit'd, cleanup temporary files, and complete
# config.log.  We remove comments because anyway the quotes in there
# would cause problems or look ugly.
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
  # Sanitize IFS.
  IFS=" ""	$as_nl"
  # Save into config.log some information that might help in debugging.
  {
    echo

    printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
    echo
    # The following way of writing the cache mishandles newlines in values,
(
  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
    eval ac_val=\$$ac_var
    case $ac_val in #(
    *${as_nl}*)
      case $ac_var in #(
      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      esac
      case $ac_var in #(
      _ | IFS | as_nl) ;; #(
      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
      *) { eval $ac_var=; unset $ac_var;} ;;
      esac ;;
    esac
  done
  (set) 2>&1 |
    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
    *${as_nl}ac_space=\ *)
      sed -n \
	"s/'\''/'\''\\\\'\'''\''/g;
	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
      ;; #(
    *)
      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
      ;;
    esac |
    sort
)
    echo

    printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
    echo
    for ac_var in $ac_subst_vars
    do
      eval ac_val=\$$ac_var
      case $ac_val in
      *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
      esac
      printf "%s\n" "$ac_var='\''$ac_val'\''"
    done | sort
    echo

    if test -n "$ac_subst_files"; then
      printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
      echo
      for ac_var in $ac_subst_files
      do
	eval ac_val=\$$ac_var
	case $ac_val in
	*\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
	esac
	printf "%s\n" "$ac_var='\''$ac_val'\''"
      done | sort
      echo
    fi

    if test -s confdefs.h; then
      printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
      echo
      cat confdefs.h
      echo
    fi
    test "$ac_signal" != 0 &&
      printf "%s\n" "$as_me: caught signal $ac_signal"
    printf "%s\n" "$as_me: exit $exit_status"
  } >&5
  rm -f core *.core core.conftest.* &&
    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
    exit $exit_status
' 0
for ac_signal in 1 2 13 15; do
  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
done
ac_signal=0

# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h

printf "%s\n" "/* confdefs.h */" > confdefs.h

# Predefined preprocessor variables.

printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h

printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h

printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h

printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h

printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h

printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h


# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
if test -n "$CONFIG_SITE"; then
  ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
  ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi

for ac_site_file in $ac_site_files
do
  case $ac_site_file in #(
  */*) :
     ;; #(
  *) :
    ac_site_file=./$ac_site_file ;;
esac
  if test -f "$ac_site_file" && test -r "$ac_site_file"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
    sed 's/^/| /' "$ac_site_file" >&5
    . "$ac_site_file" \
      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
  fi
done

if test -r "$cache_file"; then
  # Some versions of bash will fail to source /dev/null (special files
  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
    case $cache_file in
      [\\/]* | ?:[\\/]* ) . "$cache_file";;
      *)                      . "./$cache_file";;
    esac
  fi
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
  >$cache_file
fi

# Test code for whether the C compiler supports C89 (global declarations)
ac_c_conftest_c89_globals='
/* Does the compiler advertise C89 conformance?
   Do not test the value of __STDC__, because some compilers set it to 0
   while being otherwise adequately conformant. */
#if !defined __STDC__
# error "Compiler does not advertise C89 conformance"
#endif

#include 
#include 
struct stat;
/* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
struct buf { int x; };
struct buf * (*rcsopen) (struct buf *, struct stat *, int);
static char *e (p, i)
     char **p;
     int i;
{
  return p[i];
}
static char *f (char * (*g) (char **, int), char **p, ...)
{
  char *s;
  va_list v;
  va_start (v,p);
  s = g (p, va_arg (v,int));
  va_end (v);
  return s;
}

/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
   function prototypes and stuff, but not \xHH hex character constants.
   These do not provoke an error unfortunately, instead are silently treated
   as an "x".  The following induces an error, until -std is added to get
   proper ANSI mode.  Curiously \x00 != x always comes out true, for an
   array size at least.  It is necessary to write \x00 == 0 to get something
   that is true only with -std.  */
int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];

/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
   inside strings and character constants.  */
#define FOO(x) '\''x'\''
int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];

int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
               int, int);'

# Test code for whether the C compiler supports C89 (body of main).
ac_c_conftest_c89_main='
ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
'

# Test code for whether the C compiler supports C99 (global declarations)
ac_c_conftest_c99_globals='
// Does the compiler advertise C99 conformance?
#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
# error "Compiler does not advertise C99 conformance"
#endif

#include 
extern int puts (const char *);
extern int printf (const char *, ...);
extern int dprintf (int, const char *, ...);
extern void *malloc (size_t);

// Check varargs macros.  These examples are taken from C99 6.10.3.5.
// dprintf is used instead of fprintf to avoid needing to declare
// FILE and stderr.
#define debug(...) dprintf (2, __VA_ARGS__)
#define showlist(...) puts (#__VA_ARGS__)
#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
static void
test_varargs_macros (void)
{
  int x = 1234;
  int y = 5678;
  debug ("Flag");
  debug ("X = %d\n", x);
  showlist (The first, second, and third items.);
  report (x>y, "x is %d but y is %d", x, y);
}

// Check long long types.
#define BIG64 18446744073709551615ull
#define BIG32 4294967295ul
#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
#if !BIG_OK
  #error "your preprocessor is broken"
#endif
#if BIG_OK
#else
  #error "your preprocessor is broken"
#endif
static long long int bignum = -9223372036854775807LL;
static unsigned long long int ubignum = BIG64;

struct incomplete_array
{
  int datasize;
  double data[];
};

struct named_init {
  int number;
  const wchar_t *name;
  double average;
};

typedef const char *ccp;

static inline int
test_restrict (ccp restrict text)
{
  // See if C++-style comments work.
  // Iterate through items via the restricted pointer.
  // Also check for declarations in for loops.
  for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
    continue;
  return 0;
}

// Check varargs and va_copy.
static bool
test_varargs (const char *format, ...)
{
  va_list args;
  va_start (args, format);
  va_list args_copy;
  va_copy (args_copy, args);

  const char *str = "";
  int number = 0;
  float fnumber = 0;

  while (*format)
    {
      switch (*format++)
	{
	case '\''s'\'': // string
	  str = va_arg (args_copy, const char *);
	  break;
	case '\''d'\'': // int
	  number = va_arg (args_copy, int);
	  break;
	case '\''f'\'': // float
	  fnumber = va_arg (args_copy, double);
	  break;
	default:
	  break;
	}
    }
  va_end (args_copy);
  va_end (args);

  return *str && number && fnumber;
}
'

# Test code for whether the C compiler supports C99 (body of main).
ac_c_conftest_c99_main='
  // Check bool.
  _Bool success = false;
  success |= (argc != 0);

  // Check restrict.
  if (test_restrict ("String literal") == 0)
    success = true;
  char *restrict newvar = "Another string";

  // Check varargs.
  success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
  test_varargs_macros ();

  // Check flexible array members.
  struct incomplete_array *ia =
    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
  ia->datasize = 10;
  for (int i = 0; i < ia->datasize; ++i)
    ia->data[i] = i * 1.234;

  // Check named initializers.
  struct named_init ni = {
    .number = 34,
    .name = L"Test wide string",
    .average = 543.34343,
  };

  ni.number = 58;

  int dynamic_array[ni.number];
  dynamic_array[0] = argv[0][0];
  dynamic_array[ni.number - 1] = 543;

  // work around unused variable warnings
  ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
	 || dynamic_array[ni.number - 1] != 543);
'

# Test code for whether the C compiler supports C11 (global declarations)
ac_c_conftest_c11_globals='
// Does the compiler advertise C11 conformance?
#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
# error "Compiler does not advertise C11 conformance"
#endif

// Check _Alignas.
char _Alignas (double) aligned_as_double;
char _Alignas (0) no_special_alignment;
extern char aligned_as_int;
char _Alignas (0) _Alignas (int) aligned_as_int;

// Check _Alignof.
enum
{
  int_alignment = _Alignof (int),
  int_array_alignment = _Alignof (int[100]),
  char_alignment = _Alignof (char)
};
_Static_assert (0 < -_Alignof (int), "_Alignof is signed");

// Check _Noreturn.
int _Noreturn does_not_return (void) { for (;;) continue; }

// Check _Static_assert.
struct test_static_assert
{
  int x;
  _Static_assert (sizeof (int) <= sizeof (long int),
                  "_Static_assert does not work in struct");
  long int y;
};

// Check UTF-8 literals.
#define u8 syntax error!
char const utf8_literal[] = u8"happens to be ASCII" "another string";

// Check duplicate typedefs.
typedef long *long_ptr;
typedef long int *long_ptr;
typedef long_ptr long_ptr;

// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
struct anonymous
{
  union {
    struct { int i; int j; };
    struct { int k; long int l; } w;
  };
  int m;
} v1;
'

# Test code for whether the C compiler supports C11 (body of main).
ac_c_conftest_c11_main='
  _Static_assert ((offsetof (struct anonymous, i)
		   == offsetof (struct anonymous, w.k)),
		  "Anonymous union alignment botch");
  v1.i = 2;
  v1.w.k = 5;
  ok |= v1.i != 5;
'

# Test code for whether the C compiler supports C11 (complete).
ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
${ac_c_conftest_c99_globals}
${ac_c_conftest_c11_globals}

int
main (int argc, char **argv)
{
  int ok = 0;
  ${ac_c_conftest_c89_main}
  ${ac_c_conftest_c99_main}
  ${ac_c_conftest_c11_main}
  return ok;
}
"

# Test code for whether the C compiler supports C99 (complete).
ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
${ac_c_conftest_c99_globals}

int
main (int argc, char **argv)
{
  int ok = 0;
  ${ac_c_conftest_c89_main}
  ${ac_c_conftest_c99_main}
  return ok;
}
"

# Test code for whether the C compiler supports C89 (complete).
ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}

int
main (int argc, char **argv)
{
  int ok = 0;
  ${ac_c_conftest_c89_main}
  return ok;
}
"

as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"

# Auxiliary files required by this configure script.
ac_aux_files="install-sh"

# Locations in which to look for auxiliary files.
ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."

# Search for a directory containing all of the required auxiliary files,
# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
# If we don't find one directory that contains all the files we need,
# we report the set of missing files from the *first* directory in
# $ac_aux_dir_candidates and give up.
ac_missing_aux_files=""
ac_first_candidate=:
printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in $ac_aux_dir_candidates
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
  as_found=:

  printf "%s\n" "$as_me:${as_lineno-$LINENO}:  trying $as_dir" >&5
  ac_aux_dir_found=yes
  ac_install_sh=
  for ac_aux in $ac_aux_files
  do
    # As a special case, if "install-sh" is required, that requirement
    # can be satisfied by any of "install-sh", "install.sh", or "shtool",
    # and $ac_install_sh is set appropriately for whichever one is found.
    if test x"$ac_aux" = x"install-sh"
    then
      if test -f "${as_dir}install-sh"; then
        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}install-sh found" >&5
        ac_install_sh="${as_dir}install-sh -c"
      elif test -f "${as_dir}install.sh"; then
        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}install.sh found" >&5
        ac_install_sh="${as_dir}install.sh -c"
      elif test -f "${as_dir}shtool"; then
        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}shtool found" >&5
        ac_install_sh="${as_dir}shtool install -c"
      else
        ac_aux_dir_found=no
        if $ac_first_candidate; then
          ac_missing_aux_files="${ac_missing_aux_files} install-sh"
        else
          break
        fi
      fi
    else
      if test -f "${as_dir}${ac_aux}"; then
        printf "%s\n" "$as_me:${as_lineno-$LINENO}:   ${as_dir}${ac_aux} found" >&5
      else
        ac_aux_dir_found=no
        if $ac_first_candidate; then
          ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
        else
          break
        fi
      fi
    fi
  done
  if test "$ac_aux_dir_found" = yes; then
    ac_aux_dir="$as_dir"
    break
  fi
  ac_first_candidate=false

  as_found=false
done
IFS=$as_save_IFS
if $as_found
then :

else $as_nop
  as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
fi


# These three variables are undocumented and unsupported,
# and are intended to be withdrawn in a future Autoconf release.
# They can cause serious problems if a builder's source tree is in a directory
# whose full name contains unusual characters.
if test -f "${ac_aux_dir}config.guess"; then
  ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
fi
if test -f "${ac_aux_dir}config.sub"; then
  ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
fi
if test -f "$ac_aux_dir/configure"; then
  ac_configure="$SHELL ${ac_aux_dir}configure"
fi

# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
for ac_var in $ac_precious_vars; do
  eval ac_old_set=\$ac_cv_env_${ac_var}_set
  eval ac_new_set=\$ac_env_${ac_var}_set
  eval ac_old_val=\$ac_cv_env_${ac_var}_value
  eval ac_new_val=\$ac_env_${ac_var}_value
  case $ac_old_set,$ac_new_set in
    set,)
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
      ac_cache_corrupted=: ;;
    ,set)
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
      ac_cache_corrupted=: ;;
    ,);;
    *)
      if test "x$ac_old_val" != "x$ac_new_val"; then
	# differences in whitespace do not lead to failure.
	ac_old_val_w=`echo x $ac_old_val`
	ac_new_val_w=`echo x $ac_new_val`
	if test "$ac_old_val_w" != "$ac_new_val_w"; then
	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
	  ac_cache_corrupted=:
	else
	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
	  eval $ac_var=\$ac_old_val
	fi
	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
printf "%s\n" "$as_me:   former value:  \`$ac_old_val'" >&2;}
	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}
      fi;;
  esac
  # Pass precious variables to config.status.
  if test "$ac_new_set" = set; then
    case $ac_new_val in
    *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
    *) ac_arg=$ac_var=$ac_new_val ;;
    esac
    case " $ac_configure_args " in
      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
    esac
  fi
done
if $ac_cache_corrupted; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
  as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
	    and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
## -------------------- ##

ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu



test "$program_prefix" != NONE &&
  program_transform_name="s&^&$program_prefix&;$program_transform_name"
# Use a double $ so make ignores it.
test "$program_suffix" != NONE &&
  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
# Double any \ or $.
# By default was `s,x,x', remove it if useless.
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"`















RELOCATION=no


saveCFLAGS=$CFLAGS










ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
  for ac_prog in gcc cc egcs cl.exe
  do
    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_CC+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  if test -n "$CC"; then
  ac_cv_prog_CC="$CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    for ac_exec_ext in '' $ac_executable_extensions; do
  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
    break 2
  fi
done
  done
IFS=$as_save_IFS

fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
printf "%s\n" "$CC" >&6; }
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi


    test -n "$CC" && break
  done
fi
if test -z "$CC"; then
  ac_ct_CC=$CC
  for ac_prog in gcc cc egcs cl.exe
do
  # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_ac_ct_CC+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  if test -n "$ac_ct_CC"; then
  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    for ac_exec_ext in '' $ac_executable_extensions; do
  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
    ac_cv_prog_ac_ct_CC="$ac_prog"
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
    break 2
  fi
done
  done
IFS=$as_save_IFS

fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
printf "%s\n" "$ac_ct_CC" >&6; }
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi


  test -n "$ac_ct_CC" && break
done

  if test "x$ac_ct_CC" = x; then
    CC=""
  else
    case $cross_compiling:$ac_tool_warned in
yes:)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
    CC=$ac_ct_CC
  fi
fi


test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }

# Provide some information about the compiler.
printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion -version; do
  { { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
  ac_status=$?
  if test -s conftest.err; then
    sed '10a\
... rest of stderr output deleted ...
         10q' conftest.err >conftest.er1
    cat conftest.er1 >&5
  fi
  rm -f conftest.er1 conftest.err
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }
done

cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{

  ;
  return 0;
}
_ACEOF
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
printf %s "checking whether the C compiler works... " >&6; }
ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`

# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"

ac_rmfiles=
for ac_file in $ac_files
do
  case $ac_file in
    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
  esac
done
rm -f $ac_rmfiles

if { { ac_try="$ac_link_default"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_link_default") 2>&5
  ac_status=$?
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }
then :
  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile.  We should not override ac_cv_exeext if it was cached,
# so that the user can short-circuit this test for compilers unknown to
# Autoconf.
for ac_file in $ac_files ''
do
  test -f "$ac_file" || continue
  case $ac_file in
    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
	;;
    [ab].out )
	# We found the default executable, but exeext='' is most
	# certainly right.
	break;;
    *.* )
	if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
	then :; else
	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
	fi
	# We set ac_cv_exeext here because the later test for it is not
	# safe: cross compilers may not add the suffix if given an `-o'
	# argument, so we may need to know it at that point already.
	# Even if this section looks crufty: it has the advantage of
	# actually working.
	break;;
    * )
	break;;
  esac
done
test "$ac_cv_exeext" = no && ac_cv_exeext=

else $as_nop
  ac_file=''
fi
if test -z "$ac_file"
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
printf %s "checking for C compiler default output file name... " >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext

rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_link") 2>&5
  ac_status=$?
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }
then :
  # If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
# `rm'.
for ac_file in conftest.exe conftest conftest.*; do
  test -f "$ac_file" || continue
  case $ac_file in
    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
	  break;;
    * ) break;;
  esac
done
else $as_nop
  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
printf "%s\n" "$ac_cv_exeext" >&6; }

rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include 
int
main (void)
{
FILE *f = fopen ("conftest.out", "w");
 return ferror (f) || fclose (f) != 0;

  ;
  return 0;
}
_ACEOF
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run.  If not, either
# the compiler is broken, or we cross compile.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
  { { ac_try="$ac_link"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_link") 2>&5
  ac_status=$?
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }
  if { ac_try='./conftest$ac_cv_exeext'
  { { case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_try") 2>&5
  ac_status=$?
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }; }; then
    cross_compiling=no
  else
    if test "$cross_compiling" = maybe; then
	cross_compiling=yes
    else
	{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
    fi
  fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
printf "%s\n" "$cross_compiling" >&6; }

rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
printf %s "checking for suffix of object files... " >&6; }
if test ${ac_cv_objext+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{

  ;
  return 0;
}
_ACEOF
rm -f conftest.o conftest.obj
if { { ac_try="$ac_compile"
case "(($ac_try" in
  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
  *) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
printf "%s\n" "$ac_try_echo"; } >&5
  (eval "$ac_compile") 2>&5
  ac_status=$?
  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }
then :
  for ac_file in conftest.o conftest.obj conftest.*; do
  test -f "$ac_file" || continue;
  case $ac_file in
    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
       break;;
  esac
done
else $as_nop
  printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
printf %s "checking whether the compiler supports GNU C... " >&6; }
if test ${ac_cv_c_compiler_gnu+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{
#ifndef __GNUC__
       choke me
#endif

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_compiler_gnu=yes
else $as_nop
  ac_compiler_gnu=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
ac_compiler_gnu=$ac_cv_c_compiler_gnu

if test $ac_compiler_gnu = yes; then
  GCC=yes
else
  GCC=
fi
ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
printf %s "checking whether $CC accepts -g... " >&6; }
if test ${ac_cv_prog_cc_g+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_save_c_werror_flag=$ac_c_werror_flag
   ac_c_werror_flag=yes
   ac_cv_prog_cc_g=no
   CFLAGS="-g"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_prog_cc_g=yes
else $as_nop
  CFLAGS=""
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

else $as_nop
  ac_c_werror_flag=$ac_save_c_werror_flag
	 CFLAGS="-g"
	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_prog_cc_g=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   ac_c_werror_flag=$ac_save_c_werror_flag
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
if test $ac_test_CFLAGS; then
  CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
  if test "$GCC" = yes; then
    CFLAGS="-g -O2"
  else
    CFLAGS="-g"
  fi
else
  if test "$GCC" = yes; then
    CFLAGS="-O2"
  else
    CFLAGS=
  fi
fi
ac_prog_cc_stdc=no
if test x$ac_prog_cc_stdc = xno
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
printf %s "checking for $CC option to enable C11 features... " >&6; }
if test ${ac_cv_prog_cc_c11+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$ac_c_conftest_c11_program
_ACEOF
for ac_arg in '' -std=gnu11
do
  CC="$ac_save_CC $ac_arg"
  if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_prog_cc_c11=$ac_arg
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam
  test "x$ac_cv_prog_cc_c11" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
fi

if test "x$ac_cv_prog_cc_c11" = xno
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
printf "%s\n" "unsupported" >&6; }
else $as_nop
  if test "x$ac_cv_prog_cc_c11" = x
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
printf "%s\n" "none needed" >&6; }
else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
     CC="$CC $ac_cv_prog_cc_c11"
fi
  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
  ac_prog_cc_stdc=c11
fi
fi
if test x$ac_prog_cc_stdc = xno
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
printf %s "checking for $CC option to enable C99 features... " >&6; }
if test ${ac_cv_prog_cc_c99+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_cv_prog_cc_c99=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$ac_c_conftest_c99_program
_ACEOF
for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
do
  CC="$ac_save_CC $ac_arg"
  if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_prog_cc_c99=$ac_arg
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam
  test "x$ac_cv_prog_cc_c99" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
fi

if test "x$ac_cv_prog_cc_c99" = xno
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
printf "%s\n" "unsupported" >&6; }
else $as_nop
  if test "x$ac_cv_prog_cc_c99" = x
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
printf "%s\n" "none needed" >&6; }
else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
     CC="$CC $ac_cv_prog_cc_c99"
fi
  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
  ac_prog_cc_stdc=c99
fi
fi
if test x$ac_prog_cc_stdc = xno
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
printf %s "checking for $CC option to enable C89 features... " >&6; }
if test ${ac_cv_prog_cc_c89+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_cv_prog_cc_c89=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
$ac_c_conftest_c89_program
_ACEOF
for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
  CC="$ac_save_CC $ac_arg"
  if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_prog_cc_c89=$ac_arg
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam
  test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
fi

if test "x$ac_cv_prog_cc_c89" = xno
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
printf "%s\n" "unsupported" >&6; }
else $as_nop
  if test "x$ac_cv_prog_cc_c89" = x
then :
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
printf "%s\n" "none needed" >&6; }
else $as_nop
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
     CC="$CC $ac_cv_prog_cc_c89"
fi
  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
  ac_prog_cc_stdc=c89
fi
fi

ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu


case $OSTYPE in
    darwin*)
        echo detected MacOS, setting flags
        CPPFLAGS="$CPPFLAGS -I/opt/local/include"
        LDFLAGS="$LDFLAGS -L/opt/local/lib"
        ;;
    *) echo detected non-mac os: $OSTYPE

esac



if test "$CC" = cl.exe; then
  if test -z "$saveCFLAGS" ; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: setting special CFLAGS value for cl" >&5
printf "%s\n" "$as_me: setting special CFLAGS value for cl" >&6;}
    CFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo"
  fi
  if test `expr "$CFLAGS" : '.*D_CRT_SECURE_NO_WARNINGS'` -eq 0; then
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: disabling CRT_SECURE warnings for cl" >&5
printf "%s\n" "$as_me: disabling CRT_SECURE warnings for cl" >&6;}
    CFLAGS="$CFLAGS -D_CRT_SECURE_NO_WARNINGS"
  fi
else

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fpic" >&5
printf %s "checking whether C compiler accepts -fpic... " >&6; }
if test ${ax_cv_check_cflags___fpic+y}
then :
  printf %s "(cached) " >&6
else $as_nop

  ax_check_save_flags=$CFLAGS
  CFLAGS="$CFLAGS  -fpic"
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ax_cv_check_cflags___fpic=yes
else $as_nop
  ax_cv_check_cflags___fpic=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
  CFLAGS=$ax_check_save_flags
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fpic" >&5
printf "%s\n" "$ax_cv_check_cflags___fpic" >&6; }
if test "x$ax_cv_check_cflags___fpic" = xyes
then :
  CFLAGS="$CFLAGS -fpic"
else $as_nop
  :
fi

fi


{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
printf %s "checking for an ANSI C-conforming const... " >&6; }
if test ${ac_cv_c_const+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{

#ifndef __cplusplus
  /* Ultrix mips cc rejects this sort of thing.  */
  typedef int charset[2];
  const charset cs = { 0, 0 };
  /* SunOS 4.1.1 cc rejects this.  */
  char const *const *pcpcc;
  char **ppc;
  /* NEC SVR4.0.2 mips cc rejects this.  */
  struct point {int x, y;};
  static struct point const zero = {0,0};
  /* IBM XL C 1.02.0.0 rejects this.
     It does not let you subtract one const X* pointer from another in
     an arm of an if-expression whose if-part is not a constant
     expression */
  const char *g = "string";
  pcpcc = &g + (g ? g-g : 0);
  /* HPUX 7.0 cc rejects these. */
  ++pcpcc;
  ppc = (char**) pcpcc;
  pcpcc = (char const *const *) ppc;
  { /* SCO 3.2v4 cc rejects this sort of thing.  */
    char tx;
    char *t = &tx;
    char const *s = 0 ? (char *) 0 : (char const *) 0;

    *t++ = 0;
    if (s) return 0;
  }
  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
    int x[] = {25, 17};
    const int *foo = &x[0];
    ++foo;
  }
  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
    typedef const int *iptr;
    iptr p = 0;
    ++p;
  }
  { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
    struct s { int j; const int *ap[3]; } bx;
    struct s *b = &bx; b->j = 5;
  }
  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
    const int foo = 10;
    if (!foo) return 0;
  }
  return !cs[0] && !zero.x;
#endif

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  ac_cv_c_const=yes
else $as_nop
  ac_cv_c_const=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
printf "%s\n" "$ac_cv_c_const" >&6; }
if test $ac_cv_c_const = no; then

printf "%s\n" "#define const /**/" >>confdefs.h

fi



  # Find a good install program.  We prefer a C program (faster),
# so one script is as good as another.  But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
# SunOS /usr/etc/install
# IRIX /sbin/install
# AIX /bin/install
# AmigaOS /C/install, which installs bootblocks on floppy discs
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
printf %s "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
if test ${ac_cv_path_install+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    # Account for fact that we put trailing slashes in our PATH walk.
case $as_dir in #((
  ./ | /[cC]/* | \
  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
  /usr/ucb/* ) ;;
  *)
    # OSF1 and SCO ODT 3.0 have their own names for install.
    # Don't use installbsd from OSF since it installs stuff as root
    # by default.
    for ac_prog in ginstall scoinst install; do
      for ac_exec_ext in '' $ac_executable_extensions; do
	if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
	  if test $ac_prog = install &&
	    grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
	    # AIX install.  It has an incompatible calling convention.
	    :
	  elif test $ac_prog = install &&
	    grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
	    # program-specific install script used by HP pwplus--don't use.
	    :
	  else
	    rm -rf conftest.one conftest.two conftest.dir
	    echo one > conftest.one
	    echo two > conftest.two
	    mkdir conftest.dir
	    if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
	      test -s conftest.one && test -s conftest.two &&
	      test -s conftest.dir/conftest.one &&
	      test -s conftest.dir/conftest.two
	    then
	      ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
	      break 3
	    fi
	  fi
	fi
      done
    done
    ;;
esac

  done
IFS=$as_save_IFS

rm -rf conftest.one conftest.two conftest.dir

fi
  if test ${ac_cv_path_install+y}; then
    INSTALL=$ac_cv_path_install
  else
    # As a last resort, use the slow shell script.  Don't cache a
    # value for INSTALL within a source directory, because that will
    # break other packages using the cache if that directory is
    # removed, or if the value is a relative name.
    INSTALL=$ac_install_sh
  fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
printf "%s\n" "$INSTALL" >&6; }

# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'

test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'

test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'


  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
  if test ${ac_cv_path_mkdir+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    for ac_prog in mkdir gmkdir; do
	 for ac_exec_ext in '' $ac_executable_extensions; do
	   as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
	   case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
	     'mkdir ('*'coreutils) '* | \
	     'BusyBox '* | \
	     'mkdir (fileutils) '4.1*)
	       ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
	       break 3;;
	   esac
	 done
       done
  done
IFS=$as_save_IFS

fi

  test -d ./--version && rmdir ./--version
  if test ${ac_cv_path_mkdir+y}; then
    MKDIR_P="$ac_cv_path_mkdir -p"
  else
    # As a last resort, use the slow shell script.  Don't cache a
    # value for MKDIR_P within a source directory, because that will
    # break other packages using the cache if that directory is
    # removed, or if the value is a relative name.
    MKDIR_P="$ac_install_sh -d"
  fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
printf "%s\n" "$MKDIR_P" >&6; }



{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing sin" >&5
printf %s "checking for library containing sin... " >&6; }
if test ${ac_cv_search_sin+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

/* Override any GCC internal prototype to avoid an error.
   Use char because int might match the return type of a GCC
   builtin and then its argument prototype would still apply.  */
char sin ();
int
main (void)
{
return sin ();
  ;
  return 0;
}
_ACEOF
for ac_lib in '' m
do
  if test -z "$ac_lib"; then
    ac_res="none required"
  else
    ac_res=-l$ac_lib
    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
  fi
  if ac_fn_c_try_link "$LINENO"
then :
  ac_cv_search_sin=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext
  if test ${ac_cv_search_sin+y}
then :
  break
fi
done
if test ${ac_cv_search_sin+y}
then :

else $as_nop
  ac_cv_search_sin=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sin" >&5
printf "%s\n" "$ac_cv_search_sin" >&6; }
ac_res=$ac_cv_search_sin
if test "$ac_res" != no
then :
  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"

fi



{ ac_cv_lib_readline_append_history=; unset ac_cv_lib_readline_append_history;}
for termlib in "" -ltermcap -lncurses -lcurses; do
  if test "$ac_cv_lib_readline_append_history" != yes ; then
    { ac_cv_lib_readline_append_history=; unset ac_cv_lib_readline_append_history;}
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for append_history in -lreadline" >&5
printf %s "checking for append_history in -lreadline... " >&6; }
if test ${ac_cv_lib_readline_append_history+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_check_lib_save_LIBS=$LIBS
LIBS="-lreadline $termlib $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

/* Override any GCC internal prototype to avoid an error.
   Use char because int might match the return type of a GCC
   builtin and then its argument prototype would still apply.  */
char append_history ();
int
main (void)
{
return append_history ();
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
  ac_cv_lib_readline_append_history=yes
else $as_nop
  ac_cv_lib_readline_append_history=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_append_history" >&5
printf "%s\n" "$ac_cv_lib_readline_append_history" >&6; }
if test "x$ac_cv_lib_readline_append_history" = xyes
then :
  LIBS="-lreadline $termlib $LIBS";DEFIS="$DEFIS -DREADLINE"
fi

  fi
done



if test "$ac_cv_lib_readline_append_history" = yes; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
if test ${ac_cv_c_undeclared_builtin_options+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  ac_save_CFLAGS=$CFLAGS
   ac_cv_c_undeclared_builtin_options='cannot detect'
   for ac_arg in '' -fno-builtin; do
     CFLAGS="$ac_save_CFLAGS $ac_arg"
     # This test program should *not* compile successfully.
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

int
main (void)
{
(void) strchr;
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :

else $as_nop
  # This test program should compile successfully.
        # No library function is consistently available on
        # freestanding implementations, so test against a dummy
        # declaration.  Include always-available headers on the
        # off chance that they somehow elicit warnings.
        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include 
#include 
#include 
#include 
extern void ac_decl (int, char *);

int
main (void)
{
(void) ac_decl (0, (char *) 0);
  (void) ac_decl;

  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"
then :
  if test x"$ac_arg" = x
then :
  ac_cv_c_undeclared_builtin_options='none needed'
else $as_nop
  ac_cv_c_undeclared_builtin_options=$ac_arg
fi
          break
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    done
    CFLAGS=$ac_save_CFLAGS

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
  case $ac_cv_c_undeclared_builtin_options in #(
  'cannot detect') :
    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot make $CC report undeclared builtins
See \`config.log' for more details" "$LINENO" 5; } ;; #(
  'none needed') :
    ac_c_undeclared_builtin_options='' ;; #(
  *) :
    ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
esac

ac_fn_check_decl "$LINENO" "rl_completion_suppress_append" "ac_cv_have_decl_rl_completion_suppress_append" "#include 
" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_rl_completion_suppress_append" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DNO_SUPPRESS_APPEND"
fi
fi


ac_header= ac_cache=
for ac_item in $ac_header_c_list
do
  if test $ac_cache; then
    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
      printf "%s\n" "#define $ac_item 1" >> confdefs.h
    fi
    ac_header= ac_cache=
  elif test $ac_header; then
    ac_cache=$ac_item
  else
    ac_header=$ac_item
  fi
done








if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
then :

printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h

fi
ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
if test "x$ac_cv_header_string_h" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DSTRINGS_H"
fi

ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
if test "x$ac_cv_header_stdlib_h" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DNO_STDLIB_H"
fi


ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr"
if test "x$ac_cv_func_strchr" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DNO_STRCHR"
fi

ac_fn_c_check_func "$LINENO" "strspn" "ac_cv_func_strspn"
if test "x$ac_cv_func_strspn" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DNO_STRSPN";STRFUNC="strfunc.$OBJEXT"
fi

ac_fn_c_check_func "$LINENO" "strtok" "ac_cv_func_strtok"
if test "x$ac_cv_func_strtok" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DNO_STRTOK";STRFUNC="strfunc.$OBJEXT"
fi


ac_fn_check_decl "$LINENO" "TIOCGWINSZ" "ac_cv_have_decl_TIOCGWINSZ" "#include
" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_TIOCGWINSZ" = xyes
then :
  DEFIS="$DEFIS -DHAVE_IOCTL"
fi

ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
if test "x$ac_cv_func_setenv" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DNO_SETENV"
fi

ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
if test "x$ac_cv_func_setlocale" = xyes
then :

else $as_nop
  DEFIS="$DEFIS -DNO_SETLOCALE"
fi


{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for locale and UTF-8 support" >&5
printf %s "checking for locale and UTF-8 support... " >&6; }
if test ${am_cv_utf8+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#define _XOPEN_SOURCE 600
#include 
#include 
#include 

int
main (void)
{
wchar_t *out;char *in;const char *res;
     res=setlocale(LC_CTYPE,"");res=in;
     mbsrtowcs(out, &res, 2, NULL);
     wcswidth(out,2);
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
  am_cv_utf8=yes
else $as_nop
  am_cv_utf8=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_utf8" >&5
printf "%s\n" "$am_cv_utf8" >&6; }

if test $am_cv_utf8 = yes; then
    DEFIS="$DEFIS -DSUPPORT_UTF8"
fi

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for isfinite" >&5
printf %s "checking for isfinite... " >&6; }
if test ${am_cv_isfinite+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */

#define _XOPEN_SOURCE 600
#include 

int
main (void)
{
float a;a=1;isfinite(a);
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"
then :
  am_cv_isfinite=yes
else $as_nop
  am_cv_isfinite=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
    conftest$ac_exeext conftest.$ac_ext

fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_isfinite" >&5
printf "%s\n" "$am_cv_isfinite" >&6; }

if test $am_cv_isfinite = no; then
    DEFIS="$DEFIS -DNO_ISFINITE"
fi

# Extract the first word of "mksinfo", so it can be a program name with args.
set dummy mksinfo; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_prog_mkstoolkit+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  if test -n "$mkstoolkit"; then
  ac_cv_prog_mkstoolkit="$mkstoolkit" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    for ac_exec_ext in '' $ac_executable_extensions; do
  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
    ac_cv_prog_mkstoolkit="found"
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
    break 2
  fi
done
  done
IFS=$as_save_IFS

  test -z "$ac_cv_prog_mkstoolkit" && ac_cv_prog_mkstoolkit="no"
fi
fi
mkstoolkit=$ac_cv_prog_mkstoolkit
if test -n "$mkstoolkit"; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $mkstoolkit" >&5
printf "%s\n" "$mkstoolkit" >&6; }
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi




# assume that if we have the MKS Toolkit, we're running the Korn shell
HAVE_MKS=no
if test $mkstoolkit = found; then
    if mksinfo > /dev/null; then
      if test -n "$ROOTDIR"; then
        DEFIS="$DEFIS -DHAVE_MKS_TOOLKIT"
        echo 'using MKS Toolkit'
        MKS_POSIX=".POSIX:"
        MKS_RES='$(RES)'
        HAVE_MKS=yes
        # if the user has specified a drive, leave things alone.
        # otherwise, prepend the drive on which the Toolkit is installed
        case "$prefix" in
        ?:*)
          MKS_DRIVE= ;;
        *)
          MKS_DRIVE="${ROOTDIR%%:*}:" ;;
        esac
      else
        echo 'no ROOTDIR... cannot use MKS Toolkit'
      fi
    else
      echo 'mksinfo failed... not using MKS Toolkit'
    fi
fi


# Extract the first word of "python3", so it can be a program name with args.
set dummy python3; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_PYTHON+y}
then :
  printf %s "(cached) " >&6
else $as_nop
  case $PYTHON in
  [\\/]* | ?:[\\/]*)
  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
  ;;
  *)
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    for ac_exec_ext in '' $ac_executable_extensions; do
  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
    ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
    break 2
  fi
done
  done
IFS=$as_save_IFS

  test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="no"
  ;;
esac
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
printf "%s\n" "$PYTHON" >&6; }
else
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi



if test $PYTHON = no; then
   HAVE_PYTHON=no
   echo '    Units will work without python but the currency update'
   echo '    script, units_cur,  will not be installed'
   PYTHON=''
else
   HAVE_PYTHON=yes
fi

# Check whether --enable-relocation was given.
if test ${enable_relocation+y}
then :
  enableval=$enable_relocation; if test $enable_relocation = yes ;then
          UDATADIR=""
	  RELOCATION="yes"
          echo relocation enabled
     else
          UDATADIR="$datadir/units/"
	  echo relocation disabled
     fi

else $as_nop
  UDATADIR="$datadir/units/"
fi


UDAT="$datadir/units/"
CDAT="$sharedstatedir/units/"


ac_config_files="$ac_config_files Makefile"

cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
# scripts and configure runs, see configure's option --config-cache.
# It is not useful on other systems.  If it contains results you don't
# want to keep, you may remove or edit it.
#
# config.status only pays attention to the cache file if you give it
# the --recheck option to rerun configure.
#
# `ac_cv_env_foo' variables (set or unset) will be overridden when
# loading this file, other *unset* `ac_cv_foo' will be assigned the
# following values.

_ACEOF

# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, we kill variables containing newlines.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
(
  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
    eval ac_val=\$$ac_var
    case $ac_val in #(
    *${as_nl}*)
      case $ac_var in #(
      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      esac
      case $ac_var in #(
      _ | IFS | as_nl) ;; #(
      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
      *) { eval $ac_var=; unset $ac_var;} ;;
      esac ;;
    esac
  done

  (set) 2>&1 |
    case $as_nl`(ac_space=' '; set) 2>&1` in #(
    *${as_nl}ac_space=\ *)
      # `set' does not quote correctly, so add quotes: double-quote
      # substitution turns \\\\ into \\, and sed turns \\ into \.
      sed -n \
	"s/'/'\\\\''/g;
	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
      ;; #(
    *)
      # `set' quotes correctly as required by POSIX, so do not add quotes.
      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
      ;;
    esac |
    sort
) |
  sed '
     /^ac_cv_env_/b end
     t clear
     :clear
     s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
     t end
     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
     :end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
  if test -w "$cache_file"; then
    if test "x$cache_file" != "x/dev/null"; then
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
      if test ! -f "$cache_file" || test -h "$cache_file"; then
	cat confcache >"$cache_file"
      else
        case $cache_file in #(
        */* | ?:*)
	  mv -f confcache "$cache_file"$$ &&
	  mv -f "$cache_file"$$ "$cache_file" ;; #(
        *)
	  mv -f confcache "$cache_file" ;;
	esac
      fi
    fi
  else
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
  fi
fi
rm -f confcache

test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'

# Transform confdefs.h into DEFS.
# Protect against shell expansion while executing Makefile rules.
# Protect against Makefile macro expansion.
#
# If the first sed substitution is executed (which looks for macros that
# take arguments), then branch to the quote section.  Otherwise,
# look for a macro that doesn't take arguments.
ac_script='
:mline
/\\$/{
 N
 s,\\\n,,
 b mline
}
t clear
:clear
s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
t quote
s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
t quote
b any
:quote
s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
s/\[/\\&/g
s/\]/\\&/g
s/\$/$$/g
H
:any
${
	g
	s/^\n//
	s/\n/ /g
	p
}
'
DEFS=`sed -n "$ac_script" confdefs.h`


ac_libobjs=
ac_ltlibobjs=
U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
  # 1. Remove the extension, and $U if already installed.
  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
  ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
  #    will be set to the directory where LIBOBJS objects are built.
  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
done
LIBOBJS=$ac_libobjs

LTLIBOBJS=$ac_ltlibobjs



: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
# Generated by $as_me.
# Run this file to recreate the current configuration.
# Compiler output produced by configure, useful for debugging
# configure, is in config.log if it exists.

debug=false
ac_cs_recheck=false
ac_cs_silent=false

SHELL=\${CONFIG_SHELL-$SHELL}
export SHELL
_ASEOF
cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##

# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
as_nop=:
if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else $as_nop
  case `(set -o) 2>/dev/null` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi



# Reset variables that may have inherited troublesome values from
# the environment.

# IFS needs to be set, to space, tab, and newline, in precisely that order.
# (If _AS_PATH_WALK were called with IFS unset, it would have the
# side effect of setting IFS to empty, thus disabling word splitting.)
# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
IFS=" ""	$as_nl"

PS1='$ '
PS2='> '
PS4='+ '

# Ensure predictable behavior from utilities with locale-dependent output.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE

# We cannot yet rely on "unset" to work, but we need these variables
# to be unset--not just set to an empty or harmless value--now, to
# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
# also avoids known problems related to "unset" and subshell syntax
# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
do eval test \${$as_var+y} \
  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done

# Ensure that fds 0, 1, and 2 are open.
if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi

# The user is always right.
if ${PATH_SEPARATOR+false} :; then
  PATH_SEPARATOR=:
  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
      PATH_SEPARATOR=';'
  }
fi


# Find who we are.  Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
  *[\\/]* ) as_myself=$0 ;;
  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
  done
IFS=$as_save_IFS

     ;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
  as_myself=$0
fi
if test ! -f "$as_myself"; then
  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
  exit 1
fi



# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
  as_status=$1; test $as_status -eq 0 && as_status=1
  if test "$4"; then
    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
  fi
  printf "%s\n" "$as_me: error: $2" >&2
  as_fn_exit $as_status
} # as_fn_error



# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
  return $1
} # as_fn_set_status

# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
  set +e
  as_fn_set_status $1
  exit $1
} # as_fn_exit

# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
  { eval $1=; unset $1;}
}
as_unset=as_fn_unset

# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
then :
  eval 'as_fn_append ()
  {
    eval $1+=\$2
  }'
else $as_nop
  as_fn_append ()
  {
    eval $1=\$$1\$2
  }
fi # as_fn_append

# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
then :
  eval 'as_fn_arith ()
  {
    as_val=$(( $* ))
  }'
else $as_nop
  as_fn_arith ()
  {
    as_val=`expr "$@" || test $? -eq 1`
  }
fi # as_fn_arith


if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
  as_basename=basename
else
  as_basename=false
fi

if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
  as_dirname=dirname
else
  as_dirname=false
fi

as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
	 X"$0" : 'X\(//\)$' \| \
	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X/"$0" |
    sed '/^.*\/\([^/][^/]*\)\/*$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`

# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits


# Determine whether it's possible to make 'echo' print without a newline.
# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
  case `echo 'xy\c'` in
  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
  xy)  ECHO_C='\c';;
  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
       ECHO_T='	';;
  esac;;
*)
  ECHO_N='-n';;
esac

# For backward compatibility with old third-party macros, we provide
# the shell variables $as_echo and $as_echo_n.  New code should use
# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
as_echo='printf %s\n'
as_echo_n='printf %s'

rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
  rm -f conf$$.dir/conf$$.file
else
  rm -f conf$$.dir
  mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
  if ln -s conf$$.file conf$$ 2>/dev/null; then
    as_ln_s='ln -s'
    # ... but there are two gotchas:
    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
    # In both cases, we have to default to `cp -pR'.
    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
      as_ln_s='cp -pR'
  elif ln conf$$.file conf$$ 2>/dev/null; then
    as_ln_s=ln
  else
    as_ln_s='cp -pR'
  fi
else
  as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null


# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{

  case $as_dir in #(
  -*) as_dir=./$as_dir;;
  esac
  test -d "$as_dir" || eval $as_mkdir_p || {
    as_dirs=
    while :; do
      case $as_dir in #(
      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
      *) as_qdir=$as_dir;;
      esac
      as_dirs="'$as_qdir' $as_dirs"
      as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_dir" : 'X\(//\)[^/]' \| \
	 X"$as_dir" : 'X\(//\)$' \| \
	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X"$as_dir" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
      test -d "$as_dir" && break
    done
    test -z "$as_dirs" || eval "mkdir $as_dirs"
  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"


} # as_fn_mkdir_p
if mkdir -p . 2>/dev/null; then
  as_mkdir_p='mkdir -p "$as_dir"'
else
  test -d ./-p && rmdir ./-p
  as_mkdir_p=false
fi


# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
  test -f "$1" && test -x "$1"
} # as_fn_executable_p
as_test_x='test -x'
as_executable_p=as_fn_executable_p

# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"

# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"


exec 6>&1
## ----------------------------------- ##
## Main body of $CONFIG_STATUS script. ##
## ----------------------------------- ##
_ASEOF
test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1

cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# Save the log message, to keep $0 and so on meaningful, and to
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by GNU units $as_me 2.23, which was
generated by GNU Autoconf 2.71.  Invocation command line was

  CONFIG_FILES    = $CONFIG_FILES
  CONFIG_HEADERS  = $CONFIG_HEADERS
  CONFIG_LINKS    = $CONFIG_LINKS
  CONFIG_COMMANDS = $CONFIG_COMMANDS
  $ $0 $@

on `(hostname || uname -n) 2>/dev/null | sed 1q`
"

_ACEOF

case $ac_config_files in *"
"*) set x $ac_config_files; shift; ac_config_files=$*;;
esac



cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# Files that config.status was made for.
config_files="$ac_config_files"

_ACEOF

cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
ac_cs_usage="\
\`$as_me' instantiates files and other configuration actions
from templates according to the current configuration.  Unless the files
and actions are specified as TAGs, all are instantiated by default.

Usage: $0 [OPTION]... [TAG]...

  -h, --help       print this help, then exit
  -V, --version    print version number and configuration settings, then exit
      --config     print configuration, then exit
  -q, --quiet, --silent
                   do not print progress messages
  -d, --debug      don't remove temporary files
      --recheck    update $as_me by reconfiguring in the same conditions
      --file=FILE[:TEMPLATE]
                   instantiate the configuration file FILE

Configuration files:
$config_files

Report bugs to .
GNU units home page: .
General help using GNU software: ."

_ACEOF
ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
GNU units config.status 2.23
configured by $0, generated by GNU Autoconf 2.71,
  with options \\"\$ac_cs_config\\"

Copyright (C) 2021 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."

ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
MKDIR_P='$MKDIR_P'
test -n "\$AWK" || AWK=awk
_ACEOF

cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# The default lists apply if the user does not specify any file.
ac_need_defaults=:
while test $# != 0
do
  case $1 in
  --*=?*)
    ac_option=`expr "X$1" : 'X\([^=]*\)='`
    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
    ac_shift=:
    ;;
  --*=)
    ac_option=`expr "X$1" : 'X\([^=]*\)='`
    ac_optarg=
    ac_shift=:
    ;;
  *)
    ac_option=$1
    ac_optarg=$2
    ac_shift=shift
    ;;
  esac

  case $ac_option in
  # Handling of the options.
  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
    ac_cs_recheck=: ;;
  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
    printf "%s\n" "$ac_cs_version"; exit ;;
  --config | --confi | --conf | --con | --co | --c )
    printf "%s\n" "$ac_cs_config"; exit ;;
  --debug | --debu | --deb | --de | --d | -d )
    debug=: ;;
  --file | --fil | --fi | --f )
    $ac_shift
    case $ac_optarg in
    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
    '') as_fn_error $? "missing file argument" ;;
    esac
    as_fn_append CONFIG_FILES " '$ac_optarg'"
    ac_need_defaults=false;;
  --he | --h |  --help | --hel | -h )
    printf "%s\n" "$ac_cs_usage"; exit ;;
  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
  | -silent | --silent | --silen | --sile | --sil | --si | --s)
    ac_cs_silent=: ;;

  # This is an error.
  -*) as_fn_error $? "unrecognized option: \`$1'
Try \`$0 --help' for more information." ;;

  *) as_fn_append ac_config_targets " $1"
     ac_need_defaults=false ;;

  esac
  shift
done

ac_configure_extra_args=

if $ac_cs_silent; then
  exec 6>/dev/null
  ac_configure_extra_args="$ac_configure_extra_args --silent"
fi

_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
  shift
  \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
  CONFIG_SHELL='$SHELL'
  export CONFIG_SHELL
  exec "\$@"
fi

_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
  echo
  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
  printf "%s\n" "$ac_log"
} >&5

_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACEOF

cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1

# Handling of arguments.
for ac_config_target in $ac_config_targets
do
  case $ac_config_target in
    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;

  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
  esac
done


# If the user did not use the arguments to specify the items to instantiate,
# then the envvar interface is used.  Set only those that are not.
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
  test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
fi

# Have a temporary directory for convenience.  Make it in the build tree
# simply because there is no reason against having it here, and in addition,
# creating and moving files from /tmp can sometimes cause problems.
# Hook for its removal unless debugging.
# Note that there is a small window in which the directory will not be cleaned:
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
  tmp= ac_tmp=
  trap 'exit_status=$?
  : "${ac_tmp:=$tmp}"
  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
  trap 'as_fn_exit 1' 1 2 13 15
}
# Create a (secure) tmp directory for tmp files.

{
  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
  test -d "$tmp"
}  ||
{
  tmp=./conf$$-$RANDOM
  (umask 077 && mkdir "$tmp")
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
ac_tmp=$tmp

# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
# This happens for instance with `./config.status config.h'.
if test -n "$CONFIG_FILES"; then


ac_cr=`echo X | tr X '\015'`
# On cygwin, bash can eat \r inside `` if the user requested igncr.
# But we know of no other shell where ac_cr would be empty at this
# point, so we can use a bashism as a fallback.
if test "x$ac_cr" = x; then
  eval ac_cr=\$\'\\r\'
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
  ac_cs_awk_cr='\\r'
else
  ac_cs_awk_cr=$ac_cr
fi

echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
_ACEOF


{
  echo "cat >conf$$subs.awk <<_ACEOF" &&
  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
  echo "_ACEOF"
} >conf$$subs.sh ||
  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
  . ./conf$$subs.sh ||
    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5

  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
  if test $ac_delim_n = $ac_delim_num; then
    break
  elif $ac_last_try; then
    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
  else
    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
  fi
done
rm -f conf$$subs.sh

cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
h
s/^/S["/; s/!.*/"]=/
p
g
s/^[^!]*!//
:repl
t repl
s/'"$ac_delim"'$//
t delim
:nl
h
s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
n
b repl
:more1
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t nl
:delim
h
s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
b
:more2
s/["\\]/\\&/g; s/^/"/; s/$/"\\/
p
g
s/.\{148\}//
t delim
' >$CONFIG_STATUS || ac_write_fail=1
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
  for (key in S) S_is_set[key] = 1
  FS = ""

}
{
  line = $ 0
  nfields = split(line, field, "@")
  substed = 0
  len = length(field[1])
  for (i = 2; i < nfields; i++) {
    key = field[i]
    keylen = length(key)
    if (S_is_set[key]) {
      value = S[key]
      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
      len += length(value) + length(field[++i])
      substed = 1
    } else
      len += 1 + keylen
  }

  print line
}

_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
  cat
fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF

# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
h
s///
s/^/:/
s/[	 ]*$/:/
s/:\$(srcdir):/:/g
s/:\${srcdir}:/:/g
s/:@srcdir@:/:/g
s/^:*//
s/:*$//
x
s/\(=[	 ]*\).*/\1/
G
s/\n//
s/^[^=]*=[	 ]*$//
}'
fi

cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
fi # test -n "$CONFIG_FILES"


eval set X "  :F $CONFIG_FILES      "
shift
for ac_tag
do
  case $ac_tag in
  :[FHLC]) ac_mode=$ac_tag; continue;;
  esac
  case $ac_mode$ac_tag in
  :[FHL]*:*);;
  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
  :[FH]-) ac_tag=-:-;;
  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
  esac
  ac_save_IFS=$IFS
  IFS=:
  set x $ac_tag
  IFS=$ac_save_IFS
  shift
  ac_file=$1
  shift

  case $ac_mode in
  :L) ac_source=$1;;
  :[FH])
    ac_file_inputs=
    for ac_f
    do
      case $ac_f in
      -) ac_f="$ac_tmp/stdin";;
      *) # Look for the file first in the build tree, then in the source tree
	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
	 # because $ac_f cannot contain `:'.
	 test -f "$ac_f" ||
	   case $ac_f in
	   [\\/$]*) false;;
	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
	   esac ||
	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
      esac
      case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
      as_fn_append ac_file_inputs " '$ac_f'"
    done

    # Let's still pretend it is `configure' which instantiates (i.e., don't
    # use $as_me), people would be surprised to read:
    #    /* config.h.  Generated by config.status.  */
    configure_input='Generated from '`
	  printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
	`' by configure.'
    if test x"$ac_file" != x-; then
      configure_input="$ac_file.  $configure_input"
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
printf "%s\n" "$as_me: creating $ac_file" >&6;}
    fi
    # Neutralize special characters interpreted by sed in replacement strings.
    case $configure_input in #(
    *\&* | *\|* | *\\* )
       ac_sed_conf_input=`printf "%s\n" "$configure_input" |
       sed 's/[\\\\&|]/\\\\&/g'`;; #(
    *) ac_sed_conf_input=$configure_input;;
    esac

    case $ac_tag in
    *:-:* | *:-) cat >"$ac_tmp/stdin" \
      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
    esac
    ;;
  esac

  ac_dir=`$as_dirname -- "$ac_file" ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$ac_file" : 'X\(//\)[^/]' \| \
	 X"$ac_file" : 'X\(//\)$' \| \
	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X"$ac_file" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
  as_dir="$ac_dir"; as_fn_mkdir_p
  ac_builddir=.

case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
  # A ".." for each directory in $ac_dir_suffix.
  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
  case $ac_top_builddir_sub in
  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
  esac ;;
esac
ac_abs_top_builddir=$ac_pwd
ac_abs_builddir=$ac_pwd$ac_dir_suffix
# for backward compatibility:
ac_top_builddir=$ac_top_build_prefix

case $srcdir in
  .)  # We are building in place.
    ac_srcdir=.
    ac_top_srcdir=$ac_top_builddir_sub
    ac_abs_top_srcdir=$ac_pwd ;;
  [\\/]* | ?:[\\/]* )  # Absolute name.
    ac_srcdir=$srcdir$ac_dir_suffix;
    ac_top_srcdir=$srcdir
    ac_abs_top_srcdir=$srcdir ;;
  *) # Relative name.
    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
    ac_top_srcdir=$ac_top_build_prefix$srcdir
    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix


  case $ac_mode in
  :F)
  #
  # CONFIG_FILE
  #

  case $INSTALL in
  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
  esac
  ac_MKDIR_P=$MKDIR_P
  case $MKDIR_P in
  [\\/$]* | ?:[\\/]* ) ;;
  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
  esac
_ACEOF

cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# If the template does not know about datarootdir, expand it.
# FIXME: This hack should be removed a few years after 2.60.
ac_datarootdir_hack=; ac_datarootdir_seen=
ac_sed_dataroot='
/datarootdir/ {
  p
  q
}
/@datadir@/p
/@docdir@/p
/@infodir@/p
/@localedir@/p
/@mandir@/p'
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
  ac_datarootdir_hack='
  s&@datadir@&$datadir&g
  s&@docdir@&$docdir&g
  s&@infodir@&$infodir&g
  s&@localedir@&$localedir&g
  s&@mandir@&$mandir&g
  s&\\\${datarootdir}&$datarootdir&g' ;;
esac
_ACEOF

# Neutralize VPATH when `$srcdir' = `.'.
# Shell code in configure.ac might set extrasub.
# FIXME: do we really want to maintain this feature?
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_sed_extra="$ac_vpsub
$extrasub
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s|@configure_input@|$ac_sed_conf_input|;t t
s&@top_builddir@&$ac_top_builddir_sub&;t t
s&@top_build_prefix@&$ac_top_build_prefix&;t t
s&@srcdir@&$ac_srcdir&;t t
s&@abs_srcdir@&$ac_abs_srcdir&;t t
s&@top_srcdir@&$ac_top_srcdir&;t t
s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5

test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
      "$ac_tmp/out"`; test -z "$ac_out"; } &&
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined.  Please make sure it is defined" >&5
printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined.  Please make sure it is defined" >&2;}

  rm -f "$ac_tmp/stdin"
  case $ac_file in
  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
  esac \
  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 ;;



  esac

done # for ac_tag


as_fn_exit 0
_ACEOF
ac_clean_files=$ac_clean_files_save

test $ac_write_fail = 0 ||
  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5


# configure is writing to config.log, and then calls config.status.
# config.status does its own redirection, appending to config.log.
# Unfortunately, on DOS this fails, as config.log is still kept open
# by configure, so config.status won't be able to write to it; its
# output is simply discarded.  So we exec the FD to /dev/null,
# effectively closing config.log, so it can be properly (re)opened and
# appended to by config.status.  When coming back to configure, we
# need to make the FD available again.
if test "$no_create" != yes; then
  ac_cs_success=:
  ac_config_status_args=
  test "$silent" = yes &&
    ac_config_status_args="$ac_config_status_args --quiet"
  exec 5>/dev/null
  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
  exec 5>>config.log
  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
  # would make configure fail if this is the last instruction.
  $ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi


units-2.23/configure.ac0000664000175000017500000001315314557020456014363 0ustar  adrianadriandnl        Copyright (C) 2006, 2014, 2017, 2018, 2022, 2024 Free Software Foundation, Inc
dnl Process this file with autoconf to produce a configure script.

AC_INIT([GNU units],[2.23],[adrianm@gnu.org])
AC_PREREQ([2.71])
AC_ARG_PROGRAM

AC_SUBST(DEFIS)
AC_SUBST(STRFUNC)
AC_SUBST(UDAT)
AC_SUBST(CDAT)
AC_SUBST(UDATADIR)
AC_SUBST(RELOCATION)
AC_SUBST(HAVE_PYTHON)
AC_SUBST(PYTHON_VERSION)
AC_SUBST(MKS_POSIX)
AC_SUBST(MKS_RES)
AC_SUBST(MKS_DRIVE)
AC_SUBST(HAVE_MKS)

RELOCATION=no

dnl Hack to set correct CFLAGS for cl compiler while still
dnl allowing user to override the CFLAGS setting

saveCFLAGS=$CFLAGS

AC_PROG_CC(gcc cc egcs cl.exe)

case $OSTYPE in
    darwin*)
        echo detected MacOS, setting flags
        CPPFLAGS="$CPPFLAGS -I/opt/local/include"
        LDFLAGS="$LDFLAGS -L/opt/local/lib"
        ;;
    *) echo detected non-mac os: $OSTYPE
	
esac


AC_DEFUN([AX_CHECK_COMPILE_FLAG],
[AC_PREREQ([2.71])dnl for _AC_LANG_PREFIX and AS_VAR_IF
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
    [AS_VAR_SET(CACHEVAR,[yes])],
    [AS_VAR_SET(CACHEVAR,[no])])
  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
  [m4_default([$2], :)],
  [m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS

if test "$CC" = cl.exe; then
  if test -z "$saveCFLAGS" ; then
    AC_MSG_NOTICE([setting special CFLAGS value for cl])
    CFLAGS="-O2 -W3 -D_CRT_SECURE_NO_WARNINGS -nologo"
  fi
  if test `expr "$CFLAGS" : '.*D_CRT_SECURE_NO_WARNINGS'` -eq 0; then
    AC_MSG_NOTICE([disabling CRT_SECURE warnings for cl])
    CFLAGS="$CFLAGS -D_CRT_SECURE_NO_WARNINGS"
  fi 
else
   dnl The -fpic option is needed with gcc if you want to compile a shared lib
   dnl and causes no harm for regular compilation.  But cl.exe accepts it
   dnl and then prints a warning.  
   AX_CHECK_COMPILE_FLAG(-fpic,[CFLAGS="$CFLAGS -fpic"])
fi


AC_C_CONST
AC_PROG_INSTALL
AC_PROG_MKDIR_P

dnl Checks for libraries.

AC_SEARCH_LIBS(sin,m)

dnl Check for readline with various possible required support libs

AS_UNSET(ac_cv_lib_readline_append_history)
for termlib in "" -ltermcap -lncurses -lcurses; do
  if test "$ac_cv_lib_readline_append_history" != yes ; then
    AS_UNSET(ac_cv_lib_readline_append_history)
    AC_CHECK_LIB(readline,append_history,
                 [LIBS="-lreadline $termlib $LIBS";DEFIS="$DEFIS -DREADLINE"],
                 [],[$termlib])
  fi
done



if test "$ac_cv_lib_readline_append_history" = yes; then
  AC_CHECK_DECL(rl_completion_suppress_append, [],
                   [DEFIS="$DEFIS -DNO_SUPPRESS_APPEND"],
                   [[#include ]])
fi


dnl Checks for header files.
AC_CHECK_HEADER(string.h,[],[DEFIS="$DEFIS -DSTRINGS_H"])
AC_CHECK_HEADER(stdlib.h,[],[DEFIS="$DEFIS -DNO_STDLIB_H"])

dnl Checks for library functions.
AC_CHECK_FUNC(strchr,[],DEFIS="$DEFIS -DNO_STRCHR")
AC_CHECK_FUNC(strspn,[],DEFIS="$DEFIS -DNO_STRSPN";STRFUNC="strfunc.$OBJEXT")
AC_CHECK_FUNC(strtok,[],DEFIS="$DEFIS -DNO_STRTOK";STRFUNC="strfunc.$OBJEXT")

AC_CHECK_DECL(TIOCGWINSZ,[DEFIS="$DEFIS -DHAVE_IOCTL"],[],[#include])

AC_CHECK_FUNC(setenv,[],DEFIS="$DEFIS -DNO_SETENV")
AC_CHECK_FUNC(setlocale,[],DEFIS="$DEFIS -DNO_SETLOCALE")

AC_CACHE_CHECK([for locale and UTF-8 support], am_cv_utf8,
  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#define _XOPEN_SOURCE 600
#include 
#include 
#include 
]], [[wchar_t *out;char *in;const char *res;
     res=setlocale(LC_CTYPE,"");res=in; 
     mbsrtowcs(out, &res, 2, NULL);
     wcswidth(out,2);]])],[am_cv_utf8=yes],[am_cv_utf8=no])
])

if test $am_cv_utf8 = yes; then
    DEFIS="$DEFIS -DSUPPORT_UTF8"
fi

AC_CACHE_CHECK([for isfinite], am_cv_isfinite,
  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#define _XOPEN_SOURCE 600
#include 
]], [[float a;a=1;isfinite(a);]])],[am_cv_isfinite=yes],[am_cv_isfinite=no])
])

if test $am_cv_isfinite = no; then
    DEFIS="$DEFIS -DNO_ISFINITE"
fi

AC_CHECK_PROG(mkstoolkit,mksinfo,found,no)


# assume that if we have the MKS Toolkit, we're running the Korn shell
HAVE_MKS=no
if test $mkstoolkit = found; then
    if mksinfo > /dev/null; then
      if test -n "$ROOTDIR"; then
        DEFIS="$DEFIS -DHAVE_MKS_TOOLKIT"
        echo 'using MKS Toolkit'
        MKS_POSIX=".POSIX:"
        MKS_RES='$(RES)'
        HAVE_MKS=yes
        # if the user has specified a drive, leave things alone.
        # otherwise, prepend the drive on which the Toolkit is installed
        case "$prefix" in
        ?:*)
          MKS_DRIVE= ;;
        *)
          MKS_DRIVE="${ROOTDIR%%:*}:" ;;
        esac
      else
        echo 'no ROOTDIR... cannot use MKS Toolkit'
      fi
    else
      echo 'mksinfo failed... not using MKS Toolkit'
    fi
fi


AC_PATH_PROG(PYTHON, python3, no)

if test $PYTHON = no; then 
   HAVE_PYTHON=no
   echo '    Units will work without python but the currency update'
   echo '    script, units_cur,  will not be installed'
   PYTHON=''
else
   HAVE_PYTHON=yes
fi

dnl Check for path search option
AC_ARG_ENABLE([relocation],
    AS_HELP_STRING([--enable-relocation],[look in program directory for units data files (default is NO)]),
    [if test $enable_relocation = yes ;then
          UDATADIR=""
	  RELOCATION="yes"
          echo relocation enabled
     else
          UDATADIR="$datadir/units/"	
	  echo relocation disabled
     fi
    ], [UDATADIR="$datadir/units/"])

UDAT="$datadir/units/"
CDAT="$sharedstatedir/units/"


AC_CONFIG_FILES(Makefile)
AC_OUTPUT
units-2.23/strfunc.c0000664000175000017500000000423110641165333013714 0ustar  adrianadrian/*
 *  Copyright (C) 1996 Free Software Foundation, Inc
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 3 of the License, or
 *  (at your option) any later version.
 * 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *     
 */

#define NULL 0

#define size_t int

#ifdef NO_STRTOK

/* Find the first ocurrence in S of any character in ACCEPT.  */
char *
strpbrk(char *s, char *accept)
{
  while (*s != '\0')
    if (strchr(accept, *s) == NULL)
      ++s;
    else
      return (char *) s;

  return NULL;
}


static char *olds = NULL;

char *
strtok(char *s, char *delim)
{
  char *token;

  if (s == NULL)
    {
      if (olds == NULL)
	{
	  /*errno = EINVAL;  Wonder where errno is defined....*/
	  return NULL;
	}
      else
	s = olds;
    }

  /* Scan leading delimiters.  */
  s += strspn(s, delim);
  if (*s == '\0')
    {
      olds = NULL;
      return NULL;
    }

  /* Find the end of the token.  */
  token = s;
  s = strpbrk(token, delim);
  if (s == NULL)
    /* This token finishes the string.  */
    olds = NULL;
  else
    {
      /* Terminate the token and make OLDS point past it.  */
      *s = '\0';
      olds = s + 1;
    }
  return token;
}


#endif /* NO_STRTOK */

#ifdef NO_STRSPN

/* Return the length of the maximum initial segment
   of S which contains only characters in ACCEPT.  */
size_t
strspn(char *s, char *accept)
{
  register char *p;
  register char *a;
  register size_t count = 0;

  for (p = s; *p != '\0'; ++p)
    {
      for (a = accept; *a != '\0'; ++a)
	if (*p == *a)
	  break;
      if (*a == '\0')
	return count;
      else
	++count;
    }

  return count;
}

#endif NO_STRSPN
units-2.23/units.rc0000664000175000017500000000004412324067720013553 0ustar  adrianadrianunitsprogicon ICON "unitsprog.ico"