The Sweetener

The work we do stuff we love

September 8, 2013

Font-Face and Base64 Data-URI

blogimg-vintagepress

Increasing support for web fonts is a beautiful thing and given rise to life beyond Helvetica and Georgia. Typographic considerations are now a vital aspect of any awesome web project, with font selections and parings playing a huge role in early stage design patterns. And beyond typography, icon fonts are the new slickness, making life so much easier (I’m done with sprites).

Bulletproof @font-face

If you’re like me, you’ve at some point come across Paul Irish’s post on Bulletproof @font-face syntax. Essentially, the idea is to get a file type favored by each browser, throw ’em up on your server, then @font-face those badboys, with some optimization declarations thrown in for good measure. With this approach, you’d always need no less than four files for each font:

  • Embedded OpenType (.eot) for Internet Explorer
  • Web Open Font Format (.woff) for all modern browsers
  • True Type (.ttf) for Safari, Android, and iOS
  • Scalable Vector Graphics (.svg) for Legacy iOS

For a while, this served me well, until I started checking sites behind crazy aggressive firewalls, blocking one (or all) of those file types. Not to mention other weird fails with WordPress and Firefox. And, if you’ve ever taken the leap with a skinny font, a fallback to Helvetica will make the whole site look like dogschtuffs. On Liggie’s CV site for example, we’re using Steelfish for the headers and nav. Great font, love it on the site, but if it fails, it fails big. Any safe font fallback will turn the site to sticky pile of mud – mucking up the entire layout.

And yeah, services like TypeKit are dope, no question (and keep in mind, Typekit is using Base64 as well). But, open source fonts, not tied to a subscription, are even more dope. So, the answer for me – include a base64 encoding of the font(s), and icon font set, into my @font-face declaration.

Base64 Encode @font-face

If you’re unfamiliar with the practice, Base64 is a binary-to-text encoding scheme that represents binary data in an ASCII string format. Data URI is just a URI scheme that provides a way to include data in-line. Basically, you’re converting the font file into a crazy long string of text that you can paste in to your css file. Here’s Network Working Group’s write up on the matter from ’98. Explains it better than I ever could. The format is as follows:

data:[<mediatype>][;base64],<data>

Font Squirrel Has Your Back

Awesomely, Font Squirrel's super cool webfont generator has base64 as a built in option. Before uploading your font, simply select the expert option, then scroll down to the CSS section and select Base64.
blogimg-base64fontsq

