diff --git a/examples/AllThreeExample.png b/examples/AllThreeExample.png new file mode 100644 index 0000000..eb90b08 Binary files /dev/null and b/examples/AllThreeExample.png differ diff --git a/examples/CompressExample.jpg b/examples/CompressExample.jpg new file mode 100644 index 0000000..e0ae1c2 Binary files /dev/null and b/examples/CompressExample.jpg differ diff --git a/examples/CryptExample.gif b/examples/CryptExample.gif new file mode 100644 index 0000000..61299eb Binary files /dev/null and b/examples/CryptExample.gif differ diff --git a/examples/ForkExample.txt b/examples/ForkExample.txt new file mode 100644 index 0000000..f35d23f --- /dev/null +++ b/examples/ForkExample.txt @@ -0,0 +1,301 @@ + + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sed lectus eu ipsum sollicitudin mollis id ac mi. Vestibulum risus ante, ultrices quis elementum ut, gravida ac arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in commodo eros. Morbi feugiat, nisi eget finibus dictum, libero magna aliquet purus, sed accumsan ante nisi ac eros. Phasellus dictum mi sit amet fringilla lacinia. Donec convallis orci dapibus, auctor diam sit amet, dignissim elit. Curabitur lacus velit, rhoncus sit amet accumsan eget, iaculis a turpis. Curabitur pellentesque metus congue neque ultrices maximus. Integer iaculis vehicula elit auctor ultricies. Nunc vel leo quis magna ultricies luctus sagittis ac leo. + +Mauris auctor id enim vitae egestas. Praesent quis elit id erat iaculis vulputate eu in eros. Praesent at dignissim nisi. Nulla sagittis pharetra aliquam. Nunc pretium nulla sit amet massa fringilla hendrerit. In mi massa, accumsan eget sollicitudin mollis, commodo eget erat. Mauris cursus nisl in ipsum commodo, non elementum ipsum auctor. Aliquam erat volutpat. Donec pulvinar massa non congue accumsan. Phasellus nisi nisl, dictum ut feugiat eget, ullamcorper a lacus. Cras bibendum risus arcu, at pharetra purus egestas eu. + +Curabitur pellentesque consectetur lectus eu faucibus. Nulla nec facilisis mauris. Quisque quis lectus fringilla nibh dictum eleifend. Duis interdum mi vitae magna ultrices, vitae sollicitudin elit aliquam. In ac nunc non odio egestas vestibulum nec quis neque. Etiam faucibus ligula quis mi scelerisque cursus. Phasellus hendrerit erat et tortor laoreet mollis. Fusce auctor orci non nunc fermentum, vehicula venenatis dolor malesuada. Ut suscipit mi id sapien faucibus, eu elementum est ullamcorper. Ut ac metus eu lacus elementum maximus. + +Phasellus aliquet gravida urna vitae lobortis. Curabitur vitae nulla nibh. Integer risus eros, dictum at mollis in, scelerisque at nisi. Fusce pulvinar tellus sed risus consequat, non vestibulum orci rhoncus. Sed nec ex et purus lobortis tempor at ac purus. Sed rutrum quis felis et volutpat. Maecenas rutrum ipsum ac tincidunt volutpat. Nam fermentum ultricies diam sit amet elementum. Nulla id porttitor lorem, id laoreet justo. Ut mollis, leo ut dictum hendrerit, libero dolor pellentesque nisi, et lacinia tellus velit eget nibh. Cras eu suscipit metus. Ut quis porta magna. Vestibulum scelerisque leo leo, sit amet tincidunt nisi condimentum eget. + +Ut libero elit, dictum sed enim eget, tempor commodo diam. Mauris maximus augue at laoreet dictum. In consequat mi id dolor accumsan convallis. In commodo nec diam a tempus. Vestibulum mi justo, luctus at turpis nec, aliquam venenatis leo. Curabitur non erat euismod, sollicitudin arcu non, laoreet ligula. Quisque fringilla risus eu arcu mollis mattis. Duis tincidunt mattis tortor eget sodales. Nullam vitae bibendum nulla. Nunc tincidunt cursus tincidunt. Phasellus commodo sodales augue. Morbi justo neque, suscipit quis dui nec, finibus rutrum ipsum. In ut feugiat felis. + +Vivamus quis libero pellentesque, dapibus diam quis, imperdiet eros. Nulla facilisi. Nulla elementum sed metus quis scelerisque. Sed lacus dolor, lacinia nec ipsum ac, volutpat tempor ligula. Curabitur elit libero, finibus ut pulvinar sit amet, pellentesque quis tortor. Sed interdum accumsan nunc sit amet cursus. Nam aliquet augue vitae metus varius iaculis. Cras faucibus turpis a mi dapibus, blandit efficitur erat pretium. Ut ut tellus accumsan, lacinia ipsum eget, ultricies augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin quis dolor venenatis, ultrices nisl a, gravida dolor. Vivamus a malesuada arcu, at ullamcorper tortor. Vivamus ornare porttitor velit, vel luctus diam viverra non. In nec rutrum velit. Sed et mi aliquam, blandit sem at, posuere tellus. Aenean nisi diam, vulputate et egestas ut, hendrerit a justo. + +Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse egestas, nunc aliquet tempor sollicitudin, diam urna cursus quam, id iaculis nunc orci et arcu. Quisque a augue consequat, scelerisque est eu, auctor turpis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Etiam nec massa quam. Mauris pulvinar tempus enim accumsan sollicitudin. Fusce varius ac sapien et consequat. Nulla fringilla vehicula lectus, eget vestibulum lacus. Aenean dolor nisi, suscipit sed ligula id, faucibus egestas ex. Fusce egestas ante eget sagittis mattis. Etiam venenatis mauris in lacus semper, eu varius est placerat. Proin imperdiet vitae dui vel tempus. Aliquam eu euismod ex. Sed in urna ut turpis bibendum iaculis. + +Fusce sed massa at tellus pharetra commodo eu non leo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ac augue at sapien congue scelerisque et consequat mauris. Phasellus sagittis elementum lobortis. Sed sit amet orci non ex mollis varius a at diam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nunc massa, pharetra sed metus eget, fringilla luctus elit. Morbi rutrum tellus vel justo lobortis elementum. Praesent scelerisque magna sed mi efficitur suscipit. Fusce consequat tellus a lorem vehicula mattis. Cras erat nunc, lobortis nec volutpat quis, elementum ut purus. Vivamus fermentum mattis nunc in iaculis. Aenean eu velit tincidunt, eleifend libero vel, volutpat felis. Etiam luctus justo a sagittis scelerisque. Duis porttitor id erat sit amet scelerisque. Praesent leo lorem, ullamcorper nec tortor in, lacinia efficitur orci. + +Sed accumsan faucibus dolor, non lacinia quam consequat ut. Sed id suscipit nunc. Pellentesque eget lorem tempus, suscipit metus id, imperdiet nisl. Nam erat arcu, dapibus sed augue sed, rutrum congue lorem. Duis feugiat luctus magna at suscipit. Curabitur mollis eros quis velit mollis condimentum. Proin ut metus at sapien faucibus porttitor sed nec orci. Quisque dictum vulputate erat, eu scelerisque ipsum ultrices sit amet. Nunc condimentum neque et metus mattis auctor. Pellentesque et tellus at turpis facilisis pulvinar ut vitae sapien. Duis lobortis auctor est. Pellentesque nisi ipsum, vulputate vel massa elementum, viverra facilisis justo. Curabitur sit amet tellus odio. Proin imperdiet lacus lacus, at scelerisque elit accumsan ut. Suspendisse tincidunt massa vel elit elementum vehicula. Donec a nisl lectus. + +Curabitur et pharetra massa. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus eu felis nunc. Nulla ligula dui, rutrum vitae nisi eget, viverra fringilla felis. Suspendisse pretium blandit gravida. Sed non felis laoreet, malesuada lectus nec, posuere dui. Nullam blandit magna vitae ligula pulvinar facilisis. Integer malesuada eget est quis suscipit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec tempus lectus vitae leo ornare, ac euismod nisl luctus. Pellentesque eget purus ac tellus accumsan rhoncus quis a lectus. Maecenas ullamcorper libero id justo sodales, vitae posuere ligula volutpat. Nulla facilisi. Cras pharetra vestibulum orci vitae porta. Pellentesque lacinia pretium nibh, at dictum mauris lacinia sed. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + +Integer in sem dolor. In condimentum at nulla at mollis. Cras rutrum sapien enim, in blandit nisi consequat at. Mauris eu lorem ante. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc in velit bibendum, dapibus elit vitae, venenatis purus. Cras dignissim mi sed lacus venenatis, eu lobortis eros pharetra. Praesent lacinia ultrices luctus. Nunc pellentesque faucibus massa eu luctus. Nam luctus nibh id tortor finibus, sed dignissim nisl bibendum. Quisque id sem ut nisi lacinia tempus non convallis risus. Vivamus sollicitudin ligula at fermentum posuere. Mauris imperdiet ullamcorper nisl sit amet posuere. Ut aliquam in eros eu laoreet. + +Donec malesuada eros eget scelerisque convallis. Aliquam imperdiet vel justo vel dignissim. Sed nibh metus, aliquam a dui et, finibus pellentesque est. Quisque ut imperdiet tortor, vitae porta dolor. Nulla molestie iaculis nisi at posuere. Cras tincidunt enim vel posuere dignissim. Nam dapibus ligula vel tempor porta. Ut pellentesque at enim vitae accumsan. Nullam pellentesque orci et neque ultricies eleifend. In malesuada eros augue. Etiam vehicula libero ut malesuada eleifend. Mauris molestie sagittis elit, eget aliquam arcu fringilla sed. Duis eu feugiat libero. Maecenas id magna vitae mi tristique tincidunt. + +Etiam accumsan, nibh ut sodales sollicitudin, eros tortor elementum tellus, viverra commodo arcu nisl vitae lacus. Aliquam vitae elementum turpis. Etiam vel sapien nisl. Duis eu ipsum rhoncus, accumsan est nec, sodales sapien. Phasellus aliquam aliquam erat eu semper. Maecenas gravida libero ut ex condimentum lacinia. Morbi eu consequat mi. Nullam mi nulla, pellentesque tincidunt risus quis, sodales pellentesque dolor. Fusce vitae mi vel purus varius accumsan. + +Morbi viverra dolor quis facilisis iaculis. In at consequat est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas ut mi nec ipsum vestibulum blandit sed ultrices dui. Praesent ultrices nunc at eros gravida, sed mollis ante gravida. Mauris faucibus, ipsum sit amet dictum venenatis, mauris dui cursus erat, nec dictum lorem orci eget ipsum. Sed nulla arcu, posuere eu mollis eu, mollis sed elit. Ut hendrerit laoreet tortor. Integer convallis leo ut mattis mattis. + +Pellentesque est enim, gravida vel maximus a, finibus at nisi. Praesent mattis blandit rutrum. Quisque lorem leo, auctor ut laoreet id, fringilla sit amet ipsum. Curabitur eu aliquam sem. Curabitur at lorem a lectus scelerisque condimentum a quis augue. Etiam auctor sapien ut ultrices porttitor. Maecenas cursus in neque ut imperdiet. Etiam blandit nisl eget erat mollis, eu elementum arcu maximus. Nunc quam nisi, blandit eget iaculis a, efficitur non odio. + +Morbi in tellus nec dui consectetur consectetur. Nunc arcu magna, tristique eu eleifend sed, commodo sed justo. Duis dapibus risus ante, ut pharetra justo ullamcorper id. Suspendisse a viverra ligula, quis venenatis diam. Donec ultricies massa at nisi molestie ullamcorper. Donec ac mi vel justo luctus sollicitudin. Nunc tristique nunc vitae elit ornare, at aliquam ipsum scelerisque. Ut nec ante vitae libero euismod porttitor at vel quam. Ut lobortis leo et lorem hendrerit, nec luctus nibh molestie. Duis aliquam eros id dolor vulputate, et efficitur dui imperdiet. Nam nec ligula nunc. Donec eu mi a felis malesuada vehicula sed sit amet lacus. Duis viverra neque feugiat massa condimentum convallis. Suspendisse potenti. + +Quisque nibh mauris, scelerisque sed massa sed, ultricies fermentum neque. Fusce posuere nibh et auctor lobortis. Nam vestibulum pretium tortor, sed vestibulum lectus aliquam vitae. Cras mattis eros at orci rhoncus feugiat. Nam euismod lobortis tortor, at ornare ipsum fermentum sit amet. Sed ligula ligula, tincidunt non quam eu, vehicula aliquet sem. Vestibulum ornare nisl non maximus accumsan. Pellentesque enim justo, iaculis vitae lorem a, volutpat fermentum sapien. Aenean at lacus vestibulum, maximus nisi eget, auctor metus. Donec vulputate mollis ante, ac tempus magna maximus et. In turpis orci, suscipit vitae maximus et, posuere et nisl. Nam posuere ante nibh, et convallis velit vestibulum a. Fusce ut aliquam nibh. Proin tincidunt finibus viverra. Pellentesque pharetra diam sed libero molestie accumsan. Nam mattis mauris at rhoncus placerat. + +Praesent elit tortor, volutpat vel ex eget, fringilla fermentum erat. Proin tempor egestas purus, et vestibulum eros tristique a. Vivamus enim dolor, sagittis sed blandit a, vulputate id metus. Sed ac porta turpis, sed pulvinar felis. Vivamus mi nisi, sollicitudin at mauris sed, euismod vehicula augue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam ipsum arcu, ullamcorper id bibendum rutrum, eleifend eu diam. Aliquam molestie lorem ac tempor congue. Aliquam tincidunt elementum eros sed hendrerit. Vestibulum sed massa nisi. Nullam dictum, dui ac ultricies luctus, arcu nunc vestibulum ligula, ac congue justo ligula id ipsum. Mauris vitae porttitor tellus. Aliquam eu viverra velit. Sed pharetra rutrum libero nec lacinia. Praesent pulvinar nulla ac velit placerat placerat. Fusce ac eros non elit porttitor tristique et a mi. + +Etiam placerat risus eget metus posuere fringilla. Fusce eu arcu tortor. Donec eget libero auctor, aliquet erat a, accumsan elit. Morbi vel lectus ac lectus posuere ornare. Phasellus porta ante id nulla mattis, sit amet dictum diam tristique. Pellentesque a varius est, a mollis ante. Nullam id ipsum facilisis tortor ultrices pulvinar non faucibus dolor. Aliquam ut ullamcorper eros. Vestibulum suscipit diam vitae orci maximus, nec cursus nisl faucibus. Nullam condimentum diam sit amet tortor tincidunt sagittis. Sed in mi vitae nulla porta rutrum quis eu dolor. Aliquam posuere aliquet nunc. Duis laoreet elementum urna, vitae vulputate nisl finibus et. Fusce sed lorem in risus sodales molestie. Nunc placerat dapibus turpis, nec aliquam est vestibulum semper. Suspendisse venenatis ex nec tortor interdum luctus. + +Nulla facilisi. Morbi id laoreet eros, ac malesuada urna. Donec urna orci, ullamcorper eu malesuada sit amet, dignissim viverra tellus. Cras sed neque purus. Nulla luctus metus ex, in maximus neque tempor ut. Donec id felis id turpis convallis posuere vitae at metus. Morbi porttitor ultrices neque quis lacinia. Integer at turpis congue, molestie eros quis, laoreet turpis. Aliquam aliquam tincidunt ligula et feugiat. Vivamus fringilla rhoncus diam ut commodo. Cras gravida, mauris in condimentum rhoncus, mi massa egestas lorem, at facilisis magna sem at lacus. Cras eget nunc at est volutpat venenatis sit amet sit amet elit. Integer purus sem, feugiat vitae ex congue, molestie vehicula metus. In pellentesque, ante vel vulputate dignissim, ipsum lectus posuere sapien, sed ullamcorper nulla nisl sed ante. Cras lacus orci, tempor nec enim id, bibendum vestibulum orci. Pellentesque gravida volutpat felis, sit amet aliquet erat dignissim vitae. + +Morbi dapibus lectus est, sed viverra turpis sollicitudin vitae. Interdum et malesuada fames ac ante ipsum primis in faucibus. In maximus finibus arcu. Praesent vehicula, tortor eget semper egestas, augue nulla sollicitudin felis, congue pretium lectus urna nec lorem. Proin ac sem varius, facilisis diam et, tempor mauris. Praesent aliquet dolor id ex consequat, in congue enim venenatis. Integer eros turpis, pellentesque ac ornare vitae, luctus at velit. In interdum, est ac posuere tempus, mi diam venenatis lectus, non pharetra mi nunc sit amet felis. Aliquam a blandit risus. Proin pulvinar convallis sapien, eu aliquam libero placerat vel. Proin accumsan vestibulum risus. Aenean sed felis lorem. Aliquam semper elit vel lorem facilisis iaculis. Mauris vel diam et velit hendrerit ullamcorper. Sed a sodales est. + +Nulla iaculis, sem a aliquam vulputate, elit ligula cursus justo, vitae eleifend arcu purus id orci. Cras id imperdiet tortor. Proin venenatis, dui id auctor molestie, enim nibh aliquet erat, non placerat nisi lacus a urna. Praesent vitae est nulla. Nam id sagittis ex. Suspendisse gravida metus a tempor iaculis. Suspendisse fermentum gravida justo ac sagittis. Proin odio sapien, scelerisque a quam vitae, luctus accumsan ligula. + +Nunc maximus lorem ut ligula sodales congue. Nulla turpis tortor, elementum eu sollicitudin sit amet, tincidunt vel sem. Phasellus pulvinar vehicula hendrerit. Ut vitae nisi augue. Cras sed semper magna. Donec lobortis ut elit a accumsan. Nulla vulputate arcu eget felis tristique, sed elementum tortor condimentum. Phasellus in sem eu quam faucibus lacinia. Duis pellentesque bibendum lacus, quis pharetra urna aliquet nec. Aenean a accumsan ligula, et ullamcorper velit. Fusce condimentum enim eu ipsum auctor lacinia. Quisque tempus volutpat elementum. Nunc sit amet auctor enim. Vestibulum dignissim ut est sed eleifend. + +Morbi tempus arcu id enim vehicula, vitae eleifend quam eleifend. Nulla facilisi. Nam et molestie nibh. Sed porta, dolor id rutrum laoreet, augue metus posuere lacus, non efficitur massa tortor facilisis ipsum. Donec ex diam, elementum eu tellus ac, laoreet tempus lectus. Ut gravida mauris metus, non aliquam mauris interdum quis. Nam lectus nibh, ultrices vel enim non, accumsan faucibus tellus. Cras nec felis sit amet lacus blandit tristique venenatis vel tortor. Nam hendrerit ultrices bibendum. Sed in vestibulum nunc. Nullam mollis libero in enim dignissim, in ultrices nunc fringilla. Donec pretium ante turpis, ut accumsan nisi vehicula nec. Nam id ex eget nulla iaculis faucibus vitae eu lectus. + +Quisque vulputate in risus eu tristique. Aliquam aliquam commodo libero quis efficitur. Sed faucibus feugiat interdum. Nullam vitae gravida ante. Nam et erat ligula. Sed vitae turpis mi. Praesent sit amet sapien in nisl viverra rutrum a et ligula. Mauris tincidunt ligula eget nisi viverra, ut viverra ipsum blandit. Nam ornare ipsum ut accumsan faucibus. Nullam euismod ac ante at pulvinar. Sed pretium porttitor nibh, vitae dignissim nisl scelerisque eu. + +Nullam vestibulum, tellus quis pretium dignissim, orci orci viverra quam, sit amet laoreet nunc justo vel tortor. Integer ut lacus hendrerit, accumsan lectus id, sagittis lorem. Aenean maximus lectus lacus, id ultricies ligula porttitor ultrices. Donec sollicitudin tempor nulla non rutrum. Nulla venenatis nisi malesuada, placerat felis sed, tempor turpis. Donec rutrum quis massa dictum mattis. Praesent semper, urna sed consectetur pharetra, nunc ipsum suscipit massa, a pharetra velit nunc volutpat magna. Fusce eget arcu mi. Duis a lacus eget neque accumsan viverra vitae sit amet nunc. + +Duis eleifend sollicitudin orci, at finibus dolor semper condimentum. Sed laoreet ligula ut maximus dictum. Cras a enim a nunc rutrum semper. Mauris eu gravida lacus. Praesent sapien sapien, molestie quis justo lobortis, egestas varius orci. Pellentesque vulputate risus et semper placerat. Sed hendrerit mauris eros, et varius quam gravida nec. Pellentesque et turpis sit amet enim congue cursus eget sit amet nibh. Donec eget feugiat sem. Praesent mattis purus et felis viverra, et vestibulum neque aliquet. Praesent in augue malesuada, faucibus sapien sit amet, cursus diam. Nulla eleifend tincidunt euismod. In auctor magna vitae risus consequat, ut vestibulum enim vehicula. Nam vel lectus non tortor accumsan pretium sed vitae velit. + +Etiam consequat ante in nisl euismod, in mollis justo hendrerit. Etiam augue sapien, elementum vitae dolor a, ullamcorper gravida lacus. Mauris tincidunt, libero eu consectetur elementum, erat arcu rhoncus dui, ut lobortis lacus erat aliquam sem. Mauris iaculis turpis sed orci ornare, vel mollis magna molestie. Nunc condimentum mattis sem eu pellentesque. Nullam ut nisl non arcu ornare efficitur. Sed vitae eros justo. Sed tristique luctus commodo. Duis sem lorem, egestas sit amet velit vitae, ullamcorper consectetur nisi. Praesent vehicula massa urna, vel vulputate neque gravida eu. Suspendisse lacinia faucibus neque, at hendrerit libero scelerisque in. Aliquam id nunc ultricies, pretium mauris nec, sodales diam. Nulla quis scelerisque enim. Nunc mattis dui sodales urna ullamcorper pretium. Pellentesque sit amet purus imperdiet, sodales lacus pulvinar, facilisis eros. + +Donec id risus id massa facilisis commodo id non orci. Vestibulum massa libero, bibendum vulputate sollicitudin at, pharetra vitae lorem. Duis sed imperdiet nisl, id hendrerit lacus. Donec a sapien quis ante congue congue. Maecenas vel turpis tristique, condimentum ligula et, feugiat tortor. Ut eu neque semper elit suscipit maximus at ut arcu. Cras non lectus vulputate, placerat nisl vitae, mattis massa. Pellentesque sit amet laoreet tellus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sit amet tristique ipsum. Suspendisse imperdiet varius placerat. Donec congue at neque a pellentesque. Curabitur tincidunt venenatis nisi in vestibulum. Curabitur eget massa malesuada, pulvinar odio a, fringilla elit. Aliquam placerat finibus ultricies. + +Ut pellentesque urna a nibh vulputate eleifend. In quis egestas nibh. Donec ultrices dolor ut ipsum pulvinar viverra. Phasellus sollicitudin, libero vel molestie interdum, risus sem tincidunt enim, ac sagittis ligula magna ac magna. Donec ac mauris ac felis imperdiet volutpat et ac ipsum. Vestibulum lacinia consequat venenatis. Nullam laoreet vitae nibh sit amet hendrerit. Suspendisse vel convallis tellus. + +Ut at urna efficitur, efficitur risus in, lobortis dui. Aliquam tincidunt, eros eu tincidunt hendrerit, libero ex lacinia dui, et imperdiet velit nunc vel arcu. Praesent pharetra malesuada arcu, a ultricies ante accumsan id. Pellentesque mi leo, mattis quis enim quis, efficitur molestie sem. Fusce in dapibus urna. Quisque vel maximus mauris. Vivamus convallis placerat pretium. Aenean cursus eros non volutpat facilisis. + +Quisque tempus lacinia ligula, at egestas eros mollis at. Praesent porta condimentum nisi, quis venenatis elit consectetur in. Vestibulum risus purus, convallis eget velit eget, tempus accumsan metus. Curabitur sollicitudin, mi sit amet porta dictum, enim orci dapibus neque, vitae commodo risus nisl vel lectus. Quisque a urna porta lorem porttitor imperdiet sed id risus. Morbi fringilla quis est sit amet rutrum. Aliquam erat volutpat. Curabitur sed sapien ex. Donec ac bibendum elit, et pulvinar odio. Aliquam finibus risus in tortor pellentesque, vel ultricies lorem imperdiet. Integer venenatis vitae massa interdum varius. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur eu ante pretium sem pulvinar scelerisque aliquam a quam. Donec enim magna, elementum in orci sit amet, consectetur luctus lectus. + +Cras fringilla libero gravida, aliquam ipsum a, fringilla felis. Nunc nec hendrerit est. Quisque eleifend lorem nec lorem pellentesque lacinia. Proin at enim diam. Aenean eros orci, facilisis vitae ullamcorper at, hendrerit vel lacus. Sed ipsum metus, facilisis varius sollicitudin sit amet, euismod in lorem. Pellentesque tristique enim sed lectus maximus auctor. Aliquam sit amet metus laoreet, vehicula elit vitae, vehicula justo. Donec a pharetra sapien, nec gravida massa. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean porta vitae est eget lacinia. Vivamus non dolor libero. Maecenas neque leo, rhoncus vel interdum non, semper varius leo. Suspendisse potenti. Proin lectus sapien, interdum non fermentum vel, lacinia eget lorem. Curabitur maximus malesuada viverra. + +Curabitur rutrum faucibus justo eu porta. Quisque quis tincidunt turpis, quis tincidunt libero. Sed non tellus vitae orci sodales tincidunt. Pellentesque nec risus augue. Nunc quis congue dui. Fusce vehicula vitae quam quis aliquet. Sed aliquet neque non pretium semper. Sed laoreet interdum ipsum, a interdum ex pretium id. Etiam fermentum mattis nibh, non lacinia risus dapibus at. Nulla maximus ultrices ligula, vitae ornare purus ultrices sed. Nam auctor dapibus dignissim. Pellentesque varius convallis magna, eu iaculis quam dictum in. Suspendisse dui sapien, dapibus vitae porta in, fringilla at mi. Ut gravida facilisis tellus, quis pretium magna varius non. Proin id faucibus felis. Vestibulum lectus sem, aliquet eu tincidunt nec, semper et dolor. + +In egestas urna eu sapien ullamcorper, eget euismod turpis imperdiet. Nullam ut lorem dolor. Curabitur eu pretium nisl. Nam purus ipsum, auctor in venenatis nec, aliquam ac neque. Suspendisse posuere sapien non lorem sagittis ullamcorper. Donec in eros dui. Etiam non mi a odio rhoncus suscipit. Etiam consectetur enim et quam placerat tempus. Maecenas tempus, felis et tincidunt elementum, felis leo porta diam, a ultrices quam sapien et dolor. Aliquam facilisis ornare tincidunt. Integer at arcu non sapien posuere eleifend et ut ligula. Nam dapibus lacinia metus, ac malesuada risus tincidunt eu. Mauris ornare, ante accumsan pretium semper, est urna consectetur leo, malesuada commodo lacus sapien id ante. Praesent eu sem consequat, aliquam metus vitae, porttitor ipsum. + +In enim sem, pulvinar eget semper ut, malesuada vitae nulla. Nunc vel accumsan dui. Sed fermentum posuere odio ac lacinia. Curabitur pulvinar orci a turpis ultrices, ultrices consectetur est tincidunt. Phasellus eget fermentum nulla. Aenean ut erat maximus, hendrerit augue quis, ornare velit. Donec ut velit quis tellus sagittis posuere id vel orci. Mauris a nibh libero. Curabitur pretium tristique condimentum. Ut fringilla, sapien eget ornare finibus, orci odio lobortis sem, sed auctor dui augue eu nunc. Aliquam nulla augue, pulvinar eget leo in, semper sodales augue. Suspendisse venenatis magna quis varius maximus. + +Etiam cursus, augue quis imperdiet pretium, felis velit convallis justo, et rhoncus leo velit in diam. Aliquam nunc arcu, dapibus quis orci non, vulputate congue lorem. Aliquam tincidunt, velit eu rhoncus tempus, lacus leo ultrices mi, et lacinia mauris neque nec mauris. Nulla vehicula vestibulum aliquet. Vestibulum ligula nulla, efficitur nec lectus in, interdum tempor sapien. Donec neque mauris, dapibus eu quam vel, tempus posuere orci. Pellentesque sed gravida lectus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse convallis, mauris ut blandit tincidunt, eros augue consectetur risus, vel consequat felis purus aliquet sapien. Praesent tristique neque id leo luctus, ut feugiat mi aliquet. Mauris accumsan mollis magna a sollicitudin. + +Aenean tellus quam, blandit eget ex eu, gravida dapibus ligula. Cras non felis at orci malesuada aliquam ac a est. Aliquam porta finibus vestibulum. Donec non diam ullamcorper, interdum sem ullamcorper, finibus arcu. Suspendisse eu pretium justo. Proin eget tincidunt quam. Integer dictum urna non urna facilisis convallis. Praesent gravida elit nec mauris faucibus, eu semper massa maximus. Vestibulum lectus elit, sodales quis imperdiet nec, vulputate at risus. Donec feugiat mi eros, sed euismod lorem pharetra pretium. Vestibulum nec leo consequat, feugiat sapien blandit, tempus nunc. Nam dignissim purus at tortor sodales, in lobortis diam luctus. Nam condimentum aliquet iaculis. Phasellus et tincidunt diam. In hac habitasse platea dictumst. Maecenas interdum sodales aliquam. + +Vivamus vitae urna id mi efficitur tempor. Proin vitae congue ligula. Nunc eros tellus, congue a velit id, consequat tempor neque. Integer lobortis nibh lobortis eleifend tempus. Sed eu tellus dictum, hendrerit lorem id, consectetur urna. Morbi vel tempus lorem, at facilisis sem. Proin lacus felis, imperdiet id venenatis eu, posuere ac ante. + +Vivamus hendrerit metus diam, eu dignissim nulla feugiat in. Vestibulum vel pellentesque sapien. Mauris et mauris vel tortor iaculis ultrices. Cras eu tincidunt felis. Aenean nec diam aliquet, scelerisque dolor a, accumsan est. Integer a volutpat ipsum, ac fringilla velit. Pellentesque ullamcorper risus risus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus auctor suscipit purus vel ornare. Integer sollicitudin consequat tincidunt. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras tellus tellus, semper nec turpis id, tincidunt facilisis nunc. Morbi et facilisis dui. Aliquam et ligula accumsan, faucibus enim sed, sodales est. + +Aliquam mattis lacus eget elementum mattis. Vivamus ultrices, felis at consectetur fringilla, lacus turpis mattis odio, quis rhoncus mauris dolor vel lectus. Praesent sit amet diam eu purus condimentum viverra. Praesent commodo aliquet diam. Etiam eu turpis pulvinar eros vulputate eleifend nec et diam. Mauris a semper arcu. Sed quis nisl quam. Phasellus eu sapien in risus scelerisque rutrum. Nam vitae pharetra nisi. Quisque congue magna et nunc tempus posuere. + +Phasellus arcu nisi, fermentum non lacinia sed, bibendum id dui. Donec vestibulum, nibh a tincidunt consequat, libero nunc molestie sapien, vitae pellentesque risus quam sed massa. In in mi arcu. Donec nisl lacus, egestas et sapien eu, vehicula blandit libero. Donec ac elit semper, semper ligula vel, imperdiet neque. Praesent ut finibus metus. Vivamus nec porta augue, ac pulvinar nulla. Vivamus in suscipit metus. Quisque facilisis a urna in pharetra. In eleifend fermentum viverra. Suspendisse vel rhoncus lectus, nec elementum magna. Curabitur porta leo eu pulvinar pellentesque. In eleifend neque semper, molestie leo et, fringilla lectus. + +Nam venenatis congue ligula. Vestibulum libero diam, egestas vel ullamcorper sit amet, pellentesque efficitur orci. Pellentesque ligula neque, vehicula ac ipsum at, placerat tincidunt leo. Aliquam fermentum magna at mattis congue. Mauris vestibulum velit eu augue ultrices accumsan. Nam a neque a neque fermentum lacinia sit amet sed sem. Duis iaculis nisi interdum tristique mattis. Integer fringilla urna sapien, at elementum elit pellentesque sed. Mauris justo urna, dignissim ut nunc a, pharetra vehicula dui. Vivamus maximus elit orci, et tempor urna blandit sit amet. Ut sollicitudin purus augue, quis hendrerit lectus cursus vitae. Morbi condimentum dui sagittis, efficitur justo eu, auctor ex. Quisque ut placerat diam, vitae dapibus velit. + +Curabitur malesuada sollicitudin eros, in varius justo pretium at. Nunc rutrum urna nec maximus dictum. Duis turpis leo, accumsan at blandit vitae, viverra sit amet libero. Nullam erat neque, iaculis vitae dui eu, sodales ullamcorper lorem. Nulla vel malesuada magna. Vestibulum vitae ornare mauris, ut accumsan risus. In tempor quis tellus id fringilla. Nullam ac odio non metus tristique feugiat. Aenean laoreet massa vel aliquam aliquam. Praesent ut est leo. Phasellus euismod eros vitae velit facilisis molestie. Cras fermentum commodo pulvinar. Cras et tincidunt mi, sit amet eleifend est. Cras tempus orci ut ipsum semper feugiat. Vestibulum porta vulputate risus id hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +Morbi interdum fermentum tellus, vitae ultrices lectus condimentum vitae. Vestibulum aliquet mi congue finibus sodales. Sed sollicitudin mauris sapien, eget accumsan libero finibus vel. Vestibulum id ligula ut nunc vehicula hendrerit. Duis ac egestas arcu. Duis hendrerit est non eros maximus suscipit. Sed euismod orci non odio varius accumsan. Praesent sagittis luctus lorem, vel varius tellus viverra id. Praesent ac pulvinar dui. Vestibulum faucibus, dui quis scelerisque aliquet, velit mi bibendum nisi, quis vestibulum erat risus ac quam. Donec dui lorem, varius at pretium et, ullamcorper bibendum velit. Phasellus fringilla in est eget auctor. Vestibulum tincidunt sapien lorem, in vulputate dui accumsan id. Nulla pharetra, eros sed ornare viverra, nunc felis sagittis arcu, a imperdiet lectus diam congue turpis. Ut nec nibh nec nisi laoreet pretium a nec lacus. Proin risus tortor, mattis at tellus accumsan, cursus sagittis ipsum. + +Fusce bibendum, urna eget luctus eleifend, ante nibh tincidunt arcu, non vestibulum nibh erat eu dui. Quisque vitae ultrices est. In hac habitasse platea dictumst. Donec lacinia vulputate tortor id viverra. Suspendisse faucibus non lorem in tempus. Aenean elementum ipsum non velit pretium, sit amet pharetra ipsum tempus. Cras diam est, ullamcorper sit amet risus tincidunt, condimentum egestas libero. Phasellus a porttitor dolor. Vivamus eu rutrum quam, id lacinia enim. Nam sed rhoncus ligula, non consectetur ipsum. Phasellus felis massa, bibendum ac sollicitudin non, lobortis vitae quam. + +Sed ornare libero sed risus efficitur pulvinar. Cras luctus quam vitae sagittis accumsan. Nunc lobortis, sem ut dictum accumsan, massa lectus tempus libero, nec fringilla libero mi non ligula. Cras sodales sapien nec vestibulum rhoncus. Sed imperdiet venenatis diam, ac posuere purus condimentum ut. Cras viverra blandit bibendum. Vestibulum elementum leo non libero tempor ornare. Phasellus sed bibendum est. Etiam nec lobortis odio, eu feugiat mi. Vestibulum gravida viverra dolor vitae consectetur. Etiam placerat sem sed sapien efficitur, sit amet faucibus tellus blandit. Nullam dapibus faucibus aliquet. + +Aliquam pulvinar, est non pellentesque elementum, risus elit faucibus felis, in euismod orci est vel urna. Donec eleifend tortor massa, id finibus enim hendrerit sit amet. Etiam id arcu at odio commodo cursus eu at dolor. Proin tristique cursus nunc a hendrerit. Vestibulum tincidunt, dolor eget pretium accumsan, turpis tellus molestie ipsum, ac dictum mauris ipsum non mi. Nulla elementum quam ligula, id ultrices nisi ultricies id. Morbi odio mi, aliquam vitae nulla eu, aliquam tincidunt magna. Nullam dignissim ligula et placerat porttitor. Duis ex diam, ultricies eu venenatis sed, sodales sed dui. Phasellus euismod, enim quis cursus semper, sem urna pulvinar nisl, nec finibus eros leo a felis. Curabitur at semper urna, ut tincidunt magna. Duis condimentum massa vitae ligula tincidunt gravida. Sed finibus viverra commodo. Suspendisse iaculis, nulla sed aliquet auctor, orci nibh luctus mi, eget malesuada sem tortor vel dolor. Mauris blandit non mi in dignissim. Aliquam hendrerit non lectus ut euismod. + +Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut condimentum quis elit vitae mollis. Integer efficitur dapibus eleifend. Vestibulum blandit auctor urna, sed venenatis metus malesuada sit amet. Nullam varius vitae urna ac ultricies. Proin ac tortor in mi feugiat porta. Etiam quis lectus vehicula, dapibus libero ut, feugiat nulla. Vestibulum euismod, lectus eu tincidunt consequat, lacus nisi mattis purus, at tempus lectus mauris in lectus. Aliquam erat volutpat. Maecenas elementum fringilla sapien id faucibus. In eu ante eu lectus gravida sollicitudin. Sed convallis enim ex, consectetur cursus magna accumsan venenatis. Proin ullamcorper augue rhoncus aliquet tincidunt. + +Donec ullamcorper blandit tempus. Vestibulum interdum est vel lorem mollis porttitor. Sed maximus et odio vitae imperdiet. Nam tincidunt nisl nec nulla condimentum tristique. Suspendisse gravida diam sit amet lacinia euismod. Donec neque nulla, gravida at nisl ultricies, euismod euismod ante. Pellentesque magna nibh, tincidunt id laoreet vitae, vulputate ac erat. In consectetur ante augue. Maecenas orci sem, suscipit sed elementum eu, gravida eget lacus. Aenean commodo tellus nisi, non tristique nisl vulputate at. + +Morbi ultrices cursus mauris, at tincidunt sapien sollicitudin vitae. Fusce dignissim laoreet eros nec finibus. Nulla convallis ut orci imperdiet pretium. Nullam sed velit justo. Aliquam commodo nec sapien vel viverra. Morbi fringilla tellus sed ullamcorper suscipit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In commodo arcu tellus, ut imperdiet urna facilisis at. + +Curabitur quis rhoncus nunc, dapibus vestibulum eros. Nullam laoreet vestibulum orci non dictum. Nam venenatis ac nisl quis dignissim. Aenean blandit neque ipsum, ac commodo ligula consequat eu. Curabitur porta tincidunt pretium. Mauris mollis orci vel lectus pharetra, ut fringilla odio laoreet. Nam non justo mattis lorem semper vulputate. Vestibulum imperdiet mi quis leo convallis feugiat. Praesent consectetur, urna non volutpat porta, neque magna tempus libero, sit amet sagittis purus risus vel arcu. Aenean euismod vehicula turpis in iaculis. Cras ac mauris justo. + +Nulla luctus, ante sit amet interdum laoreet, dolor lectus feugiat ligula, et interdum lectus sem nec arcu. Phasellus et eros metus. Aliquam a enim eu neque faucibus mollis. Nam consequat purus metus, eget lacinia lacus auctor id. Sed blandit tempus libero. Vivamus pharetra finibus nisi, eu vestibulum est imperdiet scelerisque. Aenean tempus odio non elit laoreet volutpat. Ut sed ligula mauris. + +Vivamus bibendum vel diam vitae varius. Suspendisse tincidunt lorem in enim condimentum, in varius sapien gravida. Phasellus et arcu a lacus tristique ultrices. Cras dapibus nulla non augue aliquam maximus. Maecenas ut malesuada ipsum. Donec vel lorem nunc. Proin sed luctus quam. Sed quis velit ultricies, finibus nisl vitae, dictum ante. Curabitur euismod lectus quis tempor efficitur. Quisque accumsan libero viverra, fringilla sem non, ultrices mauris. Mauris purus purus, imperdiet molestie quam quis, suscipit congue est. Quisque scelerisque interdum lectus sed pulvinar. Vivamus hendrerit odio ac quam mattis, quis scelerisque nulla varius. Curabitur sed tellus sed quam suscipit venenatis vitae ac elit. + +Mauris risus elit, porttitor ac massa consequat, bibendum lobortis odio. Vestibulum eget ex ac sem porttitor finibus eget vel nisi. Donec accumsan libero sit amet nibh suscipit, viverra semper odio fringilla. Fusce urna ligula, gravida vitae nulla sit amet, rutrum luctus tellus. Phasellus consequat ligula eget mollis ultricies. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras quis mollis sapien. Praesent ultrices turpis a velit sodales congue. Praesent pretium sollicitudin nunc sit amet pharetra. Integer a consequat risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Ut aliquet diam pretium nisi euismod, ut tempus nisl aliquet. Sed non justo at sem semper tincidunt. Donec interdum accumsan nunc, gravida vulputate mauris blandit vitae. Suspendisse ut leo massa. Proin a suscipit odio, euismod luctus dui. Donec id tortor felis. In mollis elit a feugiat volutpat. Etiam metus orci, porttitor vel est eu, pellentesque blandit nisi. Duis eget purus a dolor faucibus aliquet tincidunt pellentesque orci. Interdum et malesuada fames ac ante ipsum primis in faucibus. + +Maecenas velit magna, lobortis quis elit id, malesuada elementum justo. Suspendisse et suscipit orci, pretium imperdiet dui. Quisque eget quam at purus pharetra efficitur. Ut id ligula eu tellus condimentum volutpat ac eget elit. Donec sit amet imperdiet sem, ac viverra odio. Pellentesque aliquam orci sit amet dui dapibus, et posuere risus vulputate. Curabitur in eros quis mi dapibus suscipit eget vel sapien. Quisque bibendum ante non commodo pretium. In sit amet risus felis. Duis iaculis vestibulum est a maximus. Curabitur non felis nec mauris cursus sagittis nec ac nisi. Vivamus dictum a nisl id pharetra. Nunc sed ante aliquam, scelerisque tortor ut, pharetra velit. Nulla in tempus purus. Pellentesque aliquam posuere nisl sed pellentesque. + +Sed tincidunt arcu ornare, congue nulla in, fermentum lorem. Nunc porttitor fermentum magna id ullamcorper. Sed eu lacinia enim. Nam aliquam facilisis nisl vel volutpat. Nullam vestibulum, odio quis pretium condimentum, nisi dolor iaculis lacus, quis ullamcorper ligula lorem eu ante. Morbi porttitor ante sed neque mollis finibus et blandit quam. Nullam sit amet risus eu enim blandit feugiat. Aliquam nec ante ac felis fringilla luctus ut nec diam. Maecenas non nibh vel metus facilisis pulvinar id eget orci. Donec nunc eros, venenatis sed mauris ut, porta vulputate nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec nec lacinia turpis. + +Etiam eu convallis purus. Etiam gravida congue interdum. Mauris sollicitudin, lacus eu accumsan auctor, felis diam lobortis erat, at ullamcorper odio orci eu arcu. Integer et finibus quam, a luctus purus. Mauris accumsan sapien in pharetra iaculis. Sed auctor nunc nibh, vel accumsan nibh bibendum et. Proin cursus erat sed nulla dignissim malesuada. Phasellus sed lacus justo. Etiam id enim in metus volutpat tempor a pellentesque tortor. Maecenas pretium leo nec nunc dapibus ullamcorper. In at sapien arcu. Ut sagittis sem ut sollicitudin commodo. Proin vitae egestas turpis. Aliquam erat volutpat. Vestibulum lectus elit, convallis vel lobortis id, consequat ac neque. Nulla facilisi. + +Pellentesque felis nunc, auctor vitae consectetur sit amet, maximus id sem. Nullam iaculis quis turpis non commodo. Mauris nec justo ut nulla viverra porttitor et non erat. Praesent et quam dui. Mauris feugiat dignissim sapien eget hendrerit. Morbi tincidunt dignissim ex a ullamcorper. Vivamus pulvinar nisi a dui ultricies suscipit. Phasellus sit amet neque metus. Cras commodo venenatis lorem id tincidunt. Sed euismod ullamcorper auctor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque posuere pulvinar euismod. Cras eget tempor nisi. Duis tempus urna vitae blandit condimentum. In in justo quis nisl aliquam malesuada vitae at eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +Nunc ut magna vitae sapien posuere posuere at ac risus. Fusce convallis nulla eget odio luctus, ac condimentum elit pretium. Aliquam tristique tincidunt magna. Nam nulla metus, hendrerit ac risus quis, egestas hendrerit dui. Aenean semper, justo vel lobortis molestie, massa quam vulputate ex, et tristique dolor massa sed eros. In viverra magna sit amet orci laoreet, quis maximus enim porta. Morbi consectetur tortor eget ligula eleifend fermentum. Suspendisse diam ligula, lacinia nec vulputate in, mattis sed felis. Suspendisse placerat magna massa. Nam elementum diam accumsan felis facilisis posuere nec vitae elit. + +Morbi at ligula iaculis tellus feugiat facilisis. Maecenas congue, mauris vitae vestibulum hendrerit, lacus dui gravida lectus, eget accumsan lectus lacus in orci. Nunc ligula magna, molestie porttitor orci vitae, imperdiet elementum magna. Duis vestibulum quam a suscipit convallis. Etiam in facilisis massa. Suspendisse viverra, tortor eget placerat viverra, sapien urna convallis nibh, id volutpat massa nunc at nibh. Duis euismod non nulla et fringilla. Nulla a nibh ullamcorper, fringilla ex sit amet, posuere turpis. In non leo varius, convallis ex in, varius libero. Integer ipsum justo, mattis et venenatis eu, malesuada at diam. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse potenti. Maecenas non feugiat metus. + +Nunc in lacus quis sapien sodales placerat. Pellentesque ullamcorper ante ut metus pulvinar vehicula. Pellentesque mollis condimentum ligula vitae fringilla. Nunc posuere cursus orci viverra egestas. Quisque molestie lacus turpis, quis sagittis ipsum molestie vel. Integer fermentum magna nec orci porttitor, nec lacinia orci dapibus. Aliquam quam neque, lacinia pellentesque libero et, malesuada sodales lectus. Cras velit urna, euismod ut turpis vitae, viverra rutrum magna. Fusce ornare pulvinar sagittis. Donec massa mi, consectetur sit amet augue sed, mollis vestibulum urna. Mauris accumsan tincidunt lacus et consequat. + +In dapibus lacus porttitor sapien pretium ornare. Proin vel est hendrerit, feugiat velit sed, vestibulum odio. Maecenas a dolor faucibus turpis tincidunt commodo quis quis risus. Sed condimentum, neque sit amet volutpat maximus, velit tellus ultricies mi, vitae fermentum leo risus ac nisl. Phasellus luctus molestie arcu ac rhoncus. Suspendisse vel erat elementum, cursus arcu quis, molestie libero. Nullam magna mi, consequat eget ipsum quis, porta dictum est. In turpis arcu, pretium a mi ut, commodo molestie risus. Phasellus a malesuada velit, at vestibulum arcu. Donec posuere orci erat, eget fermentum ex tincidunt non. Donec tempor tellus a nisl vestibulum, non euismod augue placerat. Etiam malesuada, magna ut convallis scelerisque, tellus felis laoreet ligula, a eleifend ex ligula nec purus. Donec eu vulputate velit, a sagittis ligula. Nulla vitae est accumsan eros dignissim hendrerit. In malesuada vel purus ut tempor. Phasellus quis posuere neque. + +Morbi non nisi convallis, ornare mauris a, porttitor mi. Suspendisse et velit sapien. Nullam facilisis pretium nisl, eget eleifend nisi posuere eleifend. Sed volutpat pulvinar lectus, ut maximus purus pretium vel. Pellentesque vel mi in risus dignissim vestibulum eleifend id leo. Integer vehicula et mi non sodales. Donec in purus sed tellus sodales semper vitae in lectus. Suspendisse bibendum elementum volutpat. Suspendisse aliquet, orci at imperdiet pulvinar, purus eros imperdiet tortor, at ultrices leo enim non nisi. Donec enim orci, ullamcorper ut mi in, aliquet bibendum tortor. Aliquam mauris leo, malesuada cursus egestas et, iaculis sit amet arcu. Nulla facilisi. Nullam elit lorem, finibus vitae ex faucibus, sollicitudin efficitur metus. Donec sagittis leo vel gravida suscipit. + +Nulla at mauris rutrum, efficitur nisi ac, facilisis sem. Nam interdum gravida rutrum. Phasellus egestas vulputate odio non ultrices. Ut placerat fringilla sapien, sodales auctor felis convallis eget. Phasellus rutrum mattis diam, et lacinia purus mattis nec. Praesent ac metus quis ex vulputate imperdiet a in nibh. Duis congue, augue quis semper dignissim, ante magna congue enim, vitae viverra odio ante nec velit. Aliquam vel augue eget tortor bibendum luctus. Curabitur tincidunt lacus porttitor mauris laoreet facilisis. Nulla consequat volutpat libero, eget euismod justo. Integer scelerisque fringilla magna, at sagittis lorem semper nec. Aenean hendrerit pellentesque accumsan. Mauris nec tempus nulla, id pretium erat. Sed nibh enim, lacinia eget placerat condimentum, fringilla eu orci. Quisque ut accumsan risus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Integer sodales tempor blandit. Nullam et facilisis quam, sit amet euismod felis. Aliquam viverra justo at elit consequat, ut consequat urna commodo. Nulla ac dui nisl. In pharetra non est eu ullamcorper. Ut ultricies dolor nec tempor lacinia. Vestibulum eleifend nec augue et sodales. Cras porta placerat lorem, sit amet accumsan orci placerat ac. Vivamus et quam vestibulum, hendrerit ante non, egestas justo. Mauris maximus purus id tortor tristique cursus. Vestibulum commodo nisi vestibulum metus convallis euismod. Ut at iaculis nulla. Nullam ipsum orci, vehicula nec ultricies ut, tempor ut erat. Pellentesque rhoncus ornare odio porta convallis. + +Phasellus hendrerit suscipit turpis id pellentesque. Nulla non cursus velit. Praesent cursus massa odio, in feugiat sapien elementum nec. Phasellus malesuada nulla ac iaculis blandit. Sed venenatis orci consequat metus suscipit tristique. Phasellus imperdiet, libero id lobortis finibus, leo lorem pharetra enim, quis euismod eros magna eget tellus. Mauris gravida vitae mauris ut aliquet. Maecenas sed eros lacus. Vestibulum facilisis nisi quis nunc ullamcorper molestie. + +Cras ultrices augue a turpis aliquam, id ultrices arcu accumsan. Vivamus rutrum placerat condimentum. Quisque in consectetur turpis, et porttitor nulla. Curabitur posuere luctus odio a ornare. Mauris id aliquet tellus, at cursus ante. Suspendisse rutrum urna eu malesuada hendrerit. Vivamus rhoncus mi sit amet justo elementum suscipit. Fusce euismod nisi augue, quis scelerisque nisl lacinia at. + +Mauris vel ex ut magna rutrum elementum id sed turpis. Mauris mattis massa ex, a cursus nisi vulputate eget. Sed tempor consequat odio, a cursus enim vehicula id. Suspendisse lacus ex, mattis tempor placerat vitae, fringilla sit amet orci. In ac ligula leo. Pellentesque dictum augue vitae nulla maximus, et placerat tellus euismod. Vivamus tristique non ipsum quis facilisis. Vivamus rutrum sapien eget turpis lacinia scelerisque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vestibulum congue metus a suscipit consequat. Duis tristique lorem in augue gravida, quis porttitor nisi tristique. Ut porta dolor et lacus venenatis dictum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus non augue justo. + +In hac habitasse platea dictumst. Ut molestie, augue in sagittis fermentum, nibh metus bibendum mi, eget placerat est est vitae ex. Sed non risus id tortor dictum sodales nec vitae purus. Proin bibendum quis lorem nec sodales. Nulla quis purus tempus, pretium felis vel, commodo mi. Praesent iaculis lectus vel augue fermentum, sit amet sollicitudin ligula ornare. Nullam iaculis, ipsum vel pulvinar maximus, quam mi pulvinar sem, ac cursus mauris nulla eu augue. + +Aliquam erat volutpat. Etiam blandit diam ut est porta porta. Pellentesque ac risus sit amet eros dictum rhoncus. Aliquam luctus molestie est, non vestibulum magna iaculis sit amet. Duis vitae est congue leo gravida tincidunt vel nec orci. Curabitur eget ante vel sapien posuere facilisis id quis orci. Etiam maximus mauris tincidunt ante convallis suscipit. Sed ut bibendum elit, at mollis risus. Pellentesque eget leo nisi. Sed vestibulum sodales nisl sit amet tincidunt. Morbi porttitor tincidunt ante, in ornare mauris porttitor non. Maecenas sit amet imperdiet magna. Maecenas est neque, euismod sed felis non, dapibus malesuada neque. Ut at volutpat lectus, in molestie enim. Mauris est tortor, feugiat in dignissim vel, ultrices vitae est. In auctor dolor nec libero pharetra tincidunt. + +Mauris dignissim, sem vitae posuere porttitor, mauris metus sollicitudin ex, sed scelerisque ipsum velit eu ex. Maecenas eleifend porta augue at porta. Ut ut viverra nisl. Nam consequat iaculis erat sed mattis. Fusce sagittis tellus in justo porta, nec interdum dolor semper. Nulla vel tellus dignissim arcu congue consectetur a finibus orci. Suspendisse porta, diam eu laoreet tempor, risus mauris vulputate nisi, vel mollis orci ipsum quis augue. Sed dolor justo, tristique vel dignissim eget, blandit eget ex. Cras sodales efficitur dui, id aliquam nisl rutrum nec. Nunc dapibus mauris nec massa faucibus lobortis. Aenean vestibulum, enim et dictum iaculis, elit velit tristique massa, a rutrum nisl enim vel dui. Integer sed ultricies nisi, at imperdiet quam. + +Aliquam lorem tortor, venenatis et efficitur id, volutpat id eros. Curabitur sodales tristique arcu nec faucibus. Vestibulum vel mauris eu neque laoreet hendrerit. Vivamus porta mauris lectus, ac ultrices nisi egestas non. Praesent lacinia molestie purus vitae rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur a dolor vel lorem condimentum ornare. Donec ac sapien elit. Vivamus nec massa ante. Ut bibendum ex in arcu mattis finibus. Donec vulputate lacus non est venenatis, in finibus augue vestibulum. Donec efficitur sem vitae nulla luctus, ac interdum tellus porta. Donec arcu ante, faucibus nec iaculis ut, placerat eu leo. In a imperdiet tellus. Quisque ultrices ac enim vel luctus. Vivamus sagittis urna tincidunt, iaculis mi nec, aliquet lorem. + +Sed sed condimentum lacus, non elementum ipsum. Mauris ultricies lorem nisi, sed ornare libero iaculis sed. Aliquam a scelerisque tellus, ut cursus est. Nullam vel tristique dui. Nullam sit amet ornare ligula. Integer at condimentum mauris. Duis fringilla mauris ante, sit amet sollicitudin enim semper quis. Aliquam condimentum, erat ac tempus gravida, justo est sollicitudin tellus, eu pellentesque nulla nibh eget nibh. Phasellus erat massa, egestas sit amet ornare in, vulputate non dolor. + +Sed quam velit, vehicula ac consequat id, laoreet ut dolor. Pellentesque vel massa tellus. Aenean ornare luctus consectetur. Cras ac sapien eget magna tristique vehicula. Sed tellus diam, consectetur sit amet porta nec, vestibulum eget eros. Morbi scelerisque, nisl porttitor facilisis dapibus, nisl risus lobortis lectus, nec consequat diam turpis eget risus. Fusce sit amet lobortis neque. Vivamus malesuada augue non ex ultrices, gravida egestas ex hendrerit. + +Vestibulum a vehicula arcu. Proin faucibus, enim ac cursus consectetur, tellus purus malesuada tortor, vitae rutrum purus risus sed sem. Aenean quis scelerisque eros. Donec mi libero, molestie eu augue vel, rhoncus porttitor est. Cras dictum viverra tincidunt. Maecenas auctor vitae diam sit amet lacinia. Maecenas aliquet faucibus erat nec viverra. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris maximus tristique erat, sit amet dictum mi feugiat eu. In faucibus suscipit commodo. Mauris eleifend odio nibh, non aliquet erat sodales imperdiet. + +Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus vehicula ipsum eu arcu semper, ut feugiat erat lobortis. Duis eu ligula tempus massa imperdiet viverra. Nulla quis quam quis leo consequat maximus sit amet sit amet augue. Ut dapibus sodales magna vel efficitur. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque sit amet lectus vel eros lacinia ultrices. Etiam urna magna, gravida nec congue non, tempor ut ex. + +Curabitur vitae vulputate nulla, eget scelerisque tortor. In porta vitae odio et tempor. Suspendisse tempor dolor sed dolor rutrum imperdiet. Maecenas auctor at orci quis porta. Fusce feugiat sagittis urna non faucibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras vestibulum fermentum sapien vitae luctus. Integer interdum, neque vitae ultrices suscipit, leo elit placerat quam, in elementum nulla massa et ipsum. Curabitur ornare mi tellus, lobortis dignissim metus vulputate et. Aenean et erat gravida, malesuada ipsum quis, blandit sapien. + +Nam id tristique tellus. Integer cursus dignissim erat eget maximus. Maecenas hendrerit enim risus, quis lobortis ex interdum in. Sed dignissim aliquet fringilla. Praesent eget turpis eu mi maximus gravida et at tellus. Etiam in orci at nisi placerat aliquam. Duis suscipit vitae lectus in malesuada. + +Etiam neque elit, pulvinar nec elementum at, ultrices vel nisi. Ut dapibus varius pellentesque. Integer euismod efficitur mattis. Aenean sit amet maximus tellus. Morbi quis tortor lacus. Phasellus vehicula nunc et facilisis maximus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ac dui id arcu iaculis faucibus a in tellus. Duis egestas suscipit sem, vitae convallis turpis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Phasellus et lectus nisi. Sed interdum viverra erat id consectetur. Duis blandit odio ut massa ultrices luctus. Sed placerat vestibulum odio sit amet gravida. Pellentesque lacus sem, rutrum ac tincidunt a, iaculis eget augue. Nulla ex nibh, egestas vel tristique quis, egestas ac eros. Aliquam dictum aliquam sapien sit amet interdum. Nullam bibendum ligula non neque commodo ullamcorper. Phasellus vitae est risus. + +Aenean quis nunc facilisis, pharetra massa non, rutrum eros. In id tristique lacus. Vestibulum ut tincidunt augue, a tempus ligula. Vestibulum vestibulum, dolor porttitor sodales posuere, nibh mauris viverra quam, malesuada faucibus purus urna non urna. Suspendisse scelerisque diam a leo aliquam, vel semper purus gravida. Nunc auctor volutpat dignissim. Nunc hendrerit, arcu vel volutpat varius, sem dui porta turpis, non venenatis arcu lacus at tortor. Praesent suscipit massa nulla, sit amet pharetra risus ultricies sed. Pellentesque vestibulum risus eget tellus lacinia, sit amet condimentum est gravida. Praesent eu bibendum sem. In consectetur erat nec nisi fermentum volutpat. Vestibulum maximus enim blandit arcu venenatis, vitae iaculis turpis mattis. Donec ante ante, consequat suscipit lectus nec, sollicitudin mattis erat. Quisque placerat sem tellus, ac maximus dui gravida non. + +Vestibulum pretium ligula urna, sit amet auctor elit mattis sit amet. Donec a blandit nunc. In pulvinar malesuada dui vel varius. Maecenas vitae tellus urna. Nullam consectetur dolor ut leo facilisis, gravida vestibulum metus aliquam. Sed ultricies libero ac metus facilisis volutpat. Sed dolor tortor, tincidunt at lorem quis, congue elementum diam. + +Nulla ut faucibus mi. Praesent suscipit ipsum quam, varius aliquet odio mollis nec. Etiam nec nisi sollicitudin, dapibus nibh at, sagittis erat. Cras tempus mattis nisi. Donec nibh ligula, ullamcorper at eleifend et, cursus in magna. Nam ultricies purus quis varius finibus. Fusce ex justo, laoreet eget imperdiet id, convallis non dui. Vivamus rhoncus sapien eleifend leo gravida, id maximus lacus laoreet. Etiam eleifend turpis tempor interdum iaculis. + +Maecenas semper molestie massa. Vestibulum tincidunt vehicula risus, dignissim convallis orci viverra vitae. Maecenas quis nibh dictum, tempor lacus at, lacinia turpis. Cras suscipit fermentum interdum. Morbi rutrum mattis magna eu sodales. Phasellus aliquam molestie sapien, at dignissim lectus pharetra rutrum. Sed non enim ut tellus pharetra porttitor. Vivamus dictum lectus sed felis fringilla, sit amet iaculis turpis rutrum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer eu convallis ante. Nulla eros arcu, ultrices in suscipit sit amet, condimentum quis nulla. + +Proin vestibulum libero in ipsum cursus, vel molestie metus congue. Pellentesque pharetra risus in purus rutrum, at ullamcorper sapien finibus. Curabitur sem metus, tempus in tempus sit amet, lacinia eget metus. Nullam eget tincidunt metus. Aenean ac aliquet justo, ac vehicula ante. Phasellus sed facilisis est. Duis iaculis tincidunt arcu in posuere. Donec nec quam eleifend, scelerisque dui sit amet, dapibus turpis. Aliquam aliquet orci vitae turpis venenatis, ut placerat lectus finibus. + +Aliquam vel libero lacinia, venenatis augue ac, suscipit arcu. Sed massa nulla, rhoncus vel imperdiet eget, tristique vel enim. Ut ut libero vitae nisl lacinia sollicitudin at id purus. Nunc eu molestie elit, non faucibus sapien. Cras eget blandit tortor, eu auctor urna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed sagittis odio eu nulla tincidunt vehicula. Donec convallis, lorem eget rutrum aliquet, urna nisi aliquam massa, non condimentum mi lorem vitae neque. Aenean vel nisl et ex pharetra posuere id eget velit. + +Vestibulum ac ipsum ornare, mattis enim sed, suscipit sem. Donec ornare vitae lacus eu sollicitudin. Phasellus nec posuere lacus. Morbi id arcu ac velit gravida volutpat volutpat sit amet ligula. Integer facilisis ex vitae fermentum luctus. Proin interdum felis vel mollis aliquet. Aenean at metus velit. + +Mauris orci leo, molestie convallis fringilla in, porta id felis. Integer ut neque nibh. Sed bibendum dignissim eros a facilisis. Nunc malesuada, lacus sit amet blandit fermentum, erat mi ultricies enim, a ullamcorper nunc magna non massa. Nulla imperdiet quis tortor hendrerit eleifend. Donec sollicitudin id leo sed interdum. Nunc ac tincidunt ligula, sed efficitur eros. Sed sit amet erat neque. Nulla molestie dignissim lorem. Pellentesque tincidunt elit vitae purus aliquet eleifend. Suspendisse at quam ut arcu porta ornare. Etiam luctus ligula dapibus, sagittis erat et, cursus ipsum. Ut elementum tincidunt fringilla. + +Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In lobortis pretium lectus ut eleifend. Donec at iaculis nunc, vitae ultrices nunc. Proin hendrerit eros id metus tristique, eget rutrum est consequat. Nam porta ex odio, sit amet ultricies dolor ornare porttitor. Nullam sit amet interdum velit, eu sodales sapien. Pellentesque commodo quis mi sed blandit. Donec eget lacus ac ex pretium facilisis. Ut est turpis, suscipit at felis non, convallis euismod elit. + +Phasellus convallis ut turpis quis maximus. Mauris vitae fermentum velit. Praesent pellentesque ante eget ipsum scelerisque, non dictum risus sodales. Praesent lobortis, risus a pellentesque scelerisque, erat tellus ornare dui, sit amet molestie arcu purus in leo. Quisque eget sem consequat, hendrerit nulla vel, accumsan orci. Donec cursus scelerisque nisl sit amet luctus. Sed sollicitudin est ut metus ultrices, vitae euismod lectus sagittis. Vivamus et nisi eu velit eleifend pulvinar. + +Nunc eu commodo eros. Mauris gravida massa vel nibh euismod euismod. Pellentesque id odio at arcu volutpat fringilla vitae at risus. Nam semper dui a enim vulputate, non placerat mauris rhoncus. Vestibulum lobortis pretium tellus quis pellentesque. Aenean pretium augue eu risus suscipit tempor. Vivamus a nulla ultricies, congue est a, condimentum est. Suspendisse a diam sollicitudin ipsum dictum vehicula vitae tincidunt sapien. Pellentesque cursus, sapien in pretium ultricies, mauris metus sagittis neque, fermentum congue nunc velit sed turpis. Vestibulum tincidunt risus congue hendrerit porta. Cras in facilisis mi. Donec interdum nec massa quis tempor. Suspendisse potenti. + +Etiam nibh magna, rutrum eu nisi in, consectetur ullamcorper urna. Mauris eu arcu in magna varius tristique nec eu purus. Fusce dapibus neque magna, eu molestie ligula varius sed. Integer rhoncus accumsan sapien vel gravida. In auctor vel felis quis lobortis. Nulla eget quam leo. Donec non sodales neque. Vivamus ornare, orci ac vestibulum viverra, lorem arcu eleifend massa, eu ullamcorper purus nisl in mauris. Integer non libero at enim porttitor mattis in eget turpis. + +Praesent nec facilisis felis. Nam ut elementum est. Pellentesque efficitur nulla vel neque posuere, id mollis eros tincidunt. Morbi eu ullamcorper quam, sit amet congue diam. Vestibulum sit amet magna mollis urna lacinia ullamcorper eget id nunc. Nam suscipit sagittis tortor, quis gravida metus elementum vel. Integer vel urna a sapien semper rhoncus. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus nulla lacus, auctor vitae elit et, volutpat euismod dolor. Donec placerat faucibus ante, a mollis massa maximus in. Ut tempus dignissim metus at posuere. Nullam fermentum dui et ex vehicula rutrum. Vestibulum felis urna, semper eget risus suscipit, facilisis gravida diam. Nullam ut pulvinar ante, vel semper sem. Duis viverra velit sit amet sapien eleifend, eget euismod ante rhoncus. Vestibulum eleifend ut ligula sit amet venenatis. Fusce gravida consequat purus, sit amet pretium sem imperdiet id. + +Aliquam erat volutpat. Suspendisse erat augue, consectetur ac ex vel, pellentesque ultricies metus. Nullam dolor ligula, venenatis nec varius a, rutrum at arcu. Fusce a dapibus dolor. Maecenas ac felis in mi porta gravida eget eu lectus. Sed pharetra condimentum quam in pellentesque. Etiam eu enim tristique, dapibus nisi sit amet, facilisis dui. Phasellus id placerat orci. In varius metus ut scelerisque lacinia. Vivamus ultricies et tellus in accumsan. Sed imperdiet mauris urna, et efficitur augue bibendum quis. Morbi id odio purus. Nullam id tincidunt nunc. Nam rutrum rhoncus rhoncus. Vestibulum consequat fermentum urna et porta. + +Phasellus et luctus ex. Maecenas facilisis id tortor nec pulvinar. Suspendisse porttitor faucibus justo, quis malesuada lacus suscipit vitae. In hac habitasse platea dictumst. Duis posuere purus neque. Nunc hendrerit eros massa, eu aliquam diam accumsan nec. Donec at elit justo. Nulla facilisi. Ut consequat tellus a turpis consectetur vestibulum. Aenean vel urna ut quam semper sodales nec nec arcu. Donec nec arcu erat. Morbi nibh lacus, fringilla eget dui eget, imperdiet vulputate nibh. Quisque lacinia nibh at felis finibus, vel tristique odio viverra. + +Vivamus sed dolor nec est commodo sagittis malesuada vitae risus. Aenean interdum volutpat turpis, vitae efficitur ex euismod et. Phasellus interdum quam quis massa vulputate, lobortis lacinia dolor pulvinar. Nunc vel eros velit. Vivamus eu dolor nisl. Donec non sagittis eros, non iaculis augue. Donec turpis orci, vestibulum vel commodo eget, hendrerit id orci. Integer eget neque malesuada, dignissim leo et, rhoncus arcu. Etiam a metus rutrum, varius lorem a, pharetra odio. Etiam vitae nisi vestibulum justo laoreet bibendum. Nunc hendrerit tristique massa at volutpat. Integer vitae dapibus lorem. + +Donec massa justo, vestibulum ut volutpat at, tempor ut eros. Suspendisse eget ligula est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur finibus non risus ut aliquet. Mauris nec urna viverra, egestas massa sed, aliquet magna. Aliquam erat volutpat. Nullam sed dui risus. Etiam nec vehicula magna. Ut bibendum vitae felis id maximus. Duis sit amet feugiat ante. Quisque ligula augue, pulvinar sit amet suscipit eu, convallis nec magna. + +Aenean elementum, justo eget scelerisque feugiat, odio leo mattis lacus, in iaculis sapien erat ut tortor. Donec vitae nunc ac lectus fermentum aliquam nec eget leo. Fusce volutpat fermentum purus tristique ultrices. Fusce eu justo at urna aliquam lobortis eget in lacus. Donec tempor posuere velit, nec consequat quam dignissim sit amet. Cras ac tellus quis risus posuere suscipit. Sed fermentum ultricies est eu ullamcorper. Ut id sem at massa sagittis accumsan et eget orci. Morbi facilisis lacus vel egestas lobortis. Nunc luctus enim ac nisi congue vestibulum. Sed iaculis erat ut odio tempor sodales. Nulla quis metus est. Donec consectetur varius turpis, sit amet accumsan tellus tristique sit amet. + +Quisque et arcu porttitor, blandit sem at, egestas ligula. Curabitur porttitor gravida porttitor. Vivamus dui ligula, sagittis vel turpis sit amet, posuere semper urna. Suspendisse potenti. Nulla nisi massa, consequat nec ante sit amet, aliquet imperdiet orci. Quisque eget diam blandit, tincidunt ligula ac, consectetur nisl. In quis tincidunt ipsum, eu eleifend ipsum. Pellentesque interdum odio ac odio malesuada dictum. Vestibulum neque leo, convallis sed elementum nec, gravida et erat. Phasellus sit amet mi purus. Suspendisse potenti. Nam viverra augue quis porta semper. Nullam imperdiet neque nec nunc convallis, a euismod purus scelerisque. Quisque ac venenatis velit. In fringilla diam eget enim suscipit luctus. + +Mauris quam diam, consequat id aliquet eu, aliquam ut tortor. Nunc enim magna, volutpat id auctor a, vestibulum id odio. Vestibulum scelerisque, nibh fermentum faucibus dignissim, est eros porttitor libero, ac sodales arcu turpis vel est. Maecenas faucibus magna in sagittis sagittis. Vestibulum augue velit, convallis ut turpis ac, mollis luctus justo. Curabitur nec viverra nunc, ac sollicitudin elit. Fusce ut ultrices arcu, a tristique mi. Proin bibendum velit vitae odio consequat varius. + +Curabitur fermentum enim eu neque scelerisque feugiat. Proin fermentum consectetur quam, at feugiat tellus ultricies faucibus. Cras massa libero, hendrerit sollicitudin condimentum sit amet, pellentesque ut nunc. Praesent vitae leo vitae felis pulvinar venenatis. Maecenas dolor lacus, molestie non vehicula sit amet, lacinia non dolor. Donec vel odio magna. Vivamus risus magna, aliquam a facilisis ac, scelerisque eu lorem. Duis sit amet dolor auctor, malesuada ante non, finibus nisl. + +Nullam condimentum imperdiet rutrum. Aliquam in quam non magna consequat auctor ut ut quam. Nullam iaculis scelerisque nulla nec mattis. Duis molestie lorem eget consectetur convallis. Integer congue semper blandit. Proin sagittis volutpat tempus. Pellentesque tincidunt dapibus quam vitae fringilla. + +Nam fringilla, nisl id faucibus efficitur, nunc sapien sodales lectus, et pellentesque mauris nisl eu libero. Duis consectetur at tortor in condimentum. Mauris mattis congue sapien, faucibus aliquet purus blandit sed. Morbi in tortor vulputate, ullamcorper ex eget, ultrices felis. Pellentesque tincidunt lorem elit, non ultrices turpis elementum a. Praesent id odio ac lacus sollicitudin condimentum nec eget neque. Nullam eu purus pharetra nibh ornare pellentesque ut ac ipsum. Cras est nisl, tincidunt in mattis et, ultrices non sem. Proin ultrices leo libero, eu rhoncus lectus condimentum dapibus. Suspendisse aliquam viverra dolor, finibus interdum leo ultrices nec. Curabitur commodo dui vitae egestas mollis. Proin ac augue volutpat, luctus leo id, luctus tellus. Morbi varius convallis felis sit amet tristique. + +Proin convallis libero non varius tincidunt. Mauris pharetra faucibus massa sed posuere. Cras dignissim vulputate quam, nec venenatis urna commodo in. Curabitur maximus massa a mauris malesuada, nec posuere mi consectetur. Morbi dignissim mi odio, et facilisis erat pharetra sit amet. Aliquam venenatis, eros vel placerat laoreet, velit arcu lacinia ex, sed maximus ipsum libero ac tortor. Ut tempus vel tortor sit amet ultricies. Sed ac est quis neque dignissim eleifend. Ut tristique elit vitae est accumsan, a tempus massa faucibus. Donec maximus vitae sapien vitae mattis. Suspendisse volutpat, ipsum nec euismod sollicitudin, risus tortor ultricies lorem, fermentum eleifend sem lacus at leo. Vestibulum semper facilisis lorem, a varius ipsum. Quisque porttitor, est in varius feugiat, leo massa mattis est, sed auctor eros libero vel elit. Nam a ornare turpis. Morbi semper vestibulum urna, id pretium elit gravida ac. Maecenas ultricies nunc felis, ut sollicitudin ligula sagittis ut. + +Donec non eros imperdiet, tincidunt mauris sed, pellentesque quam. Vivamus nisi diam, rhoncus sed porttitor quis, mollis in ex. Cras gravida sagittis condimentum. Integer eu convallis nisl. Suspendisse id neque ac ex finibus pulvinar. Nullam eleifend rutrum sem. Etiam ex eros, pellentesque sed erat et, venenatis tempus est. Aenean ultrices sollicitudin mi, tempus lobortis mauris sagittis a. + +Etiam in venenatis enim. Duis id nunc sed dolor convallis accumsan in nec tortor. Aenean dictum, risus ac consectetur porta, dolor velit fringilla ligula, id finibus ligula purus nec sapien. Fusce suscipit euismod arcu, quis rutrum arcu hendrerit ut. Ut aliquet, sapien gravida congue imperdiet, nunc erat interdum elit, at vestibulum dolor purus et massa. Pellentesque fringilla turpis magna, sit amet ornare elit fermentum ut. Ut condimentum libero quam. Nulla maximus dolor in blandit mollis. Phasellus vel aliquam nisl, et convallis quam. Nullam eget justo pulvinar, malesuada ex a, molestie diam. Ut auctor nisi risus, in pharetra nibh pulvinar facilisis. Morbi et ante id felis imperdiet mollis. Quisque quis tellus consequat, egestas metus eu, consequat lectus. Praesent a malesuada enim. In hac habitasse platea dictumst. + +Curabitur id turpis quis erat ultrices vestibulum a eu augue. Etiam vel orci ultrices, pharetra risus finibus, vestibulum arcu. Nulla dolor ipsum, bibendum quis dapibus sed, varius ultricies leo. Mauris nec dapibus metus. Quisque tincidunt ligula sed ex feugiat vulputate. Etiam volutpat euismod ante, at porttitor mi interdum id. Nunc efficitur pellentesque aliquet. Nunc ullamcorper, leo a ultrices lacinia, lorem ipsum varius tellus, ut ultrices dui quam et augue. Pellentesque molestie fermentum ex nec tempor. Quisque venenatis condimentum ex. In et ultrices orci, a vehicula lectus. + +Nulla interdum convallis arcu, et rhoncus ante iaculis sit amet. Nullam ac maximus enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam euismod mauris quis interdum porta. Pellentesque lectus diam, porttitor sed est a, volutpat pharetra velit. Maecenas porttitor magna id odio pretium sagittis. Nam at vulputate nunc. Vestibulum porttitor nibh at turpis auctor molestie. Aenean et ex nec ante commodo maximus. Praesent et odio at dui rutrum sollicitudin et volutpat velit. Duis pulvinar semper tincidunt. Mauris ut hendrerit tortor, ut rhoncus lacus. Aliquam vestibulum nisi vel arcu laoreet faucibus. Nam vehicula, nibh hendrerit dictum varius, libero orci suscipit ipsum, ac feugiat felis urna at ante. + +Praesent scelerisque euismod elit, ac luctus nisi convallis non. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis sollicitudin imperdiet lobortis. Phasellus tempus mattis ipsum, aliquet condimentum ligula accumsan quis. Nam pulvinar placerat sapien, at sagittis sapien porta at. Donec mattis urna arcu. Vestibulum volutpat fringilla sem, quis faucibus elit tempor et. Curabitur sed erat in neque rhoncus commodo id sit amet lacus. Vestibulum a lobortis sem. Donec molestie fermentum accumsan. Sed pretium, nisi at porta porttitor, turpis leo ullamcorper justo, ac porttitor lectus nisi eget lorem. Sed consectetur, risus eu dapibus elementum, nisl lorem aliquet felis, ac congue magna augue sed odio. + +Curabitur dignissim venenatis leo, in hendrerit augue lacinia et. Nam libero mi, vehicula ut leo ut, vulputate congue neque. Aliquam dapibus ipsum eget enim vulputate pulvinar. Vestibulum ac ex eget arcu elementum pharetra id non leo. Sed mattis tortor nec nibh volutpat tincidunt. Suspendisse ac luctus metus, in congue nisl. Donec finibus augue quis venenatis congue. Proin laoreet mi mauris, in auctor libero viverra at. Suspendisse accumsan pretium odio eu ullamcorper. + +Donec eget nisi hendrerit purus fringilla venenatis vel id odio. Phasellus tempor tristique lacinia. Suspendisse porta ultrices mauris, nec convallis augue dictum quis. Phasellus eget felis faucibus odio varius semper mattis a mauris. Phasellus suscipit sit amet tortor a efficitur. Morbi ornare elit in fringilla aliquam. Fusce at ante diam. Fusce et augue quis purus ultricies placerat et sed libero. Nulla convallis non sapien ut congue. Phasellus vel eros lorem. Nulla volutpat quis nisi sed pulvinar. + +Maecenas placerat non elit efficitur egestas. Suspendisse condimentum id tortor quis congue. Sed sit amet arcu sit amet dui mollis mattis. Nunc vestibulum lectus vel ex vulputate semper. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc viverra augue metus, at sodales nisl lobortis a. Donec eu velit sed metus viverra pharetra. Curabitur dignissim tempor dui sit amet ultrices. Sed gravida, elit eget finibus ornare, mi diam elementum quam, ac imperdiet nisl neque eget justo. + +Nam semper malesuada augue id rutrum. Aliquam egestas vulputate mollis. Donec at tincidunt augue. Sed vitae ultricies augue. In aliquam imperdiet orci, vitae consectetur enim. Aenean porttitor diam eu dui congue, eu molestie nibh viverra. In ligula tellus, gravida vel tortor sit amet, rutrum tincidunt leo. In hac habitasse platea dictumst. Etiam aliquet aliquet massa non consectetur. + +Curabitur libero nisi, dictum sed ultricies id, vehicula id arcu. Nulla vehicula nibh ac odio tempus placerat. Nullam risus lorem, pretium rhoncus venenatis ac, posuere et purus. Proin tempor ipsum quis mauris feugiat vulputate. Pellentesque molestie dui sed dictum ultrices. Vestibulum elementum aliquet mattis. Duis tincidunt posuere nulla, vitae ornare ex. + +Curabitur et mattis eros, eget semper ante. Ut dignissim tortor sed malesuada luctus. Vivamus sollicitudin orci tincidunt magna viverra, ut aliquam libero rhoncus. Suspendisse ac felis at magna iaculis sodales ac in quam. Donec consequat pellentesque diam, non faucibus nisi pretium sed. Curabitur et ipsum eget ipsum bibendum porttitor. Phasellus lobortis eros tristique felis elementum, vitae consequat justo laoreet. Nullam cursus, nibh at fringilla rutrum, nisl justo tincidunt ipsum, sit amet ullamcorper quam tortor eget augue. Sed iaculis, nisl non mattis tincidunt, nunc elit vehicula sem, nec faucibus mi tortor vel nisi. Morbi ac quam non augue sagittis vehicula. Aliquam erat volutpat. Duis vitae vestibulum tortor. Maecenas fringilla egestas consequat. Vestibulum non dictum lacus. + +Integer viverra, lectus ac vulputate iaculis, urna odio hendrerit nulla, vitae sodales neque tellus non mauris. Maecenas ut semper sem. Vivamus facilisis elementum gravida. In gravida sapien a nibh sodales, et mattis mi condimentum. Fusce condimentum ultrices eros. Aliquam sed ultrices risus. Ut maximus consectetur rhoncus. Pellentesque nulla massa, mollis sed efficitur eget, gravida ut orci. Cras aliquet lorem non placerat accumsan. Pellentesque vitae aliquam nibh, at porttitor libero. Cras at ipsum a tellus suscipit volutpat vitae ut urna. Nulla purus lorem, fermentum id velit sed, gravida interdum nibh. Phasellus ac bibendum mi. + +Proin faucibus suscipit urna, quis dictum velit condimentum id. Maecenas ultricies, turpis sed blandit maximus, libero lacus consectetur orci, ut malesuada metus nunc eu mi. Vestibulum interdum et lectus et tristique. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent vel metus id quam placerat venenatis. Praesent vitae eros auctor mauris congue luctus. Pellentesque leo erat, lobortis nec feugiat in, mattis eget sapien. Nulla at laoreet lacus. Integer ac felis eget metus faucibus semper. Donec quis tristique libero. Maecenas placerat erat et diam facilisis, hendrerit pulvinar massa ultricies. Suspendisse dictum tortor nec diam pellentesque consequat. In auctor nunc sed tortor tempus, ut mattis arcu vulputate. Maecenas eu nibh eu purus aliquet mattis. + +Vestibulum dui elit, mattis vel odio in, pharetra luctus risus. Sed et velit in urna venenatis mollis. Phasellus lacus ante, sagittis sed lobortis a, mollis sed ipsum. Aenean tempus id tortor sed ullamcorper. Integer semper facilisis nunc sed pretium. Sed ac varius neque. Nulla elementum augue eget lobortis consectetur. Aenean et aliquet massa. In in ligula at velit pretium facilisis eu in leo. Nunc consequat congue neque at sodales. Sed nec nunc a purus sodales efficitur. Duis nisl massa, ultricies sollicitudin nunc ac, tristique consequat magna. + +Integer sit amet rutrum enim. Curabitur hendrerit vehicula tortor, a interdum urna pulvinar quis. Nulla mauris lectus, viverra id semper non, pretium vel lacus. Aenean nec interdum ligula, sit amet dapibus elit. Sed a diam placerat, varius ipsum vel, luctus tellus. Fusce nulla elit, auctor nec dignissim sit amet, condimentum congue purus. Fusce ac arcu nibh. Quisque id velit tincidunt, feugiat sem nec, faucibus mi. Pellentesque ut justo non elit tempus consequat. Cras ultrices ipsum at magna commodo, at vehicula orci fringilla. Nulla eu mauris nunc. Nullam vel erat mattis nulla convallis ornare. Sed iaculis accumsan lacus, in iaculis ante elementum sed. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +Morbi accumsan, diam eget rutrum consequat, ipsum ipsum accumsan risus, nec venenatis nunc ligula nec velit. Sed nec elit at felis viverra consectetur. Donec eget magna vitae metus blandit ultricies lobortis et ante. Nam purus orci, lacinia sit amet suscipit viverra, maximus a ipsum. Sed et orci fringilla, sagittis metus a, ullamcorper tellus. Vestibulum molestie lacus quis lectus dictum, vel vehicula lacus pellentesque. Donec a tellus venenatis, auctor dui ut, dapibus magna. Donec id maximus lorem. Integer molestie libero massa, nec tempor tellus consectetur at. + +Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam vitae est id magna posuere feugiat. Vestibulum quis quam rutrum purus interdum bibendum. Curabitur venenatis tellus eget finibus pharetra. Aliquam condimentum accumsan diam, eget imperdiet eros ornare ut. Suspendisse hendrerit turpis ipsum, nec ultricies risus elementum sit amet. Vestibulum eu nulla non metus sollicitudin sagittis ac vitae sapien. Nunc mauris augue, imperdiet eu sodales vel, porttitor quis odio. In finibus lacus vel tellus aliquet, eget efficitur purus aliquam. Donec feugiat tellus id erat molestie, eget molestie libero consectetur. Morbi cursus mattis sapien sit amet varius. Etiam volutpat, leo vitae dapibus volutpat, lorem lorem blandit est, ac volutpat nisl lacus non ligula. Fusce a finibus sem, quis volutpat magna. + +Mauris consectetur, lacus at sodales viverra, urna est cursus diam, quis finibus odio ex in ante. Sed vel aliquet nunc. Vestibulum sodales pharetra magna eget volutpat. Aenean rutrum fringilla tortor nec accumsan. Pellentesque vulputate libero vitae metus pellentesque placerat. Proin in turpis vel mi congue vehicula vulputate pulvinar orci. Etiam ut semper tortor. + +Donec varius tortor at diam luctus, pretium congue lorem tempor. Mauris dapibus luctus eleifend. Aliquam enim sem, ullamcorper in hendrerit vel, hendrerit cursus libero. Fusce eleifend eget lectus nec tristique. Vestibulum consequat odio porttitor, malesuada velit vel, finibus nisi. Nunc dictum id elit tempus bibendum. Ut sed nibh odio. Ut luctus a turpis eu ultrices. Proin non nulla ut arcu efficitur rhoncus id vitae massa. Pellentesque fermentum ex ut fringilla luctus. + +Sed mollis diam vel nulla condimentum consectetur. Fusce a porta urna, nec gravida diam. Nunc pretium semper lobortis. Nulla facilisi. In quis purus vel sapien varius tempor. Suspendisse justo velit, pulvinar at nisi id, sodales sollicitudin ex. Aliquam nec lectus sit amet orci fermentum sollicitudin. Praesent mollis, mi non rhoncus mattis, eros enim consequat diam, gravida feugiat elit augue rutrum risus. Sed scelerisque pharetra sapien at auctor. Pellentesque dictum lacus sit amet quam euismod, eu maximus justo egestas. Morbi sit amet ex bibendum leo sodales ullamcorper. Nulla non efficitur justo, a sodales diam. Nunc et vestibulum nulla. Nunc non elit lacinia sapien tristique pretium ac a orci. Suspendisse quis sodales urna. Phasellus sed nisl tempor, consectetur nibh et, hendrerit dolor. + +Duis a euismod nulla, et dignissim elit. Suspendisse potenti. Donec enim ipsum, egestas a accumsan nec, molestie ac lectus. Ut at elit mauris. Curabitur rutrum orci in tincidunt pharetra. Mauris lobortis dolor quis cursus pulvinar. Praesent eu purus quis purus ultricies rhoncus. Curabitur blandit purus ut vestibulum aliquam. Maecenas eleifend aliquam neque, et sollicitudin ante tempor ac. + +Vivamus eu velit eget ante ullamcorper egestas. Donec eget euismod lectus, et pulvinar eros. Praesent accumsan tellus bibendum, aliquet dolor et, auctor mauris. Mauris ut ullamcorper massa. Vestibulum facilisis arcu nisl, at sodales lectus egestas eu. Ut sed auctor leo, non finibus risus. Quisque eu quam dui. Donec auctor est ac urna imperdiet tincidunt. Vivamus aliquam nunc sem, sed mattis arcu fringilla ultricies. + +Cras ac faucibus nunc, ut ultricies ante. Mauris vulputate velit orci, tincidunt fermentum ante bibendum eu. Donec pharetra est maximus risus aliquet fermentum. Vivamus rhoncus odio at diam fermentum, non feugiat arcu elementum. Nulla id erat orci. Proin nisi mauris, laoreet non felis vel, consectetur luctus diam. Integer tristique odio sit amet pellentesque pulvinar. Integer sollicitudin malesuada mollis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut rutrum id elit viverra varius. Praesent rhoncus metus mi, eu eleifend turpis mollis in. + +In fermentum, felis non imperdiet placerat, nunc lectus facilisis ex, id sagittis dolor metus mollis lacus. Nulla nisi elit, consequat ac ipsum at, volutpat tempor erat. Pellentesque tempus, ligula eget accumsan viverra, arcu mauris hendrerit risus, non bibendum arcu metus ac sem. In in vulputate dolor. Cras facilisis nunc et ante porta, sed luctus ligula pellentesque. Sed tincidunt lectus ut ante pellentesque, id convallis nibh interdum. Ut ante lacus, pretium quis scelerisque nec, venenatis eget magna. Ut vehicula fringilla cursus. + +Morbi a finibus neque, sit amet ornare erat. Vestibulum consectetur et enim ac scelerisque. Nullam euismod nulla et vulputate scelerisque. Nunc dapibus lacus ac elementum venenatis. Nullam bibendum mollis magna sit amet cursus. Donec consequat odio lorem, tincidunt luctus mauris hendrerit fermentum. Suspendisse venenatis felis mi, eget blandit sem imperdiet et. In mauris lorem, suscipit vitae ornare sit amet, dapibus vel orci. In tincidunt nisi vitae erat mattis iaculis. Nullam vitae commodo magna. Sed gravida vestibulum mauris vitae tincidunt. Quisque imperdiet porttitor massa, eget elementum mi. Nam eu maximus lacus. Fusce condimentum pretium massa consequat dignissim. + +Pellentesque ut lorem urna. Proin a magna est. Mauris porttitor rutrum nulla, a mollis orci rhoncus eu. Nam posuere sollicitudin blandit. Nullam id venenatis lorem. Quisque vestibulum eros vel rutrum aliquet. Nunc ullamcorper magna faucibus, iaculis tellus ut, aliquet libero. In hac habitasse platea dictumst. Vivamus tellus magna, ullamcorper id accumsan sit amet, pulvinar sed justo. + +Donec rutrum mi felis, ut tincidunt nulla ullamcorper sit amet. Ut cursus magna ex, quis porttitor mi sagittis ac. Aliquam commodo rhoncus nisl non finibus. Maecenas auctor turpis eu mi finibus, dignissim commodo odio consequat. Ut tempor, turpis at vestibulum tincidunt, magna nulla fermentum est, in aliquam purus diam sit amet ligula. Nulla vitae turpis rutrum, porttitor urna vitae, hendrerit sem. Quisque auctor elit sit amet felis aliquet ullamcorper. Phasellus placerat at ex et dictum. + +Suspendisse sem justo, molestie ac mi vel, vestibulum sagittis mauris. Donec odio velit, iaculis ac sodales sed, venenatis ut leo. Sed fringilla libero magna, sit amet interdum erat placerat eu. Cras accumsan viverra ex auctor consectetur. In sagittis metus ac dolor maximus elementum. Duis ut commodo nunc, ac accumsan eros. Nullam semper dictum mi vitae commodo. Nullam scelerisque metus et ipsum cursus pretium. Morbi at efficitur massa. Proin quam nulla, porta interdum ultricies et, finibus vitae lorem. Sed eleifend luctus felis quis volutpat. Mauris consequat, purus eu feugiat bibendum, eros quam egestas leo, non porta magna enim eget odio. Suspendisse molestie hendrerit ipsum in rhoncus. Vivamus in mollis ex. + +Nam venenatis accumsan blandit. Praesent nec molestie neque. Praesent eu vestibulum dui, at semper risus. Sed pellentesque vulputate blandit. Etiam dolor velit, lobortis eget eleifend ut, elementum ut libero. In id ullamcorper quam, et pharetra enim. Donec orci erat, volutpat non gravida sed, porttitor a sem. Nunc id nisi ac diam cursus accumsan. + +Pellentesque commodo libero eu ligula congue sagittis. Aliquam commodo ligula fermentum, sollicitudin nunc sit amet, finibus purus. Nunc gravida facilisis imperdiet. Cras at neque id justo fermentum ullamcorper vel id sapien. Sed a augue elit. Donec eget sem accumsan, ullamcorper erat non, blandit nunc. Phasellus ac lacus id erat cursus hendrerit eu vel ipsum. Curabitur condimentum aliquet risus, eget feugiat ex posuere sit amet. Maecenas placerat erat sit amet nulla porta lacinia. + +Nulla placerat dolor quis faucibus consequat. Ut porttitor est vel orci commodo, vitae gravida tellus volutpat. Nunc tempor lectus eu leo maximus scelerisque. Praesent ipsum diam, sodales id nisl ut, elementum ultrices nibh. Maecenas id augue scelerisque, maximus nunc id, suscipit diam. Praesent sed lectus sodales, sodales felis vitae, eleifend justo. Cras quis dictum erat, eu pulvinar tortor. + +Donec a gravida ante, consectetur vulputate orci. Nunc sagittis rhoncus lacus. Ut eget velit iaculis, bibendum diam id, commodo augue. Cras sit amet pharetra quam. Mauris nisi nulla, dignissim eget nisl nec, dapibus rutrum lacus. Donec vestibulum imperdiet augue quis posuere. Nullam vestibulum quis risus sed rhoncus. Sed laoreet purus in scelerisque bibendum. Phasellus ut est nulla. Morbi sed convallis turpis. Donec dolor libero, ultrices et nisl eu, consectetur congue lacus. + +Donec iaculis sed odio ut vulputate. Fusce egestas efficitur nunc id auctor. Mauris efficitur, sem in hendrerit dictum, ligula ligula auctor nulla, a dapibus magna risus in sapien. Nullam euismod molestie tincidunt. Praesent in faucibus orci. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean at tincidunt orci. Proin vitae neque id ex fringilla blandit. Nunc gravida id felis ac hendrerit. + +Nulla condimentum odio rhoncus sodales condimentum. Donec sed diam ut nunc rhoncus malesuada. Ut venenatis urna in nulla egestas maximus. Cras diam tortor, porttitor at maximus mollis, sagittis eu ligula. Maecenas sodales sed quam quis vehicula. Proin posuere tempus ex, nec iaculis erat placerat quis. Pellentesque at finibus nulla. Aliquam id ipsum tellus. Praesent dictum leo facilisis ullamcorper aliquam. Sed ac tempus tortor. Curabitur ornare velit tortor, id sodales mi consequat in. Nunc luctus, neque vitae tempor congue, lectus lorem fringilla lacus, tempus convallis ligula sapien eget risus. + +Vivamus nec interdum lorem. Ut maximus ex ligula. Sed lacinia congue porttitor. Morbi accumsan ligula metus, non semper erat porta nec. Morbi venenatis luctus mi a pharetra. Donec non rhoncus tortor. Ut pellentesque metus vitae magna volutpat, interdum volutpat odio auctor. Vivamus ut nunc porta, mollis nibh in, elementum dui. Vestibulum at eleifend mi. Nulla facilisi. Donec ut finibus ante. Nunc porttitor aliquet felis nec cursus. Vivamus nibh ante, porta eget nisl ullamcorper, semper commodo nisi. Phasellus ultricies venenatis consequat. Maecenas gravida, purus mattis fringilla euismod, augue dui semper erat, at sollicitudin nunc sem non mi. Aliquam erat volutpat. + +Donec odio neque, tempus et sem at, cursus commodo sem. Donec sed leo eu tortor fermentum bibendum. Integer tempus dictum ornare. Morbi at purus et arcu euismod accumsan nec nec ante. Morbi a interdum nisi. Nam at tristique sapien. Phasellus lobortis lacus et pretium scelerisque. Morbi non libero mi. In mollis vulputate quam, eget condimentum diam vehicula tincidunt. Integer congue dolor tincidunt purus vulputate rhoncus. + +Cras ut auctor lectus, sed laoreet risus. Phasellus dignissim arcu lacus. Nulla facilisi. Nullam in velit placerat, commodo velit in, eleifend augue. Integer velit ipsum, consectetur non lobortis eget, porta ut urna. Nunc imperdiet ex a magna finibus placerat. Vivamus lorem felis, consectetur a aliquam sed, lobortis id lorem. Praesent dictum nisl ut dolor congue ultrices. Maecenas sed fringilla tortor, nec bibendum arcu. + +Nullam blandit, erat at iaculis condimentum, ante est laoreet magna, vitae ornare erat diam sed lorem. Suspendisse vel hendrerit nulla, at lobortis metus. Maecenas quis tortor gravida nisi hendrerit suscipit vitae quis risus. Nulla massa odio, luctus et euismod non, tempor eget augue. Donec cursus enim vel euismod venenatis. Etiam cursus aliquam dolor, quis molestie dui cursus at. Vestibulum sagittis metus vitae enim commodo semper. Nunc porttitor imperdiet libero, sed commodo purus congue non. Nam dictum condimentum urna nec tempus. Cras et lacus erat. Quisque at lobortis nisi. + +Proin justo quam, viverra non mi ut, tincidunt elementum enim. Cras elementum enim sed ligula facilisis tempor sit amet at diam. Morbi vitae ipsum a nibh elementum mattis vitae ac mi. Suspendisse fringilla metus ac lacus fermentum hendrerit. Suspendisse et leo interdum, porttitor felis nec, pulvinar massa. Etiam non urna odio. Suspendisse egestas ligula non metus porttitor, ut luctus diam fringilla. Aliquam risus nulla, tempus sit amet urna ac, porta varius sem. Phasellus in risus magna. Mauris scelerisque dapibus ante id tempor. Sed ultricies, sapien a lacinia egestas, est ante interdum diam, quis convallis enim velit a leo. Donec interdum efficitur ullamcorper. Fusce vestibulum lorem at ex condimentum pharetra. Donec odio dolor, dapibus fermentum condimentum ut, blandit vitae libero. Fusce pretium sapien ut ipsum placerat mattis. In non eleifend nunc. + +Nam commodo dolor eu ullamcorper dignissim. Phasellus a est vel neque ultrices pellentesque id et elit. Duis quis tempor lectus, vel maximus mauris. Vivamus laoreet porta nunc, pretium posuere diam varius nec. Nam non mattis nulla. Suspendisse nec efficitur mi. Mauris pharetra nunc ac hendrerit auctor. Nunc tincidunt nulla eget purus porttitor, vestibulum laoreet sem posuere. Nunc quam arcu, dictum id efficitur ut, vehicula at ante. Praesent purus ex, efficitur id aliquet in, laoreet malesuada nulla. Quisque ac erat est. Nunc eu elit ullamcorper, tempor leo sit amet, auctor ex. + +Phasellus condimentum dolor orci, sit amet venenatis nisi posuere ac. Aliquam mattis tortor sit amet tempor posuere. Praesent dignissim lacus suscipit iaculis dapibus. Fusce lorem eros, finibus non sapien euismod, viverra gravida urna. Proin sed magna congue libero aliquet tristique ut sit amet purus. Suspendisse pulvinar non odio euismod pulvinar. Nam vel rutrum quam. Donec commodo dui non dictum ultrices. + +Quisque posuere erat et neque commodo, at hendrerit sem luctus. Etiam facilisis, nunc quis rhoncus tempus, elit neque dictum eros, eu gravida nunc velit id ante. Phasellus placerat eu leo non dignissim. Morbi bibendum porta mauris, et facilisis leo lobortis nec. Nunc sem nibh, elementum at felis vitae, vulputate vehicula purus. Sed venenatis viverra magna. Morbi tincidunt a mauris et imperdiet. + +Maecenas erat lacus, tempor eu purus a, vulputate elementum ligula. Duis eu orci sit amet turpis maximus commodo. Integer non tempus est. Vestibulum accumsan magna eget ante tempus egestas. Cras quis nunc sed quam ultrices cursus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam vel nisl porta, iaculis sem et, posuere augue. Duis ac lorem vel leo condimentum porta sed consequat purus. Maecenas eget gravida tortor. Morbi porttitor, nisi non vestibulum semper, nisl diam sagittis tortor, vel molestie odio nunc et neque. Fusce mattis convallis ipsum, sit amet accumsan justo maximus non. Aliquam consequat quam eu lorem luctus, eu tempus risus posuere. Duis posuere diam a ornare dictum. Suspendisse varius, neque sit amet imperdiet ultrices, metus eros molestie risus, quis imperdiet sapien nibh id lorem. Nullam sit amet tellus sem. diff --git a/examples/SplitExample.txt b/examples/SplitExample.txt new file mode 100644 index 0000000..519132c --- /dev/null +++ b/examples/SplitExample.txt @@ -0,0 +1,301 @@ + + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer semper vulputate suscipit. Mauris sodales eros id augue semper, vitae rhoncus ipsum elementum. Aenean ultrices, est id consectetur fermentum, sem velit lacinia lectus, pretium consectetur arcu orci ut augue. Vivamus bibendum id purus in egestas. Donec maximus erat ipsum, eu scelerisque nisi vehicula condimentum. Integer viverra mauris vel velit auctor commodo. Etiam malesuada turpis et ligula gravida, sit amet mollis urna blandit. + +Proin efficitur suscipit faucibus. Nullam aliquam sem diam, sit amet mollis diam volutpat id. Cras consequat libero et vulputate rutrum. Cras tincidunt in eros faucibus tincidunt. Vivamus vestibulum lacinia mi, et vulputate urna congue id. Donec at augue vestibulum, dapibus dolor eu, mattis tortor. Sed et iaculis massa. In porttitor leo nisi, sed auctor velit dignissim auctor. Pellentesque venenatis, dolor et congue fringilla, lacus justo faucibus libero, in laoreet est urna id risus. Praesent ut lorem sed nisl ornare finibus. Curabitur condimentum consequat arcu, sit amet rhoncus sem consequat vitae. + +Mauris a sapien semper, commodo lorem a, lacinia ex. Proin finibus lorem consequat pellentesque scelerisque. Phasellus gravida efficitur felis, non iaculis massa. Quisque at arcu lacus. Curabitur viverra enim eu lectus vestibulum facilisis. Proin posuere metus eu tortor pellentesque porttitor. Nulla ut diam non neque tristique dictum ut eget dui. Vestibulum in rhoncus purus, vel ornare orci. Suspendisse non ultrices nunc. Ut interdum orci tellus, eget consequat metus rhoncus at. Etiam quam risus, viverra eu imperdiet a, porttitor non sapien. In et ullamcorper enim. Vivamus lectus ex, vulputate vitae felis et, tempus volutpat felis. Maecenas malesuada dolor sed convallis bibendum. Etiam lorem felis, sollicitudin a iaculis a, tristique vel neque. Vivamus congue ex at leo porta, ac commodo nisl consectetur. + +Etiam tempus turpis quam, non tincidunt augue tempor vitae. Aliquam eget quam iaculis, semper lacus et, sagittis lacus. Mauris interdum et tortor sit amet finibus. Ut vel commodo tellus. Integer varius nibh eget felis varius, id commodo dolor blandit. Donec quis enim vel arcu consectetur convallis non et nibh. Vivamus pharetra dolor at augue feugiat, nec lobortis felis egestas. Nulla bibendum dictum maximus. Praesent et vestibulum elit, vel tempor nulla. Aliquam erat volutpat. Fusce lacinia finibus rhoncus. Sed eu massa non ligula sagittis fermentum. Praesent tempor porttitor est. + +Pellentesque venenatis dolor in lectus imperdiet laoreet. Pellentesque nec est sit amet massa cursus vehicula nec a mauris. Maecenas euismod id eros placerat molestie. Integer quis lectus eleifend, rutrum dui dapibus, bibendum arcu. Morbi sollicitudin eget ex vitae dapibus. Nulla libero nulla, congue at rutrum sit amet, rutrum id nibh. Integer eu leo imperdiet lacus sollicitudin dictum ac ac lectus. Maecenas mattis eu odio vel pulvinar. + +Phasellus ultrices congue nunc, id dapibus dolor pretium sit amet. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin elementum ac lectus sit amet molestie. Aliquam massa lectus, porta at cursus vitae, accumsan eget nisl. Nullam ut enim vel mi sodales pellentesque. Aliquam urna dolor, consequat vel dolor eget, tempus iaculis neque. In accumsan accumsan condimentum. Vestibulum aliquet erat fringilla augue varius fringilla. Vestibulum commodo dignissim nibh vel posuere. Donec volutpat aliquam lacus, eu ultrices eros venenatis a. Mauris vestibulum venenatis tempor. Nulla at vehicula risus, ac consequat arcu. Morbi egestas nisl risus, in finibus nisl accumsan vitae. Nam euismod, dui quis rhoncus placerat, enim ex consequat nulla, nec tristique risus elit sed nunc. Nulla ultrices turpis congue leo facilisis aliquet. Donec rhoncus ante a nibh fringilla consequat. + +Phasellus non euismod dolor, non aliquet libero. Mauris ultrices justo ut pretium pulvinar. Maecenas malesuada, velit nec cursus porta, orci nunc luctus justo, vel consectetur nisi massa ac nisl. Aliquam sit amet congue urna. In dictum turpis tempus euismod scelerisque. Aenean nec odio vel justo euismod efficitur nec et massa. Cras ac semper lectus. Curabitur vitae interdum lacus, id tincidunt nibh. Nunc eu malesuada turpis. Mauris ut ornare tellus. Donec mollis feugiat suscipit. + +Curabitur rhoncus venenatis magna id blandit. Suspendisse imperdiet erat sit amet ante lobortis, at pulvinar ligula egestas. Quisque fringilla pretium mauris, nec feugiat tellus. Nam sed urna augue. Vivamus dictum odio nec diam vulputate, quis finibus dolor tempor. Maecenas blandit leo vel interdum semper. Maecenas id nibh tristique, varius velit sed, interdum odio. Curabitur egestas erat a ex pulvinar condimentum. Integer molestie mi eu felis egestas, eget elementum magna ullamcorper. Praesent lectus risus, tempor ac quam a, auctor facilisis sem. Curabitur non fermentum diam. + +Aliquam aliquam lectus tempus sapien feugiat dictum. Nunc eleifend arcu et odio viverra, eu volutpat lectus eleifend. Pellentesque laoreet pharetra lobortis. Donec eleifend semper diam, quis vehicula odio. Integer commodo, nisi eget porttitor suscipit, nulla dui luctus lacus, quis semper risus nulla et eros. Suspendisse pulvinar leo nunc, nec porttitor turpis viverra a. Etiam vel turpis sed turpis tempor consectetur. Integer dignissim rhoncus porttitor. Pellentesque viverra, diam at rhoncus pellentesque, metus purus laoreet nisl, ac vestibulum felis nunc et justo. Mauris eget urna erat. Ut blandit elit lorem, vitae placerat velit finibus non. Pellentesque facilisis enim nec elit viverra tempus. Praesent sodales ante ultrices efficitur pretium. + +Nulla imperdiet lorem placerat sapien scelerisque, sit amet hendrerit sapien hendrerit. Nullam sollicitudin nulla a lacus lobortis, ut volutpat ante fermentum. Donec eleifend ut lectus in dignissim. Donec sit amet lorem purus. Proin venenatis augue libero, eget consectetur diam scelerisque sollicitudin. Morbi leo lectus, convallis quis nunc vitae, malesuada bibendum leo. Cras condimentum tortor in justo rhoncus, quis porttitor dolor dapibus. Mauris luctus lacus id justo pharetra maximus. Maecenas blandit elementum quam at lobortis. Maecenas varius sapien et ligula consequat, sit amet blandit turpis ultrices. Duis dolor ligula, pretium eget mi at, ultricies luctus metus. + +Quisque id molestie mauris. Nullam placerat porttitor lacinia. Quisque at nisl nibh. Ut convallis maximus porta. Fusce vulputate ipsum id volutpat gravida. Proin ut nisl pellentesque, vulputate magna id, aliquam eros. Maecenas non tempor odio. Maecenas nisi quam, aliquet vitae mollis eget, auctor eu turpis. Etiam consectetur libero nunc. Mauris tincidunt turpis sit amet sodales sodales. Aliquam erat volutpat. + +Proin sed tellus mauris. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse luctus suscipit hendrerit. Donec efficitur semper lectus ac congue. Duis convallis vitae eros sit amet lobortis. Fusce eget ullamcorper turpis. Proin lacus quam, laoreet quis mollis vitae, molestie eu arcu. Nullam sed mauris in risus sollicitudin scelerisque nec non nulla. Pellentesque ut porttitor sem, nec sodales tortor. + +Donec dictum purus ligula, id volutpat leo vulputate sit amet. Etiam quis placerat arcu. Curabitur eleifend arcu et mauris maximus, id blandit erat gravida. Sed mollis libero odio, vitae mattis justo gravida quis. Etiam consectetur tristique justo, eu blandit orci ultrices in. Nam luctus dui a nisi suscipit, a facilisis risus gravida. Donec quis neque lobortis, accumsan dolor id, consequat quam. Duis vel elit mi. Suspendisse ex ipsum, egestas ut volutpat vitae, sagittis ac risus. Morbi commodo hendrerit elit sed vestibulum. + +Suspendisse sit amet pretium nibh. Mauris a ligula eget metus ornare aliquam. Proin eleifend orci vitae elit cursus, congue dapibus mi interdum. In tristique, nunc sit amet auctor placerat, sapien neque vestibulum nulla, non iaculis odio lorem in enim. Nulla libero leo, efficitur laoreet rhoncus a, pellentesque quis lacus. In consectetur, nunc ut placerat ultrices, quam leo pharetra ante, at blandit augue sem vel eros. Maecenas venenatis placerat ante, eget bibendum felis molestie a. Maecenas porta risus leo, id semper velit consequat vitae. Nulla at cursus nibh, nec volutpat urna. Curabitur a mollis nunc. Sed sagittis neque vel porta accumsan. Nullam sagittis, nisl ac ultricies bibendum, turpis odio pellentesque ante, eu porta mauris ipsum id lacus. Aliquam congue euismod porta. Maecenas fermentum dui eget nisl posuere iaculis. Donec a nulla mauris. Nam sagittis malesuada nulla sed commodo. + +Cras condimentum nibh urna, elementum finibus sapien eleifend vel. Quisque ac cursus urna. Vestibulum dictum erat non arcu efficitur consectetur. Pellentesque convallis dignissim urna nec luctus. Maecenas sed gravida metus. In egestas ex ut laoreet accumsan. Cras vitae consequat orci. Phasellus at orci pulvinar, bibendum orci sit amet, molestie nisi. Vivamus vitae erat maximus, consequat elit et, convallis erat. Pellentesque elementum vitae diam nec aliquet. Quisque purus sem, egestas eget ex ac, pretium ultricies est. Nam at tincidunt metus. + +Quisque quis enim interdum, laoreet felis quis, malesuada leo. Vivamus congue nisl sed eros ultrices mattis. Praesent dignissim ac velit finibus condimentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Ut eleifend iaculis eros, vitae pellentesque sapien ornare at. Nam pulvinar faucibus lacus quis mollis. Donec diam velit, tempor vel vestibulum id, cursus eu tortor. In hac habitasse platea dictumst. Nulla ipsum felis, sagittis non finibus non, suscipit eget dolor. Cras consequat purus a ante feugiat condimentum. + +Cras diam purus, vestibulum in sem at, pulvinar lobortis urna. Integer egestas, eros a pharetra sodales, lacus ante dapibus tortor, a molestie quam erat id sem. Donec ut nisi rutrum, laoreet mauris quis, pellentesque dui. Cras lobortis sem in bibendum malesuada. Quisque nec faucibus justo. Cras ac dui sollicitudin, cursus leo id, suscipit nunc. Aenean sem orci, sodales a tincidunt nec, euismod nec nisi. Sed sed nunc et diam consequat suscipit et in est. + +Duis tincidunt nisl arcu, et viverra turpis interdum at. Curabitur eget massa risus. Pellentesque sit amet interdum nisl. In aliquet id diam congue aliquet. Etiam tincidunt quam nec ligula consequat venenatis. Ut feugiat placerat nunc ut bibendum. Sed a nulla ut massa elementum molestie. Nunc dignissim viverra erat. Donec ornare tellus at purus placerat efficitur. Nullam in ligula quis tellus tincidunt fringilla a vitae tortor. Maecenas magna lorem, facilisis quis laoreet sit amet, suscipit nec ex. Praesent tellus lorem, dapibus eget arcu eu, rhoncus efficitur massa. Vestibulum feugiat laoreet tristique. Praesent mattis eget libero ac sagittis. Nullam sed semper eros, quis consequat leo. Curabitur sagittis elit vitae lectus lobortis, in tincidunt purus tincidunt. + +Praesent mattis elit eget metus cursus molestie. Proin ac libero pellentesque, consequat diam quis, pulvinar augue. Aliquam sit amet erat tortor. Duis placerat leo eget felis imperdiet congue. Cras vel nibh a velit cursus aliquet. Maecenas eu augue quis justo placerat laoreet et et nulla. Praesent dictum urna tempus iaculis semper. Donec ex nibh, sodales eget felis eu, molestie elementum erat. Sed nunc metus, consectetur eu felis sed, semper condimentum orci. Integer in dui pulvinar, ultrices neque in, scelerisque dui. Donec congue est odio, in tincidunt lectus congue et. Nulla mollis, purus a rhoncus hendrerit, erat sapien lobortis mauris, molestie porta ante nisl sed turpis. + +Pellentesque aliquam hendrerit eros ac molestie. Phasellus eget enim odio. Vivamus ac diam non diam pulvinar luctus a a risus. Maecenas tempus urna vel leo aliquam consequat. Mauris porta feugiat fringilla. Mauris diam lacus, suscipit eu placerat eget, iaculis ut ipsum. Duis sit amet aliquam quam. + +Maecenas dui elit, auctor at sapien vel, pellentesque sollicitudin lacus. Vivamus non odio non ante imperdiet gravida a ac sem. Morbi porta risus eu cursus vehicula. Etiam consectetur nunc tortor, et commodo nisi eleifend nec. Vestibulum imperdiet rhoncus lectus non porttitor. Mauris tempor leo id neque porta, at venenatis metus placerat. Integer vehicula nulla a ante efficitur feugiat. Morbi vel eros id mi ultricies aliquet in sed orci. Quisque a massa mauris. Praesent blandit est sollicitudin, porta mauris volutpat, vulputate lorem. Donec gravida molestie lorem, ut semper eros ullamcorper vel. Curabitur et nisl sed elit fermentum lacinia. In malesuada porta lorem vitae ornare. Morbi non purus sed erat finibus ullamcorper pharetra a elit. Suspendisse fermentum tellus eu malesuada feugiat. + +Pellentesque ante ipsum, lobortis at enim viverra, lobortis fringilla velit. Sed lacinia ipsum sit amet molestie tempus. Mauris quis congue justo. Maecenas purus diam, pulvinar quis felis congue, volutpat suscipit lectus. Proin id libero volutpat, faucibus ex vel, varius lectus. Proin porttitor nisl vel nibh laoreet rutrum. Nunc ornare, massa in ornare accumsan, nunc urna mattis massa, nec dignissim dolor erat a nisl. Etiam finibus urna enim, in suscipit erat elementum id. Praesent vehicula sapien quis aliquam efficitur. Praesent diam tellus, ultricies a iaculis a, varius et mauris. Nulla facilisi. Maecenas ac dui porta, eleifend urna sed, bibendum lorem. + +Etiam eu turpis condimentum, egestas diam et, venenatis sapien. Pellentesque sit amet imperdiet est. Donec facilisis enim quis pulvinar eleifend. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam eu est in felis interdum laoreet varius id leo. Donec justo lacus, mattis ut massa pulvinar, finibus aliquet dui. Suspendisse potenti. Etiam id consequat massa. Donec bibendum suscipit tortor, vitae lacinia risus euismod a. Quisque non faucibus turpis. Duis vulputate elit vitae diam ornare sagittis. + +Praesent a vulputate velit. Ut id fermentum mauris. Mauris rhoncus ante eget urna semper, sed facilisis nisl elementum. Ut ullamcorper lorem tincidunt malesuada bibendum. Praesent sodales odio augue, egestas tincidunt nulla aliquam in. Nunc tincidunt a dolor vel ultrices. Cras aliquet, eros et tristique pretium, orci metus tempus sapien, eget facilisis ante tellus ac odio. + +Nullam finibus lobortis leo, quis cursus orci ultrices nec. Donec volutpat est libero, et tempor dui gravida ut. Nunc commodo sapien lacus, quis vulputate lacus dignissim sit amet. Praesent varius eu quam et cursus. Pellentesque dapibus imperdiet gravida. Ut luctus sit amet dolor et pretium. Donec non volutpat est. Quisque bibendum sem sit amet justo ullamcorper, eget porta erat tincidunt. Nunc ut tortor tincidunt magna tincidunt lacinia ultrices ut neque. Fusce aliquet massa nulla, eu aliquet justo egestas vitae. Pellentesque efficitur porttitor libero nec vestibulum. Fusce orci arcu, pretium vitae fringilla sed, faucibus in enim. + +Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus velit sapien, ullamcorper non condimentum at, lacinia nec enim. Duis porta lorem ut condimentum luctus. Sed vestibulum condimentum leo a porta. Phasellus sed libero purus. Nam non lectus sapien. Nunc ac auctor nisi. Phasellus sed felis ac nibh finibus mollis. Etiam quis luctus ipsum. + +Curabitur mollis, magna at convallis feugiat, nibh felis rutrum neque, malesuada interdum dolor justo vel tortor. Duis lobortis, felis ut blandit convallis, eros augue consequat nunc, in bibendum turpis neque a lectus. Etiam ut sapien tortor. Curabitur porta aliquet purus, et tempor felis porttitor mattis. Fusce facilisis, risus eu sagittis luctus, nisi lorem rutrum tortor, in vulputate leo diam ut eros. Vestibulum quam neque, faucibus ut consectetur ac, euismod non dolor. Etiam lacinia tempus diam. Proin eget vestibulum odio. Ut placerat mi dolor, sit amet dictum sapien varius dapibus. Donec a sem faucibus, viverra risus ac, mollis mauris. Proin tincidunt magna vel rutrum posuere. Sed lobortis neque a lacus maximus tincidunt. + +Pellentesque ac pharetra enim. Morbi venenatis urna quis viverra scelerisque. Aliquam fringilla, arcu non luctus fringilla, nisi leo lacinia nibh, nec maximus erat ex nec lectus. Nullam finibus tempus egestas. Phasellus non fermentum diam. Nulla dictum risus ac ornare sollicitudin. Donec euismod leo pellentesque magna pellentesque finibus eget ut erat. Nam nunc felis, pharetra eu egestas sit amet, efficitur eget augue. Vestibulum eu egestas nisi. Curabitur vitae fringilla urna, sed venenatis enim. Nulla in enim dapibus, fermentum arcu vel, euismod urna. Quisque lorem enim, accumsan vitae fermentum ut, venenatis non urna. + +Cras nibh tellus, molestie id elit ac, porttitor ultrices quam. Nulla rutrum facilisis nisl, vel venenatis lectus aliquam id. Sed bibendum rhoncus volutpat. Nam hendrerit consectetur nibh, a rutrum risus viverra sit amet. Vivamus quis blandit sapien. Suspendisse potenti. Ut id sollicitudin felis, vitae finibus erat. Sed placerat ut nunc quis imperdiet. Aenean leo quam, viverra eget nunc at, elementum consequat nunc. Nulla sit amet volutpat justo. Fusce mi libero, euismod sit amet sapien non, bibendum molestie odio. Donec et nisi congue, aliquet ex cursus, fringilla magna. Aenean non turpis nec ex sodales feugiat. Nunc ultricies mauris nisi, a fringilla felis commodo ut. Quisque quis dui ut risus viverra pellentesque. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis consequat neque, non dapibus nisl. Pellentesque nec est scelerisque, dapibus nisi quis, interdum augue. Vivamus eget sagittis orci. Nunc volutpat vulputate nibh id viverra. Curabitur id vulputate ipsum. Maecenas a ligula at enim congue congue. + +Vestibulum non turpis ultricies, lobortis elit quis, aliquet nisl. Donec non risus ut erat aliquam venenatis. Quisque finibus diam id erat mollis, eget suscipit orci condimentum. Proin tempus aliquam purus, quis blandit mi eleifend eget. Nam fermentum odio eu est iaculis cursus. In commodo neque urna, id ornare odio dapibus eu. Quisque fringilla ante vel ex accumsan interdum. + +Mauris quis lacus elementum, ultrices dui in, egestas sem. Suspendisse pharetra lacus vitae justo dictum, eu elementum enim maximus. Morbi mollis placerat quam, vitae fringilla elit rhoncus id. Integer fermentum neque vitae nibh suscipit, ut rhoncus orci vestibulum. In pharetra bibendum ipsum ac mollis. Praesent sed lorem vitae libero mattis molestie. Fusce auctor dui id sapien tincidunt, ac tempus elit egestas. + +Suspendisse pellentesque mauris at cursus molestie. Duis quis sem et justo ullamcorper mattis vitae sed est. Praesent mattis velit risus, a dictum eros rutrum in. Quisque dui odio, convallis nec ex at, fermentum pharetra tellus. Sed leo dolor, sodales in facilisis in, facilisis in dui. Curabitur elementum ornare nunc scelerisque aliquet. Phasellus nec risus lacus. Suspendisse id congue nunc, sit amet viverra urna. Mauris tristique facilisis lectus, ac tristique libero porta a. + +Suspendisse urna risus, rhoncus nec est vel, commodo ultricies felis. Proin id pharetra odio. Donec eros magna, convallis sed elit suscipit, consectetur convallis lorem. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec sit amet est nisi. Phasellus finibus lacus nec nunc porta, sed consequat quam volutpat. Sed malesuada quam elementum dui placerat, non interdum erat tincidunt. Sed vel ullamcorper dui, id ultrices enim. Nulla ultrices id purus at posuere. Nam tristique nulla vitae augue pellentesque venenatis. Donec pretium id nisl ac lobortis. Ut mauris ex, consequat ut consectetur at, varius quis dui. Donec vulputate tellus in purus condimentum, ac tempor massa lacinia. + +Quisque commodo ultrices lectus. Sed aliquam id diam eget blandit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris ac lacinia arcu. Aenean vulputate, sem eget mattis vestibulum, lorem tellus elementum lacus, nec aliquam ipsum felis eleifend turpis. Donec bibendum tincidunt lobortis. Mauris finibus tellus in congue feugiat. Donec a ipsum a nisi hendrerit ultrices id quis tellus. Quisque eget egestas ligula. Vivamus posuere nulla id libero lobortis, vitae accumsan tortor porttitor. Etiam sit amet justo nibh. Cras lorem ipsum, blandit nec scelerisque in, congue ut sapien. Donec vitae pretium lacus, nec consequat neque. + +Aenean ut semper risus, nec consequat ligula. Donec libero turpis, auctor sit amet mollis id, tincidunt sed nisi. Suspendisse ipsum augue, aliquet quis varius quis, scelerisque sed est. Cras auctor odio a tempus tempor. Duis commodo aliquam efficitur. Etiam sed dui et ligula fermentum interdum eget non ex. Ut ex nibh, auctor id ante in, sollicitudin suscipit quam. Fusce blandit, eros sit amet mattis aliquam, mi justo hendrerit nunc, vel porttitor diam lectus eget risus. Pellentesque tellus turpis, egestas quis dignissim in, placerat id neque. + +Maecenas in sem turpis. In rhoncus gravida dui at imperdiet. Nullam efficitur, libero eget mollis aliquam, risus augue dapibus eros, id ultricies sapien elit vitae justo. Aenean efficitur dignissim condimentum. Integer tempor imperdiet tincidunt. Nunc orci tellus, viverra vitae volutpat non, pellentesque eget tortor. Aliquam iaculis feugiat odio, eu ultricies tellus facilisis quis. Morbi vel urna nec magna consequat placerat quis vitae ex. Curabitur interdum lorem sit amet massa luctus pellentesque. Maecenas nibh elit, tempor ac mollis vel, dictum eget urna. Vestibulum rhoncus nec quam eget ullamcorper. In sed lacus risus. Vestibulum a pellentesque dolor, quis convallis magna. Mauris eu molestie ligula. Nullam cursus, ligula eu maximus rutrum, dolor nibh rutrum metus, et blandit erat dui eget quam. Vivamus cursus urna ante. + +Ut tristique est ac orci egestas gravida. Vestibulum vestibulum in risus eget rutrum. In commodo sed nunc ut accumsan. Aenean a eleifend ante. Suspendisse aliquam, elit vel lobortis tristique, erat libero bibendum mauris, gravida maximus mauris ipsum in erat. Nam non arcu elit. Vestibulum et porta nisi. In dapibus feugiat ex vitae rhoncus. + +Aenean sed mauris id velit ultrices consequat. Quisque vehicula in neque id vulputate. Fusce posuere posuere ultricies. Donec ornare suscipit eros. Quisque vel massa nec nulla aliquet lobortis. Nulla eget purus erat. Sed eget varius nibh. Morbi molestie aliquet dictum. Nunc ut placerat odio. In finibus nisl magna, non malesuada lacus accumsan sed. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam posuere ut tellus at dapibus. Fusce lectus lectus, sagittis sed vulputate non, ornare non neque. Cras eu ipsum quis nunc pulvinar consectetur eget tristique orci. + +Etiam facilisis congue suscipit. Proin volutpat in justo tempor efficitur. Nulla eu neque gravida, ornare nibh a, semper ipsum. Praesent auctor fermentum lacus, quis feugiat sem laoreet vitae. Mauris id dui ante. Aliquam dapibus sed dui eu maximus. Nullam nisl sem, tincidunt non orci facilisis, elementum ultrices mi. Sed vel nisl nulla. + +Nam suscipit tempus posuere. Aliquam convallis sit amet mi eu consectetur. Mauris condimentum id nibh eget sodales. Integer efficitur magna ac mollis eleifend. Phasellus odio diam, tempus vel tempus id, placerat vel diam. Curabitur nec tempus augue. Aliquam erat volutpat. Aenean nulla tortor, commodo id gravida a, vulputate vitae sapien. + +Nulla a leo at eros egestas condimentum a quis massa. Sed sit amet augue a eros auctor auctor quis vitae dolor. Sed ultrices condimentum nulla, a aliquet eros ultricies at. Praesent pulvinar orci ut porttitor eleifend. In lobortis congue turpis ac bibendum. Donec fermentum ante in velit dictum ultricies eu non mi. Vivamus mollis efficitur ipsum in consectetur. Fusce id orci sed risus lacinia tristique ut vitae urna. Suspendisse ante libero, malesuada ac nibh ac, tempus feugiat augue. Aliquam posuere risus sed risus aliquam, a facilisis felis malesuada. Nullam rhoncus volutpat velit, at efficitur turpis pharetra ut. Sed felis diam, imperdiet vitae dui eget, lobortis pellentesque nulla. Vestibulum ut lectus massa. Ut at tristique tellus. Etiam tempor auctor tortor, a venenatis diam dignissim vitae. Etiam et est placerat, pulvinar erat sit amet, hendrerit risus. + +Sed ex ipsum, ornare nec neque vitae, pretium mollis ex. Nam porta placerat tortor, sit amet congue nisl fringilla sit amet. Cras ante diam, tempus a diam nec, vestibulum facilisis arcu. Praesent at nibh condimentum, bibendum odio eget, feugiat risus. Donec vel lorem tempor, molestie purus pulvinar, pharetra tortor. Praesent urna risus, varius ac urna semper, lobortis eleifend ipsum. Duis sodales erat ut lacus fermentum placerat. Quisque et sapien ligula. Curabitur vitae urna eu libero ultricies cursus. Donec semper, magna non tincidunt feugiat, eros nibh pharetra augue, ac aliquam turpis lorem et mi. + +Vivamus malesuada elit mollis bibendum viverra. Aliquam erat volutpat. Sed malesuada, sem ut commodo venenatis, urna mi vehicula velit, eget sollicitudin nulla dolor vitae odio. In fringilla, nisi sed feugiat hendrerit, sem tortor dignissim erat, sodales cursus urna nisi quis turpis. Pellentesque nibh arcu, rutrum at volutpat ac, finibus eu massa. Quisque dignissim justo posuere eros ornare, et ullamcorper libero condimentum. Suspendisse eu ligula ut velit vulputate malesuada et quis diam. Phasellus malesuada leo ligula. Sed vel massa lacus. Donec bibendum dictum tincidunt. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer fermentum purus sit amet urna scelerisque, quis laoreet erat faucibus. Vivamus semper mi id elit rhoncus, at commodo metus consectetur. Vestibulum nec ultricies lectus. Donec imperdiet, velit ut aliquet dapibus, neque dolor ornare tellus, vitae interdum ipsum purus sit amet risus. + +Maecenas scelerisque metus at risus vulputate, ac pulvinar sapien condimentum. Sed feugiat neque vel varius tempor. Cras ultricies nunc blandit vulputate tempus. Nulla vehicula lectus nec ligula aliquet tristique. Donec pharetra eleifend sem quis suscipit. Aliquam imperdiet vestibulum enim, quis vehicula felis luctus in. In ac urna facilisis, auctor erat mollis, viverra arcu. Vivamus scelerisque neque at lorem efficitur malesuada. + +Suspendisse luctus eget mi sit amet scelerisque. Ut et elit tincidunt, pharetra mauris et, vestibulum nunc. Duis feugiat pulvinar mollis. Suspendisse potenti. Morbi risus sem, efficitur ac vehicula quis, iaculis ac eros. Etiam tincidunt ante ac magna scelerisque porta. Etiam eget augue sapien. Cras faucibus tristique tincidunt. Aenean vitae magna faucibus, tristique lectus at, sagittis nunc. Phasellus nisl massa, suscipit at gravida eu, laoreet at purus. Morbi sit amet metus id sem iaculis convallis. In hac habitasse platea dictumst. Curabitur placerat orci sit amet malesuada dictum. Nulla sagittis imperdiet eros, ut elementum dui tincidunt vitae. Integer et efficitur justo. + +Integer dolor odio, molestie vitae vestibulum et, finibus eget orci. Sed laoreet cursus diam, a laoreet metus. In laoreet purus nec turpis pharetra maximus quis sit amet mi. In hac habitasse platea dictumst. Donec blandit fringilla est eu fringilla. Maecenas lacinia cursus sem, non vulputate tortor congue eget. Proin ut odio placerat, ornare metus in, interdum leo. Curabitur ac facilisis urna. Nulla est felis, sagittis ac malesuada non, sagittis vel nibh. + +Curabitur vel elit a augue porta volutpat sed id ipsum. Fusce nec felis lobortis, vehicula mauris in, sagittis risus. Vivamus id lectus lacus. Aliquam eget ex sapien. Etiam at est tellus. Morbi sodales, justo in aliquam faucibus, enim nulla suscipit risus, eget feugiat sapien urna quis felis. Sed vestibulum leo ac nisl tempus, at consequat mi sollicitudin. Nunc viverra enim nisl, ornare pellentesque mauris egestas sodales. Maecenas facilisis rutrum lorem, id volutpat felis elementum a. Integer viverra nisl sed sodales molestie. Vestibulum orci ex, venenatis nec nunc in, scelerisque dignissim nisi. Nam pharetra sed massa et dapibus. Integer a ligula lorem. + +Pellentesque sed nunc quam. Fusce vel lacinia purus. Mauris molestie consectetur eros eget tristique. Proin eu ipsum nec magna commodo tempor. Integer justo neque, vehicula euismod neque eget, tristique ultrices tellus. Curabitur molestie turpis at tincidunt dignissim. Integer in lorem eget magna eleifend vestibulum vitae a massa. Integer pretium risus vel leo rhoncus porta. + +Nullam aliquet vestibulum faucibus. Morbi bibendum posuere magna vel porta. Cras quis velit id ipsum volutpat aliquam a vitae lorem. Donec volutpat gravida neque quis gravida. Proin interdum neque sit amet dolor scelerisque aliquam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed dapibus vehicula mattis. In hac habitasse platea dictumst. Donec fringilla commodo lectus, eget placerat augue vestibulum id. Suspendisse pellentesque, mi luctus pharetra sagittis, turpis lectus pretium metus, eu fermentum mi tortor eget diam. + +Mauris porttitor sodales interdum. Cras accumsan gravida mollis. Aliquam blandit ligula nec feugiat vestibulum. Curabitur ultricies sodales velit, non scelerisque urna ultricies sed. Maecenas convallis iaculis felis et tempus. Nam volutpat, lorem nec scelerisque tempus, nulla dui varius sapien, quis pharetra lacus nisl nec turpis. Mauris nec posuere turpis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec hendrerit libero a mi auctor, nec rutrum nisi suscipit. Nam id turpis ipsum. Nullam dignissim leo velit, vitae tincidunt mi aliquet in. Aenean porta diam venenatis sagittis tincidunt. Nam viverra, lorem vitae vulputate mattis, eros neque posuere odio, non sagittis dui mauris vitae enim. Cras sem risus, accumsan vitae urna in, tempor blandit nulla. Nulla vulputate iaculis dapibus. + +Maecenas quis massa porttitor, efficitur felis feugiat, tempus nibh. Suspendisse nisi magna, imperdiet nec semper porttitor, tempor eget risus. Aliquam sit amet arcu non nibh consectetur tincidunt. Maecenas at mauris purus. Curabitur pretium nisi dignissim nunc porttitor convallis. Nam risus urna, congue id nisl et, vulputate aliquet dui. Nunc at arcu tincidunt massa vehicula aliquam. Suspendisse facilisis auctor ligula quis hendrerit. Integer sagittis ligula non quam porta finibus. Donec consectetur dignissim ipsum a blandit. Suspendisse rutrum ex sit amet gravida viverra. Sed elementum vehicula diam sed pretium. Nunc elementum porta condimentum. + +Donec sit amet malesuada nunc. Phasellus viverra varius tortor luctus congue. Nulla ornare auctor fermentum. Nullam at massa eget ipsum dapibus posuere vitae non felis. Sed accumsan, metus vel volutpat vestibulum, ligula risus lobortis ex, et placerat diam nibh ullamcorper erat. Nunc libero leo, aliquet pretium urna eu, tincidunt pretium augue. In non lectus urna. + +Curabitur bibendum velit sed lacus finibus tristique. Donec et vehicula nulla, in dapibus mauris. Nam vel tempor tellus, et suscipit purus. Nam non molestie nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec et interdum magna, consequat ultricies ex. Pellentesque eleifend purus at ipsum consectetur accumsan. Proin non nisi nibh. Suspendisse quis luctus justo, sed tempus enim. Curabitur ut auctor nibh. + +Nulla consectetur sapien ac justo blandit vestibulum. Duis laoreet in lacus eu convallis. Integer eu mi massa. Suspendisse iaculis semper odio, nec rutrum massa bibendum quis. Nulla a ullamcorper est. Proin eget bibendum velit, ut pharetra lectus. Cras sagittis augue nec est commodo dictum. In dictum gravida turpis vel pellentesque. Nullam quis mauris lorem. Vivamus blandit lacus nec fermentum elementum. Integer vel enim nec tortor semper ultricies eu vitae lacus. Vestibulum vestibulum dui at lorem cursus, fermentum accumsan ante fermentum. + +Fusce pretium sollicitudin urna. Nulla pulvinar aliquam ex varius ullamcorper. Fusce at porta elit. Integer volutpat ultricies urna, ut tincidunt quam egestas sed. Duis efficitur condimentum nunc a suscipit. Ut ornare justo ante, non euismod lectus auctor at. Quisque et sapien sed massa placerat pharetra. Vestibulum fermentum enim leo, non ullamcorper quam fermentum id. Mauris eget malesuada felis, ullamcorper consequat mi. Nulla vel dolor volutpat, ullamcorper quam at, venenatis diam. Duis nec lectus ultrices, varius nunc nec, faucibus leo. + +Integer vel ipsum sit amet nulla bibendum ultrices. Vestibulum luctus erat eget massa dictum pharetra. Praesent congue arcu in sodales commodo. Etiam ut molestie turpis. Sed et nibh nec risus tempor venenatis non vitae nibh. Nulla finibus rhoncus semper. Vivamus pretium justo et facilisis pretium. + +Vivamus sit amet congue erat. Sed ligula dui, sollicitudin eget finibus quis, dignissim a orci. Donec velit dolor, ornare id nunc ut, vestibulum sollicitudin tellus. Aenean feugiat varius euismod. Morbi id nisi eu eros tempor mattis. Pellentesque sed placerat justo. Praesent lectus ipsum, convallis et venenatis eu, tincidunt quis odio. Duis eu lorem eu risus hendrerit eleifend in et mauris. Morbi semper mollis iaculis. Mauris sed tellus a sem hendrerit semper quis non elit. Sed consectetur, magna vitae ultricies facilisis, velit nunc porttitor dolor, sagittis tincidunt mauris mi vitae dui. Fusce felis felis, viverra sed nisl sit amet, accumsan euismod elit. Sed ac enim ac nibh posuere pulvinar. Sed placerat sapien id sapien convallis imperdiet. Curabitur eu vulputate turpis. + +Maecenas finibus ex sit amet mauris mollis pellentesque. Phasellus elementum nulla nunc, et rutrum dolor placerat non. Duis id dolor nulla. Aliquam elit lacus, sollicitudin ut gravida sed, egestas et massa. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas gravida diam at erat efficitur, ac vestibulum tortor finibus. Ut suscipit lacinia nisl, id tempus metus maximus et. Aenean porta augue bibendum massa aliquam efficitur. Cras accumsan elit ac lectus vestibulum cursus. Nam tempor gravida ipsum ut pharetra. Donec nec dui lacus. Proin vitae pharetra urna. + +Maecenas venenatis tortor vestibulum, fringilla odio vitae, fermentum diam. Curabitur ut risus risus. Praesent porta ipsum in vulputate lacinia. Aliquam vestibulum ex vel volutpat malesuada. Nulla nisl nunc, dapibus a erat at, rutrum lacinia justo. Etiam dignissim convallis nibh at mollis. Phasellus dignissim est efficitur risus blandit semper. Pellentesque posuere fermentum nulla non gravida. Donec vitae lectus porttitor, pharetra lectus sit amet, imperdiet purus. Curabitur cursus purus vitae elit cursus congue. Donec volutpat vitae turpis a suscipit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse vestibulum vestibulum neque. Pellentesque varius sem a nibh vehicula, lobortis mollis augue facilisis. Donec id turpis id quam porta sodales. Nulla scelerisque diam id magna congue, ut fermentum erat bibendum. + +Ut gravida placerat justo. Proin interdum laoreet eros ac dignissim. Donec turpis nisl, blandit in orci id, lobortis semper diam. Cras tempor mauris sed feugiat finibus. Curabitur gravida mi nibh, sed aliquet diam placerat ac. Nullam faucibus massa elit, eu rutrum erat viverra eu. Morbi ac mauris egestas, ullamcorper felis at, placerat nisl. Nullam eget odio vitae enim sagittis dapibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis faucibus est elit, eget commodo lectus gravida et. Donec congue, justo lobortis dictum malesuada, urna nisi molestie nisl, sed imperdiet lorem sapien sit amet augue. Nullam bibendum metus ipsum, eu convallis nulla egestas ut. Donec porttitor nisl et ornare commodo. Ut fringilla odio lacus, at pharetra erat sollicitudin commodo. Quisque at posuere odio, eget vulputate felis. In hac habitasse platea dictumst. + +Donec eget sapien ut lacus bibendum interdum. Nam et nisl purus. Integer sit amet purus id quam varius vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque purus ligula, venenatis ultrices convallis a, laoreet eget ligula. Vestibulum ut leo sed felis porttitor viverra vitae sed purus. Suspendisse ultrices ipsum vitae erat cursus malesuada. Aenean porttitor imperdiet posuere. Nulla et tortor ipsum. Suspendisse sit amet euismod nibh. Suspendisse sem lectus, placerat et accumsan porttitor, commodo non sem. + +Proin ante diam, consequat sed pulvinar quis, malesuada et sem. Nullam in mauris eget lacus posuere scelerisque. Ut pretium mi leo, pulvinar egestas leo semper et. Mauris dui odio, porta eu laoreet a, elementum a justo. Donec eu est eros. Sed eu aliquet eros. Pellentesque bibendum et mauris ac mattis. Mauris feugiat tortor ipsum, in feugiat tellus gravida sit amet. Fusce aliquet diam at turpis condimentum tempor. Vivamus luctus justo ut libero viverra, a varius dui tincidunt. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In vitae iaculis magna. + +Cras ultricies eros turpis, vel luctus quam elementum ut. Duis eget odio iaculis, aliquet arcu non, consequat libero. Etiam commodo id arcu a bibendum. Mauris congue lacus ac quam elementum consequat. Quisque sagittis, augue sed pellentesque sagittis, felis nulla egestas elit, a lacinia urna metus sed elit. Cras mollis nulla sit amet tempus dictum. Donec rutrum, turpis eu feugiat imperdiet, purus tortor dapibus quam, a lacinia lorem risus nec arcu. Quisque a sagittis lectus. Aliquam quis magna nec ante malesuada egestas at mollis lacus. Sed ante ex, posuere vitae felis eu, ullamcorper euismod turpis. Aliquam quis magna sit amet tortor placerat fermentum ac sed risus. + +Duis justo tellus, dapibus sit amet pretium et, maximus in est. Nullam rhoncus in neque ut iaculis. Aliquam fermentum, odio id scelerisque varius, magna tellus sagittis risus, sit amet dignissim lacus est non nulla. Nulla in congue quam. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi quis ornare diam. Praesent faucibus velit eget volutpat elementum. Suspendisse cursus convallis neque sit amet maximus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque eleifend id eros nec aliquet. Pellentesque mattis lacus vel sollicitudin facilisis. Aliquam in nunc non nisi tristique dapibus eget vel augue. Cras sit amet lectus ultricies, dictum est sit amet, laoreet metus. + +Proin sodales quam sed urna tincidunt, eu consectetur nibh vehicula. Etiam porta magna id porttitor vehicula. Etiam suscipit convallis lorem. Morbi iaculis diam ante, id commodo enim tristique quis. Cras elementum mauris sit amet odio euismod, ut pellentesque quam aliquam. Mauris iaculis ultricies nunc id placerat. Nunc vestibulum, sapien in feugiat ullamcorper, tellus eros gravida ante, id lobortis leo arcu eget mauris. Ut dictum porttitor ornare. Proin euismod vestibulum molestie. Ut nec ante quis dolor semper lobortis et et elit. + +Sed sed gravida felis, sed bibendum dolor. Vestibulum ultrices convallis felis quis efficitur. Donec nec convallis odio. Morbi volutpat imperdiet efficitur. Maecenas tincidunt consectetur nunc ac blandit. Suspendisse placerat eleifend fringilla. Aliquam venenatis scelerisque sem nec dignissim. Morbi ante nulla, tristique in neque et, pellentesque accumsan massa. Suspendisse iaculis odio eget porttitor viverra. Proin mollis magna lectus, eget tempus mi auctor at. Integer tristique efficitur rutrum. In pharetra ut felis nec interdum. + +Aenean congue, nisi eget congue mollis, massa lacus tristique metus, quis egestas urna arcu vitae sem. Nulla massa justo, pellentesque in laoreet eget, congue cursus eros. In dignissim in ligula blandit posuere. Curabitur aliquet mollis ex, sed interdum ante egestas at. Ut felis dui, cursus non ipsum sit amet, laoreet luctus eros. Mauris vehicula ac odio at malesuada. Cras tincidunt venenatis turpis. Etiam pellentesque volutpat mollis. Vivamus ante sapien, porttitor nec sapien eget, sollicitudin accumsan leo. Curabitur sollicitudin, justo vitae auctor placerat, massa magna molestie metus, vel vehicula odio turpis in neque. + +Aenean auctor eget elit a volutpat. Sed scelerisque eu erat vel ornare. Donec dolor dolor, aliquet quis augue porttitor, rutrum rhoncus lacus. Duis porta, libero a porta venenatis, odio magna dignissim mauris, eget feugiat velit ex eget neque. Nam non suscipit ex. Etiam sit amet metus sagittis, luctus nulla non, interdum enim. Proin quis sem at sem bibendum imperdiet. Pellentesque a magna pellentesque, ultricies tortor ut, aliquet ipsum. Nulla venenatis varius nunc, et rutrum nibh. Nam mauris velit, ultricies quis eleifend ac, porta id purus. Integer dapibus malesuada scelerisque. Praesent malesuada consectetur arcu at mattis. Curabitur sed nunc ac metus ullamcorper volutpat. Sed dictum nisl enim, sed interdum elit iaculis in. + +Nulla sollicitudin ultricies nunc in vehicula. Morbi eleifend magna sit amet tincidunt dapibus. Sed auctor lacus justo, vel sodales felis consequat at. Suspendisse id molestie dolor, nec consectetur purus. Integer varius augue ipsum, et consequat odio sollicitudin a. Etiam volutpat odio et tellus pellentesque, vitae viverra lacus malesuada. Praesent laoreet dapibus sem nec ultrices. Fusce nisi ex, gravida at odio nec, varius finibus magna. Vivamus sed nulla a dolor laoreet auctor feugiat a orci. Suspendisse cursus sed metus ut laoreet. Maecenas aliquam tempor fermentum. In hac habitasse platea dictumst. + +Nulla pulvinar, libero a viverra dapibus, ante velit placerat metus, ac fringilla ligula tortor sit amet dolor. Nullam quis est urna. Sed condimentum faucibus augue sit amet placerat. Vivamus semper a urna at lacinia. Nam ut ultrices nulla. Maecenas sed turpis libero. Proin id euismod neque. Nullam eros libero, posuere mattis luctus nec, accumsan non est. Morbi placerat laoreet erat aliquam sagittis. Pellentesque sollicitudin nulla in erat iaculis, sit amet hendrerit tortor blandit. Nam gravida nulla arcu, sit amet vehicula diam congue non. Ut condimentum, enim sit amet faucibus porta, urna nisi luctus tortor, non ullamcorper tellus nunc vitae tellus. Etiam vitae quam fringilla, mattis risus non, molestie sapien. + +Integer auctor eros arcu, vitae tincidunt felis auctor non. Nunc rhoncus urna mi, vitae pulvinar ipsum mollis non. Sed luctus dui ac turpis iaculis iaculis. Vestibulum porta vulputate orci sit amet bibendum. In sagittis ante quis purus dictum, eget molestie tellus fermentum. Ut tincidunt magna in mauris laoreet laoreet. Quisque nulla mauris, vestibulum quis ornare sit amet, vehicula ac dui. Vivamus vitae nisi in leo interdum molestie. Proin lacinia sagittis velit, vel tincidunt tortor aliquam eget. Sed aliquet mi id eros aliquam, vitae pulvinar nisl cursus. Mauris vitae eros sit amet erat rutrum tristique. + +Fusce magna augue, iaculis vitae tristique vitae, egestas in magna. Aliquam erat volutpat. Nullam vulputate libero justo, a feugiat ante convallis quis. Proin eu imperdiet sapien. Duis congue nisl vel ipsum dignissim, sed fringilla tellus placerat. Integer condimentum sagittis odio, eu malesuada dolor ultrices auctor. In hac habitasse platea dictumst. Nunc id eros ultrices, bibendum sapien eget, maximus eros. + +Donec a libero vitae massa fermentum rhoncus sit amet sit amet sapien. Phasellus nec diam fringilla, egestas nunc fringilla, auctor erat. Nam in porttitor massa. Nam non fringilla purus. Maecenas pretium, risus lacinia maximus vehicula, ex elit consequat metus, vitae commodo urna justo a sem. Fusce id est ligula. Vivamus ipsum tortor, tristique sed nisl vitae, fermentum sodales magna. Curabitur auctor mi a quam molestie ultrices. + +Morbi aliquet, lectus et sagittis pretium, lacus leo tincidunt orci, eu vestibulum lectus lectus nec odio. Suspendisse non lacinia elit, quis venenatis tortor. Vivamus ac lacinia leo. Sed consectetur vehicula enim sed euismod. Vestibulum ultricies sed risus vitae vulputate. Nunc molestie eget mi lacinia tristique. Nulla sed porta est. Aenean accumsan, eros ut dictum laoreet, nisi elit porttitor quam, nec porttitor libero purus ut velit. Mauris pellentesque, mauris et volutpat vestibulum, ex odio tristique ante, vitae convallis augue augue a nulla. Vestibulum sed bibendum lorem. Aenean sed hendrerit justo. Fusce massa tellus, sodales ut ante non, dignissim tincidunt leo. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec aliquam finibus accumsan. Quisque at tellus nec arcu molestie fringilla sit amet non nulla. Nulla facilisi. Morbi vel sodales tortor. Integer eget finibus arcu. Quisque rhoncus urna est, lobortis sagittis sem suscipit commodo. Morbi sodales congue nibh. Nunc eget ex sapien. Vestibulum eget massa varius, pharetra nisl ac, ultrices mi. Praesent in turpis auctor elit rhoncus semper. Sed nibh mi, posuere in lacinia id, convallis congue mauris. + +Aenean dignissim in ligula in commodo. Aliquam erat volutpat. Integer quis fermentum nunc, ut tincidunt ante. Nullam maximus a urna eu efficitur. Suspendisse turpis elit, lacinia non purus eget, suscipit fermentum ligula. Fusce ornare diam odio, imperdiet cursus justo hendrerit vitae. Sed laoreet diam nibh, ac placerat purus suscipit ac. + +Aliquam sodales dapibus purus vitae facilisis. Phasellus risus quam, ullamcorper id egestas non, feugiat ac enim. Praesent mattis laoreet turpis sit amet eleifend. Proin venenatis non massa eu gravida. Vestibulum iaculis non dolor quis imperdiet. Sed non dui a mi placerat pulvinar sit amet vel tellus. Nam quis eros elit. Mauris auctor velit convallis nunc gravida suscipit. Etiam vitae ante enim. Mauris auctor quis ligula eu egestas. Nullam pharetra ipsum nec magna efficitur laoreet. Maecenas ipsum velit, vestibulum a varius sed, dictum eget lacus. Aenean sagittis dui sed ex ornare, et vehicula libero tristique. Nulla arcu justo, hendrerit ac facilisis eu, finibus vel purus. Nam tristique lectus dictum suscipit auctor. + +Nullam placerat volutpat consectetur. Suspendisse elementum velit at mi suscipit congue. Donec non metus fermentum, iaculis leo a, accumsan sem. Aliquam tempor, leo venenatis molestie mattis, ex ex placerat urna, vitae mattis ligula odio commodo massa. Phasellus dictum urna at lacus condimentum pellentesque. Nunc aliquam tempus ex et cursus. Curabitur eu euismod mi. Nulla mattis elementum lorem, nec imperdiet purus auctor ut. Aliquam vitae efficitur dolor, quis convallis ex. Donec luctus mauris in diam ultricies, et tristique odio iaculis. Suspendisse potenti. Fusce a mauris fringilla, porta sem vel, accumsan magna. Nam quis nibh sem. + +Suspendisse eleifend sapien non orci sodales interdum. Nunc ex nibh, iaculis mattis molestie et, hendrerit quis neque. Sed imperdiet tempor nibh quis viverra. Aenean ut velit placerat lacus vulputate luctus quis non eros. Sed ante velit, pretium tempor justo vitae, blandit tristique enim. Etiam blandit augue ut malesuada maximus. Mauris eu tempus dolor, in tincidunt elit. Morbi sem leo, pulvinar et iaculis sed, bibendum eu felis. Aliquam erat tortor, pretium vel est quis, accumsan porttitor mauris. Etiam ut interdum felis. Nam euismod pellentesque diam ut sodales. + +Duis egestas diam ac elementum efficitur. Mauris posuere eros dui, non mattis ipsum sollicitudin nec. Vestibulum enim augue, gravida non porttitor sed, semper et mi. Vestibulum tincidunt dui id libero laoreet suscipit. Suspendisse potenti. Vivamus molestie consequat fermentum. Sed eget porttitor augue, vitae tincidunt dui. Etiam cursus, enim vel euismod varius, dui elit ullamcorper ipsum, id placerat dui augue fermentum sem. Nunc varius, sem et pharetra faucibus, justo ante fermentum nisi, vitae tempus felis elit in dui. Nam non tellus ut felis vulputate dictum hendrerit ac massa. Morbi convallis mi a nisi auctor, ut vulputate nunc interdum. Pellentesque vel ultrices leo. Maecenas eget lectus lobortis, ultrices nisl eu, porta purus. Pellentesque convallis quam vel vulputate ultricies. In ultrices eu mauris ultrices ullamcorper. Fusce aliquet leo mauris, sit amet fringilla urna euismod sit amet. + +Quisque ac nulla non tellus porttitor maximus nec id mauris. Nunc mattis dolor libero, vulputate consequat sapien mattis in. Vivamus mi nisi, molestie vel varius et, cursus et nulla. Morbi ullamcorper tristique quam nec eleifend. Etiam tempus ante dapibus, viverra urna sit amet, hendrerit orci. Nulla vel ex pharetra purus dignissim molestie a eu ex. Mauris convallis iaculis mi. Integer commodo sodales sem in ornare. In egestas scelerisque est et tincidunt. + +Ut porttitor, sem auctor sollicitudin laoreet, velit erat vulputate tortor, ac sollicitudin nisi lacus non magna. Donec vel cursus leo, sit amet placerat neque. Aliquam erat volutpat. Suspendisse scelerisque massa a lacus interdum scelerisque. Phasellus ac semper lectus. Morbi eget mollis mauris. Nunc enim felis, blandit et lacinia at, porttitor quis eros. Curabitur condimentum velit vitae justo dictum, vel finibus metus viverra. Sed sed aliquam turpis. Curabitur convallis nulla ut sollicitudin semper. Ut et ipsum ut arcu ultrices porta nec sit amet nisl. Duis vestibulum sollicitudin enim vel fermentum. Nulla pulvinar lobortis urna, id semper leo eleifend non. Praesent sed ligula nec sapien sollicitudin pellentesque quis sit amet dui. Donec posuere tempus nisl nec sollicitudin. + +Sed suscipit ligula at euismod feugiat. Nunc vitae imperdiet lacus. Etiam sit amet posuere purus, sollicitudin fermentum lacus. Nam ut ex non urna dictum fermentum. Nulla sit amet dui vitae mi semper laoreet. Fusce posuere mi at sapien mollis, ut convallis elit fermentum. Aliquam at mi dolor. + +Aliquam vel mauris mauris. Fusce scelerisque sit amet massa ac tristique. Cras eget est ut justo fringilla laoreet. Nunc purus tortor, hendrerit a condimentum eu, venenatis in velit. Pellentesque sodales mattis leo, at consequat arcu venenatis at. Morbi id lectus ipsum. Phasellus ac sollicitudin libero, in mollis nunc. + +Duis finibus est ligula, eu vulputate magna malesuada in. Proin sit amet pellentesque elit. Mauris luctus placerat tristique. Praesent sit amet cursus augue. Nam sagittis, metus quis finibus accumsan, quam sem sodales enim, ac blandit est massa eget tellus. Donec sed pulvinar lorem, at hendrerit velit. Ut auctor arcu nec felis fringilla elementum. Integer at risus ut nibh placerat rhoncus id eu nulla. Fusce dapibus sodales purus in aliquam. + +Nulla sed nulla sapien. In in risus hendrerit arcu ornare porttitor. Curabitur non lacinia enim, non luctus diam. Vestibulum viverra ex vel nisi lacinia, id ullamcorper lectus placerat. Sed porta lectus id tellus porta, eu pretium elit tristique. Cras pharetra blandit justo vitae vestibulum. Morbi imperdiet hendrerit nunc vel sollicitudin. Vivamus aliquam enim non aliquam vulputate. Vivamus mi arcu, scelerisque eu scelerisque pulvinar, pellentesque a quam. Cras nec tortor porttitor, cursus justo a, posuere felis. Etiam ullamcorper id nisi quis hendrerit. Nunc ut accumsan enim. Vestibulum placerat gravida lorem, at varius lectus accumsan nec. In hac habitasse platea dictumst. Integer eu vehicula ante. + +Fusce egestas nulla ac arcu varius, at iaculis tortor dictum. Aliquam pretium condimentum nisl, at vestibulum justo tempor non. Fusce nec mattis libero. Duis quis mattis nunc. Sed id fringilla ex, nec sagittis mi. Nunc ut fermentum turpis. Donec tincidunt ligula eget fringilla suscipit. Praesent gravida, augue in posuere condimentum, arcu libero vehicula sapien, ac cursus urna dolor eget nulla. In sodales metus elementum dolor pellentesque, quis sollicitudin orci malesuada. Nam lacus neque, euismod consequat lacus in, tempus commodo risus. Integer vel odio eu purus viverra auctor non nec nisi. Fusce vestibulum nulla nec lectus pretium, ut accumsan odio tempor. + +Mauris non dolor eget odio sagittis suscipit. Vivamus id tellus sit amet orci eleifend facilisis non ut ipsum. Mauris odio tortor, condimentum vel velit eget, posuere faucibus velit. Donec ligula turpis, maximus non leo eget, molestie pulvinar augue. Sed id neque lacinia, accumsan ex ac, tincidunt sem. Mauris accumsan auctor nibh, id viverra dui posuere ut. Quisque placerat risus nunc, eu fringilla nisl pulvinar a. Curabitur tempor, turpis ultricies sodales venenatis, est nisl porttitor purus, eu viverra metus nisi sed felis. Vivamus mattis ut felis sed laoreet. Vivamus aliquam urna non est facilisis, sit amet volutpat augue sagittis. Nam eu dictum leo. + +Praesent vel ultricies mauris, sed finibus metus. Morbi pharetra ut nisi eget porttitor. Aenean suscipit suscipit mi id sodales. Duis sit amet risus tincidunt, lobortis nisl lacinia, bibendum enim. Proin porta vestibulum lorem ut cursus. Integer et mi efficitur, consectetur justo nec, tincidunt tortor. Vivamus magna risus, condimentum nec leo sed, tincidunt fringilla ligula. + +Aenean dictum pulvinar iaculis. Mauris non sagittis elit. Nam ac massa sit amet nulla aliquet fringilla. Nullam sit amet lacus sed nibh posuere interdum ut in purus. Proin lorem sapien, tincidunt eget elit faucibus, pharetra mattis magna. Vivamus sit amet ipsum porta, pretium lectus quis, lobortis purus. Morbi leo leo, facilisis a vulputate vitae, feugiat nec tortor. Donec a imperdiet sem. + +Curabitur eu quam neque. Nullam ut blandit leo. Nunc arcu orci, viverra et gravida vel, mollis ac elit. Morbi efficitur pulvinar diam vulputate efficitur. Quisque aliquet dapibus porttitor. Praesent ullamcorper sodales quam et dictum. Quisque convallis vehicula elit, et ullamcorper nulla vulputate eget. Praesent dictum, ante venenatis accumsan faucibus, lorem nibh aliquet ante, vitae efficitur nulla nunc eget nisl. Quisque posuere, dui mollis faucibus condimentum, est mi dictum ex, sed luctus libero odio at sem. Fusce sapien ex, varius sed suscipit ut, suscipit quis nisl. Nulla facilisi. Etiam ac maximus sapien, et aliquet enim. Nullam rutrum sem ut feugiat congue. Curabitur pellentesque fermentum metus non sagittis. Cras urna justo, finibus quis ipsum sodales, faucibus interdum ipsum. Nunc vulputate accumsan nisi non bibendum. + +Nulla suscipit fringilla massa pharetra eleifend. In hac habitasse platea dictumst. Pellentesque sollicitudin quam ac lacinia sodales. Curabitur auctor vestibulum nulla vitae dignissim. Integer eu tellus at nisi ultricies dignissim in nec libero. Ut laoreet lectus lacus, eget tincidunt ligula accumsan non. Proin in orci sit amet sapien lobortis aliquam. Donec hendrerit facilisis erat, non sollicitudin diam feugiat nec. Donec maximus, metus vitae sodales placerat, dui nisl iaculis nunc, posuere dignissim lorem lorem vel diam. + +Vestibulum metus nisl, ullamcorper id sodales at, efficitur vel lectus. Ut eget egestas eros, vitae sollicitudin libero. Suspendisse mollis magna quis ullamcorper ultrices. Pellentesque eu eros ornare, consequat nisi eu, feugiat purus. Cras in lacus dui. Maecenas dapibus pharetra ex non cursus. Curabitur massa ipsum, fermentum a iaculis id, feugiat fringilla est. + +Ut ornare leo elementum metus viverra faucibus. Proin sit amet risus nec nunc posuere pharetra. Pellentesque laoreet in lorem nec accumsan. Suspendisse nec elit quam. Sed eu rutrum tortor, in ornare mi. Aenean volutpat velit magna, et viverra justo convallis a. Pellentesque eu ligula mi. Phasellus nec elit commodo, tincidunt nisl ac, convallis lacus. In auctor commodo dui eu auctor. Sed quis ipsum eget ex faucibus fringilla id et orci. Nulla iaculis fermentum sollicitudin. Nullam varius laoreet orci, sed bibendum massa faucibus non. Mauris maximus augue ac odio lacinia iaculis. Duis dapibus bibendum neque vel efficitur. + +Fusce diam velit, molestie tempor lectus quis, tempor blandit lectus. Nam porttitor elit ac nibh ultrices tincidunt. Fusce sit amet blandit massa. Nulla ante dolor, posuere fringilla finibus in, accumsan sit amet diam. Aliquam vitae lacus ex. Nullam diam purus, hendrerit sed sapien in, imperdiet ornare tellus. Nam felis diam, imperdiet ac tincidunt at, laoreet id libero. Donec semper commodo sollicitudin. Sed elementum, tellus eu ultrices accumsan, arcu lorem imperdiet mi, vitae laoreet massa tellus eu ante. Nunc tempor, tellus sed suscipit congue, erat velit luctus lectus, vel porta diam nunc et tortor. Curabitur eleifend est fermentum, sollicitudin metus luctus, iaculis nunc. Phasellus congue quis arcu ac venenatis. In non commodo mauris. Morbi placerat pretium risus, non blandit arcu aliquam sed. + +Sed turpis lectus, egestas vitae molestie quis, cursus non mi. Quisque varius nulla in tellus dictum, cursus congue nisl commodo. Fusce dui ex, placerat ultricies nibh sed, suscipit rutrum lorem. Sed non mollis leo. In et metus id augue tempus rhoncus nec sed mauris. Sed venenatis sollicitudin erat a placerat. Ut rhoncus eu ligula sed ullamcorper. + +Sed sed elementum enim. Suspendisse accumsan eros nec urna congue aliquam. In condimentum purus elit, sed semper dui ultrices et. Suspendisse id aliquam nibh. Vestibulum porttitor commodo pharetra. Fusce pellentesque justo nisl, vel dignissim orci congue quis. Vestibulum id tincidunt elit. Praesent imperdiet nibh ac enim tempus, ac egestas nisi volutpat. Mauris blandit arcu id efficitur consectetur. Nam ac eros sed quam scelerisque luctus non sed leo. Aenean vitae mattis dui. Integer molestie, enim eget gravida imperdiet, tortor lacus scelerisque tortor, nec interdum libero lorem id est. Nullam viverra, turpis sit amet viverra vehicula, dui ex lobortis ligula, ac commodo arcu nisl ac magna. + +Vivamus at mollis nisl, at ornare arcu. In a maximus justo, non bibendum erat. Nulla vel velit at elit vehicula ornare id eu quam. Duis blandit et ex vitae elementum. Sed in dui vitae nisi volutpat dictum. Sed pellentesque laoreet lorem nec bibendum. Pellentesque tempor, ante sit amet dignissim porta, diam mi eleifend ipsum, ac luctus est augue quis mi. Pellentesque volutpat enim sem, sit amet vulputate ante aliquam quis. Morbi nisl turpis, efficitur sed felis in, scelerisque imperdiet turpis. Sed blandit ante leo, eget volutpat libero faucibus vel. Morbi commodo rutrum nisl, ac interdum nisl. Donec accumsan fermentum diam at interdum. Curabitur at leo ac odio accumsan tempus sed nec orci. Cras vel felis in magna luctus mattis. Mauris pharetra, velit id faucibus imperdiet, lacus sapien maximus nulla, sed accumsan risus turpis non mi. + +Nulla varius tellus sit amet mauris maximus vehicula. Quisque efficitur magna lectus, elementum feugiat leo suscipit et. Suspendisse sollicitudin lectus justo, sed varius dui porttitor et. Sed feugiat velit id eros rutrum pulvinar. Mauris egestas, ligula quis sollicitudin tincidunt, libero dolor imperdiet nulla, et lobortis est ipsum id urna. Integer blandit purus vel leo suscipit, vel imperdiet ante ornare. In pellentesque facilisis massa, id commodo risus fermentum nec. Maecenas sit amet erat nec libero egestas consectetur. Curabitur velit tortor, mollis at enim vitae, accumsan euismod sem. Nunc vel elementum metus. Ut sodales mattis enim, ut vestibulum massa consequat non. Ut quis feugiat urna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam iaculis at arcu vitae fermentum. Donec non massa nisi. + +Nulla vehicula tincidunt ligula, suscipit ornare nulla placerat vitae. Cras vitae ullamcorper orci, tempor vestibulum tellus. Nulla facilisi. Vivamus odio nulla, molestie ut dolor sed, scelerisque lacinia nisi. Integer eget purus ultrices, pulvinar neque et, efficitur sapien. Nulla dignissim accumsan urna volutpat hendrerit. Pellentesque sagittis tempus molestie. + +Phasellus id felis in neque aliquet ornare. In hac habitasse platea dictumst. Morbi a semper libero. Etiam diam lectus, tristique nec turpis vitae, varius accumsan ipsum. Vivamus suscipit velit velit, in convallis dui dapibus vitae. Duis consequat ultrices orci ac euismod. Proin ultricies augue sit amet erat convallis ultrices. Aenean tincidunt, tellus in condimentum auctor, augue velit pulvinar lacus, in tempor odio felis et ipsum. Cras mauris velit, finibus eu lorem a, feugiat tempus enim. Nam sit amet dictum lectus. In hac habitasse platea dictumst. Suspendisse potenti. + +Aliquam mattis non justo quis mattis. Nam hendrerit est sit amet ligula sagittis efficitur. Sed vehicula, lacus at aliquam pharetra, diam magna faucibus neque, tincidunt viverra lectus arcu sit amet purus. Morbi vitae ex vestibulum odio bibendum pulvinar. Aenean fringilla neque sit amet urna sodales finibus. Duis efficitur imperdiet dui ac lacinia. Pellentesque eget nibh neque. In pretium gravida blandit. Curabitur iaculis malesuada urna sit amet laoreet. Etiam lacinia sem neque, sed laoreet quam varius in. Curabitur sit amet ligula porta eros vestibulum imperdiet. Mauris vitae velit enim. Praesent quis justo ut ligula euismod lacinia. + +Aliquam elementum maximus orci, sed bibendum augue. Pellentesque et blandit lacus. Mauris a pharetra tellus. Nam consectetur dapibus lectus id finibus. Maecenas hendrerit porta magna, et placerat erat hendrerit accumsan. Pellentesque eu nunc sed tortor efficitur cursus vel in sem. Morbi eget hendrerit elit. In nec metus pretium, feugiat neque non, scelerisque felis. Nulla ultrices nisi sit amet lorem vulputate, a varius sapien gravida. Ut pulvinar vulputate purus ac imperdiet. Vestibulum lobortis laoreet feugiat. Etiam malesuada aliquam lacus, sed imperdiet orci dapibus ut. Morbi mattis odio ut tincidunt sagittis. Fusce libero felis, tempus eu felis ac, finibus bibendum nunc. Maecenas aliquet neque eu feugiat interdum. Aenean diam dolor, placerat quis leo non, vulputate tincidunt sem. + +Donec tellus orci, bibendum a enim et, molestie aliquam libero. Suspendisse tincidunt nulla eu libero bibendum sodales. Suspendisse accumsan nunc et magna bibendum, ac consequat purus vulputate. Cras gravida elit at ante consequat egestas. Aliquam erat volutpat. In laoreet malesuada nulla vestibulum pretium. Sed vel nisl ut enim eleifend feugiat id sit amet orci. Mauris lobortis eros nunc, tincidunt tempus turpis commodo nec. Aliquam commodo aliquam maximus. Donec vitae libero mattis, dignissim sem eget, sagittis ipsum. Nam malesuada dapibus orci non rutrum. Proin vitae pellentesque elit. Sed eget quam bibendum, elementum arcu quis, lobortis magna. Pellentesque porta dapibus auctor. Maecenas in congue eros, nec viverra lectus. Donec arcu nisi, rutrum sed leo in, consectetur hendrerit elit. + +Aenean faucibus volutpat velit vel posuere. Sed tortor lacus, faucibus a ultricies eu, volutpat nec diam. Quisque pulvinar odio non suscipit pharetra. Vivamus ultricies, metus sed feugiat aliquam, ligula dui porta purus, ac mattis est purus quis sem. Mauris facilisis ipsum sit amet augue egestas semper. Nam sit amet enim ex. Mauris convallis sapien viverra leo tempor, eu egestas neque iaculis. Nam quis condimentum erat. Phasellus mattis sapien id pretium ultricies. Praesent sollicitudin nunc at sapien eleifend aliquet. Aliquam laoreet neque orci, sed mollis tellus pretium sed. Fusce facilisis, enim nec iaculis tincidunt, ante odio pulvinar leo, at consectetur mauris magna vel mauris. Maecenas arcu massa, fringilla ut ipsum at, condimentum iaculis dolor. Maecenas sit amet fermentum dui. + +Donec mollis, velit ut volutpat varius, tortor orci pellentesque massa, eu rutrum augue risus eu erat. Vivamus libero quam, pulvinar ut dictum a, ultricies non leo. Ut lacinia tellus sed suscipit dictum. Pellentesque in odio sem. Quisque varius consequat erat sed venenatis. Phasellus dignissim ante sit amet dapibus sollicitudin. Nulla imperdiet nulla sem, at lobortis elit luctus nec. Sed vel tortor eget nunc finibus facilisis. + +Ut auctor eu eros at pulvinar. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse ac nunc sed nunc consequat placerat. Praesent placerat, leo eu ultricies aliquet, tellus ante hendrerit diam, nec blandit erat leo nec odio. Aliquam at nisl semper, vestibulum quam eget, malesuada justo. Phasellus ante metus, interdum vel tincidunt et, tempor eu massa. Maecenas maximus lacus id ligula suscipit, posuere rutrum lectus fringilla. + +Nullam ultricies massa sapien, sit amet elementum magna efficitur at. Curabitur feugiat, lorem ac lobortis auctor, neque nulla suscipit magna, et ultricies nisl tellus eget urna. Ut et euismod diam, sed pharetra felis. Duis tempor vitae augue et pulvinar. Vivamus tempus, nisi at aliquam egestas, diam nibh finibus sapien, nec luctus orci velit ut nulla. Maecenas ac justo egestas, condimentum sem et, pretium dui. Vestibulum sed nisl interdum, rhoncus lorem et, finibus mauris. Sed porttitor leo in arcu posuere malesuada. Nulla facilisi. Nullam a ipsum nulla. Etiam suscipit maximus lacus, dictum consequat mi suscipit et. Proin in erat tempus, varius erat vitae, luctus arcu. Nullam tempus turpis diam, in malesuada tellus porttitor non. Etiam iaculis diam est, nec gravida tellus molestie et. Cras ut porta tortor. + +Fusce eleifend gravida arcu vitae congue. Etiam pharetra hendrerit risus ut gravida. Suspendisse potenti. Aenean eget quam sed felis aliquet suscipit. Ut pellentesque id dolor a rhoncus. Nam pulvinar fermentum felis eget tempor. Sed id consequat quam. Nunc eu egestas enim. + +Nam a facilisis mauris. Nullam condimentum velit at magna tempus molestie. Curabitur egestas magna in hendrerit hendrerit. Ut diam quam, vestibulum et aliquam at, tincidunt eget massa. Suspendisse lacinia eros vel nisi tincidunt, sed fringilla ex pretium. Aenean pharetra ante lectus, a pulvinar ex venenatis a. Donec ac mi risus. Nullam vel imperdiet nulla. In lacinia nibh sit amet nunc tempor, sed tincidunt erat aliquam. + +Aliquam lectus libero, pulvinar vel nulla vel, ultricies lobortis ligula. Suspendisse a tincidunt metus, imperdiet interdum sem. Sed euismod lobortis tortor. Duis quis turpis eget nunc gravida ornare. Ut dapibus purus non dui lacinia, et posuere ex accumsan. Mauris placerat massa vitae erat pharetra dictum. Sed euismod tellus nec mi dictum, nec commodo nibh consectetur. Vestibulum at porttitor tellus. Curabitur id metus lacinia, ullamcorper lectus vitae, viverra sapien. Nam pretium ligula a scelerisque luctus. Quisque maximus lacinia magna. Maecenas non sodales metus. Quisque vitae lacus nibh. + +Aliquam erat volutpat. Nam scelerisque bibendum nisl eu malesuada. Sed sed ante luctus, accumsan arcu egestas, consequat nisi. Duis volutpat nisi neque, sit amet ornare arcu gravida sit amet. Proin enim nunc, laoreet ut dictum in, mattis vel sem. Aenean dignissim, dui quis ultricies tempor, tortor lacus semper ligula, eu porta risus felis sed mi. Morbi at molestie nisi. Phasellus quis venenatis justo. Morbi quis sem a enim placerat condimentum ut vitae nulla. Proin luctus suscipit leo vitae tempor. Mauris bibendum velit orci, eget hendrerit purus iaculis non. Etiam auctor tortor dolor, in feugiat urna hendrerit sit amet. Ut semper suscipit dictum. Aliquam id ligula rutrum, feugiat tellus et, consequat ligula. Donec in dapibus leo. Aenean dapibus augue eu sapien luctus elementum. + +Etiam in finibus urna, eget molestie neque. Morbi eu massa velit. Sed at ex metus. Etiam non gravida massa, eget accumsan dolor. Fusce feugiat tortor et nibh dignissim ullamcorper. Aliquam nec purus quis orci vestibulum laoreet eget eget ligula. Donec vitae feugiat lectus. Etiam quis dictum augue, sit amet sodales lacus. Suspendisse rhoncus nulla vel sagittis vestibulum. Proin a interdum dolor. Nunc ac pulvinar eros, elementum congue odio. Integer sed ex rutrum, tristique lectus auctor, pretium ligula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed volutpat eros vel nunc blandit, ut imperdiet nunc facilisis. + +Pellentesque mollis arcu justo. Proin ipsum est, feugiat in sapien a, ullamcorper accumsan risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at dolor sem. Morbi tempor hendrerit augue eu viverra. Morbi facilisis a nulla sed pretium. Aliquam feugiat pharetra mattis. Morbi molestie vestibulum accumsan. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus in purus tellus. Duis ut massa ac massa lacinia luctus. Ut ut est tempus, rutrum quam sed, pulvinar tellus. Donec at urna quis nisi consectetur ullamcorper. Praesent pulvinar tempor ex, tincidunt tempor velit semper at. Quisque in sapien convallis, aliquam arcu eget, semper nibh. + +Fusce in suscipit purus, eget sodales elit. Cras aliquam blandit laoreet. Donec aliquet, nisi eu vulputate posuere, eros odio porta arcu, non gravida nisi diam in arcu. Fusce feugiat felis arcu. Donec a felis eros. Ut cursus, erat eu eleifend mollis, lorem arcu vehicula justo, non eleifend mauris risus et leo. Pellentesque in pulvinar nisi, eget gravida nisl. + +Pellentesque justo mauris, condimentum sit amet nisi nec, volutpat finibus metus. Nulla pulvinar orci ipsum, iaculis vestibulum magna facilisis eu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ut egestas nulla. Integer eu eleifend eros. Suspendisse ante libero, ultrices sed dui ut, ultrices interdum enim. Sed quam turpis, laoreet sed euismod eu, vulputate id magna. + +Vivamus ullamcorper vitae justo vitae ultrices. Integer sollicitudin feugiat erat, vitae cursus tellus facilisis in. Aliquam nisi nisl, venenatis sit amet ante finibus, dignissim consectetur eros. Nunc et feugiat libero, non pellentesque ipsum. Donec sit amet lectus ac lorem rhoncus interdum sed vitae tortor. Vestibulum ac ligula elit. Proin rhoncus sapien id pulvinar ultrices. Nullam porttitor pellentesque arcu sit amet porta. Duis mauris lectus, rhoncus id lacus eu, porta iaculis sapien. Aliquam ut convallis felis. Mauris felis sapien, maximus eget leo faucibus, imperdiet vehicula lorem. Nulla at sodales erat. Cras pellentesque volutpat odio. Ut non orci nisl. Vestibulum interdum lacinia malesuada. + +Suspendisse in mattis magna. Praesent non mi non quam ullamcorper pretium pharetra at odio. Phasellus tincidunt eros at justo finibus, a congue quam luctus. Aliquam lorem elit, mollis vitae odio vitae, scelerisque porttitor metus. Donec id feugiat ipsum. Proin vitae rhoncus orci. Cras pharetra rhoncus sem, sed fermentum odio efficitur sed. Vestibulum sit amet metus imperdiet odio convallis varius. + +Duis egestas nisi risus, sed consectetur arcu egestas sed. Donec semper ultrices nisi, sit amet pharetra risus. Aenean pharetra urna sapien, sed volutpat justo ornare non. Mauris ultricies, metus sit amet pulvinar fringilla, lectus mi condimentum sapien, sed semper nisl diam nec nulla. Vestibulum at vestibulum nunc, sollicitudin maximus magna. Donec in porttitor massa, sed consequat nunc. Aenean sed sagittis lorem. Nullam molestie, nisl at scelerisque sollicitudin, ipsum lorem dignissim tortor, in aliquam ante tortor non ligula. Nullam enim erat, mollis in imperdiet non, consequat a mi. Donec ac fringilla leo. Etiam rutrum ligula ac neque suscipit, condimentum sagittis felis lobortis. Ut commodo laoreet lacus, at pellentesque augue sollicitudin non. Sed congue nibh sit amet lobortis commodo. In varius elit id lacus dignissim, in luctus diam aliquet. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +Vivamus pretium, lectus id varius semper, mi lectus porttitor dolor, sed commodo lorem quam id purus. Praesent eu dignissim sapien. Nullam ut mi vitae metus dictum pulvinar a sed est. Fusce nibh dui, volutpat sed sapien eu, gravida sagittis sem. Nunc ut ullamcorper magna, non sodales lorem. Nullam efficitur, lectus ac molestie luctus, tellus nunc luctus lorem, accumsan commodo tortor leo consectetur enim. Quisque vitae nunc velit. Donec tincidunt lectus nec erat ullamcorper tempor. Phasellus in ipsum ac mi dictum placerat. Nullam ultrices a risus eu pellentesque. Sed dapibus placerat diam, tempus aliquam orci interdum non. Mauris mauris velit, luctus ut pellentesque at, vulputate in purus. Ut nec velit condimentum, placerat neque et, efficitur nunc. Interdum et malesuada fames ac ante ipsum primis in faucibus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +Phasellus fermentum, ligula vitae bibendum rutrum, velit lorem dictum nunc, a feugiat ante ipsum non nunc. Nulla porta tellus quis sapien pretium consequat. Maecenas ut velit diam. Morbi laoreet vel metus ut sagittis. Praesent maximus, tellus ut iaculis porta, sapien sem laoreet erat, a dapibus massa metus eget nulla. Mauris in fringilla sapien. Ut eu tristique mi, ac maximus ex. + +Nulla facilisi. Nullam lorem felis, malesuada dignissim nisi vitae, dignissim egestas justo. Cras malesuada varius risus ut dictum. Cras aliquam laoreet pharetra. Maecenas nec porttitor quam. In blandit nunc enim, eget malesuada tellus sodales ac. Proin suscipit feugiat consectetur. Proin non vehicula libero, ut pulvinar ligula. Suspendisse bibendum hendrerit mi, non rutrum arcu. Proin ex arcu, sollicitudin eget massa quis, ultrices sodales arcu. In id mauris sagittis, suscipit magna dictum, luctus odio. Proin arcu orci, fringilla nec mauris nec, accumsan pulvinar ligula. Praesent tristique mauris sed tortor commodo facilisis. + +Donec faucibus est et sem laoreet finibus. Donec bibendum accumsan congue. Mauris sed mauris elementum, pellentesque eros et, lacinia nibh. Aliquam id velit gravida turpis rutrum condimentum. Quisque hendrerit diam augue, eget semper justo convallis a. Vivamus nec pellentesque elit, in rhoncus erat. Integer posuere urna vel diam dapibus, at ullamcorper lectus rhoncus. Vivamus laoreet mauris non imperdiet mattis. Sed pellentesque facilisis pellentesque. Curabitur fermentum aliquam rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla orci odio, pellentesque nec ipsum ut, interdum vehicula nisl. Nulla vel pharetra augue. Phasellus hendrerit feugiat semper. Etiam eleifend ipsum ut libero laoreet commodo. + +Proin arcu nisl, interdum vitae ipsum in, tincidunt egestas magna. Vivamus id sem maximus, sagittis nulla vel, sagittis risus. Fusce sollicitudin massa non diam varius, in vulputate odio accumsan. Morbi in enim dapibus, placerat elit non, imperdiet sem. In hac habitasse platea dictumst. Nam eget libero nisi. Duis venenatis vitae orci ut euismod. In in tortor sit amet lorem luctus laoreet. Praesent pharetra metus ac pharetra tincidunt. + +Proin vel sapien leo. Integer neque risus, malesuada et magna vitae, fermentum hendrerit est. Nunc tellus libero, rutrum id elementum ac, ullamcorper a orci. Praesent sed lorem at nulla condimentum feugiat. Ut iaculis lobortis neque id semper. Aenean vestibulum bibendum sollicitudin. Aliquam bibendum porta orci sed vehicula. Donec et placerat magna. Praesent eget augue ut ipsum pulvinar placerat. Cras finibus metus non nulla maximus commodo. Aliquam est augue, sagittis fermentum auctor et, ultricies in mi. Sed in molestie sem, a aliquet nisi. Mauris finibus velit vitae mattis pellentesque. + +Suspendisse porta quam ut ornare viverra. Sed eu urna diam. Aenean finibus enim non felis ullamcorper, at bibendum est cursus. Aliquam sodales dignissim elit. Nam faucibus pretium risus eu iaculis. Morbi vitae sapien sem. Praesent iaculis sagittis bibendum. + +Duis hendrerit quam ac porta lobortis. Praesent vel varius diam, a egestas velit. Fusce in mi convallis purus ornare pharetra. Vestibulum ac erat et velit aliquam placerat molestie ac metus. Aliquam pharetra mi a egestas viverra. Suspendisse eu vehicula elit. Donec id bibendum ligula. + +Nunc sit amet efficitur elit. Nam elit ex, dictum nec ornare a, suscipit a ante. Pellentesque quis placerat diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus imperdiet mi condimentum, dapibus leo id, fermentum arcu. Fusce sit amet quam ultrices, mattis erat a, efficitur risus. Donec metus ligula, placerat vel ligula eu, bibendum imperdiet erat. Aenean dignissim congue nulla, at fermentum dolor lobortis id. Sed mollis bibendum erat et lobortis. Nunc commodo lobortis nisi eu convallis. + +Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer convallis nulla et venenatis pharetra. Nunc et maximus elit. Vestibulum tristique ipsum quam, ac imperdiet nulla posuere eu. Ut maximus eleifend lectus, id rutrum felis commodo a. Cras viverra est rhoncus eros viverra, in tempus justo fermentum. Aenean vehicula tristique diam ut sagittis. Sed tempor lectus id molestie pellentesque. Vestibulum malesuada lobortis turpis. Curabitur feugiat justo vel lectus elementum consequat. Mauris viverra, elit et dapibus auctor, enim mi tempor sem, non dictum ipsum ligula eget massa. Morbi eu lorem venenatis, aliquet orci in, suscipit ex. Ut elementum consequat justo, ac congue lectus commodo at. Morbi a odio arcu. + +Vestibulum rutrum nec turpis ac consectetur. Suspendisse potenti. Sed finibus lorem eget tellus vestibulum, nec varius lacus tristique. Nam ultricies ligula urna, non ultrices neque rhoncus nec. Curabitur tellus sem, fringilla facilisis suscipit et, mollis id nisl. Curabitur metus purus, efficitur ut mauris vel, maximus venenatis urna. Sed tincidunt, risus vitae maximus hendrerit, metus diam mattis tellus, eget tincidunt nulla odio vel libero. Sed diam eros, varius nec tempus non, dictum a mauris. + +Etiam risus arcu, laoreet et luctus sed, maximus quis ex. Praesent volutpat justo at rhoncus laoreet. Aliquam aliquet ligula ornare turpis imperdiet maximus. Morbi rutrum ligula sit amet ipsum blandit sagittis. Curabitur mollis arcu orci, sed mollis dolor commodo sed. In in aliquam tortor. Nulla odio justo, consectetur vitae eros eu, tristique vestibulum lorem. Maecenas orci ligula, tempor sit amet vehicula vel, vehicula sit amet nisl. Vestibulum id augue id nulla commodo gravida nec nec mi. Sed dictum lectus velit. Duis ullamcorper sem dui, quis luctus magna commodo in. + +Praesent porta orci dignissim, feugiat sapien vel, fringilla nibh. Vestibulum nec iaculis libero, nec placerat metus. Cras at porta magna, sed accumsan odio. Donec commodo tortor ac risus lobortis auctor. Nunc placerat, ex at fermentum luctus, elit massa hendrerit libero, porta fringilla lacus ante at est. Nullam nibh dolor, pretium ut justo in, interdum fermentum libero. Nullam vestibulum elementum orci. Nulla vestibulum lorem eu vestibulum placerat. + +Proin non quam urna. Etiam vel erat risus. Aliquam lacus eros, feugiat ac scelerisque ac, varius sit amet leo. Vestibulum pharetra ultricies mauris, at cursus mauris sodales at. Ut id venenatis nibh, consequat mattis mauris. Curabitur accumsan congue lacus, et laoreet ante tristique eget. Sed laoreet, nulla id commodo elementum, velit elit commodo ante, nec laoreet est quam at ex. Praesent laoreet tortor sit amet arcu dictum, id tristique velit eleifend. + +Pellentesque vel libero porta, aliquet mauris a, luctus ligula. Morbi sit amet mollis turpis. Phasellus elementum scelerisque tortor eu pretium. Curabitur sodales metus vitae odio semper, sit amet aliquam dolor laoreet. Proin vitae erat lorem. Nullam facilisis, leo sed interdum suscipit, enim nulla aliquam sem, sodales mattis lorem enim sed lorem. Vestibulum et consequat velit. Mauris at turpis ullamcorper, tincidunt massa sed, viverra velit. Fusce iaculis nulla at risus mollis, id sagittis massa consectetur. Pellentesque mollis elementum elit. Nullam euismod volutpat libero accumsan auctor. Proin blandit felis ut nisi sollicitudin ornare. Cras tempus lorem rutrum, finibus nisl quis, vehicula erat. + +Curabitur lacus eros, posuere sit amet laoreet rutrum, efficitur at mi. Aenean eget felis nec mauris eleifend porttitor a in lacus. Vestibulum ornare, neque et commodo venenatis, velit nisl congue libero, viverra interdum nisl nisi vitae lorem. Ut at tempor felis, sed fermentum justo. Cras ac felis pharetra, laoreet ex in, elementum diam. Vestibulum odio nunc, pulvinar sed ultrices ut, dictum quis neque. Nullam pretium, augue vitae mollis congue, purus odio venenatis lacus, id sagittis ligula neque sed nisl. Morbi sollicitudin mattis nunc, in aliquam felis euismod in. Aliquam non venenatis sapien, vel eleifend elit. + +Pellentesque quis tortor odio. Mauris porta, justo et tincidunt porttitor, erat risus egestas elit, ac dictum massa leo ac enim. Aliquam erat volutpat. Morbi ut aliquet justo, sit amet convallis urna. Ut ex urna, condimentum aliquam ligula ac, commodo dictum sem. In auctor nulla id justo faucibus, tristique eleifend magna imperdiet. Donec at vestibulum tortor. Aliquam erat volutpat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam et accumsan ligula. Mauris quis volutpat risus. Etiam euismod, ex in molestie auctor, metus urna bibendum ante, in cursus mi urna eu diam. Sed imperdiet eleifend sem vitae rutrum. Morbi posuere venenatis placerat. Sed ut massa nec velit facilisis vestibulum at nec odio. Aliquam cursus suscipit tellus, ut malesuada velit iaculis eget. + +Vivamus dignissim, orci tincidunt egestas viverra, neque tortor ornare elit, sit amet viverra diam nunc nec dolor. Sed et diam vitae sapien porta tempor eu a lectus. Fusce in erat massa. Ut hendrerit ac sem id tincidunt. Ut ullamcorper efficitur leo, vel convallis lorem tincidunt ac. Nullam pellentesque ut leo id pellentesque. Integer metus metus, semper sed arcu eget, pharetra pulvinar justo. + +Nunc porttitor nec nisl vitae egestas. Sed non scelerisque sem. Donec feugiat magna at convallis luctus. Fusce consectetur lacus quis nibh venenatis, at laoreet libero euismod. Aenean eget sagittis dolor. Etiam id risus viverra, tempus augue eu, cursus sem. Mauris vel varius ex. Fusce imperdiet rhoncus congue. Integer pretium felis in purus aliquet, ut pellentesque nibh consequat. Praesent vitae felis a turpis ornare ullamcorper ac at dui. Suspendisse vel cursus leo, eget lobortis mauris. Aliquam a imperdiet lacus, vitae mollis nisi. + +Integer hendrerit dignissim augue nec tincidunt. Phasellus quis aliquam ligula, sit amet eleifend nunc. Nunc velit tellus, dignissim quis ipsum eu, posuere blandit neque. Pellentesque eget tincidunt neque, ut porta felis. Quisque pulvinar lectus in lorem sagittis pretium. Donec nunc dui, iaculis sed nunc vitae, varius faucibus leo. Aliquam feugiat urna lobortis felis consectetur dapibus. + +Cras finibus, dui sed ornare accumsan, sapien leo consequat sem, ac semper ante metus vel neque. Aliquam auctor in nibh ut vulputate. Fusce at mauris ullamcorper turpis fringilla pellentesque. Duis volutpat, sem ac hendrerit mattis, ante nunc aliquam mauris, quis sodales libero libero a tellus. Ut ornare nisl ut mauris mattis maximus. Nulla massa leo, congue a erat at, iaculis luctus diam. Maecenas rhoncus vel nunc id interdum. Vivamus condimentum nibh ut cursus hendrerit. Aliquam erat volutpat. Vestibulum sed convallis magna, eget tincidunt leo. Maecenas sed tortor aliquet, sodales turpis id, gravida arcu. Aenean sodales libero lacus, et pellentesque sem tristique vel. Sed auctor consectetur sem, sed aliquam diam blandit a. Proin et est posuere, pharetra felis ac, rhoncus eros. + +Nulla scelerisque risus elit, et congue dolor ultrices in. Integer tempus convallis posuere. Nullam in pulvinar risus. Aenean luctus viverra leo sit amet iaculis. Aenean vehicula viverra sapien, nec tempor massa cursus vel. Aliquam mauris lectus, mattis sed arcu sit amet, hendrerit facilisis tortor. Suspendisse varius, elit a venenatis tincidunt, dolor mi condimentum dui, eu imperdiet turpis quam maximus dolor. Nulla arcu turpis, suscipit sed cursus quis, molestie nec lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque elementum feugiat nibh, ac congue sem varius vel. Fusce ultrices tempus arcu, sit amet mattis lacus placerat sit amet. In suscipit quam ac sollicitudin lacinia. + +Pellentesque sit amet viverra arcu. Vivamus eleifend eleifend libero, sed egestas nibh. Mauris vitae metus eget tellus mattis viverra. Aenean orci lorem, lacinia at efficitur eget, cursus vel purus. Cras eu ipsum ornare, imperdiet augue et, consequat arcu. Nullam id viverra urna. Etiam lacinia, libero a fringilla sagittis, justo arcu laoreet justo, vitae aliquet sem quam at est. Nunc vitae orci a risus fringilla dignissim ac sed quam. In at maximus augue. Aenean malesuada vestibulum nunc at semper. + +Donec venenatis porttitor sem at fermentum. Donec bibendum lectus sed ante luctus, eu cursus nibh fermentum. Aliquam finibus, sem at rhoncus maximus, enim nunc sodales eros, vel maximus justo nunc quis enim. Mauris condimentum, odio sit amet sodales facilisis, orci mauris feugiat purus, blandit posuere lectus tellus vitae orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed at diam sed massa congue facilisis. Sed iaculis tristique orci id porttitor. Donec mollis hendrerit lorem, a ultricies metus tincidunt a. Vivamus condimentum malesuada massa ac eleifend. Praesent non justo cursus, vehicula enim ac, dapibus augue. Duis hendrerit hendrerit nisl, et laoreet neque viverra ac. Aliquam eu neque a orci gravida dapibus nec nec enim. Cras urna neque, egestas et purus sed, rhoncus ultricies quam. Vestibulum quis odio felis. Aenean dictum dui vitae faucibus ullamcorper. Suspendisse placerat malesuada eros vitae aliquet. + +Donec a rhoncus odio, eget venenatis arcu. Cras porttitor condimentum aliquet. Sed nibh enim, gravida quis orci vitae, faucibus iaculis tortor. Aenean venenatis sagittis elit, sit amet varius sem volutpat a. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec mi mi. Pellentesque eget magna fringilla, pretium arcu at, consequat ligula. Fusce ut varius est. + +Suspendisse bibendum dictum dolor, non accumsan odio porta ut. Nam a iaculis justo. Sed eu ultricies lectus. Donec quis vehicula nunc. Nullam ac malesuada magna. Suspendisse potenti. In convallis eros et eros feugiat, et interdum erat imperdiet. Donec dapibus sagittis convallis. Suspendisse sed justo lectus. Nunc tincidunt eu lorem ac lobortis. Maecenas convallis enim a lectus gravida, at finibus nisl tempus. + +Etiam eget maximus quam. Ut eget quam rhoncus, blandit sapien eu, ultrices nunc. Donec a pharetra quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque in odio imperdiet, rhoncus ligula non, cursus ex. Donec arcu turpis, imperdiet eu rhoncus vitae, lacinia ac dolor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus elementum neque ullamcorper, varius lorem eu, maximus est. Curabitur sollicitudin lobortis iaculis. Ut et pulvinar dui. Ut quis sem sit amet nisl gravida hendrerit. Nulla facilisi. Phasellus pulvinar viverra justo eget feugiat. Nunc vitae mauris venenatis, pulvinar erat vel, interdum diam. In hac habitasse platea dictumst. Nunc efficitur sem a fringilla dignissim. + +Praesent suscipit nulla ut orci interdum, ac lacinia sem interdum. Cras sapien urna, ultrices a consequat finibus, vulputate sed turpis. Nulla bibendum pharetra leo euismod auctor. Etiam sit amet lectus tincidunt, dignissim arcu et, varius tortor. Donec quis gravida libero, vel blandit nisi. Sed pulvinar posuere cursus. Pellentesque eget efficitur orci, id semper sapien. Quisque ut tristique nisl. Phasellus sed pharetra arcu. Sed sagittis pulvinar tristique. Nunc non accumsan lectus. Aenean non laoreet magna. Vestibulum ut dapibus ex. Duis rutrum enim et ultrices interdum. + +Vestibulum rutrum vel eros et condimentum. Phasellus sit amet leo augue. Ut dignissim imperdiet magna vitae tincidunt. Morbi non tortor non leo laoreet eleifend. Sed eget commodo nibh, ut ultricies est. Integer quis massa sapien. Vestibulum eros quam, eleifend eu tristique ac, dapibus eget ex. Sed posuere sollicitudin orci ut ultricies. + +Suspendisse vitae consectetur leo, eu interdum lacus. Proin mattis massa in varius semper. Fusce tincidunt, eros tempus laoreet aliquet, odio est lobortis metus, id pellentesque orci urna et felis. Nunc nec odio ligula. Praesent tincidunt consectetur libero. Proin convallis, ipsum id aliquam bibendum, sapien erat lobortis mi, non tristique justo arcu ut sapien. Nulla finibus diam massa, id tincidunt arcu venenatis consectetur. Pellentesque vulputate rhoncus quam, quis semper nibh rutrum sit amet. Nam mattis, nunc nec blandit tincidunt, purus eros ultrices nunc, ac laoreet nisl magna et purus. Aenean in aliquam dui. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed eget turpis justo. Curabitur vulputate et massa in pellentesque. diff --git a/src/eu/steffo/cleaver/logic/job/ChopJob.java b/src/eu/steffo/cleaver/logic/job/ChopJob.java index 5f38b35..d030ae4 100644 --- a/src/eu/steffo/cleaver/logic/job/ChopJob.java +++ b/src/eu/steffo/cleaver/logic/job/ChopJob.java @@ -54,6 +54,16 @@ public class ChopJob extends Job { */ private final ISplitConfig splitConfig; + /** + * The size in bytes of the {@link BufferedInputStream} wrapping the {@link FileInputStream} created when {@link #run()} is called to read the data from the + * file to be chopped. + * + * The same value is used for a temporary array in the {@link #run()} method where bytes are stored between being read from the input file and being written + * through a {@link ICleaverOutputStream}; after that amount of bytes are written, {@link #getProgress()} is called, updating the + * {@link Progress} of this Job. + */ + private static final int BUFFER_SIZE = 8192; + /** * Create a new ChopJob (with progress updates support). * @param fileToChop The file to chop. @@ -131,7 +141,7 @@ public class ChopJob extends Job { * @see CleaverForkFileOutputStream * @see CleaverSimpleFileOutputStream */ - protected OutputStream createSplitOutputStream() throws FileNotFoundException { + private OutputStream createSplitOutputStream() throws FileNotFoundException { if(splitConfig instanceof SizeConfig) { return new CleaverSplitFileOutputStream(fileToChop, ((SizeConfig)splitConfig).getSize()); } @@ -150,7 +160,7 @@ public class ChopJob extends Job { * @return The created {@link OutputStream}, wrapping the one that was passed as parameter. * @see CleaverDeflateOutputStream */ - protected OutputStream createCompressOutputStream(OutputStream sourceOutputStream) { + private OutputStream createCompressOutputStream(OutputStream sourceOutputStream) { if(compressConfig instanceof DeflateConfig) { return new CleaverDeflateOutputStream(sourceOutputStream); } @@ -166,7 +176,7 @@ public class ChopJob extends Job { * @return The created {@link OutputStream}, wrapping the one that was passed as parameter. * @see CleaverCryptOutputStream */ - protected OutputStream createCryptOutputStream(OutputStream sourceOutputStream) { + private OutputStream createCryptOutputStream(OutputStream sourceOutputStream) { if(cryptConfig instanceof PasswordConfig) { return new CleaverCryptOutputStream(sourceOutputStream, ((PasswordConfig)cryptConfig).getPassword().toCharArray()); } @@ -193,7 +203,7 @@ public class ChopJob extends Job { root.appendChild(((ICleaverOutputStream)outputStream).toElement(doc)); TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = null; + Transformer transformer; try { transformer = transformerFactory.newTransformer(); } catch (TransformerConfigurationException e) { @@ -208,15 +218,10 @@ public class ChopJob extends Job { } } - /** - * The size of the buffer where bytes are read to before being written into the {@link OutputStream} (currently {@value} bytes). - */ - private static final int BUFFER_SIZE = 8192; - @Override public void run() { try { - InputStream inputStream = new FileInputStream(fileToChop); + InputStream inputStream = new BufferedInputStream(new FileInputStream(fileToChop)); OutputStream outputStream = createCryptOutputStream(createCompressOutputStream(createSplitOutputStream())); this.setProgress(new WorkingProgress()); diff --git a/src/eu/steffo/cleaver/logic/job/StitchJob.java b/src/eu/steffo/cleaver/logic/job/StitchJob.java index 9628673..5965237 100644 --- a/src/eu/steffo/cleaver/logic/job/StitchJob.java +++ b/src/eu/steffo/cleaver/logic/job/StitchJob.java @@ -38,6 +38,15 @@ public class StitchJob extends Job { */ private Document chpDocument; + /** + * The size in bytes of the {@link BufferedOutputStream} wrapping the {@link FileOutputStream} created by {@link #run()} to reconstruct the original file. + * + * The same value is used for a temporary array in the {@link #run()} method where bytes are stored between being read through a {@link ICleaverInputStream} + * and being written to the reconstructed file; after that amount of bytes are written, {@link #getProgress()} is called, updating the + * {@link Progress} of this Job. + */ + private static final int BUFFER_SIZE = 8192; + /** * Construct a StitchJob, specifying the *.chp file to import the settings from. * @param file The *.chp file. @@ -154,11 +163,6 @@ public class StitchJob extends Job { return doc; } - /** - * The size of the buffer where bytes are read to before being written into the {@link OutputStream} (currently {@value} bytes). - */ - private static final int BUFFER_SIZE = 8192; - @Override public void run() { try { @@ -167,7 +171,7 @@ public class StitchJob extends Job { File resultFile = getResultFile(); InputStream inputStream = ICleaverInputStream.fromElement(cleaverNode, chpFolder, cryptKey); - OutputStream outputStream = new FileOutputStream(resultFile); + OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(resultFile), BUFFER_SIZE); //Pipe everything to the output, in chunks this.setProgress(new WorkingProgress()); diff --git a/src/eu/steffo/cleaver/logic/stream/input/CleaverForkFileInputStream.java b/src/eu/steffo/cleaver/logic/stream/input/CleaverForkFileInputStream.java index 4265dcd..0cee9f1 100644 --- a/src/eu/steffo/cleaver/logic/stream/input/CleaverForkFileInputStream.java +++ b/src/eu/steffo/cleaver/logic/stream/input/CleaverForkFileInputStream.java @@ -14,12 +14,14 @@ public class CleaverForkFileInputStream extends InputStream implements ICleaverI private final File baseFile; /** - * The {@link FileInputStream FileInputStreams} from where bytes are read. + * The {@link InputStream InputStreams} this object can read from. + * + * Each one wraps a different {@link FileInputStream} reading from a *.cXX file. */ - private FileInputStream[] fileInputStreams; + private BufferedInputStream[] inputStreams; /** - * The index of the next {@link #fileInputStreams FileInputStream} to read a byte from. + * The index of the next {@link #inputStreams FileInputStream} to read a byte from. */ private int readFrom; @@ -28,18 +30,23 @@ public class CleaverForkFileInputStream extends InputStream implements ICleaverI */ private long partSize; + /** + * The buffer size in bytes of the {@link BufferedInputStream BufferedInputStreams} created by this object (currently {@value}). + */ + private static final int BUFFER_SIZE = 8192; + /** * Construct a new CleaverForkFileInputStream. * @param baseFile {@link #getBaseFile() Please see getBaseFile().} * @param parts The number of parts the original file is split into. - * @throws FileNotFoundException If a required file isn't found. + * @throws FileNotFoundException If a required *.cXX file isn't found. */ public CleaverForkFileInputStream(File baseFile, int parts) throws FileNotFoundException { this.baseFile = baseFile; - this.fileInputStreams = new FileInputStream[parts]; + this.inputStreams = new BufferedInputStream[parts]; for(int i = 0; i < parts; i++) { File file = new File(String.format("%s.c%s", baseFile.getAbsolutePath(), i)); - this.fileInputStreams[i] = new FileInputStream(file); + this.inputStreams[i] = new BufferedInputStream(new FileInputStream(file), BUFFER_SIZE); } this.readFrom = 0; this.partSize = 1; @@ -70,11 +77,11 @@ public class CleaverForkFileInputStream extends InputStream implements ICleaverI * @return The number of file parts to read from. */ public int getParts() { - return fileInputStreams.length; + return inputStreams.length; } /** - * @return The index of the next {@link #fileInputStreams FileInputStream} to read from. + * @return The index of the next {@link #inputStreams FileInputStream} to read from. */ public int getReadFrom() { return readFrom; @@ -89,9 +96,9 @@ public class CleaverForkFileInputStream extends InputStream implements ICleaverI @Override public int read() throws IOException { - int b = fileInputStreams[readFrom].read(); + int b = inputStreams[readFrom].read(); readFrom += 1; - if(readFrom >= fileInputStreams.length) { + if(readFrom >= inputStreams.length) { readFrom = 0; partSize += 1; } @@ -101,8 +108,8 @@ public class CleaverForkFileInputStream extends InputStream implements ICleaverI @Override public void close() throws IOException { super.close(); - for(FileInputStream fileInputStream : fileInputStreams) { - fileInputStream.close(); + for(BufferedInputStream inputStream : inputStreams) { + inputStream.close(); } } } diff --git a/src/eu/steffo/cleaver/logic/stream/input/CleaverSimpleFileInputStream.java b/src/eu/steffo/cleaver/logic/stream/input/CleaverSimpleFileInputStream.java index e5f0fea..4029d86 100644 --- a/src/eu/steffo/cleaver/logic/stream/input/CleaverSimpleFileInputStream.java +++ b/src/eu/steffo/cleaver/logic/stream/input/CleaverSimpleFileInputStream.java @@ -1,27 +1,29 @@ package eu.steffo.cleaver.logic.stream.input; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; +import java.io.*; /** - * A {@link ICleaverInputStream} that reads data from a {@link File} with a *.c0 extension. - * - * @see FileInputStream + * A {@link ICleaverInputStream} that reads data from a single {@link File} with a *.c0 extension through a {@link BufferedInputStream} wrapping a + * {@link FileInputStream}. */ -public class CleaverSimpleFileInputStream extends FileInputStream implements ICleaverInputStream { +public class CleaverSimpleFileInputStream extends FilterInputStream implements ICleaverInputStream { /** * The base (the {@link File} without *.c0 extension) of the file to read from. */ private final File baseFile; + /** + * The buffer size in bytes of the {@link BufferedInputStream} created by this object (currently {@value}). + */ + private static final int BUFFER_SIZE = 8192; + /** * Create a new CleaverSimpleFileInputStream. * @param baseFile The base (the {@link File} without *.c0 extension) of the file to read from. * @throws FileNotFoundException If a required file isn't found. */ public CleaverSimpleFileInputStream(File baseFile) throws FileNotFoundException { - super(String.format("%s.c0", baseFile)); + super(new BufferedInputStream(new FileInputStream(String.format("%s.c0", baseFile)), BUFFER_SIZE)); this.baseFile = baseFile; } diff --git a/src/eu/steffo/cleaver/logic/stream/input/CleaverSplitFileInputStream.java b/src/eu/steffo/cleaver/logic/stream/input/CleaverSplitFileInputStream.java index b6a0762..1f8b2cb 100644 --- a/src/eu/steffo/cleaver/logic/stream/input/CleaverSplitFileInputStream.java +++ b/src/eu/steffo/cleaver/logic/stream/input/CleaverSplitFileInputStream.java @@ -1,5 +1,7 @@ package eu.steffo.cleaver.logic.stream.input; +import eu.steffo.cleaver.logic.utils.SafeLongToInt; + import java.io.*; /** @@ -32,7 +34,14 @@ public class CleaverSplitFileInputStream extends InputStream implements ICleaver /** * The {@link FileInputStream} this {@link InputStream} is currently reading from. */ - private FileInputStream currentFileInputStream; + private BufferedInputStream currentInputStream; + + /** + * The maximum buffer size in bytes of the {@link BufferedInputStream BufferedInputStreams} created by this object (currently {@value}). + * + * If the {@link #maximumByteCount} is lower than this value, that is used instead. + */ + private static final int BUFFER_SIZE = 8192; /** * Construct a CleaverSplitFileInputStream. @@ -45,36 +54,37 @@ public class CleaverSplitFileInputStream extends InputStream implements ICleaver this.maximumByteCount = maximumByteCount; this.currentByteCount = 0; this.currentFileCount = 0; - this.currentFileInputStream = null; + this.currentInputStream = null; } /** - * Open the following file in the sequence, and update the {@link #currentFileInputStream}. + * Open the following file in the sequence, and update the {@link #currentInputStream}. * @throws IOException If a problem is encountered while opening or closing a {@link FileInputStream}. */ private void createNextFileInputStream() throws IOException { - if(currentFileInputStream != null) { - currentFileInputStream.close(); + if(currentInputStream != null) { + currentInputStream.close(); } currentFileCount += 1; - currentFileInputStream = new FileInputStream(String.format("%s.c%d", baseFile.getAbsolutePath(), currentFileCount)); + currentInputStream = new BufferedInputStream(new FileInputStream(String.format("%s.c%d", baseFile.getAbsolutePath(), currentFileCount)), + Math.min(BUFFER_SIZE, SafeLongToInt.longToInt(maximumByteCount))); currentByteCount = 0; } @Override public int read() throws IOException { - if(currentFileInputStream == null || currentByteCount >= maximumByteCount) { + if(currentInputStream == null || currentByteCount >= maximumByteCount) { createNextFileInputStream(); } - int result = currentFileInputStream.read(); + int result = currentInputStream.read(); currentByteCount += 1; return result; } @Override public void close() throws IOException { - currentFileInputStream.close(); + currentInputStream.close(); } /** diff --git a/src/eu/steffo/cleaver/logic/stream/output/CleaverForkFileOutputStream.java b/src/eu/steffo/cleaver/logic/stream/output/CleaverForkFileOutputStream.java index 6f79b7b..8a88d11 100644 --- a/src/eu/steffo/cleaver/logic/stream/output/CleaverForkFileOutputStream.java +++ b/src/eu/steffo/cleaver/logic/stream/output/CleaverForkFileOutputStream.java @@ -9,7 +9,7 @@ import java.io.*; /** * A {@link ICleaverOutputStream} that reads split data from a specific number of files having the same size. * - * Bytes are written one at a time to the files in a round-robin format until the stream is exausted. + * Bytes are written one at a time to the files in a round-robin sequence until the stream is exausted. */ public class CleaverForkFileOutputStream extends OutputStream implements ICleaverOutputStream { /** @@ -18,12 +18,14 @@ public class CleaverForkFileOutputStream extends OutputStream implements ICleave private final File baseFile; /** - * The {@link FileOutputStream} where bytes are written to. + * The {@link OutputStream OutputStreams} this object can write to. + * + * Each one wraps a different {@link FileOutputStream} writing to a *.cXX file. */ - private FileOutputStream[] fileOutputStreams; + private BufferedOutputStream[] outputStreams; /** - * The index of the next {@link #fileOutputStreams FileInputStream} to write a byte to. + * The index of the next {@link #outputStreams FileInputStream} to write a byte to. */ private int writeTo; @@ -32,6 +34,11 @@ public class CleaverForkFileOutputStream extends OutputStream implements ICleave */ private long partSize; + /** + * The maaximum buffer size in bytes of the {@link BufferedOutputStream BufferedOutputStreams} created by this object (currently {@value}). + */ + private static final int BUFFER_SIZE = 8192; + /** * Construct a CleaverForkFileOutputStream. * @param baseFile {@link #getBaseFile() Please see getBaseFile().} @@ -40,10 +47,10 @@ public class CleaverForkFileOutputStream extends OutputStream implements ICleave */ public CleaverForkFileOutputStream(File baseFile, int parts) throws FileNotFoundException { this.baseFile = baseFile; - this.fileOutputStreams = new FileOutputStream[parts]; + this.outputStreams = new BufferedOutputStream[parts]; for(int i = 0; i < parts; i++) { File file = new File(String.format("%s.c%s", baseFile.getAbsolutePath(), i)); - this.fileOutputStreams[i] = new FileOutputStream(file); + this.outputStreams[i] = new BufferedOutputStream(new FileOutputStream(file), BUFFER_SIZE); } this.writeTo = 0; this.partSize = 1; @@ -74,7 +81,7 @@ public class CleaverForkFileOutputStream extends OutputStream implements ICleave * @return The number of file parts to create. */ public int getParts() { - return fileOutputStreams.length; + return outputStreams.length; } /** @@ -93,9 +100,9 @@ public class CleaverForkFileOutputStream extends OutputStream implements ICleave @Override public void write(int b) throws IOException { - fileOutputStreams[writeTo].write(b); + outputStreams[writeTo].write(b); writeTo += 1; - if(writeTo >= fileOutputStreams.length) { + if(writeTo >= outputStreams.length) { writeTo = 0; partSize += 1; } @@ -104,8 +111,8 @@ public class CleaverForkFileOutputStream extends OutputStream implements ICleave @Override public void close() throws IOException { super.close(); - for(FileOutputStream fileOutputStream : fileOutputStreams) { - fileOutputStream.close(); + for(BufferedOutputStream outputStream : outputStreams) { + outputStream.close(); } } @@ -122,7 +129,7 @@ public class CleaverForkFileOutputStream extends OutputStream implements ICleave element.setAttributeNode(partSizeAttr); Attr partCountAttr = doc.createAttribute("parts"); - partCountAttr.setValue(Long.toString(fileOutputStreams.length)); + partCountAttr.setValue(Long.toString(outputStreams.length)); element.setAttributeNode(partCountAttr); return element; diff --git a/src/eu/steffo/cleaver/logic/stream/output/CleaverSimpleFileOutputStream.java b/src/eu/steffo/cleaver/logic/stream/output/CleaverSimpleFileOutputStream.java index f196a82..db4292f 100644 --- a/src/eu/steffo/cleaver/logic/stream/output/CleaverSimpleFileOutputStream.java +++ b/src/eu/steffo/cleaver/logic/stream/output/CleaverSimpleFileOutputStream.java @@ -1,31 +1,30 @@ package eu.steffo.cleaver.logic.stream.output; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.OutputStream; +import org.w3c.dom.*; +import java.io.*; /** - * A {@link ICleaverOutputStream} that writes data to a single file with a *.c0 extension. - * - * @see FileOutputStream + * A {@link ICleaverOutputStream} that writes data to a single ̧{@link File} with a *.c0 extension through a {@link BufferedOutputStream} wrapping a + * {@link FileOutputStream}. */ -public class CleaverSimpleFileOutputStream extends FileOutputStream implements ICleaverOutputStream { +public class CleaverSimpleFileOutputStream extends FilterOutputStream implements ICleaverOutputStream { /** * The base (the {@link File} without *.c0 extension) of the file to write to. */ private final File baseFile; + /** + * The buffer size in bytes of the {@link BufferedOutputStream} created by this object (currently {@value}). + */ + private static final int BUFFER_SIZE = 8192; + /** * Create a new CleaverSimpleFileOutputStream. * @param baseFile The base (the {@link File} without *.c0 extension) of the file to write to. * @throws FileNotFoundException If a required file isn't found. */ public CleaverSimpleFileOutputStream(File baseFile) throws FileNotFoundException { - super(String.format("%s.c0", baseFile)); + super(new BufferedOutputStream(new FileOutputStream(String.format("%s.c0", baseFile)), BUFFER_SIZE)); this.baseFile = baseFile; } diff --git a/src/eu/steffo/cleaver/logic/stream/output/CleaverSplitFileOutputStream.java b/src/eu/steffo/cleaver/logic/stream/output/CleaverSplitFileOutputStream.java index 289e442..abab4ef 100644 --- a/src/eu/steffo/cleaver/logic/stream/output/CleaverSplitFileOutputStream.java +++ b/src/eu/steffo/cleaver/logic/stream/output/CleaverSplitFileOutputStream.java @@ -1,11 +1,13 @@ package eu.steffo.cleaver.logic.stream.output; +import eu.steffo.cleaver.logic.utils.SafeLongToInt; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import java.io.File; import java.io.FileOutputStream; +import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -37,9 +39,18 @@ public class CleaverSplitFileOutputStream extends OutputStream implements ICleav private int currentFileCount; /** - * The {@link FileOutputStream} this {@link OutputStream} is currently writing to. + * The {@link OutputStream} this object is currently writing to. + * + * It is a {@link BufferedOutputStream} wrapping a {@link FileOutputStream}. */ - private FileOutputStream currentFileOutputStream; + private BufferedOutputStream currentOutputStream; + + /** + * The maximum buffer size in bytes of the {@link BufferedOutputStream BufferedOutputStreams} created by this object (currently {@value}). + * + * If the {@link #maximumByteCount} is lower than this value, that is used instead. + */ + private static final int BUFFER_SIZE = 8192; /** * Construct a CleaverSplitFileOutputStream. @@ -51,36 +62,37 @@ public class CleaverSplitFileOutputStream extends OutputStream implements ICleav this.maximumByteCount = maximumByteCount; this.currentByteCount = 0; this.currentFileCount = 0; - this.currentFileOutputStream = null; + this.currentOutputStream = null; } /** - * Create the following file in the sequence, and update the {@link #currentFileOutputStream}. + * Create the following file in the sequence, and update the {@link #currentOutputStream}. * @throws IOException If for some reason the program cannot create the file. */ private void createNextFileOutputStream() throws IOException { - if(currentFileOutputStream != null) { - currentFileOutputStream.close(); + if(currentOutputStream != null) { + currentOutputStream.close(); } currentFileCount += 1; - currentFileOutputStream = new FileOutputStream(String.format("%s.c%d", baseFile.getAbsolutePath(), currentFileCount)); + currentOutputStream = new BufferedOutputStream(new FileOutputStream(String.format("%s.c%d", baseFile.getAbsolutePath(), currentFileCount)), + Math.min(BUFFER_SIZE, SafeLongToInt.longToInt(maximumByteCount))); currentByteCount = 0; } @Override public void write(int b) throws IOException { // Can be optimized using the modulo operation, not doing it now for clarity - if(currentFileOutputStream == null || currentByteCount >= maximumByteCount) { + if(currentOutputStream == null || currentByteCount >= maximumByteCount) { createNextFileOutputStream(); } - currentFileOutputStream.write(b); + currentOutputStream.write(b); currentByteCount += 1; } @Override public void close() throws IOException { - currentFileOutputStream.close(); + currentOutputStream.close(); } /** diff --git a/src/eu/steffo/cleaver/logic/utils/SafeLongToInt.java b/src/eu/steffo/cleaver/logic/utils/SafeLongToInt.java new file mode 100644 index 0000000..97a2b3e --- /dev/null +++ b/src/eu/steffo/cleaver/logic/utils/SafeLongToInt.java @@ -0,0 +1,28 @@ +package eu.steffo.cleaver.logic.utils; + +/** + * An utility class to prevent overflows while casting {@link Long Longs} to {@link Integer Integers}. + */ +public final class SafeLongToInt { + /** + * Disallow instantiations of this class. + */ + private SafeLongToInt() {} + + /** + * Cast a {@literal long} to an {@literal int}, returning {@link Integer#MAX_VALUE} if the value of the {@literal long} exceeds the value of + * {@link Integer#MAX_VALUE}, {@link Integer#MIN_VALUE} if the value of the {@literal long} is lower than {@link Integer#MIN_VALUE} and the result of the + * {@literal int} cast otherwise. + * @param l The long to cast. + * @return The casted int. + */ + public static int longToInt(long l) { + if(l > Integer.MAX_VALUE) { + return Integer.MAX_VALUE; + } + else if(l < Integer.MIN_VALUE) { + return Integer.MIN_VALUE; + } + return (int)l; + } +}