For the great free font Lato, it looks like so (though if your using more than one weight, I'd modify this a bit. See below):

/* Generated by Font Squirrel (http://www.fontsquirrel.com) on September 8, 2013 */
      
@font-face {
font-family: 'latoregular';
src: url(data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAHwwABMAAAAA4IwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABqAAAABwAAAAcZSMkyEdERUYAAAHEAAAAIwAAACYB/gDyR1BPUwAAAegAAAqmAAASlPRn+UZHU1VCAAAMkAAAAHYAAACalgyZBE9TLzIAAA0IAAAAXAAAAGDY1Kp0Y21hcAAADWQAAAGIAAAB4tENdWJjdnQgAAAO7AAAAD4AAAA+EysM8mZwZ20AAA8sAAABsQAAAmVTtC+nZ2FzcAAAEOAAAAAIAAAACAAAABBnbHlmAAAQ6AAAYDAAALEUxhIQlWhlYWQAAHEYAAAAMgAAADYD96yQaGhlYQAAcUwAAAAgAAAAJA98B9hobXR4AABxbAAAAjgAAAOkt3RQkWxvY2EAAHOkAAAByAAAAdQ97meMbWF4cAAAdWwAAAAgAAAAIAIGAeJuYW1lAAB1jAAAA/wAAAvIRslKh3Bvc3QAAHmIAAAB7QAAAto9HZU9cHJlcAAAe3gAAACwAAABM/UDUBp3ZWJmAAB8KAAAAAYAAAAGcwpSLAAAAAEAAAAAzD2izwAAAADKk15wAAAAAM5SI4h42mNgZGBg4ANiOQYQYAJCRoZnQPyc4QWQzQIWYwAAKyYC8QB42pXXW4yUdxnH8Qfo0gqV7rYmJo1xjYUAUlsJohRsxWTZblcTD211pVONBvfGsqGu2zjoEpPhNCReGAUWoe26bbctLFzYMrwE2mYzTPZispqadKfDAJN3zSZeeml64etnBujBiyZm8uX/7nv4/5/n9/z+B2JRRCyLL8VDsbin91uPxYqnfvLLobg7bnE/sixazz98vejnP/vFUNzWumpzSyxut7fFoq6h9ptPxXzML/p3zC9+Zska/KWjp2Nu6VRHz9K5W/94619vO9jR84mJjp5lfcuO3PrHJX9Z/s9b/3r7eyv2Lvp3x9wdm+/4rd/f79jc+RnX7b86BzvHuu7u/EznWKvPJWuWrOnoifmue7vuXbKm697WnY65D36tcT74Ga/9u/29jp52fzd/v33/9+Hr9u/291pjtHJY/Mz1f1t/t+9si2VZb3Rmn46urD/u1N7l75XZ27FKu1q7DhuwEZtjfWzBg9EdW7Xbsjfj4Wwi+vAIHsXjGNLXLuzGHhT0tRf7sB8HcBBFHNLvYRzBUYzhGI5j3DgvGONFvIRJvIxX8CpOGusUpnAaZ/AazqKEc0hwHhdQ1uclbUW/c+Kq4bKcr+Ka6xTz6KZATfY12ddkX5N9TaZNmTZl2pRpU6ZN0ddEXxN9TfQ10ddEXxN9TXRN0TVF1xRdU3RN0TVF1xRdU3RN0TVF1xRdU3Q10TXj3lgqnuVY0a7LiGhmRDMjmhnRzIhmJjZlfbEZW7JCPJjtiK2ut2f5eCKbjie1O3075NtdGHa9Wzuq3aM95PvDOIKjGMMxHMe4vsrainbOuzW867s6GrjS1mqEViO0GokFf39exP2cVBV1v6j7OWqEm0a4qcpJ1RvR/k60zfiaCB/McvGQamx1b6f3hzHadkqVU6qcUuWUKqdUOaXKKVWR5USVE02/aFqVGxFRv4j6VbAVSX/siKV8ucxfy7Ur0JltoeHvRLNFNCPx2WwyunGPZyvb0Y3Qtkrbatwn5w3ajdiWFVW8qOJFFS9Gf5bGN737Xd9+D4+695j2ce33tT/I/hAD2TvxQ9fbs79FTh9Pan+UTcVOYw2JYReGXY+YRc/gV97d7d5vXI+6v8d1wRh7sQ/7cQAHUWzXrapuVXWrqltV3arqVlW3qnlSNE+K5knRPCmaJ0XzpGieFDmxyIlFTixyYpETi5xYjNeNf1ZbwjkkOI8LuOjZG3gTb6FsjEvuz4mxhnfFW8dluja0V3DV9TXPUsxjoaUxb7ytIu/wxtvxSR5foe3ksDtxl/ursCk7wR9V3kh54wxvJLxRjW94/yfY6ZthjKLg/b3Yh/04gIMoYty3FbzrvTouG6OhvYKrrhdaK5mIekXTK5Je3qjGPZ6s9PVqrMN9sYEP3uGDVmT5eMDzzfTfkp0U3YDIRtR4Sn3VVh9D+tiFYdcjWU88g93+/o121L09rg/p6zCO4CjGcAzHcUL/z+I5PN+egwP0fkcmA/Su0rsqo14Z9cqmVza9dK7SuUrnqqx67Xhd2aBIBkUyaPRBow76etDXg94e9PagtwfjftXIq0CfCvSpQN6cKJsTZXOiWzXy5sFG3k94P+H9hOfLPF/m+YTnyzyf8HyZ18s8XFaRvIrkVSSvInkVyatIXkXyvJfwXsJ7Ce8lvJfwXsJ7Zd5LeC/hvYT3Et5LeC/hvTLvlXmvzHtlvktUsk8F+8zpZRTqzGZFPyv6GRHPiGBGBDMimBHBjAhmRDAjghlfzvpyVlW7rDwrOWw11mEDNuLhrCHXhlwb5nlVng05NsznKXW+aE2dUeuL1J2m7jR1p6k7raapmqZqmqppqqapmqZqmsq7Ie+GvBvybsi7Ie+GnBtybsi5IeeGnBtybqh3Ks+Gik2r2LSKTavYtIpNR28s/U8tlmMFOuOrMtkYd2rvkddKfl+NddiAjdiUfYdjezl2B8eu5tjej2R5M8Pt2e9ld0Z2v4+d+h7S7y4Mux7J1nPyetlu5OT1MereHteHvH8YR3AUYziG4xg31v+f+Zl25hXfzum/hneNVcdlOTa0V3DV9TXPUsxjwb213DDMDYu5YTE3DHPDMP/2Wr9nZZzKOJVxKuNUximnDHPKMKcMc8owpwxzyjCnDFtDZ62hs9bQWWvorDV01ho6aw2dlVUqq1RWqaxSWaWySmWVyiqVVSqrVFaprFq1TDlvMeeJq32i+t/T1CZOe8As/7gT0AnPn8VzeB6tE8xj78/fro/M4Zw5nDPSifYcXq1dh/uy1lp2wognaBI0WUuTtTRZaz/7urmdM7dz9FlrbudotNbcztnPtpvfOQ7p45Cn7Wc7uaTPfraPS/q4pM/cz3FHH1f0fewacMjYh3EERzGGYziOF8T0Il7CJF7GK3gVJ8VyClM4jTN4Da8b96y2hHNIcB4XcNGzN/Am3kLZGJfcnxNjDTfXkWtIMY+eG6eG8Q+dGgrUbVK3QN1xK+M9VB2n5hgVJz9yFvymEW6eB3+gPtd3+yaFmjd2e/MoWvOoaadff2Onb1JsnGLjFBun2DjFxik2TrFxqkxSZZIqk1SZpMokVSapMvl/nytbZ8o51PDBrl340K5doEaTGk1qNNu79k8p0k2RAYp0U6SbIjsokqPIDooM8FuB3wptZVor0Cr3bq5C1z13fSXalo1SK0etHLVy1PoOzxV4rkC1HM8VKJfjuQL1RnmuwHN/4rkJnsvz3J8o2k3RHEVzFO2m6AaKbuC/AlVzVN1A1W6q5qg6QNUBqg5QdYCqA1QdoOrAx65cLxj7RbyESbyMV/AqTur3FKZwGmfwGl43/lltCeeQ4Dwu4KJnb+BNvIXrq1xOJXIq4RQr3jou07OhvYKrrq95lmIeC+59kerJDZUrFK5QuELdCnUrlK1Ttk7ZOjXrlKxT8R8UrFGutZ4nVEuolFAnoUCFAhUKVChQoUCFAhUKVGRZl2VdlnVZ1mVZl2VdhnUZ1mVYl2FdhnUZ1mVUkVFdRomMEpEnIk9EnkSXM1bJGavkjFUSTVM9/yWipvNSyTmpZHcp2V1KdpaSM1LJ+abkfFNyvik535ScaUrxKb1M6GXCubGppwl7WrH9f4it2m9ot2cLXFLW84JzYqv3Cb1P6HFCjxN6nNDjhB4n9Dhhz1xqN12OFdH6f++v+fnX/NXLV85uMchXg/w0yE+9auTMhcveaWiv4KrrBe2dtC/Tvkz71smodSoq07BMwzINyzQs07BMw9ZJp0zDMg3LNCzTsEzD1smmHLeLIy+OvLlS58M6H9b5sM6HdT6s82GdD+viyBs/H58zM6fe/+ou16vwMA368AgexeMouL8X+7AfB3AQRZz0/BSmcBpn8BrOooRzSHAeF3AJNyO4xejTRp92Z9qdaaeSZU67d2EVNvsfTev3oB16q7bg3l7sw34cwEEUMe6dChbFU6qznB4r9NZFYftmrIrVsSa+4PR2f3zJPP+y8/tXYlM80B7ja0Z4KL5ujG1q8kj0x7fi2/Hd+F48ap/8fmyPJyIXT8aP1XgodsXT6jyixrvVeDT2RCH2xr7YHwfiYByKP8ThOBJHYyyOxYl4Np6L50X353ghXoyXwiocr8SrcSqm4nScidfjbJTiXDi3xoWYjkuymIsa16gUv1xxYrkWaczHwn8BLzKprQAAeNpjYGRgYOBiMGHwY2BycfMJYeDLSSzJY5BhYAGKM/z/z8AEpBjReEw5memJDHzFpQXFDCJgEQYwCZRhYGPgA6tmZBAAizMyaACxFBBzgGV5GF4A6QCG50DSF6zHC8jiYWBmqGEoZSgD8pkZRBnEGMQBpuEQMwAAeNpjYGZRYZzAwMrAwjqL1ZiBgVEeQjNfZKhmYuBgZuJnZWJiYmFmYl7AwLA+gCHBmwEKSioDfBgcGHh/M7EV/itkYGCPZJynwMAwGSTHwsu6G0gpMDABAGrHDcB42mNgYGBmgGAZBkYGELgD5DGC+SwMB4C0DoMCkMUDZPEy1DH8ZwxmrGA6xnRHgUtBREFKQU5BSUFNQV/BSiFeYY2i0gOG30z//4PN4QXqW8AYBFXNoCCgIKEgA1VtCVfNCFTN/P/r/yf/D/8v/O/7j+Hv6wcnHhx+cODB/gd7Hux8sPHBigctDyzuH1Z4xvoM6kKiASMbxGtgNhOQYEJXwMDAwsrGzsHJxc3Dy8cvICgkLCIqJi4hKSUtIysnr6CopKyiqqauoamlraOrp29gaGRsYmpmbmFpZW1ja2fv4Ojk7OLq5u7h6eXt4+vnHxAYFBwSGhYeERkVHRMbF5+QmMTQ3tHVM2Xm/CWLly5ftmLVmtVr121Yv3HTlm1bt+/csXfPvv0MxalpWfcqFxXmPC3PZuiczVDCwJBRAXZdbi3Dyt1NKfkgdl7d/eTmthmHj1y7fvvOjZu7GA4dZXjy8NHzFwxVt+4ytPa29HVPmDipf9p0hqlz581hOHa8CKipGogBn7CJTwAABA0FuwCPAIQAlQCcAKEApwCsALYBBACRAJ4AowCoAK4AtgC8AMUAywCGAHIAmgDBAJgAuQCzAI0ARAURAAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkMZ7oQUJxNWNYmQ7heUIaTdykYtxAR9AgUQN2q8ZoKGkSJsGIRdIfEI+IRIza4iiNDs7s3POmTNLypGqd+lrz1PnJJDC3QbNNv1OSLWzAPek6+uNjLSDB1psZvTKdfv+Cwab0ZQ7agDlPW8pDxlNO4FatKf+0fwKhvv8H/M7GLQ00/TUOgnpIQTmm3FLg+8ZzbrLD/qC1eFiMDCkmKbiLj+mUv63NOdqy7C1kdG8gzMR+ck0QFNrbQSa/tQh1fNxFEuQy6axNpiYsv4kE8GFyXRVU7XM+NrBXbKz6GCDKs2BB9jDVnkMHg4PJhTStyTKLA0R9mKrxAgRkxwKOeXcyf6kQPlIEsa8SUo744a1BsaR18CgNk+z/zybTW1vHcL4WRzBd78ZSzr4yIbaGBFiO2IpgAlEQkZV+YYaz70sBuRS+89AlIDl8Y9/nQi07thEPJe1dQ4xVgh6ftvc8suKu1a5zotCd2+qaqjSKc37Xs6+xwOeHgvDQWPBm8/7/kqB+jwsrjRoDgRDejd6/6K16oirvBc+sifTv7FaAAAAAAEAAf//AA942qy9CXwbV7U/PotG+zbaF2u3JEuyJVuyLMt7vNuxnTjOYmff971NQpumdElJk9CWdF8DTUpbWmhnZHV5KYXQAoGW9f/eC/uD/wN+YH4BSqE8slj5n3tn5C1OW3j/9hNpFllz7znnnvM9yz0iKKKdIKj1zCKCJmREnCeJRENOJnH9MclLmZ835GgKDgmeRpcZdDknk7qvNORIdD3F+tigj/W1U95CKfloYTOz6NKL7ZLvEvCVxC+v/oX8L+YNwkj4iLlETkcQsTyjIPSSWM5METGS8yc44jyvVI2hf6NWJSGP8Sb9GGdK8Fb9GB8gY7zVxBp4HZPNEryZYQ1cSbayKlPdRKWSbsps0lIBf5wysikWDmWBOP1Lk6/S4UwEjMZAwulM+EzlX6KlCuktUqWU3uOMB8zmQMJREkf347SL6hl/LT68dEU6vWLpMIHH/CT9MnUfjFlJmIlKAiZJxDh1Ki9TEHJJjDMkSc6CB01rxjhaz6tgiFrNGG8lY0RlFRqITEsG/KFwcPLwyZN62uV1uqRkR/FIcj8ZKfzopK+01Hdy4gg/P0MQku3w/CailewgcnVAM648ldPDOHjWlErlGyR1ek1slPE3t5RaU3yDZGw0Vp2uL7Um8yoZviX1zWlFt1RwS20wOuEWybUluMrzfLl5jCvX8yYYtU09xreTMa7Gcabp7F+3EuaYkquLaznNWb6Guchw7NkzTS//1YKvG+E6/FlKDdeNet6pvsjV6UeZOo0RnoZf1eiVq9GPGmpYOCjXj/rKnXDdj19j6JVL6UerU0bhY2n8MfiS+uIfNuMr8JkW9JnROcVPtqLrNJHTpGri8TjZYmakag0L0/L5Y6nqdE1dfXPLnNb4bP9xLQ7ElOqaZjJlDGSayHrSiF7olDGVtJhNMjoFLIrBOTqT6sgADfxKV9dkjAEa3TDCaRD9KUkqftD2Jy0TLHu6V1ruWbB4fPGgw0fO/amWCYXvaXvd7oBP/HXxkM1Lkt1XeuRx9+CSh20Ocu946xXyt4xGWkcO9LlLyF0ef2E+ybntcqbwYL/bWchZ3YxKWl+YF3BK5Ay5tvBQyEvytp3kAKzGHVfVkkbpvUQt0UYMkEuIXA2ShsoUr2DGuPZkrkahjI221FQrYlw6mXMgUTWl+KB0jGsGjs9LcLrzfBaWU1bP9wDHY7Ck5gscb/7J5QcwZ9PAWfNZvspykbOfZbi0flSRNhtjZ5p/evkUfEA1qkSnzKgJvXFV+lFHlR24E0Sv6EOn8YdC6JQZrURv6Dtqpn9Hk/AdzcXvaJ/+1wPoNAcP8h7zHgtItawhyzVlc3AZHYWyxKtKsz1U1TQgspVs0SuUJrPdEQxVVqVrmprbB2bhPMlndaA6pJJsluthOX+Wixk4F6iRoII1vEJIdC5PrNQK2qSZbCKRNrEa43QaNAs6rydlbtIqk4ZBu4RpN400jY5EIpGJk0YT+rCWJpvg83B/R43MqTUmu9Z3hLqP7Wir2/3MVhXlsLZptz/RVG5yamP1A0l/7303dDbuf3GHhnJa2nS3fOdUoHFBpadtTZOHLG3b1BUIzRlOvrxQpQsnK+WU11Kz5PC6uffu6pI8YPS8o1lU3+4h7X6/rKC3Vi+8ddXyUzf3S18xun+vWkf/rqonE2HJ70kjTX1X7NJE1+psqjcd1hMM0Xv1z8xV5h3CQJSALmsjlhD3EzkjyFCuGV74HslYzgpCk2OQcimXjOWHapoZTYwfgkO/Fh/6JWMkN4w1nks9xrn0fBgkSQGHCj1fBYftcNiu5wfgsA40ygi8h12sISdhtNlslh9oh+N0TXMWKfAhIzCkqg4ul/vhSEFks2h5NlFTdTmmPpA6QAOZU8kmCtE44NdS5PQPZmbc7q0a3n/sE0uS6ZEDczr3DVetlsQ0bvudl3+gdJmGS6paQ6G2pMuVbAuFWqtKqKfQpw8MV6VH9uNP3zfzE5KR4aOrqqpWHR1efPeKqqoVd18eZx5hjZfWaVjJSNuKOoejbkVb+8oGp7Nh5ZU3h4+hzx4bXnwEffbI4rbl6APL29pX1Tud9atAry+8+h7zOPMdohks4R1ErhpxoR5xoYMZy2kQA1z0WM6lQSvaZVaAcezDVG9RjnEtel4OdPXrxji/nrfBoUE7xhn0fAwOE2B9+tFdOVhHJsvZ2FFNfUcPiDZnMOTKarsx6V0dSOjlhmRtDxZ6RHUQ5bRoSUHUkaWK04iSZiTfwAasMLWkDBmxBOLIBNVrMnC6sHLRvo6m+pqNDywbvGtNLbOXkWhsjMyb7EqkFtR72EAmTD4bjssps2EP1d1OVvPuUusDqy8/suCpW/r+rWr+pvQNr3YWBnbsII9037Z9sWfeQ/Pn3rkmW714b5OF1Bqd2YTbWz8vXjqnrTNcGOp4uM9o3f/r9YVva60Prtie2fLozrYNnaULO8lX6k4TJLLbZB222wHBaosmm+RURXuN/6lnGuonZ7HJ8H1HC/9BaaTVsHKMBMm58HcgQ+8W/h6Rz+omwYZIgV4GfAgGJE4f9bRu7x9UaZXbd+3ZKpVoVYP921s91OFb/vT73x1IyoxanelMYe3PflZY94aKlWuNsqr9v/vDBYQ9SKKv8B/kD6Y+U3qeN0080wp2qcaQrqbCyEQ1k4JWkoXjZJ9EunXPru1K8WHiCP5dzqreIJ/62c/Ik2eMenhS8sDvfv+nWw5d+MPv9lfJ4AnEWvpG6rtSKeiGFAFYLC9XEDJEsaoE5z/PyZJ5nxmBNU6R5JMgYT5YtKMStTsEEoRokLFarHGykUwBFZrIZtCXWqQ2PSQaU9hiNQeQKQWqhDM1IGvhtRW5UotCvkynKjFwFRwbMBj8Br6CN7hVenKZVGby8xVcMGQqNTKN/RtNPkPI9O47UY/OqtrQv1GloSiVanPfRpVV7y9759vGUr3DtKFvk4Wi1GqYy0YiJ6mXvECoiAUERyQ4WYon6TGOSeYIEq0pQqmI5UgCHZI0Wl7qBKc8z1FJrMwkyZxCie4pZPAxJbarSkIR4zUCu9M+EBif2ccG2I3kZx8mP1dY/TC19Tj5SmHu8UI3+brAv9WFP5DDxPuEm6gmcg4R7bKIop4EZzjPEUmMdb1AS6UBFCBjR0uTccDCVc6AtbJwKFydaaIzaNGtNngqnJ5Kr95Z1R33aEid0utzSjXOmMdwqy3iNVrLqj3xdWtWhN1qVqNTharq/QZ/XBjTRspOraZGAU34EV14UjqG/pGcJMETZCxPqwiFJMYzxXmaN5KXKPvjj6O/XQr4fQTmYyQS09H7lGMSwPoUEM+b8RfNROhLTT4Exydh+UwsjsZ69W9Xn6HlzG8IBaEjYHwkp0wggA3fJ5uwCmpqkybp6x9/Spt1LWfGff5L0lI/6NfGq3+RbAT9aiTC4M/gEfJ26Zhg2wJowmV4nCYDuBd6tKSAB2N8BN7dky5GACAHrxTtkgHjAtJgNlFY+ZHX2JzGBZ/52p7db983NHTf27v3fO0zC96sXXmovf2W1bW1qw+1tR9aWUv94muk48zSpWcK/+drXyv87vWlS18nHWef//Xxxsbjv37++d98uqHh079BtP4+4P5a5itgq1uJnBSNXgbiSyexLiM5Y4KTgxJTjuVoORJOmgE5ldPoUC4FOUWInkYWgMRLk8TSClJbnWEENfd9Mv8Q6b3yJ7KeLlxSmhU6u1TSQd506bvHj9NjFfFfyeVaBRrHVhhHI9AxBesoR6BxxBVjOS+iok4KPhrhlcNwqtHi4YOGsZwyOLFW0sAqPk4ABSUxAF1WFvxHeNcZckpnMItomkIKQYRNiH6CCk7AlQm5R2DMl7S4yK16ljxft6ajNNK1JpNZ2ZNUyn1ORiVfpV1w6+mVK07tb69auLOxcGtkKExecPubjFGW/HH9zl17W+asafb66uZXugGU69c/saWmdsujqxccv+0TTYUbVdqAcxea566r70m6YZ69xDYi14nmqQVpqRalJW+3dVYD/LEj76qzGk15boJzA5wGDrizaMpuG8But54zes+z/BzlGN+Hpm8D9Joj6DkI+8Q6gR9NWS7A5tyJLCaAETRh0gLWwuqmJwQp/aEEQZZFWES7+sFL8ckpCaWNdG7q77+xL+wZemDvisMLQ2WdqzKZVT1VarnPwahkIo1O7mkpbV1Vd9+J/rv4jfs+f0MvucurIA0GiZJx97ZWJOevq6xf2x05TIbbV2abVzV6fHWDiQmqpdcdX9S5Y6iODeU+teHU3oa6jffAOouAfBwEO6snLEC7nArhGGxuNayK1MQ4OsVrQHDl4IBYE5zqPLjMvBLQCihaBFyUKqCJBVYaCz4cR2Q5koVTQWLBjkhjJKhYH8hrBmS3JhOh3nnhv0ymV58e32/ySPKUhmYoOT16ZfFmvbVwK3mHjd1IrXQ2egVdh3hqhbHFiVuIXBTxVC4VIC7vko/lvYaoFXjqZUAZJBKcBgQY2FYpekSaD2TYI7KCR2Q5y/Au60Ut5z5L8BY3uByjFqvLPeFZBGHwvA1rb3lUmIeBzdFmQcqbyRrEvUlFIZWFjT6YXMBH10zVirsyBo8x3bO+vf/gkkTZ4CcGMwdabjhAvVZVV0i13bDmhpcONC647+zuOfs3DR8bcHrD3qrlnxzo2NUfM5h81EvzwqnCJ+3t+0+t2vfmp7rssVocP0A06AMaOIAKI0TOgqgAM87JEI/UUYsMKKCmBQqAOnSCe+jU80FgDSsQgw86QYTVFgXMhWNZTg6TjHphvgQLF9Qsp8DKEa1jpJIF3+l6oHzX4hXkjdqU71SBrv5k7/BTBzp7D5/ZvWv0k+1cZN6ent79i+IVgzd09O4fKid/s/qnh8i/GRzjt5SW1e0+vXnDy7f3dN5xZqhr38J4YuEN7d03DMaSi3YDn/eADC6GORpglpMSyOvlY0hRIl0o2jKTVIadNgRmQaj20L/VKcaf1iTK7qA2a0oM4xRbwjTfsiBQrr+ccYYkZxwxYwlYyrVAw2bQDR7Qgp3EbUTOiagYBHyuQs9ppcfy2YRTBZTMIlnqwpT0gmHx6rlqpA6kANqlCb5aiS7xUSCqBe42oVt6oHI3XGiqBkCuMjqDCRrBKT4RBBJbwPJwWZY30vDeauD10qxI7EmojiY1qRNmEtwonounax88euO+5n2n1697Zl/z/huOPtB9x6s7d756Z/eb0Xl7urv3zIsmF+1qaNi1KBkpadnQ3b2h2eVvXT+ndV2bjzxxz+vh2IsHBu/Z3NCw+Z7BAy/Gwq/du/rxHXV1Ox5f17ihp6ysZ0Nj3/Y2r7dtO7Upuaq7vLx75cal7aFQ+1IhlvYo8Gm+SEeQRRNR9DUToGGdQRNyMJ1IFqsFCk6SS6kfQ+aE94I14UxZLsrmGKcNezJIPDlblkuwE4Z6CmyaYPdUd2WSPI923Z7btuWLB9tsFU1lhcc1Vd7nya9aQ4bae+cNPbin9dWyudvaevcMRMoHtre075oXo6+ufv5Qd+ehl7Y0792xPTt+xWijetxpR0Uis/2pvZ07+sJV87bUduwaiMJf4DnfCZjpDvp9jEPqp6EmLpDI20XMhLEIZ8J4kHMnMQxRwlxzOnsAzfJaBMXOOL9zJqL6KIRFl1wLudB4AbMK400Si4hcHI3XjlErp0tMYLxUgjNh/OqG8SqFN7eeD8FbKMFRKb4a4agQ+Ac6O1OBBdoeBz65Z/AHe/jXg7nXTEk6Bfcm3NNw7zXB3PHIhyFhEmTxPZqT7AWdQRjTyFmTMdhbsTJu0kU+Stv05kK1Ke5wxE3kd0wsdbyPfOIO1qEaU+mljF71e6VTfyei1+PkWxIFfRrHyh0CogZzB2CaQYIsT/CKCe1Dwr/H6V1XTtC7yLeOHSOXHDsm2Km/Ee9JVMJYMggRBZtQWCkcRM4Uaf6b3ky+a6qwO2LmQtrE0tb37tQ7lb9XsoxUrxpTOgx3FDb0Yd4Frv6FVsL6KiMaiJuJXC3iXVxA6HiZ+ZB2akxwkfN8SjU2akhF5DHeaB5DStJgHssZDQjIGE0KFHflS5AM6sb4JhRfMAIrGV+8FoURUixnz3Lgs2mBrT5ga05pCCHrwLBg+WCuE2hFoiMDYVBUkuJ6C/jDM9kf8PYt29o4eHx9Nt65sKdaYjykjnfN74oH6gfjTUsbQ2qH9jGjPzEZxI/7jUytOx2xJRYf7B/Yvag5U+t76gVVrK2uvnNpU3lXyuEOemyX75op3hQxfFUlbWV2E4PEGuJNgutP8K2SsVxrP5p1axfMGlC1PZWPS4gUiPuiJLciwS1L5QPCeW2Cl6Ho11qsnBqBbI2C37AAHMYFej6FQv/mMX6dACAa//rnP2IAsQwAxNKzfEhykQufJXKh8FIUsxyF92UTACK1gDW8JjPaA7WtXf2IxlqW6wXqGlth0fRm+RVA5Ve0hNuSaiyGayRARIlAxFBY0G6CSbBYaal5hp4zmwwWCYrTAN7wkFJJwF8aooImC/pMxhhCHxmu3XQf9+6ulfmnj6zJNO94aPH89dr64/MblzW42+58+7aOzfHVRoM3aksu7QgvO/njQ0ffy23a+SZx9YEn/7REp7EoHDsLYzxf+N6vbqPsbW3eloYUO1CW6L9teTXVuft7ow9tqY/M3//YGzt3nTk20D9/qCsyd1P9Ev6+pRZT4d7+ZLCyRFm3+f6Re87f27Xl9SsPvlT4R25pe7XC1t67cM9/kKmR3hFzariNjCvmbD6CZF1JEMwWsPkawkyUC54JYE0Beiq0BEBPXoFWoCWBczE8CUCcMyCfg0xhB4j20UA10kcj6smU1Nx3qN7HnD750fGdx2QBOymhSn9nNavMKuaNSx1OE7m2cNLgonzUosxQtAuceVjx8FTJl2EMJrBoUWKH6B+ZAWNi/BEFq+b14KF40VBiWHDMRrBqSc6s550gMDo40+k5GYICISPSnrzMOMaXw62QGUasBiHwoANdlvOycMpFDZwMTYP1zfAIgj7M8FAA/LziUY78jyNfv7XB37654+nT7YfPHiycJRsX3Twv+PTpwtdJ6cKDg+Ennyn8lXkjvfbepTXrF7ebvc8fXfH4roaT4c61dXsP3xOcszJz+02go5ZffY8pA90SJ7pELO0CP9AVxfHJUoWoYYxwzchgLaJGQRUBVNpMGEmCOKNIsJwIZ0WHuqYUiSt2cuKSYqgRy+RUOV2+/S1Sf/rU/102R2YwaNyRTN/61v1v3zNv3t1ntrduHukPs3q9dmBp4eorny0UXt1A/eJZ0vzNnRsWL1NqjC5fiWnw4R/ddfRHD/XrfMmATrNo874d3yRNSIaAX8wLwD81YSdqRe5pZCL37DJgmQOPXwOM0eh5IzBFBlNxoqnYkb9SZITEgoICMFyRB7DofDkqeIpUfnXz5q8W/n6qcJpcsf/skd7eI2f3F04zb2x5q/D+5z9feP9rW54euP8/jxz5zwcHgMZInlDMUoVojEejKI5GIhvLM3IsSwwKXqjxwBRGIVSFw1gKFWgwKinErMRAlRCkEv7l6LvHW6i68W9SZ5k3ni7YniioTgn2p/hcBdEiPHfymXIGP1OOiKGc5Zm0QgySiYGZyQcKj1s6/iw8bPzqqfGjwrOQHK0GOapG66USzdEtE6MyJsVYPhipRCgwiCxVGj/Pbhrj7Hqc+42Bsx2IoecGyuCJNXAJBWhyLFOJzE+M5ZSwXNyVwJlYljdFwGYpCbVd1JhY2nBoO+yfEtnG4saCRmgkfayWFiRu69uk5YtLHrptR6KWLdGbHM3Lbll0y7fv6Zt33zcO1K8bHgj/2mgj38p84u4nl32u8Pez26lfPE+av7HDUdkRW1pCqrSRkHPwkfN3Hf/po/PVFq+JbLfq94x/p6y+zCjIHqY5M4x53SxqL5mgvTgmlaeVmOo0PcFplRG5zJwKR/6B/lhLFHmMku4p5CezuW/Rlm9968ofmDfG91L3XuqgnhxfL9D9R/ByEp5HE74pPEZhPxwNh29D/5iJb/zROaT3hL9tvPoe9VP4WyuRFj1IhRwlfDgpUlsE6Dsd/i5bgtOe51n4HjtaIgoE1iUokIlzB7DUsUkSkvMBfyMloymzxdCUat/SE/xmw/4v7l6ndte5WIuhbPGR5fTXr7QcfPtTXfD8c0CrpfB8P5EVaWUSaaUCWvkEWiGJCeDJ+DGt+FI0BtoHY9BnhTnhRIUYOERQDxvNMBmnYyR77htzw3Ez+XtrxPeF8R9aghZXzEp1f9HoNLLyAqMy2f12GML4IZOVijjM40dtPqUiWDLeI1WyCqoL0CUzvlrkK/03GCtTtEo8LR8TaS0t0jpHE8WgHS+bZKI5d446CGS/8NzEupR+Ac9bXJecQZy3PjUxWT1OAiHdZAAnCSbNG/0wZwWsBBLF3hTurDB90LQkTBp4gWkA8oKcdmmM9IfhupnNPeAs0ZCXtRal0qol/6JxOe9/iaIKCkeFK+4YL9A084bSeuUT9nSJq9pBH7EpLnVIaixVjitb43H6MWfKcvmdKXJtLmpUTi2OWZkq1kqYYcxg/wAZ82r9mGif0Vil7JSxgouLpBpMtTC8TU67nl5AUy+tt3l1V16mKOYNjenyS84qm0R3qUNvkgw6qkyX/wB6feXVv0iZmbFfRTH2q5iM/ZomY7+mj4j9IuUxoeaRjpjpSq7c8hVSeeoUqcIq/4NTpwp//8qWd3vvPrv/wNm7e3ruPntg/9m7e6lffJ40ndu161zhAuj/P57bseMcafz8kfMPzpv34PkjR3700Pz5D/0I2SaQeckTQEct2KbWqVrZDqhCo8Myr5FOmCgtwhFJTqtHAXesHAQrpWNnwoUYaSeFcYdi5DmSP/69I23dx757+MKFRXcMV3zp5QvMGy0Hnt+08cWD7eM/o96uGNzd/umTgm+4svBDaS/QFWWP5xE5G6Krv0jXckTXKiEzbJrIDCO6JsUc8ChjtumwL+i3ISqbQWeXs7OQGPntmO8IGHw4qaPz93aTNz0TzNoKhbpbOz6a6Jve+NydVYWtJgdpN5hnJT6mPQPSTtiIALFMlGKdIMU4GGy1Y/JbkXouFRAOkN+e5Gx63iOSH0XQPGiaRjVMU8YC9gR2WDGk4wLsTAxnQcoIVBE5gz0nj797uKVqxZGFwRLyi+BWFO5kI5FHfrDk8EjFl178CfNG7dZHVgwc2T7XZCkb/7copbabx5+kPoj2b51z511Yh9RffY/+K/CskThPCAlmhCkU9dh6SwC3laBZlYGOKitB18oCCLc1JTjreb5COcZV6HktTKXGMMY3C47Nhc+9TSLHRssZ9Rx7lq80XOSSZ+FkFLxEY4yr1I9WVSaNsRy8TlZw5OAmvBGvsAZjZVVSrNyYdoY9oQprsUhDy44qSoL1yBuqMfCeAFqTZQoUTrfWIHNfwnKeKeUaooBIi06QgCpF78ctFT2l+jq5VWfJDO1b1LWrL9Kw9tbDt65raLjhCzsPvtNXqTDr2UTn+s62jR2BxnXoVmPrra/tu/f/vrxSpY9nEuGutY1tC+vKopnhw2sG7t/dPtC7UqcPRAOljUOVjQuy0YraxYeWr/7Coa5NmPYuWMOPgxzJiDohhyOIECFHiRwUHEAJXQbMASNFpGcATOWkGD1LUf5kMnKA8owuyaFC8JuM6bnnLl1gTPj7n7n6Z6Yavt9OZIicGce3FYKt4bSpomYAc4MK0wAr8HpBLfAaGsTQnBXz3sXFVbTLceqZb6TXnVi27L516W8MPvyTI0d++sgg1UzfcuVTyx/f1dS467HlcHz4kz85uXTpyZ+icchhvWzC8VfAFgY0T4LCS2Yi/MoTBnikHK3zmXaIDMg/6/TKyc9qbSqFRUs+JQs4Pjv+wijzhsN8+YPAgvLyBQGJinVjMEKCPiTkNnhWGXGEyJWhOXvCqRR+IK9zpeCRkQQKGSJJfev3FwQXnAAXnNFzhJ6X2C4ycMiX2S6eabRc+D2+HYbbobO8SnORU58l8hJGpQ4J8vkagU/CZVMLiWA2ZciPsQQEP2bmjNCpZcr8SOxhkgHt550BKZmQa2QyrYIckZY6sk6/jFxi0EmVcrKSKXU8UajJFT6tUjIKpnAshyhwRVLSHAjMcdBXWDc6S7f7G+HE4ALju8obNYX0l58u0oUxAV2cREjUWPpUjkJs0ABNShK8C7GBQlZWZsZWVkHigYuQSCFoXBwgD2jJi4WSb1hMCvKTsIy2wrp4s+Ag//51q11e2C9TFW5X2MzU+9S3tZrxvMVO2bXseMs4Y9NSmyzG8be0NlEmKOwbV4o1RhMyYU5wxvO8AYTRIoaWcFKBMF5XRED85S85PSpyvqlEpXKayQGF18GN//YbQCLT+DdLmz3e5gBVp3dfuWf8daob0WMY1h6H4wNuEYepQO9JkZgwyJnRJnidgLzS1RnSh5IDMtJnHjbRzVf+Q1JlvvI1unPA45Tc/3RPwHN57yn0nScKP6aUUj98ZxpH+uSSMU6W4EkJ/j5YbHmNilBJkBfGyzVjxTM6KT7KyPqElFYKJTRPkDc5rV/6ktVZ+LGst9tqv/icw9qN894Xrj5DkzjvTdCYFog1pn5/FRC4353VML/x+y7RgQD2pwo/Jv8Tj6mJ4DQJnpbgVINSHJPmPKdI5tXCQNQg/xoUnISj4uA0RTpYq2sQKBT8IN/yEgsaGnlT4civTC7pSImp+x+vouedokP0B0BXdqKuhsBVIlijGRIIiApgjlMJaTwh2BInw1IZCricInfuJ3cdZu2Kb2lMMq3tnNxqpkPUQ+PbTDpys63cXFFeeFRrxjJNFH5Oh68uAZ/FSnB0gickY+gfrlUQPBUz6EY6fOUnXziIPh+WPEe+CbZOAYgZi1teqiC0KF6NXdc8g6cseqpIyjx4cOEv+X3aRzdbHFrmOxbrPzR6jHXAbt4n8RIR8Dk+ReRK0IoKpHJBJEkJyVjOTCJTyoApNWNTqlXE8kw6aNbAG44Xklwd1r9RALtRPQqIc0ySdypxfs2jHuM8Cb4e5D+KlqTWAAatmoUvQylDzmPgvKgSJMiiA07B4sgVLjJCYR0cSEVZYSHXxgr1WPTUBEcmraVXtj/8N27TxralbZU2Q4nct/jcTUuOLE8MOr2MOdK/eG19w9aB+MvOisbSyvldLZ5buV1Jkm7cO5yVDN500B/xG3V1QwvqNp5YMr5Z71wdrCsz+do3zYvUh1hjacr3Y4k31SnWSF99X5IAebUQQWINkdMjWhEp3kHDgkNk8qMDP7ZrJEIXIUwYqxK7aSbtGGfVI/XEqwBkhMUab86Y5VwsL9Ujs+93gL5VoSyY6MlNzTKGwjJpIOOGKzXF9OqTr815dvvSE5syjTc+t3n9PdUKeVlr1Sd6TzxZ2r6uaeRTtcxvxh+cu6z9U9+8/YZvfGaov3Nl+FJ75vtf3XD/itiCXrH26ur79IMSNxFFleohxHUnzMIZQrNwelG8C82MhWssttgsjncJIT6LAUfwCJ51ojxpQAiNyydyHzPBCeYYCngJV/tabnl1/47nWyrler2uNDOvru/GeWWxgd0dbYuzQYNNlWp/Z/ea5w92UrIbv34fcK5VpXF47DUb71+68v711d6wh20b6us6+k3Mm16Yx89F3mwTrDN4zXwJSC6eQQBmwAQw/FBM4Y0BMwXALCdP8irglEqPyt2Q2kQc8iCUxhgwSuN0yFkqQTPVXTtT7MLNrBZk43Aq7W288dktq+5Ov7o9rNK3vbBr5P6NmS8H2tc2jxypTX6i58STFH3DN+4fmlNHNV8qCd06uKb9rnO3bzgBPJpL/r09/T08P8Sn/wI+lRIVxCYi50WcMtLi5GKSsXxQ62VgUQYlRClalHHBXYIZBbG7FEJOinaMT6CIKyrWYIxetASVLG9zItnToiJVdMgFWZ5QTs8wSgM+oXADc09YgT5BCPtaD+X3rDh5Q4vBMT5AVS0+0NuxrqvSYFWn/Cu3781uzx/uPUNV+9vXNh1+hCrZ8eVj85r3f2lnzLX2/jWV3iDwMNIQNnbf8/3/bt7aH30My6QTJvwM80OwaMNCPVlOiSsthPyERs/L6bG82eaQa2KcM8WbwRSQSVxs5sCVbXaYtSmZszsQu+1WEGKHHR06ENr0imgzJQBoK66EB/l0kQL+DMdJ5+nUijsXdNZLSJ/bk+ivdZHlhZ++vtfipF+au37k+Koq8zKT3J5Z2rbq8JXj9F4NYyFwnDxVOEb/XeIBTdpPLCdbAA8g5iyD4S3Tcw7veTZvxdzh0gm+Ga72JLjuFB9jQHEmOX8C1R+TKBejPc8P6MY4AkWd6kAYB/RcGKfXNdjmhfElfhg46dKOjba7huUxvlI3lqtsR7OstMEsVwrI8H92nn1Q8GHm6rmus3yEuchVnGVGo5EKtD0BvZ75x9/PrsP16OXolIFPjnbP7QK/Bs4n/RoiPzdSXtElwsW5kWgMzrqn1Z0PwOd4WpXN8sNh1vCK35huHlqG3BrQbxYsYz3NIHiVRJ0YxaSznB+coDCcDbG8qhTeHYZRl3ZgGIcyrRP5/4kyAIsVkIWOtAgaEeDmpMszLektgVvGidOQX5pas6i8GtxQb/+S+s0nFrfvqyQdsf2B+k33LuqZ4/PVrzt0x6G19a2HXtmz98Xd2c+V9u7q671xMBbrWbN1V7Kup8mdXVSTWZR13fjzG9f1b/OaOrLWykRMH7tvVd8tSxJuV5tfwbYN9t0ynGBNCWswyEoU1tTS7rZb1tRX9K0bCDSUO5xV7ZFwwq5hpPKSedSv4v0ZjyfTH1+1Zw+S+YdBgD4A/WUG2ZmIJ0mLulfKTloVMbaErQoKLyGPR63E4SVeg1IoUlRmhJAJPd2KoEhYCJkN9uFX257euuiOJRWvbds1+Ol6MBMnuxZlN50YGd9OPbj/joHWcQnSOeBZk0eZ84QRcEmzWMeA8MDUDLlt2lYmE97KBBYPRUan7GGaJRsO47oLpS2diVKzuRTlOwPm4KvMkLOy1GQqrYRz9B6/9C2J5vJfsf29eq5wHI/HBF5RI5FToaEAFJPQY1xpIu8QRxTBNXoa5dioXmnWgg6HsaHaCo0SRuMoxaOhi3Hamgl3MDRzhFk5pdXLDdr5ba/6OncP+DOnZw638Lm1GjnZOyRZevnZpu3z4yrpmzNGL9jYJwGj64G3bmLOZFwXjT5PuwhUTgNgNke7cKgUs9iDieoWgIMXx3ddHx7fDQkxFfbJ1xImJ0t26TyOZwt3aEsMBo+GfOi01astvKjzeFLMb64cVbHkKr25sJV1KtU+U4FgjeQXLJqCHo/1BXhZDWOliRJhrBOhc2Aq+jcZOn/hVeY3l0oE2ZUaMYbYJvogFh/4qiTMMCcnsYvGh4BJzmQROUThixBEB8DoRxXWMFOfHkuwRSlkBaMSXNbP+wSIzVlZmD7BhxCKZFTF8KkHY0NwQumpEq6dJuvbw0pt9t6VW+50WTqH16UW3DaSeHXrxorBxtJXN6xuv6FSoglt7Vq6b13tgrQ9vf7+VWgN3Hyrp2lFEzo6dLC7+cplgY94jcI8rcSAyEftlFkic1xcD1ZxfoAtdChdXlwQwqQ4nVBeZiTw6dSpuGcOXdf+7M7JlQpj3T13+cyVKuIfSRjGZgR/ZSIWXMQHnskInlgHXCLWAaPwXclkLNgzNRY8fTmImEbE5b0dt7+2d+9rt3V03Ibeb+/4cqh/78Djjzzy+MDe/hAlu/mbx/v6jn/z5oNf/3Rv76e/fvPyE+vT33v9376fXv+AMN6HC09LysDvQHhtlYDXMJCeJKcf7CKRKCI1kAvOmsREtQgoWiOiaItIVLAycgOahMOAwz6cn+U1DJ7KVPKKWNpOTkPSiNSAzXaPAJhu2vvcltV3VwM0+8xTIpAuPM1sD908uLbjU+cwlG6uL6SpkelYGnhQeJr+uTinDeKcEABFS30ChQK0nIE+AYBwniTSWAjbKGCGCgF9aifQp0IQmEn0qZqOPjPYp2Wviz7X35NRK8u2v9r63Lap6LPqpgn02T1nfujSg+TFvuVT0Wdr5nui3KvxvCYi9GhGCjQjAwqHW4ss4hnNGK53tTCiITLgfAcaMonS+mLWo7hu8fYbQdY3uy0STfrJrbFOl1Vm1zakV90Wk2gsJad23Gxi73aYdm0d3w5jaQZ/1Q9y3kCcE3aJ8gpQniVoKGGJUPZjPc+X6/F+TxTRTQulPQgN/VHx1q+mRnQTsotc1ZSIbkI/WpmoAuQDr7NHdBOVVVMiuhNnGP6UT4/ohusQ9EkbeA8yObyiTqiXDbOjEqsvje6VGD48sIt34c2I6zbH5FajIVI31Jyen3bE+9ZsXNMXr1p5bHjj6fqI2q4rqx1Ix3urS+J9qzeu7ounNpxYtYPb2aHRuQIlzkRTIFZb5vZGW1a01e8cqppT22YlLSU2W6TGW5YOu/2RxpHm7ptGBH+XJCquvke9y6wkfMRNAg4HLTGW02FYrUPVU6oE507h8BCVzJMY2+ZIFd5rIlUI+5xd5xE44WTJnBobODXaj+JS43IKgOMoVkObx1DUA2W+sZmjgFw6tDkE57PTGbx3FefahUKeogcZSqOIQMULUcrKLkd7mFqSrojHIteq04m7ug4ePqS30k91W0gYa+GJw+MnWpt1Rh27pDx59HbqINoHdAhk6ecSDejzhUROg+QaBfB4qaiGcCbPVjR+KLisEKAWGrQOlqkugbW6ghbceJ1gokipaKpx0NmCV+JU5/DQqzt2zL+nAXmD2vbndiy6Y7ic/AQKDO2/va+NGr/8V1Dxy2o33i/wAJSIhIExTok5k/9EzNnwsKVESsq0rExu1JIqqdN8b2Hk87Cu9OMbgr2lpb1B6gm9BQMsHFsFO64j4uR8oSKS86bw43idB0WcE4li1fjb7gudMyPOMiHiHJddPNO44I8vCQtNoefUZ8E/vchFz555W3JB9EZCei5wFgzmRc569kxj3R9XossM54Vvc+pRMazDDt+GAkj2i2caxi6MIAcFvmxUqVCD46JCr2fe+vkfTfg6LGCT0QoLOKQfLQ0F0D5d9JqDD0/ZWqvK5uBTU9Y1fBRdD2aJFhaFv40mq8MZKI3GFMpg6JpN1WSLmZj4lMeLPhef9YNTwudx0Ajy8ETw3CiwxigGz6eeoqwYCh4CoKOlMVL7GWsJc06uZeRm1c8Yh2nAVMKcV7EKRq94l3EZjxb4E07lb+VKKaOUj6k8R0WGdgQCHUHqczqTSTe+urTT5+/xCuwNUF+1VdpsVbbx1gBRzNnQYyBX0+Po5EfG0Y01woAn4ugo2OkitxVOv2w1yQsKwy+VZt3zhdPktpdRFP2yTPcXpc1MGclLWk3hoKuE7NayBXb8v21a8mG3tfBZrU0YjxbwgBzGYyE8RFHEOXMC2RZkUICY5utKOd6yrj1pc0hJi0IjRVkHrdRlODH+FUWJ68ibEo1VN36Dtdxmq7BSn9ZbLn3NZCefgGd0Aw22wDN1E7FzDSx9GSnoAJLTJ3i2GDuvEYPnUhQ979aoqfT4D2lKqxr/PlXTpynVU3+5b8BYqh033SvqzsKPKbXUT7SQBwmuOsHHJQjNiEoSNXrQIms1J8Flz/PyumSSjyHLGU0muZieCyFvvwk0TFOCZxpTgJ7hpjOcTOZCTUhzhlKgOXVJvlXcwyH723+jBSTh6uJcOM7V6fmo9SIX1vON1otnvqb421G8VuVxzhnn5HreBjdhbTFw8+yFDyrwGpLrR6VyBpaODL1yNv2o3YZaGDjQ65nmjr8P449F9aNl0TBcj6BXoZFBI5w2oNccHE9ZcA3ZHHwKHZVlc/BtU245sjl4DjoCjNCiZ6Qyuc3ucIbLItG6+obGa9bea1KZ3VEWqW+YFnBoyoJI+LLiQsOluQAyfFnOZOAVJXjZpQWIh2xqPYmTEn5cNCoUFOKdpGaTBS1H10RpKUDcio4uvZGNLrp1YU2JxjRvmdaotUZr/f7aqBUOl80zqV01C29dFGWN+i6qa8eC1tT6DRvTXQcWJwZNxk0j2a0b16fCbdUhhSKUbg2l1m/cWjey0WhaULn4QFd6A9ycMwQycqHwNHkTyAgtVFRPeFrqMfyPmdiye+GewtOy2//xSbQ3EeQqi+XqZoJrEfIgyUS+SpArT4IvFeVKBnLlALmqA9GJZkGu1EioVFaQpjRcqqgBaVKnsUluAWnyT0qT5YOsIE3WOBeNI4RaIb2IXDWHFATm1x+swdKkinPZOAqX1sDNrJ6Xo5tv/V2QJpV+VKGSg1wo0euZ5sa/B/F1q37UZnXAdTt65Sr0o7GKKJyWo9dJYazRj2ZqsnC9Fr3m4E+myI49m4OPo6NYNgcfm3KrNpuDB6IjBRIruUKpsoJcoVhVTaY2e61YKZQ2e6w8UztNrNIyECsWxCoJhp1X14FYVbFwgfMYeEskmxVzSJOSlREaKOBSBpRXKvoZIFkp86S8xcilLrV53jKdQVcUJjhcPmDGwrQwpjfpu9tB8Ez6GJzWnDcZN45kt4GwhFrTSJKq28JIkrLDmw3mwQSSpI0b1qdaF+wYmgPXNyDxq8S65wD5vCRGG0C3/4JAtd6mFK8EZ0qRzBnxZl8jAK9Rm9Ioj3HWFM/ALWkyx9hwcFyDcFuJsEdKjXM4KL6kBXF0iWURP3vrT+KGMU6BpUPKXERdEUzMxTNjP3n7A8xBqX5UJlUAB+XoFfHdbDXBqQW95uDWFK7JszkLChVlUa4e9I/ZUlzzcoXJbLFOY44GpRoY47SYEoJYqWKZPTgTB0Kdm1vTW9YMB9vmkg+EuuBk85qRUjghn+/YuyDuD/uXdMFBha/Mv7hH8N1+CWvxl+BXsGB/5hLYW8trhP0rHliZXqEmVDWG/o26FSjM5dHj5JZbP8b7UEmVB7d/0ODdOhpPEb8K3Rum7AHJpEDvsIFfmgLxmnjABG/OkoqAqYKWoX49Cin9JfokuoDuJ9BbYrw7vmRkZTq9cmRJfPy8MN57ruokTkZCxIkM8V0iV4oseDTF28DBhIVdiplZWgYLO5IUAmVMChXycKkkydXiySTAXcuKS/4Xl3+AeRoBACY9ywctFznlWYaL6EeZiBT4F9SPqoJK4J8Vv9rwayl6RZ+Jos+MJvFrCr3SRE6qDGLQpGakaBGWBiPRZGpmkxreamMNo4TB5UP+EPi0WpFiU3qRCKA5TKMQjwUB/2I/EjpjsqB2JPe03/7lm9VUiaVNv/BIJiHX6dT+eEusZs6ShjCrMjDJxq/shNvmdt3KkzfOefXYLemB/fPDlHTvV+8dol8zuf+knpNsUalYm1125W8Sb6BEIZvTO1c2avT8H+XgkTP7nv26jVZK6zYex2srDXh8P/Mu0UTcSuQyhLCpCx/ka3F+QtgrVyIdyxOSjEoDmjWFkrlcGAjfnOAaz6P0aAQ8f18yF2lEbIqgsvLGCDpsRCuzpTGjiPEtIFKRRpCicrRLrhYf8CUSkH69STBtOJE90chC2O4s1vuywrZLBFfQvmLsPPrQfls27XMfzex5fvf8W1Z32XuVFqXWoTLFqtsSc9a0+siveyyFPXUpd52HyqtNLsOVYKC5yk3tq3cGSdXqL9zaU9a5PJ2QStVaR2WpOTZ/d2fhr70Gz8X+3XFGPqAtsWn3KwPVXQmyDMnoEeK3EpfkIBEAGT0orCk+Bd46gnc5JRJKAHcRZK9AIr3n+VJwBEvBgxA3mIBw8qVeEBDS6QogAYmzo5Tc5MD7RgxgYFgjrrKLgOM9ajA5SoRNO6MqVvg4Y+ApubD72CqEGzJWvIlAKrPKwgK9ZGGcW6jJWGfU3h1Z8UTFtvq6LeVPLn/CG/C7n1wJ53V1myueWvaEB867Ay1DlZWLmktLmxdVVg61BCQly5+ED3qeWvFkxZYG+MPHVz3p8fvcT8Efbq2HP/x+YqgpGGwaSlQubCktbVko4kSQp5249vVmMdcl1o/kS1wOAsTHDEeCcbcm814fvsam8l7hmjGJC2Qd59FuumvyXpwhWUx9lcCZFxcL83ZHsRLFd11I7TPj/1GxdRr/X/GY06MknVqzTGbQkXa53/F4YQVZV3iGXF545jXhjcwyb9jN42+WNrjcDQGqjXVd+cbm7VsKb5JtW7ZvFvTWJOaREV4B9cjxpkBJEoEesEQY+ygmsA+N8c89gIDo+JX/R7KQrrjy7/A9+67eRj/FvAMYfilxmBAWnQWWGfio9UiilmEd16MdE4q3nXDQo8eLKorSu0luEF0uBSS0HK45wWfP0TW1CEK2sC1Ki8qTqO/oH1iCMlFc1MAbw0ir1yeAYMksZ2FfkeqjNThPxakMotqqmZKmmhm8mdy7Ggpnpsd7ULgOCC9mrfYNr0rNQe13Np5uiKgdOKBTNa/GlRzcsm3L/NT8xcnm1LoHVu54uSkqB+UZrV8yJzWYcaUWbtuzdWHqVNfuI82ZpCfdPbg40l5DvTv/tkB4e3/9zgVVLWKwxxHLesN1VeWJ2p6VTUN3hEMbOrtvHkl1ZTo12pJSlyPeHI63V8cqqrtXrazuqavxOvsrg9lEuLTU5Jkr8FAreZVazzwl7vXkdAkukEIJIQMIpD0pHonFx3mliXDCdSXuvpZ34zNUgjxLTig441xr9JZZbVGv0eiN2qxlXiO52+CJ2mwRr8HgjcIdj4EpK963RdxGoztim3GO8rKdV9+XukFnO4kUsZZ4TKghRNvdLKCu8QbxBD7Or5xnRvvEV4IXOG8lWjbzlihi+WwHvpoFzdWBWyB0tCCQtA5Pr0RoFVOCK1/4XhCzXj1fBjPV4hv8erha1ssaXjMHZIlsw7KVWGV1zEP73ErKiGqcIM2y4CxN2+0mQTuFQDIkxYQmEiXr9asqhHxWsbKiM73m6LNf3bTp7LNH19TUoOPNm74Kx+mNFQv33ffs0iN/fHlDfOG+zzy39MiFl9a/03noxQ27nqhLMHqN1psaaOi+YbC8vH9Hc1V7VdgkV0lVCmlT3QsH1n9+fwv1i01nn7t7XTq97u7nvrp549ln716bTq+9Gx627Pn7DyyKb+T/fHTZCw/ctCixefQvRza9dEt7R7ZVqrE6bfHFB/vn3TJUoTHZ1YxMKp3TPrfz0BeFemt6iFrLfJeIgHU9TuAeiXmFEE2crDrigol8haD0qhKo9siCZKxGSCeZcSqpUqw9MiPcmveYRfTGZ6aVH1WyOfW08qMKtAXd6RVgPpHlzQpxC93HK0TCET5UhhRe+tCO+rpwddDNak2MNX3L3MziBnejwShX2xOpukC4tarktnSkui/Yva7RSV8MtGcCVGhOo8HC6lSxZCLQuDhduFllTFq8NpUp2lQZC4RLt1FsSSnCe8Rh2ki/TpiASkGC5KIJjjyfd6pwTVppErfEcpKgxaRmr7CT2pgmhU5NtFSGg00ocz7rxXuIqw1arfK0VqvTnGaYkobKmRcog428t0Rm1bBs4QO7RmstfCA3yl0aF3nvdW7gvcdkm0ROfUAwRGVxx3CxK5FEIewTkeAOVTkJ7ugiISb2iaDOQwH2UXr349TW44UBMvy/6+kjmaYDeojFxIvX1wLdvWi957sFONfdi4bWjZoNtiTzNYuxLqhBJmbJLAqgB4xLbxKZmvlwltXgJoRT1AEq2pjfA4vfHEjI2hvExd+W5coMXAvIYm83a8gjxYBvLWa57MfQCyTrw40cEV42CoHEyfL6OPid/5w+IBeQYe6FndtZh+oPj/r131M4HAv2186vNBvLu9NH/ikNMM7TJ247tPqIQ+kxFV6wk2mNrvAw+UtzpCEcygYNwFOT5I/Uamb9JE8lY0Kh6SRPZdN4aqL6JH88cADpjW66jvo16A1kh1oJcduLRIjLSyZ3v5gnd7+YP3z3y2wZz0lI2J1aenNX101LU/De2XXz0tQd7tre8lhPrdtd2xOLza11S+7suGkklRq5qaP9wEg6PXKgLTY34/Vm5sZifbVeb22fYD83Egsk9ZLvw5x1xKope+lRwRpDY0ddgovtJFpUgCfBjrkMrRg9Kg5CGEmjRr1mchotuqcRdkTmtLiLnhbWFmpZIIQuM8KG/Mk2XvR/XokVW3ktOHaM2nOcvL3wyeOFI+RNaI0tpB+nVkk/Dbh0PpErQ4i9AiiqSeQdgkLWYHCpMSqEGjPled5jHsspPRPdkBIoWFtWgbohgZLlNGyOsXqyRY+lGXdBwim/YsufiXCJTqwqd5ELlepfO8p9pqZ4ok4nNxokCqZHd++W9HCj3xHLeJ61VZq/ZbHSj5drXOpfOdI1GWd1tiqmZUlSvWO7u3ZeZaSzpd7zBancYkb7TRfTJ6jVMKdGYgPBZRN5ZTEImzfjFc85E/moMD0n3ujr9ImbQ3TnOVuSrwaxSZjxxhA+gXYaVYHgmJS441E1MiRmFi5xTgMfTIjdjlLJ6Z2OyBmTFjsHTOlosrhWp3OrpEZ3uc9b6dOzZW2VIz0NVVV1arlBJ1Ey7bKK1sXJ6kUNvpvbO2OdK6vqFjeXS5bYpTaNz2U0eSMWT8ylXUo2plM1lRG9HmhRM5hxutIdkTvjxsHm2iV1bkeyF/H425LnqHXF+mGJWNs8vX5YOVk/jNshoij/tx/R+n25P2lLLJLn/mEzF/6h0wo+zCGc99YQLkBXxcwZ0BSFntQpXoqWonsijWZPzp5JQxuKaAJ3SULpbpRPM+B8mtQoXCTZ62fVQmG0dQ7eD726a1sxudbxmZG+vWUy6bJwtPBnxj2+avfBYoKtt7M6ERsJF34dQeOPXU0yadyvuUPUImqpkLLEq1CN0IciiTu+ac/zGi3K0+cJwfQSCZS0V6I0oLbYBQ4rEp85gLeqBlhgbmzOgRe20Y2/errw26e3vnhgjiQ5fGJT9slLRuaPl4z03qbtJ9A4Pkl+i+SpS4SBiBNijRVwRXzDvdAQnlbhi8JbsefPFM0FT/ukLZrxeLOAhSN1TZmojVoFJ3Z7JOv1ZKJWazQDzzpSeIy8TCiBZ20Ekn+5YAflTtxajYYZo+wHLbBOdZ63gFPmQUtb7hQS2XrUwIrDmU9R4sX6kDgVzqQm3Z0jBikrZS0+c6zcEm0Ml++1LR/y1S2oivYVXs8aZAqZz2l0GjTMZxaYujK+6qCRxTJ1EPTQAumnQEP2EAAU8jJhpdKoCzcaoowU9SFqD2e+Xns4dnp7uAxqtuVLp9gMKjwIH/z1rrsKqx6R7FRrbQrm62+Nb1uyhHyrfKlCK9Zz0POpt2CdGAg36vmFJKPoiwN3LGKlrQchMd4ICtmox/lgpVrodWg3TliZEgsoCxJV1QKxDNPtDClASEFB9FYM3djTfeNgPD54Y3fPjUNrF40sXrRo8cgiSef9+9Eeof09qGlU+dBXN27fvnHjtq24NwtgQy9gQwMgwxAhVpdwymTeLxhPVEviJ9DGRK0+KDSxzFRnjDWZUJgOpaubSdJMh0PBay89rjyt0ap1p5UlDcTVqw0usnLGhXdZA6myq1VOUsUaXJqSwl5bYS+gv9kvIxy2mSCYk8yXga92Igq48LRYR18q7p41pfiwXu89m+D8qXxMYLormYuFEU9jJeCOyaR6EuDZhEDg3ZgfJgVI3wTBNShP5ktFsCY09hQlgwuyOYczhhR5Kd4vxsfCcMOR5aQsV5m9Vm4me/UqJtq3mQNp3L4Npwo3/2bnXWBeJTvUOpviNrrTUOmdd+UVY4Wb/Cu58pO7dZqFuwvnDBZq719oWnJJlLuKZQrd5WbmkNt76aDXQqrIXxbCrSp9Ps+qW/7HGLcKNcaIfreK9OsiniFyXULuFrd4ESmYD1d3IRKFBZsWrkaUCFdg2nXNoF33R9MOxYyy8IFS7PyWOmBd9UyhXik7aq6qbsZ+bbgV5NxThZr+8dIuuN/8oeTzfWxEMI2iQ0DRhE+gKNUqYAVjYzxRr5Wb2CJWWNI0FStch8oIQPy/jupMTUl1rQAgNDu2ezIAILqaGzzPS+VW0zxEd/AfgO6fZd4GDNFFDBMriXeJXBOi/IJULoqo3prKO2dCiJwJZREEjJFfNNJk1sS4uan8IoH685O5kUXooyO9wBllFt0WoQnJrUpwtvMoxYtwB+APLqHnh0CGlybzCwQZ7k3yqxEesWE8wg9VA+W7e0aQFC9AHgXBjyyCW93YwViZ/f8dr3zkIugUAI3BgwCNlzWUtVaOdNdXVdWr5aweuNQhq2gDQLOw0XsTAJquFVV1S5rKv0Z34MXyqjHuJv98zWKh78F4p8Rk9gDeKS/RjZCNNal0Ee8sqClxV3civDO/pXZxvcue7L1y+sNWFEVUFB6gTRI3eNWNxB4il0Acywp5n2CCt6JuC00Yuxh0uPU0qiSuVo2NyqujcrD5sCwU8mJXEgwQowbcDYKTow0jnMIwagUi48VhFbc5ZdkcIS/JConEJkkzmbIiz25yg4yluMeCnOGRVMS7FnanJYZD6njn4ETrqLBaa5BVevuWbmscPLYhS3qMflyfjFJHDmfCbwwNbB+orUr6n3pRXdFcXdm4oLGiM+n0BN1qVT9qMBUfukmiv6ZLGi30HpL5CFQh5bm2+5BtsvuQN4FSYARP2sSfqpjefWhyDxp9vT5Ep7/n85p/fK/Fzn53toZEMp/W9AOZ5vJ/Te1LNDk+M+H70O5Iflxe9pHdkehME11Pos6xH9In6cYfKw0GK/u9wr+zTsusTZPIMz9QauT0L9QKYso4pXiPZujacXomxxlOoGABjBOlDwPX0jGTsuL1GApLdbhX/PXIee6v+b8dU7sUd8kZueQuhUvdPxtVpYkf/UgmXSuRSKm1Utnl9yeIK45ZegXGHCGqiH0zxxwtjpnzAShO8TbJ2GjI5kN91iRCoXcSgeV8RFBWEdwFSoyV4A5iEcSJKCghNk8aKV9cLIiMoQI61Fo0fu3kr5PtvS4N/m4tn1NWOqc+bS8NkestsZZI6ZyGGlsgRA7PSoyq8rlpj9PjjIbKe2vccFAevPzepLxJRD66gCY+oEoDsXUmVfwTVHEluNpU3qggjDD7eBLXpWpxhyjUPAEpkZRJaDmHOufyCn8WN3ukSFzFkjLwctwHgEQtTkLXJcWELhZJMOM3Ba6hyLsGT5nZFkWB8ajNEvYYskVCPMR6IvGIx2DwRKy2Mg87jTAvFP/EGkafCF++V6QKlZ5xh5hCpxG8LlFMd991V6YY1EXmMJVABrQY1LWcz0cF0RHiunmvIDoolFsZxTnBoAHJjJfF9aLiwuZTKPDgtWSvv8SvCfJMgu8PWfSPeas7wmVdNR5PTVdZuKPauyxTGc9m45WZWTUAFQf33emsbCsLtyYcjkRruLy+vhz+AO9j+R0BsBz3EbARjxA5tbiPdFoTLK1RjdoKAxzWApk0yTwjV090xbIneIeQuT975//8GWfu1XFOEkfutMJxUctJ9LzZcZGB91FGgssw0Ctn1o9qzKiA0oReaYIzx8nXJIxcodaYzNN/PSaAUoBG8d8ECYGAdlouMY+TTVTD+I+aqN1X/pAaP/eaKuQkB8ifr1a7dRM9t8gThadMDspH09Eur9ATq/AY7q02l7hdxK3RFOpQPFtPNSQPTYJP2pRCF5uykz8OIS6jOSAMcbXwMxBzwPK0KBijKxpL1XR2YYPblAKhqMlyXSyoE9yUbVROlIan9sn6kK5sqNJgStJuuoMbpz5mu7ZFf35WX3R4vaIrbImVW8EVDt77+9PDH9XFbd0N0mzRMdZO9ZdvUn/ibVJGiP3dJHVgB1Ww3uZ9VEc1y0d1VEO7cHBLK3V2Rmc1csKMT+mxduVHE5Z7gvWitZ4+NutHd3uzfdTY7Nd0eyMnTPaUMY2/MN1Gi8OSJqba5eLYpDC2ko+mm+ujxua+Pt1mmu2p5Lsy01JPGe5U6yz2YawD+6MCNJYk9n/4iFEALp7Ks4IJKk3iZrYfOoNRNS5rspjwj9ygCEYEbBTKalgUoFVZZ/aaic2SwJ1yOpUjxEzTQ+avMTnFec+0N9ZrrAx19V1QKOdArhQEijvmlKhyQoW7j2mF/X/GMbHhAz0JPtkUm56QVv85UUwvvolbwFHESfjix7Gs6tB3Ir2Mf6IGx5nU51ETSzGqbpyQOvSdJ6dK28Jzk2J28Ydicznq6p/h5RjImh5n8HIs+m4D/m5zgmPP8yaxTYiJBTeNIpVZcZ/iDMlB0U92psSsPDddVCYeS9BX34fnHgGZQXs4o0RbcRcnrjFJcCGctzfikEhxb54S+I+y9SpQBUa8QQlt6PGZhL3+MKZZdnLOAB7amcz+7Tn5DG5fw+SLO9Cgr7mM1mkK8MQHuPe+D2EuvLeNBamncYd7kHqS0NEatFsB1VejPeLuJN58osPbwVmYhSuZY3W4fwHqaaDD22l1aP8JK2w7VJjGRA8B95KzCvmKaT0vfaxxsuslWgCpd6jSU6TqK1u2fKXwwanxn58jVxwQel8eKJwmP1W4mXphH/XkZAtM6oXx/yl2wSxI9k3oIGYYcLZ5Csqe7CSHNrNaUrwX0HXci7oYOwFdBwR0PdlgDuQmXyWgpSrcQbIY5yqdbD6HMHegCiW6I9nsx2hDdz20fW17us9dF2bP3rhuNpwt+Em4nx2sP5TPq0LWYpaOdsnZOtqlxJzeqI4pE7pw/5NN7SYd1I/X3u6xCS3ysRrd0W+K9nD6HFPXmWP1bHNMT5lj4l+Z46Sl/HhzJLdPVWsfa57Uu1MMbHGuUjzX2uvMNTvbXOumzDX2L/Fzpt78eFN+c6Zm/ZiznmGn8bxhTaN5t6Hf5Lhm3lx9gitL8UlY1y3JermQZE3Dum6fSg5UN9AmrOQ2PRKAfI1wVjNJqg60xbGNNbyiswcqmPp/iVjXWeofj2YXrrv8Px7xvjubNpCIsuMSa8wGUBfda6mYSXC9qXyFYMFahN9+nEY+PgmHST3fAIcdcNgxSThUn9GQxJ37A8z/hmzXAT8fj3pf+0hY9PEUTOdHQibwv24nfiUpkdwA+IYwKsiMgrQqSJmCvJ3cUTi5llxDrl5b+By5bW3h4cL9ZBu5nVyzrvAUevlc4ZF15LbCA8Ka/oyUYQpgiStgTW8V++RWFrkSmVzTfhPu2Ir0FiuuaZSE4txZLs2+Jmcsdq0nhOM+cFED9K+0AP3tnmyWi7CvaFkiKLThZ8Qa1aLDhvPRsgnOhMK4g4sRMQibMcwbS0bo/CHq8/3fXbTQ5PNt5LbcgJmx6+zgRmu9e/7Xb7j13f5O6nTjoyOIG+8f+CxiTmuTSPSGzN4S61/WF379MqZ8suq420mq1pPh1479eC79WKwcSD9+WzeJOHH793qRPce9CkG/24kA+h2Ma7sVls7WrTAodivMmR0esXpr1o6Fk3Zqlt6F5yeN0vW6GDKrBUM0dZzB2ccZmm2c4clx+j5snJO2ZpZxkl+YZliuN1bJzkljUhyvFGcNZx1vbLbxlk+O1/WhdJ1pL2YZ9qVrjMP1Rz7NIGBbKIzfBeOvIFpQx4OZM0BQryGV9wjKLJnEm7gmZ+RAxfCmifr4DBxmJufZiiIhpbB8zPIPm+WHa6xZ5lz4aPV0XSKMfbRKAr7i/okghybCe20HRd9EB0X/x++gOBnEn72XYv302MBsjRXp303BMZM9ivWEk+iZ0qM450T1UbR0LK9jCXBA0C/FFTdPIa5QbDLJ6UUHwzgmbKl1srhrdbGTy2zNir9xYZZmxYX3Ww48v3njCwfbC2NkvmJwT9unT4JO/8rV9yQnmB8S3cRRcWRuJFhRwBOtCaH2pgcPqFs5xnXrcTN5gwGnslArMLsOdZ3nVKgYvhG8icYErwJvoRe1wu0GeQrCMucMbF7qDqdakTZuNOR0UdzAScXiHzRDhbVoz2Urm1PZxZ+7m/KjPSitJZm98l0y9RdTzOxXuu58fc+WJzZUlrf2zymvWbBqQU3dxuPz151uxJXukWx/TUV30pFdvH5xXbxjfnvCkV3e0rlnsJz+x9aXDrU3rdqdbhxuT1VV+8rS8cruLfPmH1oS76wt9j5oDWW7q2MNi9pqBudkmrqrfG1pf2zx7YuvaEWs+h59H/Md8M1TgNnun9EJEdV+ozTv7O0Qm6e1QxQgXDUQs1qPO09c0w4RYbZq9KtHWkMUUbKJHVWYgwjUF0uSm3GjD282C8/6J4qRp+TZ/tn+iC9ONIe88E92SmT0uJnkla4ZHROn0jQLNH14lu6STdelaXoWmn5Yi8mOGS0mEUXrJijKOVmuGeia/tfoOrXb5GQ93L/Qd/LkRAndP9uBkt5TLLkr0vUNoGsGvKrHZ9C1Eegauy5d26bRtRvTtRboWqvH+3+voSuq9KidIqut7CtA2Vh5chptK4C2bf8abZ3oN+r9CUo39bevP7bYHv7NC7+92WK806A/LLWqh/5J0aX/QmoL72tvNxhuZxRXVk4X4CKdXwQ6txMLiS/NoHPv9bqjzp9CYqSEQdC5THK0OtEqx9zhomDcF2HKd+jHRqMdhDyWbxc8uw6hszraeptBOpmZl0rla4Xc12Jk99vB1VMEE+bGXsSAWhari/n/orqY1fGT/dNMeNhZ1V5W2pSptAXLyJ32yrYInCStvdTIP8kPibFqsM7rDrhiFZWDdR5XwL30SsPMRqwSkS9P4ZqNfmIN8a0ZnGm7Hmd6pnIGvJQVqXxC2LY0lCz+4FUTYkkTYkm1sHOpSY9+uHByZXDDqJPjgHBzIJEfFo4ml8w6pN6jyHi2wYIZYHkF+gWAbgM/tAL1RiQwhwi+53/HtInw6xRuzYzHfyzu3T9zl5VrOteGZu65+hh83D5jF9bly9OV2fvX7NKa4Ov/19u5wLZ1Xgf4XpKXD1F8k+KbIimJlESJFC8lUdTTepm2LMuR/IhlS25jO1Is25ttLXbsOGk9zHEjzYvTrG7S1G06NFtSxx4vxWhGk7VAnQVYgibYsnjGgKFF0QwQsAFxii5bU8v7z/9fXj7Eh+wUAwyJ91LGveec/3H+/z/nO1IRni+2UpNA8r9/HjFyd1Lj5Ej54VCqjz9S3pM9gaClaGqM9Lex7Olkacjeiuy+g3y1I5TulBnT7kWmHetEdgtBbPsOmGX6cMn5IRgJOXvatmvmGe7hcXRnqDP2IDNOiSPrB5iDBt2xzQ2NW2IeT2xLY8PmmHsmfZR9v3OSRBUYjjgckeFA48awwxHe2Njc2dkMp9x47JS2Stxo3h+npqgUyZVO9Ea4BvFKsg+sGeetCQhXCAXYzWbbdKK2D8LltkZSEyTilmExGxVZcQhZcUgLdYfBbrXoaoKFddF2KJypXgH2KTckuAKjQJvuI8GdnKUTs0aT9oYo3HHruSAL2+ETACZ1B7Ffq9BxektRO1WZ0+GJWUxcPmDL58/KCesV9aCbtCddyyPfUD+ef/KyN8qd3XFprltru/u0JLTtyEB8X59fqzZIW7yTjx5te+JmzDF55Ex3/PGdwb+d3d756JYAGFD0lEhe3TsZ6z0Qb6R1PU/s65a0nv56TaAWm+zQ9J65gaeW5hud04tTza46p0LeB4jd+VN9ezqtNZuObp+cqB09PrqTqe3cTDsHT4yHGh+aJyzo1ZcwC3oTdYwqxH1OtIRSXeRMvqsFbna1w5n85jQMGsh8ENISqCQriN4qOJPXMXZ/fUtkcAhvsnVB1aoIVNjlKKiWLezulABGV5U7jBeXRkkr9dJI9/UD+qnt7i44h6/WyXRSrdnNn8P7dl461FUUMq2QD45skXcXPIM/qxy/8GOyvsd8ZuTrAp85Sj2RRWgOitL0vwKY5o4imOYYj2lOMQZ3MAIjzFpQMxdw8xuWXJDBWl0nsjmzTLgfeLNcWCGUxziLfk4A8/l6OZ2lF/bL6GUJ9ELUkrTYI7FiimEZPpZsfYoRfPv7UcyPBKe+vGLo14TMmbRu3kK6YakuiIkRdOMTdINWnqkI0U2E1023oJsI1k0rr5se4CbADFQHC6A3kYZ8/masIz3SUX2ejmKCjnwM/j9ldJTrp68f/n09x0M/sR4UuNic5ZbffZ8Hg0t4fV3Bbamf2gm5wmU46BB2Nx5JRYiTF0dTyK68hhVEvkAH8eDIEig1iq+WfKPgroNeH0Z6HehAbc7gZshp1IOy0sVlEt7vp9XpyifHr6OfNpRNn6dE9/4XTQ7P4XwxFdXIx1rAHh0GywgBFxUk4IKjlDzVNjfwQiYMH33LfP2JL7oFtjP1MvrRlvcMSdFnSJQ4CSk7Ow2e8bLQE6eXhRy1LybJU0T3/gn9GMK1UnRUO5VUC/t4GvwMPSnrh54BVeZ0ahyIIcfdhtbwzxMbsnoB7LKGcpr33mXJtay2+8V2XkDxvV+iZ7djZoKZCgAdNpumnfAL/AQnaqNNUHUaGMJLFWYjckgp0j6pEA9TWLLg217CUmiGqBGMRdagzuwFCqnTT6JHCkRq5N9z5zej95a1ZSELv/sU5FpzG+w4du83EhfzGtWKvIgJvvJlJ/LuhvhK0cRZaEP9r02LK23JWS7A7zj2tUFteMbq9rXAsBXQJWqQ7oc6IXEhII/FsvyEIO2X+QG30Uejj+SDizZHzVWQ0E7Abjl+NAHjjPWdev3wzJuDxtNffdsrYcxzwcc69TbGtP/G9qu18qqDPTOb6jc8/daTB69/fWQ5NHGkZ/PJiRaxtn3roxu2zo/V0//+1avnRndPLt7sX+iUqaRmzYixRs04LBr1Bm1v+KlOVWWVdpj92vd+cvybKz/cPfj08vHtf7o7GD32+omm7Rt8kckzhH2MWe9XUUtgqW8UIUkjX4tzSmCUWvI6W+R4bEtYhCguHjCNWgKsVFmyTsnQppd8ag26X2fiExlSPrKF0JqBUHN1cPgpdxoCJCOsCINaXHiPYC2ami22CVCIWS35cM1CH82HmGGN6xnWoBF+RxbFulaYDzHKOlgIZR3iUdZLGqa2AQ/TAs2aq4UprqEs1TrjGJXmW3szrlAp0rV4ji+zU1K2+i8pWz3IVlteNmGkLC3bOxlvppRsouHMfiSRDfJnPVQYKuNg2fxINpMgW7NYCN7x6vHBcCMvWyR9MGyEEPiUxlTlYIjXkgBBm/1pQU0M/qO1ghbYQizKKf+7nPH6dElqudiT7YdM5jHM03JfxTbtBcLVGuo68tUAcJUIs0vBhm7Ui6PoopaQwDJWrkVeRy/pqr1aLkwLHZpFLUBJtATkojAFCwKNtTqa2wTKmr5wHy7dDlTF+nPpZnF0bcfGeztEV1ewrqLUFmq+kLbQ2BaPpBrITNjDpsO9s9QUJFNhUMt1oKsBcjWQ6SgQCt4RxFEd1cyDaamYc1ZaXYp1uGMlFfduOU9MTM1QP5N0Sb6L64QFqA3AdkwpSK4az5Dwh1JOvgxGE8BVgF6gVq4A3RPcBDUa+pMG8A5iPE0jf8dQl3c9I/747mWDN+iwB70mkxfSw7yG/GvR3OLi6u28BDLRb9dklEGfGbiXlMQlB9BIEaDaoJIR5ooHJSsEJ++HYaIdc2H4ir8wPJiQgwCZH14JSTmN6N6stDkVdU0wTpjIllvQhuxMO2OAWE9J9KZazFhX6DF03pyF5oryaEGhqhZ4ckYzTRoBqd3c6h/4y6H48Lkbx8cXY8NGr3v6B71DYPexZ6Id5m7XyW76p1tOjJ0cb1iIH92KfrWN/WP83a+Bff210w7zv228eRqM7PWMuqyiHT88IJqKRWe+tToSbp/95tTL+4nPi/njaE4wI23M5hPILSKes48x5N7SGPKaNDzBgvevDKAGHp/A48gTFl3CWRxKnpn5CuDJXxWmu4Kgcskb6WmunEyO+5UJ0OqcwRLj4eqJSj0SIiOTQ4cELioTLcx4hZDr8cxRXCGhxBfS81taJqgLXgc7Y7kyWXNk8pWWyZ9jpyWD1eaGVopNlajUJexZwllLCpcz5xWQ7+mcea6wiBezpjfom0TOK3h06aMuFWHio0Em0RWBcQZG6TAapTekhV6yiClhYZKlgaX2SgW630TuN4VS7eRTRjGQygPVkoH70aRLSKHncuGu2Dp4+uXG7QLK+fPyg3Xhli4vv1wGPh6wzFEfqKLcsJa1izLUfow094QgnkVAmsMBqrk42FwsNOPiiHN5Bs1SEHYuOZwBtvC1V5hfo2VlDbWT8BcAHEvKTbnFACpP0CGhYgxaaohMLAtTsJ2vXgjxanaAKJG6hRYtsZxbxynFfMUVXel6K8v9f3MkXWzlkQt5xVZkg3dfGBXqFm7sX63PK7Yi5nV8Bem4Efleu7OZ8dAJOyMpB2mgLcTbMt9KmNiUh7Q7jxZ4aak2soAG18pjJpCZACm0Ug42X24jp7ilbpZvekVM+J/ranv77n0mn+Rrl18itcsThgjnla8kdGxSgeE2snQpc/lKSqW1MOkS62uqmmsNaPDCIUw40yCUkEeSWnxGozUo0FjAog8aRUCofM5ZMO1E6yUFeFS6JIWdDRi3+RhOaBUSc1smh8jTBlGcQXpt9fN9b3z6/Ku0ZJf4uJAs9dyu1d+/+vynb+x7f/DMtcNz108PDJy+Pjd3/cwgH7G5cPa3fBbRfz/57NF3IVL29re3bfv27QsXbr84Pv7ibd5vl16RuJCGNiBP9CUq2QRa8kW4VjHwibA/CiyubnQZZ1P9xibYUeznt1+JTxpGPmlYi70S1EES/bh7QBieVk280CgkWzQhfSSMOk7eAKET+qTSivN7tTrO5QFNGYHa4PI0wM1+3RKlDYNrn+jOPRQpcOIkHDjR2SeCRHF16TOnkf4zVw8987No5Kff2PH8oR6dFZ8yHR7s3TsQ1FdVtnp3zxxpP3OzI/ruxZnXnuh/++Klv1j0bjy8cfNcvEb0XyK5u2dPR+/+eIA4rmePHzmXOVgS9hIfPzN/FnzZGx98cGPqhYNtyJelhUMlMR/f58Q127qoXbkRfjDCRCNQuQ1iHptZvLdtusVVoyZYrcXbcHoDjlVrILHceI97vXGApaMdCwcH/sc60tQKRQxK9peNdqTRMuiaaB7vPzZnagpreRALKazM4+40QnVhEE+XvemYM6/n7DaSejGS90WzaE1qo4aphCXEMUBvY5cqGAufm0+hZ9nxs2xkkWnDYaRpQCEspFS2cox1mb7obs+HhRaA2exGKofM+GW+e0VkE38k+j6pm5zHDswAA18RR0S28+fJ3zOflf97ZoL/+y5JJR2UuigL1UElq3C9PgUlhzHASk4RKleSapxHqYb0yQ1qNCjiQF014ZhRhApMgJtqsclYRbYng3TX1HhMzlRoq61qg0Xm+GOXQ/LPU6/HaxiVVF1hDLLRas+wX6myVjSHDxJZp8Sf02NSOXqXdgqNxClN5k1ktzg9ehOZHnOxMEFcVsm/iR5qGWjIm0QxaMfvI3ulwIv0B+mpCq3bgl/imMu2F95KElYrDUG2w+XZ6Fcqrcrm8P7w9I821jCVJIf7E3qM+vzB38O83vf4pbrCEOI1UQmvcSA8jVWE5zlkG9Gj2DZhtC7G1kmEIryBcDYjW9RGcO4DoC4/+s6P8dh+N3znb1IQOAVvP3DBxWg9qU+EStiybr0mpjv2TnTwt4xmmf2Yy17c6uGizUEEbUF0HreFMHUQrACJvsQQiXoieRFbwFDqJif0SXcAvnNb4Tt3HS85byfAKgSRN6RP1JdoO3XrNSUdVWqrLRoiNLrVIZcWb2XS4s0PZF/9RHQet7//J9nNf3jZi7ZsaYkmj/rex9Qn4g/Ev6AMGT6gjPABZdAFjWk+oIzwAWEiMRUEbX/cPbswtm1xtqdndnHb2MJst+iRbYuPdXc/trht28JMT8/MAvax99y7w5yiPuNzsLbyO3Y10Uj6tIqzNrNs+kC6QrnCU745F/ro4hOwlHjSpjhGo9OnKoyuehbzF6JlPOj86z1GT8huD8FOEvz2GEVqoxfwRvydoNco0mLwUchrNHpbMPjoeN4WlKPMNdLxRerP6F9jzrKHwrnZ9K2UVElVSnDBJcjQltK4ImkxwvLFdbOTsU2/g553B7P7aige8QjkPg1+JFamBp/taWNFsH3fWR+SD55Vc++O5CLzHhWn/ppKDoAtW9FSoHUA+kJrlyKQ1OLSFeieQwv3HGYFclHoAa0qkAhEUhQ5Um9hUxUKfK82kkapVhOSHHOLU8ZZlqsH55hN1uPIofpmgNjWY4gthUmaUCauWr+SrMbfV3sIUA75c62YGMc5KtJYybaIrxVYYjVtEVz/IxMfJJWREhdq2uSgzeQzrDCBlCxw0P01z9I0vXDZuP/S3//Rszc39cm1ap2/7+Do5X/wiFoclrufo6/pXzitq4843/lWdGdPk8dWKa9UjG76lxdO/WRxUidqP6Sp1hoDxkPnPnxhbHbPsELtD/l//k5M7zI2VGmrNZ0610cfVXl87iqZPP7Yn4xfvv0MWYcNiKeZzcjXk1E+1KYIoEFhiQhaFLNpFDZwKqFSE/qIsbP+UEJ6i2NMaJGGSZeMGOlPilUlBf0h5cmRv0ZO9BI+QlYivhzucT45Pg9K2HWcyoBLapM9Mwqn2REfB9CktC6/Jh26GYXqc16/2KwboO/cOEd/94hOo7wmrZQwcvk1hU579LjiLZXb4K58W848dPjwqor+zapKtE+uWn1PbdOgf3S7Sn73r+iTW1dfczrpnSOrC2TsgkMAjUQDflxY59HB5y/ukFrv4l8xv0K9bZpKOmEdZsHsWFcEl3OgWdgdkktW+GKSkM/vQOstE5t0OoQikg4yn1sqcBI/Z3WgVVWlHk6MYduT76uRtuwYMzjddNIeHtGKi753n+JO+h9ySUUmg9KqefNV0Ynl1RG+7HvsK9+f76uo+IpKTl9+sfX3MvHjQuV3LIOkgvlXqhrqH9spXEMPHCKHIIMey5BQsriSkB2LYSNi2DBx1WZBRrZjtrIdJLKR4qUQ8AC1hdTgkZPqtnK9juxpZyTClsPFXnOK2LfPvTK388rIzHL0WMP559BC4X94YaK7Xj4xpPpdOzMikr70bDRTxP7/AORzlvV42mNgZGBgYJRa8PGwLU88v81XBnkOBhA4F6TcAaP/H//XxRHJHgnkcjAwgUQBXKAMLwAAeNpjYGRgYI/8l8TAwHHk//H/JzgiGYAiKOAlAKEQB2Z42m2TTWhTQRSFT+bn5SHhLYqIUAtCJSISSgkiJQRBpNQQdFOkhlCki1KKvzViUEREJIgEKUIoMWjxB0FcPbJwUYqIGMSFutAsI7gQsVCQbqTI89zRSCx98HFm7ryZO3PPjFrBIfR8sVuAWkZHp9AwD7GfnPIOI2fvYzzWRkNN4ybJ6zSmODYdC3FCvXZaUOvRGmNZ8o7MkjNkz18VzhGZt6AMrgvSJnWypocw6N3BhD2LLTaF0F5C0fMQmsekwn6H/QRCVUJbV5G1c2iZHQjjRYQS96Ywab6gJWqTHMsiY55jwLbxiGv6fhKB3UV8+OYXJniOeY1ohVpk/gc6ybOXsNsEXKeMhl5Cnpozw8irEP1mG9JmDjWVwA3lRy3GG2w/9eZRkzjJmVkq5+gR1HQZB9Q6UoxfMdvR5+1EYHwMsB3oEGPMmyKSv8D8F7u1Z7tK9pEKcf8YDxe4t4BnG1VLmNRN98+C1N7FSthKz8bEE/UE4+QYY28kty1grxrCVfYrjF/WCe6viboNMeNoYpS1T7m6b0L8dPRVvHA+9KBK0VuueY+6Sn54R5Hu+rAR7uua80W86EW8oGemg2VX903wKjyveDH8PyoR/WT971I/kM/mJI7882EjrAv1oPOiF3rhPKP6r5hrlXede+K55C706WdA/DjQVXWeb+QTGfkDvlPL1BmO0YsuXHuR92KR7yJDioL6hgwRlfv20b5HQeaqCqqkLusyPmhfcp8B27d5516g/zdWitM+eNpjYGDQgcM2hmOMZ5jeMG9iSWLpYjnC8oc1iXUJ6zs2HjYXtiS2Q+xs7FUcYhwpHM84Izg7uHS4lnH94y7insa9g/sOTw5vEO8UPi6+Er49fD/49fg38b8S4BDwEJgncERQTjBB8JAQj1CD0DPhJcJXRCRE/ERuiSqJJon2iB4QvSbGJ+YiFiPWJC4h3iT+TCJM4oykhpSb1ASpG9Im0l3SS2QkZNJk9slqyE6RvSU3QZ5BPki+Q6FO4Zgig6KekoNSlHKOChsQxqlKqW5Qc1LbpXZPfY76F40jmmGaGzRvaH7TOqT1QNtGu0v7i06NzhJdFl0P3Trdc3oCeil6u/SjDMQMmQwnGD4wMjHqM5YwXmNiY7LDNMV0kxmDWYTZPXMOczPzIvMrFk4WJyytLDdY6Vids66wnmWjZVNnc83WzPaQnYhdkj2b/QaHGEcBxztOJ5zXuXS4qrlucnNwu+E+xf2Y+w8PM49VnjaeJ7zMvJZ4K3hv84nw2eXr4LvKT8Svw1/Hv8b/XkBWwJ/ATUEWQVlB23DAI0GXgh4E/QgWCA4LnhV8LyQm5FZoROiEMC4gdAqrCKsI1wvfFn4oQiWiCwCr/JuZAAEAAADpAGMABQAAAAAAAgABAAIAFgAAAQABewAAAAB42tVWTY/TZhAe70LJLgWpUoV6QMja06YN2WwLEgonVLQSEqIIENzaJraTWJvEwXY23RXqqeeeEL+CA0d+AYIrP4Lf0BPimeed10k2pWV7QKoix+PX8/XMPDOJiHwlb2VdglMbIsHXIiYHUsOTk9fkfHDR5HV5EHxr8in5Jvjd5NNyN3hm8hc4f2fyGfk1eG9yTVprP5u8IZfW/jR58/TLtecmn5VWLTb5S4lrT00+F/xR+8vk83Jl84nJr+XC5guT30hr85X8KJlM5FBySaUvAykllG2JpI7799KSXVyXTdrFWRe6IbQO5S4sh9KRscQ4uS1T2cdTIUd4uonvVBK80XuEkxnuJfyHcg/nBa5cDqgRyh48jRn5DjyMcBrKFjx2cJZBatK/+kmgV5jVlJHVT0jPanVfbkEzlJ+ASXUXfS97aODkIa0LnGfU3UUkvXxkzbSPOIoyX8G8iPg43jbjOS/hMT/tqrK7H9X5+8xackWu4+kRK1hSZyzfWVYpzrS+mWEvIE2hoZh9nMvH4szjq3WIJ61ljrtWdkSdffrs/YeuN09s8W9vV7Mt6NnxKa2y1Ar08CYiK3pkVYoslLsxq6dsHxuTUtZ4zqEptEfGLD8DnvmPWBONOkM1u8zVeVn2m3/CTGwvsTxkTIdG+b+Yx1aV5WKv65yMW2R3SfwJbV2NImaqddBuO+yar+uFq4xyxM3bBFJJ3pTw06ksIjKwx5gR342BUPVzsjPnXLvIbWZZ0u+A7BuyMlohZVMoj3GWMo4idExTvBPLVaNvcVsMbH6nVX0d/i78xraDEvmN0brQKmk1jxmzRhOiPVxCmtmuU3+K0zNe8yr+Mbabmb51V3t9RNzahQfGnohaBd9G5l9rlbHCOWuVEXODbzp2FlUz6ep+wPxTYBvS7zJHp7CcMI/IGKjeFNMB33s9tS1tU/QYf0SM84lIGTOEfodvNbdDzpab14Q++hVnFOsNY9zAOOR3tuIYWS6+mgXtE26R1VkdIl7Gd7pr9o2/CdHHxod5JDfR/qRjW93vhBkr8fH59pPcsAhJVVFlTZ+707E3xonLZMypCFm7IbOdWW3cbOh+zRfydHK8xIiC3E+xLXJGcr9afmOUZN6Q0fyWXe1dsdTdOeYOc0vYJT+ZzsvM+qneGsbq1Lg071zJnJyde5qywlMi8cz13ShMqwNWOu6US1zxnc04OWNa6HQMiGOC/bCDz4yfpu3p+W9Dk7tmBI2T6h/fvAXOFnfvLyu7d+ez/e/ZPjGa+v/q39IqwgJ2WtUJN0CTFkPcM+7OHUTbg/f6Ci8+zU7/+3Q5jy5PzaLF38oxESWwD/G5hquF77ZcRRfbuK5Wnf3hA4W7A/x42m3RR2xTQRDG8f8kjp04vffQe3vvOU6h29im994JJLENIcXBQGgB0atASNxAtAsgIKELBBwA0ZsoAg6c6eIAXMHhLTfm8tO3qx2NZonib/1uYBX/q48gURItFqKxEIMVG7HEYSeeBBJJIpkUUkkjnQwyySKbHHLJI58CCimiHe3pQEc60ZkudKUb3elBT3rRmz70pR8aOgYOinFSQilllNOfAQxkEIMZwlBcuBmGBy8+hjOCkYxiNGMYyzjGM4GJTGIyU5jKNKYzg5nMYjZzmMs85rOAConhGJvYzHUO8IEt7GEnBznBcbGyg3dsZL/YJJbdEsc2bvFe7BziJD/5wS+Ocpr73OUMC1nEXip5SBX3eMBTHvGYJ5E9VfOCZzznLH6+s4/XvOQVAT7zle0sJsgSllJDLYepo4F6QjQSZhnLWcEnVkZ+oInVrGUNVzhCM+tYzwa+8I2rtNDKNd7wVuIlQRIlSZIlRVIlTdIlQzIlS7Ilh3Oc5xKXuc0FLnKHrZySXG5wU/Ikn11SIIVSZPXXNNUHdFu4NqhpmseMDjO6NKXH1G0o1b3bqSxv04i8V+pKQ+lQFiudyhJlqbJM+a+fy1RXfXXdXh30h0NVlRWNAfPI8Jk6fRZvOFTXFrxqDp/bnCOi8QezQJylAAAAeNpFzLkSwVAYxfHcRBbZN0vDREFzG4YHUEhmTBqjSmbiNdQaJc/yRaX1ZBxcV3d+p/jf2fNM7KKUZO2qlrFr3RYGryYU1iWle4xTPSKDN5VCWpaTxjfUyfKbdlD5B/obDwED0BsBEzDWAhZgLgS6gDX/gpEtsg5eO1R5qxVH0AWdvqQHuitJH/RmkgHoTyVDMBhKRmA4kIzB6F9OwHgrmYLJUrIHpuMfa0r5C0qYViQAAVIscwkAAA==) format('woff'),
     url('lato-reg-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}

Fonts.css

Now this does add considerable weight to your css, and its shear length is a bit unruly. So, I opt to create a separate fonts.css file, including base64 @font-face for all my fonts and custom icon font set. Obviously, I load this file after all other css assets. Of course, you can further minimize size by gzipping, but I've yet to experience any performance or Flash of Unstyled Content (FOUC) issues.

Droppin' Weights

Trying to rock a font with several weights to handle normal and bold? Font Squirrel's css file will include the font-face referencing each file uniquely i.e.; Lato-Bold, Lato-Normal, meaning you'd then have to reference them as such in your styles. Kinda weak. Instead, if you're encoding 2 weights of a font, keep both font-family declarations the same, i.e.; font-family: Lato; and just declare the logical font-weights, say font-weight:400 for normal and font-weight:600 for bold. This approach is much easier to maintain.

What About Icon Fonts?

No worries - base64 gotcha covered. For icon fonts, go check IcoMoon's top notch web app. It's a lifesaver. You can build a font icon set from various free sets, or upload your own custom svgs. Like FontSquirrel, it also has a base64 option. So, while on the download screen, select Preferences, then Base64 Encode & Embed Fonts in CSS. Snatch the base64 and icon font classes from the download's css file, paste it in your fonts.css file (or wherever), and boo bam. (ps - make sure to hold on to the download's included svg file, in case you want to make changes to your icon font. Just gotta upload it back into IcoMoon).
blogimg-base64-iconmoon

Other Base64 Options

Of course, you can getcha base64 on in a number of places. While lacking in UI swagger, Opinionated Geek's encode tool works very well. But, it's not going to give you a neat little download with premade css. No worries, just copy the encode and paste it into yourself. Watch your formatting is all. Here's a little starter file, for otf fonts in a few weights. Paste your encode where directed, and keep the font-family names all the same.

/*----------------------------------------
  Family: [family name]
  Weights: 400=reg, 600=Medium, 900=Bold
=========================================*/

@font-face {
font-family:"font-name";
src:url(data:font/opentype;base64,[paste-here-baby]);
font-style:normal;
font-weight:400;
}

@font-face {
font-family:"font-name";
src:url(data:font/opentype;base64,[paste-here-baby]);
font-style:normal;
font-weight:600;
}

@font-face {
font-family:"font-name";
src:url(data:font/opentype;base64,[paste-here-baby]);
font-style:normal;
font-weight:900;
}

References

Show Comments 14 +

14 Responses to “Font-Face and Base64 Data-URI”

  1. GOOD article, i was looking for this! But i’m still INTERESTED in a list of pros and cons. 🙂

    Reply
    • What’s up NN,

      The Pros:
      In my experience, base64 is the most dependable way to ensure that your fonts will get through, which is a pretty big pro. Just linking to a font file on the server has failed on me for a number of reasons – crazy firewalls, strange Wp stuff, lame browsers, etc. Base 64’n it seems to be the most dependable method – especially if you’re using a icon font (and you should, they’re dope).

      The Cons:
      The character set is big and ugly, and so a tad unwieldy. But that’s why I throw all my fonts and icon font set into a separate fonts.css file. Makes things more manageable, as I then never muck with that file again and even reuse it project to project. Of course, that’s another request, and yep, the base64 will be a bit bigger than a woff. Base64 encoded data is generally about 1.4 times larger than its original datapiece. But, you can always gzip that badboy (perhaps that’s material for my next post). Yet to have any issues with speed (even on mobile) or FOUC using base64 though.

      I suppose another concern – not all encodings are created equally. So, make sure to start with a solid file. FontSquirrel’s build in base64 option seems to be on point, as does IcoMoon’s.

      Reply
  2. JE Carter II

    Thanks for the references to the tools and the good tutorial! Between Font Squirrel, IcoMoon and another: http://everythingfonts.com/ttf-to-svg I was able to resurrect a corrupt font file that I could not upload to Font Squirrel and get it converted to Base64 and some other formats for browser compatibility.

    Font Squirrel would complain that the file was corrupt and could not be imported. To resolve this, I converted the ttf to svg, then imported the svg into IcoMoon and exported it as .ttf again. Then FontSquirrel accepted it as valid and I was able to proceed from there.
    I was however unable to get the base64 version alone to work with what was provided by Font Squirrel. It could be something locally or an error on my part, but I wanted to convey an accurate impression of field tested success rates.

    Reply
    • Thanks for reading and sharing.

      If your files are legit, you shouldn’t have a problem with Font Squirrel – has been pretty smooth in my experience. I know they also have a banned list from foundry’s who’ve requested removal – like Hoefler & Co. But that doesn’t sound like your problem.

      Here’s a potential solution – I updated the post with another base64 encoder and process. If you can get a otf (heard about issues with ttf), encode it Here, then use the newly provided base64 starter template above to paste the badboy in. That should work. If not, more than happy to help if you wanna shoot me the file?

      Reply
  3. Hey. This tut is great! Two small things.
    Its hard to tell in your example, using Opinionated Geeks tool, that the brackets in your data uri don’t need to be included..
    and also using the Opinionated Geeks tool sometimes adds two == characters in the Encoded string that need to be removed to get the data uri to work correctly..
    great write up! thx

    Reply
    • Thanks for reading. You are correct – the brackets should not be included. Sorry if that wasn’t clear. Haven’t had a problem with the 2 “==”. Whatever works.

      Reply

Leave a Reply

Let's Make Contact

Ready to start your monocle dropping project?

Back

Build something awesome with us!

SoSweet! Creative is located at 65 Schley Ave. in sunny Pittsburgh, PA 15205. Our phone number is 412-506-7311 and you can reach us with the form below or by emailing directly to hello@sosweetcreative.com


9+8=?