/******************************************************************************* * Copyright (c) 2007, 2015 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.text.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Iterator; import java.util.Random; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.Position; import org.eclipse.jface.text.source.Annotation; import org.eclipse.jface.text.source.AnnotationModel; import org.eclipse.jface.text.source.IAnnotationModel; /** * @since 3.4 */ public class AnnotationModelStressTest { private static final String RANDOM_CONTENT= "UENTXRXNMRXSTNVZFACSMTQYVGOLEPGRXRH\n" + "BCQCYH\n" + "ZSJRPJZIVPLESNNZXJKZXKATUOPEB\n" + "JDEGL\n" + "PDGYPBQCHJCVBSKGBUMPBW\n" + "NTUQFUTBSMMHAJBLDCIQSOMICATQRXDFHZBEHFPXNBQFXPCEBCHGUDEQUHQVWMVVROVCBOOPTUZFNSXZRXJLOJDTWYFYQHDVRKRYMITTMZFQRZNUQLNO\n" + "HK\n" + "QWHWVOKYKICEJKTDGALDXXNVBHVV\n" + "QSHTSCUMBHWNNQLWSMKPWBYSLLPKNQGIQHIBNJJNQWZUDGNZNVCHYVIOQHQHKTUGCIARWSHTIGEZEHBHCIYSWXAUXWA\n" + "JNGWEXGZACWDR\n" + "ISVJN\n" + "ZVIIXXFPFKOCSLESKVPAAPMQCSYOW\n" + "TWPRIZUB\n" + "MJMSRIMRLFAWUIDDX\n" + "AYBHEVT\n" + "DGWQBPQNVXUXEDCSIUIER\n" + "WN\n" + "JMXZFQUPSUOCTKLVOVHYUKKUBD\n" + "X\n" + "XVSLLHYFKIQTCXT\n" + "KXTCYLQT\n" + "DICOZRNMKGSSKJOODWFM\n" + "OK\n" + "QLGNOCOGGWFZQEZQOLHNCFCWYB\n" + "JVWXRLOCYQRLAKTJOKVMHGUXCUT\n" + "GZPWSPSSHXUF\n" + "QORHKHPQUABXGQ\n" + "CKUVQSZKHHRJWBTHLTB\n" + "PMHB\n" + "ARTDOBRPCC\n" + "PK\n" + "ADSASNKVKLVKDMHKDPLRFTXZLRKRE\n" + "XEFSKKEKFGFHPXIHUXJKLCDTMXKJEVLRGQDNLFAMQBMZEANXHJNTAJTBYNYRXB\n" + "LD\n" + "SDPCIHNNNWBFEPBSZZVUJOUTUV\n" + "HCAMQPJEHUOREIWUUIZHGRO\n" + "NHLEZHZFIXRKFUCEATXXYRIGBYCMGIWETUUPQZ\n" + "ZMWHXIFDRIZMKNQREA\n" + "OCDP\n" + "DYIPMHPXNH\n" + "VJT\n" + "RAUMTNTGEWKMPAHUKODZWMAHEVNGBHZMCRTTWSFQLTQPUFWITLLNMRKOE\n" + "QWEDMVURBUPADIWNURQSVJVUCFYRVFQXARBBII\n" + "CQSWJPFYDCTIDQPPB\n" + "WCGGBTOULQUVUSDZYXWSLQZRZIWRJNPLSEXNIIMLGYMPSJKH\n" + "IRCIHTCLGFRXHTFSMMQKWXEUIOAJMTHHEJZMJNZALAOL\n" + "SDMOHBM\n" + "BPFIXVUUHZJRQJXYTQJRDBNEVUDFO\n" + "OSHWGOJCJEP\n" + "KNAQLY\n" + "ALVVYJ\n" + "DOQQOOINMJAXGNZSBGHWJFOLZCHLRAIBMKVSY\n" + "Z\n" + "QTURPOEVPEXLJK\n" + "WWAMWCOTAQUWCRRLFHDBOXIQSLWYYEDCEQLRDI\n" + "JKZCPJ\n" + "QVEIMJ\n" + "CGBCQ\n" + "DRDBKDG\n" + "RUCHORL\n" + "FFFZFJMOJ\n" + "ZEIYFBKEFTOWJNDMKVVAUNKGIOUUHWONLUUJYWWWGWELKIUKTQ\n" + "VT\n" + "JYZGKQBFAOD\n" + "DKSRELAUDWBZEZTDBBERCE\n" + "FXLUAZSHBYUHRPCMWGPMWQIK\n" + "NLADPOOKGASDQCHNGJQTORSTHROVMMENNJIVSW\n" + "JGC\n" + "L\n" + "IM\n" + "LLNUZP\n" + "TIZY\n" + "WXWGFHUKZGKSRSMETXGRDUUJCVNRZHPPJDPLOJOWMPHCGDDVYJTTZM\n" + "KLBRTASATBDHZJ\n" + "PM\n" + "XZJSQCQWQ\n" + "CIMEAWMSA\n" + "UFWGVFSOUQFTNEEK\n" + "LOQNFKKYKFTEIAQASFKUGYGRQHKKOWXPNOADPSWNQ\n" + "QNYBKVOZGELUDWPBTWLSYVKZKIZGPD\n" + "UCHJZERGLRPTLL\n" + "KHYJZIOPAOFYTD\n" + "ENWCEJP\n" + "ZEHX\n" + "HHOEHNATJ\n" + "PYVTYHQMEBWOPNZTBXFKMZDZHGGAMIYMDEAL\n" + "GQPNBRCMVEPQOCPDJKGHCJCYT\n" + "SCHHWPBYZIHTXPKQRHWQUUWSNYWBBR\n" + "RNFDOIUIEPRECATKQNHBZSRPGAEAJRUCNOJQTOPAXQYQAFMYHLXQLRUZTRRLWWHSF\n" + "DPOPZOKBUXHFBLWYWTVVNDOZSGWCJCHZHGDXEJL\n" + "CQDBKUKBNJEVG\n" + "NQRGMKYUPKJABAWKVDLTVZWXFMLFPBJQQIHGXYPKIOTHOCOTVZHRDVTTLRGNYVTWXSIXAJSXXQVCG\n" + "UD\n" + "LKFCQCMIHOJOKPQYNOTPCFSGYNXPO\n" + "BIMWQKREVNZBRKKKURHMUOGQM\n" + "RZCJAVUU\n" + "SBWWLPVOXVKEVMWVZQBMMHFDLCOUIXQPFUFGVQBTRRZJVN\n" + "PYESJMBMUUPYEEGC\n" + "NSYDUSFZ\n" + "USJFOGTZRNUEZOYGCLRUDSECWMIYTADDHX\n" + "SUYHOPWJUTFSSSMJ\n" + "YYYTEZUSOTREIUCRFVVEQWJEUKYWJHGTXDLZQKWWQW\n" + "NAV\n" + "DVSEDJTGPAMMBFMEORNRKBBTBWJZRLJTJHG\n" + "EY\n" + "GMBLDOJZJJAOUCVNTYTOTKABC\n" + "SVJQGGPUUJPVWQRJNWRWRDQMLTMKUTY\n" + "X\n" + "VTSUUTJRXQBIQINHANYGPWITDFAADJLTTHYBGAAPAUPKOQOCVDEYQLLMSWUIGJZBXCUHOJVAKRPHWWL\n" + "Z\n" + "ODXKPZTGZMXGEUSVWENBEPJTBZUHUZH\n" + "EVYQRFJLMDVWWNZJCUGDZFVTKITEBVAHWBCSB\n" + "NJDEYTKJGGBTKGHPJRISCJMHEMFBREBVRJVRPYLTQMMGLGGAQEMGBDL\n" + "HVYS\n" + "HLTENGQNYNOAIIILYSTDU\n" + "VJIAGMFGVYL\n" + "GAEWZNUPWNHIPBW\n" + "QI\n" + "MYJNARDHOWLXFEKD\n" + "TZCGYVDRILNLZZJERKM\n" + "GJCE\n" + "EIJOJI\n" + "ZAPZXBZLMKGA\n" + "TKMVEATQIXCULZVZWPZEVVTE\n" + "HVFBCDSCZCTYSFRIS\n" + "LP\n" + "RDNLFQOSOLTKNEBXQR\n" + "AGRUUNFKYAHDUWZGTXZVUOZZAVZLQHKWULTHDRVMBAIIXAGOTMOEGKABHEEE\n" + "DASOMFXI\n" + "LVGDQZYIJGNYPZ\n" + "POSFUWVZTIORFUJBGIREOMSOTFH\n" + "QQGROZACVVZJDDCWBKKHGREYHKNNBYSKLKGJQIOFBCHOOBOQRCPN\n" + "O\n" + "XTAKMHUKVCYSCDFQ\n" + "BTX\n" + "AKTKCGLSPHAGYSGQMSPUO\n" + "QNINNDCNBQC\n" + "LBVK\n" + "NYOOQEVTDFVDIV\n" + "UXEVRZVAKWSOBXUC\n" + "I\n" + "DRGEOLAPRINXIDSREXGEFBRYVZJZ\n" + "LUIZFHPYKOCNWKYFCSFAKWZ\n" + "S\n" + "HGVDCPXJLGQF\n" + "BNT\n" + "CGQBSJJNJB\n" + "BVSEXHP\n" + "GBRFRXGWGBHPQE\n" + "JRPCXFXUDOAVDAOLNSNEWBXFXTMSLDTFUEBZHWMYRREDYGRHHJUQMWSM\n" + "JGCFDKZSHRDBIMFPHMDAMHQUYTIIOMUVFELPSRWGRLIDGITQCCIR\n" + "SARLPTMOBYOAUSGHMUVUKPUMOXFMDZQABAWKPFINLVJWYGCXIIF\n" + "UJAYAVBIINRMRL\n" + "ANK\n" + "CMUMPO\n" + "OQOHRKXEABJNHDPTYRVCZFJOJGJRVUCP\n" + "WDZAUHWITGTMVBV\n" + "CHFTCDEKZPORUVODFPEACIXOVXEFEPNUUKHALPLRGNJVIMALFEHQCPPTUPCUCQONZ\n" + "XOLIAKJPYEGOPXEAQXNESNRKG\n" + "ALA\n" + "XOL\n" + "XLMSCLJCFLYIJOOLJFHNXSYEKWXGFXS\n" + "ZWKGKPMDDPLOGSPBHIYIDKITXUEGVOEJJIUXOUILLKUU\n" + "XHQHGQYBBXMEINHXYEDEBUKVIWIYFHZRFRJXJOCYIZLC\n" + "G\n" + "CNDBWBB\n" + "FWAWQSMH\n" + "OSVILVFGJG\n" + "LOMYIYB\n" + "KLTUGTH\n" + "EBMBVCRSGUDXYICFJPDWVQLH\n" + "EYIECTYLOEASNNKGFQNHLPAOMUVIAVUADKNLTIEEQPS\n" + "ZUKOGOEMRSOCAWKCDYWDXIZN\n" + "GNVXBJDE\n" + "ZLCYEVHLPMISUSENKKWX\n" + "XNQWAVJWERXHIAOIRMUUQANGOJYWVVIZZEXLYNBTQXVGWHAFBDSZWYCMJJDUDPZLPUTFJFWDIES\n" + "TVQZYMGSGBSPQUBMKHPBUAHVCXAZGCYHZBNSTIQGGPZICWGLKQAJXHVRRVDYUBYBXHVJASHZSYFBDQ\n" + "JZ\n" + "IPJOXVDQBWQUCEILGTGZLZYSEQWRGYNFECOGUKKMXMGQHDWPYDAPCS\n" + "YNNMHHTHEPUUCPJXHBSDMCIHUOYIMDRWRTKXRSHE\n" + "TCIEORBXJ\n" + "BSD\n" + "FJMJOVJM\n" + "UGZYSX\n" + "QDFVFLTG\n" + "FDSYPULGCEPKPMCIEXUCICQCNRQOGVARBUWEUWRCTYBSGN\n" + "VSINAZSNBJQAUWRMBXTJEUSGGX\n" + "ZWSKYV\n" + "UJDKMBSBQWYVUCIOXMJGXAUGJJVOCOYYFJCVXMM\n" + "HQGQEHNEZF\n" + "XIAMMPQUJYEMJQQRMOEVMSFQUYSMFCEKWAP\n" + "NHDRSLPJTOT\n" + "HNVXNWAYLJEPAOXYWGZZQVZRBAKHDEZU\n" + "SMRA\n" + "XXLSVZRYFBYNQIPVNHEGGDJATETLPODWQUPBIHEZEGWERNZ\n" + "VEKXAUFWHHBHUTCSOGN\n" + "ZVLWIAJWBWNV\n" + "MKKKPCJHIZNMWVRFP\n" + "H\n" + "NYIZ\n" + "FPGFLLPPZDLNEMIQOYMAYIGWT\n" + "KOPPLHRFCGNXMFYCURFTPB\n" + "ILBTPBP\n" + "QJGML\n" + "MRVOOFWP\n" + "FFWOQGRAMETJGSZXL\n" + "DAXJRNBWDOCMKMMTOUECYPZZDJFQSQVDROXMNPEWTQMRVYVAPBILTQHRTRFIMJYKREKTOVSGKKTLBGLBFRZZSRWCZZYZZLKAUBZJZV\n" + "ABAUW\n" + "BYWB\n" + "FEGGFIZNDCLPCKOXWHVWWFQZJ\n" + "XUZCXCOSHLNAYWZFHJWJKLPVIFBHKWLRLOXNJGNLLMFMCNRJYFAZPHDRG\n" + "ADHUTFBIGJZGVEPGOPAATLWNH\n" + "ITITCTYTEIBQQVFJHWYXWB\n" + "YNPBFTUALLVUWUU\n" + "QLSGH\n" + "UGDTYR\n" + "MHPTGDCVIMRUZAGG\n" + "AM\n" + "DCATIWDPIESPRODZDCAQAZUEOEDLN\n" + "CBWEOLVJGTZTHGFRXOGKUFNSNJNWIJKASZVWLUOLMTESX\n" + "EMCRYRPQWKLH\n" + "FKZ\n" + "VRZFHXYSTNFFTXEEPYXMVBNABSPHBEUOKOFDZDSWHXXUYHIAUDCJGJBOTISGV\n" + "AXLTF\n" + "R\n" + "D\n" + "RUDRUBAESELWFSURPACIFIAEJJWSZCPKEDUCVMHYMUEFXMS\n" + "BKQGWCXUNWRAIXWVFEBKOUQJPTBIIKQJFMZORPOKTXVYRZGBWKDNKMQFJXDFWXG\n" + "PNUURGXNFHQFXVE\n" + "BNOLPYUIZALSWHEBRX\n" + "YAORLAHSWKEVIFKFSSWILM\n" + "JCCRLTGWWOQ\n" + "XHTFDAGAINXYFXAJEDRS\n" + "O\n" + "UKJMSHVNOFT\n" + "WUWZVWFG\n" + "FCIMJNG\n" + "AHAERLEHTFJPW\n" + "FNXRCQ\n" + "JEF\n" + "VSRDKGIXTKLCCATHUTJMZURMOSYAETJZQUQFKYDGZJKEBERWJDFNONJBIHXGIMYEQENGGLZXAFKCNJGZBCPHIULHPTY\n" + "XBBGFAKBVHCXUBJZPKENODDGMJSLZRUPKUPCSTRRDYURGUSSTT\n" + "HYRGZYXDOGQKFRFAMLTZSEAAZXSOGDTRICMVUNXWHGZOHMBQ\n" + "FBIZFVDKE\n" + "NRBQKIDPADW\n" + "HGQBDHEVZQTYTVVASKLSWOYJLCE\n" + "SDETOTELNDTZOUVYFNIEEFOWRHZEWMASAKXASIRBSWOSHMVBMUGCUZQJYUFPOYVFSTSWZRYMBCWERIDONUBFXDOZIGBBSNAHJX\n" + "UQWRQLNYXFXHDADOXECPXSYWFBYEBVHWMNBPMRVMRQDBTITZEEQEQNUEELYQDKOVSAIKQFMAHUWN\n" + "OWZOQJNFGC\n" + "WDNNZXTVWRZOEMNI\n" + "KCBDTI\n" + "APOJIMEFJ\n" + "PNUMBQQMXHDAC\n" + "ZCWQCMCQS\n" + "QNMCBMAEYICXXK\n" + "RKSTMZCRQAVHYLYLAIOTW\n" + "DRZRP\n" + "FCNHUCM\n" + "GCAPBEPSDTJDBIUMGKCABZGCOVPUX\n" + "CLKFNHFTLVGQDVB\n" + "HQW\n" + "OBIXQUITWUXRGLNOXVFNXHQCNQYIZ\n" + "SHIBOGKOY\n" + "BRQKHNEM\n" + "FBAHZSWSBYTCJDEZJFUNS\n" + "XKABNJVYZQHJBJEKIGAREDBTETKXJRRZRLPXXNFNBDH\n" + "N\n" + "NUEHERNOV\n" + "MYQKXWKLIXVUTXGAHXACEHJRTIRFUMYBGJVIYWMYNCAATHYJQMLTIDVOODMZXAQ\n" + "IURPSBLEMZUDL\n" + "OAFRTCPR\n" + "PMTJYMEZRFPJFRSXJEZD\n" + "TAHXGL\n" + "MTWUWXKPQHNJAMSOMCWQDPPBF\n" + "EFZJZSOHLYDMACNMBJVWLUK\n" + "EVSBDKVLLBG\n" + "PGHJQQMAMCGYEFTJNI\n" + "SKELHFQTGQXWKNSTFIODLWWHXHDUWTEUWHGYEKKWUNTPGZIG\n" + "GAVQRELOVJLPDZRIMU\n" + "JCIEEERMQZ\n" + "MEPVMTCMZYUUXLKQMLUXHYESBXAGASLGZXDUVI\n" + "XNXIYHRGILCXYBRDNNZENREWDHWRXOFQXLZKDUYCZEGC\n" + "KLVUZVFAQLUDVXN\n" + "RBROVXLUNJKN\n" + "EXPTEOAQ\n" + "KXDRYHDOMJXRGVEJYFHETWMELGNSZNKQ\n" + "UKIFTXGUOWFJIYYU\n" + "WYPFFWPUQRFLECYJYTUUHLXHRBCINYXFSNQQOPX\n" + "OFYHXVQFTDEAHHMLRLYTPUEQ\n" + "VVCZQUOABHWWLCWFTWKTXARWCZQKMR\n" + "GUGRCMNUFNCVGPDCWF\n" + "SBIGRUMNMDWDEZWICTBECBSGLBEPAOKCEQSPA\n" + "MUNTHXQUKTDVSLAANSYXHVJXUQBORNJGZQY\n" + "IXECGCYTXUAHCVBHNUAVVVDTBRGXGCZDXZXAPMEDD\n" + "GGZ\n" + "YYBDXEPG\n" + "VKPOIRMDLPWXVYNKALQGDVHFFLIVYRFNVYJTBZUDH\n" + "NZLZULXZQCGR\n" + "CUM\n" + "UTS\n" + "EPYRMEH\n" + "JVDSALRVZ\n" + "UNI\n" + "BWTIXCCS\n" + "IMTIWBOCUAFKGARFHWQXFA\n" + "QZGMYBKZINLADVSTYQNKPIEBUTGTLBRQ\n" + "THHRMODKDMGFZJYS\n" + "PNMHCPTAAUJ\n" + "YAO\n" + "ODUHPUZWHBDGQSUPHRVDWRFKZBMZJSCEDVMWXWNAD\n" + "JSBWOJVVDMXCVDQQCJZMEKHETMCVVI\n" + "ROHTSGDIQSHGCFEGWVQXXINJKSKDKOCUVVZWKJCUHIO\n" + "BLQVP\n" + "LAUMVLNSFXTGFRS\n" + "VJIV\n" + "PWU\n" + "GCAXGYZNLN\n" + "BZFQKORNIFTDYMYUMYIFPWR\n" + "BTUPGQTWXNFMWDGGNZUSPAMFVASGLBCYQITUDBRD\n" + "SYNMB\n" + "QAFRCADBDUJJWDPSXOKZZQTCLVPSQSBZVTTZRXDXSJRXBOAHODIYOYLCQEOAQDT\n" + "JGPOEHNGWGISNZFWFOITSUNEUBJV\n" + "BZNNMLZTLVCJZZXZSLQGACLNRHTQO\n" + "TCDNYYLBCEVRXDLNGNNBNMLR\n" + "D\n" + "NZXSOCPFGRAWKZOQCGJQYTL\n" + "GTOLLNGHGJYRMCTSOUGONHUUTHPPTAU\n" + "TWJW\n" + "SNZRMIREGZSCKCBM\n" + "XQKVMY\n" + "VNETEMMRQSBRPAJDQCYWUKQDMIBENK\n" + "HECALWUGVJPCDHYBNEOJQECBUOHTBNRWFZSHULZVZFDZANUJRUDWZRZGPLPTPQVMXUSSSFKBI\n" + "CDZYXUMWXLUIQBGKNVNXMHBOIS\n" + "NKPFXTL\n" + "FEMMVHUAQHJUGCHSWCCMQTQPSMTG\n" + "B\n" + "UBWQZCSQPOAQOJGSLDATZKZDX\n" + "N\n" + "QXRSUQBYAHDYWXSHKWQNRXBFCSBPPBQTDZAPCKHSOARXV\n" + "NX\n" + "LLHWVVCWQHHWHFFCPQGSDHJQFGUEIPTJDJ\n" + "XSQPLBPWJJUSDEORJMLPFTRVQQWVPRWLHZAMIWGIKFHOEVCGN\n" + "ABZAB\n" + "CIF\n" + "YEYWGZEEOFNUU\n" + "HKKAIWVAIZAHUKJWTGTLGX\n" + "LSJ\n" + "SZNBOHVRUUNNNOQZQBKDRXXEKPCFAVKMEEN\n" + "DGFTKMTFFYS\n" + "RYPFU\n" + "V\n" + "TCJBFMXWYLFXFWVSSIHVANRMSOUZTJJQWRZ\n" + "NPKZGKPZJMIQ\n" + "DIEC\n" + "ERLGSJBIT\n" + "SZCXZNYSMRTAMEPAOPVXQENTXOKUAESZFEWPVFCVZKDWQTCHHOZX\n" + "WGZPBDYZOZSHFNIIYRESYHBNUDVBUJKDANGAKG\n" + "LF\n" + "NWVESANGTA\n" + "NRNOPGRAIDSNQRGNHMC\n" + "EFD\n" + "CYWAZCDALXTPQWZTURESLFYQBFBXYIROKRNLFYNGRRRBLDVDPFEMATQU\n" + "N\n" + "UXZDIMTAADLIL\n" + "MW\n" + "KGEEPHWZHCMESGWGDFWYYJZAJL\n" + "JMZ\n" + "QWXOVHFUSUBVMORKZEAR\n" + "TMLEJIWNCAIRHYN\n" + "ILFSRUKGUNBFDECQKORVRSKEHADJPXBOFUKQ\n" + "XMXWAFPJHQJBOVYIOGYOCXXXELDKXKTEMQNRUSQUBXRQBBTBAJGFKBOJENN\n" + "NPLJIFIHZLJTLGVMAFQRRVHOWUAARWAU\n" + "CSQMHXTMMMGUFQWJEHRQXCYVSHKWYZXFDOYBGETKGEOROWSCUOXS\n" + "JASNM\n" + "UJOVWRLOID\n" + "PITSSCBMIFHFZBFBEYVOAK\n" + "YEEEYHDE\n" + "WSPKNGNZNYPPYYTK\n" + "LMNHUQZRXWVGZHV\n" + "OOCGYPLGJPFAOKWXTESIDZXKQUBCWK\n" + "CVRQW\n" + "S\n" + "FGKKJL\n" + "QWHTTHVZQGTYOBZEUXOHTXSYSCOOZJQAPWDEQEALZTLNZK\n" + "RVMLXFWYWTH\n" + "LCOOOP\n" + "AXOHOGTA\n" + "IIOSCPFXMWHFQMKFNANVRGAMPTFIJCZBNTANHLHCJGISOVWYOC\n" + "NA\n" + "ZPCKGOYYYYMLQTUCHRQTUNECDTLGHSSSRZFMCZICSLJAXPRQFC\n" + "EULMGJMKZTHCBNISDBEAXRYOBAODBCBVYOXKDRSVHMHSVSDEWEVWWPSIUPMYGJKXDMNADUMZMOMNWOTJ\n" + "FXBWSHXWNUOHBDTPQSCKVCPJN\n" + "EZBRQQICQZSYESO\n" + "F\n" + "LHNW\n" + "RZPUTPTEEPITYWVHBTOWGYZL\n" + "NKNBTQDEUEIMSGG\n" + "BWDSOJYVYCLTVBTTRVY\n" + "UMDKJHCHNGUMTFFQIAOMTFXJMJEJUJSORORTKTHTFPYWHSOXXSKEWHOXULBQQQDRLSQNN\n" + "R\n" + "ATHC\n" + "EOVJPDROSNRNMWGWMVUUTBVXTNOSPWVFTHIHVMKZWSHIX\n" + "HDBGFFW\n" + "IBRFSJYTMEZJMULJTGITLSTITGTLYCKJVTSXMMOZ\n" + "CKGRVGQFBWBEMDTMNUDENL\n" + "IUL\n" + "HKOYCXYKLIQDAIMU\n" + "UZDFWIXUWIB\n" + "UZOKBHXLNVGJBBIXFOAHADJDNGPNSRCJT\n" + "G\n" + "ADS\n" + "JHHAINBCVAAOTOODRJHNIHBSM\n" + "SQXXAFQQUEJABJYKGDZKPRTYBIWLJQREJPVCPFCS\n" + "GRJWNYPXZKIFWYOHCCXXFJIRQAWDLLDPGFZZTO\n" + "XSKSCESBMBYMWHBTNVYVPOUUVOFWCDAUKMWBIPZS\n" + "RBJ\n" + "JKQNGDNRCUNXSPHHHAZVLJGWQFUGEDQSCWAAJLBNLCS\n" + "RFSIJTEYLV\n" + "QWWCPTYNRGEKAGCFXRGAYLYOHRCRD\n" + "YDPGYZF\n" + "HDDRLGRRDDWMCNR\n" + "DQ\n" + "SF\n" + "FLOFGHQFSIR\n" + "OEWOFZQZ\n" + "KQMUIHLNAMPEVCMEUKYASKOXWEQCJBLWKQMYFVBAMYCNZLRDCYKALCTARWQUFWOJKXYZM\n" + "RLCWZXUHKBDWZZIM\n" + "N\n" + "ADMVJ\n" + "EJWG\n" + "BA\n" + "UMYCUTOSGLEKXQZDQNNUGQLWHMYGLSL\n" + "ZEHAWKMBTMIRFLNLGXHAYMYJRZOCGWGPASQPOMBLSVSKUJZHDVVCL\n" + "PMAJOJUFEFFTYFSHNMDIQDQG\n" + "HRXLBAIECHSAAQLLMGBJF\n" + "PSMVIEGUPEYENLBHBJLEUGEKE\n" + "XMPWWPYLQG\n" + "BJMUXGEBNIYJKUVREVBVRLWI\n" + "PSHAHWUEMXSLAHHENDKANMQZBLKGMKZMBUOVOGTEFMHUIT\n" + "CLCH\n" + "XBL\n" + "SZRZRKVUACBYNYMYKCPRDABOMVTH\n" + "JECJQSUFZBRJCPXUGMKFRXSCT\n" + "KZXLYZVXZWVZQLMKAXIFWNQODERRKNZDTZFPPA\n" + "FMIXQCHBOOQPOQRSVUZEJQQFXQWYFLTUSBHPTUTTOFDYHLXVSOVTABLXIJWJCHZASUSQIIVHBXCJKKCYMJOMJMFRDEHW\n" + "T\n" + "IHHMQQAJYSYRSGKA\n" + "UKMRWKCRFRGVPOYHRCHDWPNKJLBVVCCIPYKOVAA\n" + "QZPFLHKQWNVCNVDYZA\n" + "XGAMXNDJITANAWDC\n" + "FRMOU\n" + "ECFNMRCVCISCOR\n" + "FDVREMMIZGLV\n" + "WTHKAXBYL\n" + "OVSHPRONNCZBESLKGV\n" + "UNSSNPBKGX\n" + "TUUVTNLTRKL\n" + "ARTYPHRWI\n" + "CDR\n" + "CKL\n" + "IVKGDBLCYYDRRLXYFM\n" + "KILMYNCYPDYZCLCJG\n" + "ZB\n" + "VIWZE\n" + "ZBKHXGRVTVRBKHIORDBBAAEHB\n" + "DVPTQCICEWAZU\n" + "ZFMVHMXINPHSGPQOTPMJYYUHNWANTLWPZOXJQGJ\n" + "FSDFPLRVDZ\n" + "AIH\n" + "FZOALCZOCTX\n" + "EBHQDKST\n" + "EM\n" + "GOLMARGNZMQTYETJBUIH\n" + "BMU\n" + "RZ\n" + "UOCNOYRMX\n" + "VLXVMEZNPYWU\n" + "ZESRONJUWOEMLRY\n" + "N\n" + "OJBTFZXKSIXWSTQBFWAROGSKWOLRRFNNGECLEOFSXUEBQLMKIIGKFPHTFYZUJTVTHPZVJJF\n" + "WVWGJICHMHRKGYMMQSQBEBWFNMC\n" + "BWYNAFZSKLGDUOYHLWST\n" + "IJXPHHKMNNXOU\n" + "ZAYRDWKZPNHYLIP\n" + "STEKYFRJCTT\n" + "QIXDZNRSHKTAOBAH\n" + "HCRIBCYAHPDREZTKPLYZOOWZHWYBQZJOSUOWDYKDESRH\n" + "WIVO\n" + "YNWMB\n" + "LRNGED\n" + "HTWJQCZHLNIJYOHYEO\n" + "A\n" + "ZIGDANAWN\n" + "PTSLAUXIXIAC\n" + "SYTOKKHHCFYGHBRPQLKEOTLQQRQZVVX\n" + "DQZYUPODVV\n" + "SBXGGDDAGENOVMJQZANQZ\n" + "VCKFZIIPZFPQKQDGLLC\n" + "ANBZSMZINCRORBLELLXKIWFKDNSBYQCV\n" + "VWBGCGXWQVWOC\n" + "YNJM\n" + "JZLSNKWGDWDLAPSPBSLIMSTIQIEXFOGYVPSZDTAGBLVNILPJVSM\n" + "HHYLCVQRFOBJCUSOWVOFJIDAVWQIRHYIHGUIFFZQWKHPTAOUQFMTIPTLSBHEPJRZDERRGNJJJYINNHAFMYGHGWSVGRXNVKLXIGV\n" + "BEBXZXRVMNFTEF\n" + "XXOKDENGQGH\n" + "L\n" + "BVM\n" + "VYNGZYQPUP\n" + "TW\n" + "AM\n" + "HBFSAR\n" + "HTADVEFTMXEYDDATGFRQTDQEIGHGDYVUJYP\n" + "WF\n" + "XVQAHNLMSYBOPHOHKTJK\n" + "GDSCQHOFGAHLNIM\n" + "FTZOLNKDPVEOZIVCFJFZOJLMGIIOWFDEWIAQRT\n" + "NZOFRHWDTMEDJKQMNTWNTOHOITKDJ\n" + "XTZQKGKLPSJWDCJZTBVQKSRWOBGVMMWBGYVGJXLKOGQAEJQBMQFBHDHQTOIOHLCOAAODGOAZQZK\n" + "QZYBJEARPTWICQTVPXWUFEPHIMRWFCLAZNSO\n" + "JWJXGJIZPDNWQNBDJQUVAIUURFHWTMKCAVKGHZHQH\n" + "BLRUZFGVP\n" + "TTCLTJNLGEBMQCW\n" + "EOBPYCAWBOFMORPOWCNJMQSWNFRGRLRIBHP\n" + "VLAMFNYJOMJF\n" + "AQLAPTZJBOR\n" + "R\n" + "PV\n" + "OMJPI\n" + "XSQDYAWOWHVITUASFCXUREPAJTDTVPRY\n" + "XMIYJXHRVCDDFR\n" + "KOLVLDHBERNMTGSBHTAELVGFJFQQMTEHPDHWTFZTAXXRRDIU\n" + "AWVP\n" + "HGSZDJIFKDFTSU\n" + "JI\n" + "QAOCUMYFWUJJNTW\n" + "VSRQBJUQQDFZIRKTJVBFI\n" + "VTJVYPGADE\n" + "WROBCQAMISFJLTPDIFJLBMGFHVTPRIDPUSNR\n" + "RTJOXQJXBZXKQDPAAC\n" + "TTPCFEMYJYFNCWU\n" + "LPTWNTAEKKEYUFHLUUO\n" + "NNSHUEUOUZYFSYMKGPSSRNLTIRWVXYYOGSJXIQLBPAFESTN\n" + "SVJDEGFMWEBNLIMNCHOYIZUBBLDMICVDFYAQFEU\n" + "K\n" + "QZQLS\n" + "ACQFKU\n" + "PHM\n" + "TVNDJOYYI\n" + "OKICUJERAYIJOCMNLXMRZDBKXUJWAGDNXSNSSV\n" + "TZWNGNHFWOELEGAU\n" + "VDVVABKAVPZQVLEO\n" + "SNNLM\n" + "TVKKJAYDSKVNXALBFJCFJFNPEBBRCQFMZQJFDIJCXPDENCBDZEELUCTPLQL\n" + "XEBG\n" + "ZUPRHHHXLDX\n" + "XDOXJXMMELSEBRPOWFGXWYTPOUAQWDHCIWAXVHCMTQS\n" + "AUUZGJOJOSE\n" + "OVQOIFRV\n" + "JXSUKCTYKUTN\n" + "LLCZP\n" + "KNITGEARCUZIXBAVJSYJBC\n" + "NFL\n" + "ERWJSZHNMAXDCM\n" + "YPFWBXMSP\n" + "IPEYWIIFGJLGXZZM\n" + "YXVWZAC\n" + "UM\n" + "IVWUDYZT\n" + "YNYWQEDF\n" + "QBTGBES\n" + "IFLRJBVILGUAV\n" + "VHENAQLCDKIBPORJJKLAFLDTAPG\n" + "PJQHCRZYFDXVSRLJTGFHVFISKGUULKNZOMOKJWFCSVBVRPKTLH\n" + "QX\n" + "OVDCUILFECRMAGVAZCGZWLAT\n" + "SEP\n" + "OUFQN\n" + "NLJANQJNNFFUFMWJWCPTGN\n" + "IMVLDDEKP\n" + "CTBNZFLSZVXMFPFQE\n" + "FHRNBURCB\n" + "PDLLMZDC\n" + "VWRPPDJDWPKRNV\n" + "UWPHABG\n" + "LZHCBMBIO\n" + "GNBRLZNZSWNB\n" + "GNZACPJPWLLU\n" + "EALARWIQYBLUYPWSFGEZIDAKNRWRKKEFITBRHUMDEVSYLMVIUYTBAQAJRBTQHXEPAMOLXO\n" + "TXJAAINXDZA\n" + "TEIVEAO\n" + "HIBCAX\n" + "Q\n" + "ALCTNSNWMRGEVADUHUDVTARJGWD\n" + "AHICDFJYTJELDBDYRQJNBWHNJBDUWUYYT\n" + "WLFJJBLSAOBPGQJBTXTXZAYWJGS\n" + "BIUALEOHDNWFRLFIRCQL\n" + "ZTUOEOTZRLFFRZZIKBYOKD\n" + "TXICJHKASBWPVPTDTILNCGNYG\n" + "DFK\n" + "VHN\n" + "YDGRUJAAMLUC\n" + "HRFZPNEOABIREGQXISBCZCIMYECEHSPSAJALA\n" + "BGFGJSJCJBLMAZKBRTZTVUPWCRSXEJBGEZTOQCYMOJWOEVEDLXTATZL\n" + "DLBQNE\n" + "JAHZMEKJLOBCFEBJKGPUIWVIK\n" + "LBEBAUBMRV\n" + "VPVUVMBQRD\n" + "QMZLSRHMITTHAFYXMBWMZXLNLDWJKHOSLTHFKFXUIDNRNSOWAVLNPXUVNKNDIXOXNDGBKIYS\n" + "ZBMLJHFQEAXCDPQDSUFVSBDCLXNTUALHKOPTKYZTAMEEKUJEQCSIJWIWCUAWZIUFELBCJEKNBOERQYKJUOHDNLDEB\n" + "LCLFUTZCFBBLGNULWQQYJVFBNMOZI\n" + "EBHGAI\n" + "JPIDOTMQSHYT\n" + "BCHG\n" + "WWADZILYMYJMQQKEYEHVMJOWXPNS\n" + "YJSCWWNVTWYODOSXNQBEGMCHYUOHFZLTMEEIYTKI\n" + "XNXINKKXFSENMAX\n" + "GNJHLZKF\n" + "BIGAVOWATBSMVCZPRGVQCNWQNLCDQWOTMDKYCBUFCXULYJMPGL\n" + "TQTTXYFLCXQMHOIXPUZBSVKIVKM\n" + "LATJPOJXFSXTQYU\n" + "NWPZRLZQFEKPCJVKWYUEGTQJPUYOPMZJQLCLR\n" + "XGZ\n" + "WBRZOJUNGXQN\n" + "OAGQRFWSOIYFSJOMXDMVKMCNXPHADBPVGYNNEJMTJBTGRTCFVHEFP\n" + "FJFJYZQWQMNYOKYBYBKIYVXAESBLXAEMCNLGAGDOVNRXZWNH\n" + "JCUCQHLCD\n" + "NQOBRAUR\n" + "RYWNHAFCFQINQ\n" + "UTRJIHZLSITQXYVMQY\n" + "DQYBEHOYJDZJHARZFDGXECNUMPRVXBNNW\n" + "TPYLXBAKXKJYSPOCBDMWDFNLDJZSTMOAG\n" + "AHQFQDZGUIDHOLWQYZLJRIVBWGQ\n" + "BWDQM\n" + "ZCUC\n" + "OGSAKIHTDUBQXFEXECLF\n" + "QJAEHVDCQQANUKEHDRQILQWEAVWXOGZCEERDYN\n" + "C\n" + "KDGYXTSAB\n" + "ZXTMAMRJWWCYOUSNXLBSA\n" + "ZWDOBHUHXWA\n" + "VKXDJFCJBPYJNPFFYBZAPWYMSESZBUJLUUAQDQKCVALSJSCHHCSGCHI\n" + "CNAMVEPS\n" + "SDFPBWJEAZDQQRTQRDUAMKIBULZFMNKUNDYLJ\n" + "P\n" + "VEEW\n" + "VTGWVGIBNUTJOEGB\n" + "YWWLAJ\n" + "RWNRBFJDRX\n" + "MYFN\n" + "FTPFVOYEQHR\n" + "RAG\n" + "TO\n" + "LQOVTAHNBABJAQKNBCHHX\n" + "SZZBZITFBIIZEYDBSYIKYJUEVBSMCWHRKTMILXYQYYCYWPGJSPMBPCJNDLAOBBPHCWVHAFXSUJSKFFDUNWYPAN\n" + "RHDPHLRFVEMMYFIZWYICJQZKHZX\n" + "YFZUKLPITEFZACKCDDPIOCUFSTEVRD\n" + "LTITPNSIAJEHUJYEJSVJGBT\n" + "SLPWQUKNQGYBVIGUMB\n" + "LRLONFQHZGTHYYVWZQLVUSQTFUWHJNASPFNGVBJKPR\n" + "LEMAFKWZFZWJMFVPPIUEZUDLHLJSXHTNGDRIROVO\n" + "DI\n" + "FLHSSPRUFZR\n" + "IIRQTODXIGMBRAQSQSMIVDHBAPZKCYPFQDSTXKYYN\n" + "SFNEGBGBEXAT\n" + "XCVRFNDBNXQRMVDSZIGPOHGMBA\n" + "EEOESCLGWWCWHJWBUYSODZUAYATN\n" + "JOIK\n" + "HFQWTNZGPARTFRPCY\n" + "MWINOFYNEHLFXCAGTGNYTBRN\n" + "LYLXABDDWDAIMKRMIHI\n" + "DLQOUXODWNDRSENRYVOOICP\n" + "TC\n" + "QMI\n" + "MHXHEHZZBKUO\n" + "DPXBI\n" + "EUVFZVUGRNEMNSBHHHFAQTIUPOXLKVMG\n" + "WASCSLAFIONIWATAXTFYRZWUKPHDLRFIOI\n" + "XUNEHA\n" + "QZPITHNO\n" + "QDPVEM\n" + "ZRB\n" + "ZG\n" + "NEUOXP\n" + "XTSWDUSDFNOXSUSYX\n" + "EJQISYECXPGEERICEPWRU\n" + "WAGNEPWHUIJJHQMUAGNHMYOIKQBHOHS\n" + "T\n" + "RMZYBBXQZPNQMHXBCXKJBNVFDTTPGJPJBRLFVUMMCSKWRJSGPCVREOPWGSTERWVUXZSHODQIHOOAYTSUJFRGURDFNCXEZCBLUOJBTGRPMTCLMQBI\n" + "PDRTQBKJEXMBHOOSWCF\n" + "RMMEEVMZCKGIXAERGXBRXPPLBLKWYW\n" + "FBEXNARCGNLS\n" + "FW\n" + "TQQCUJJZZLCDSLUQETEYFQBWWZWTE\n" + "ENRJUD\n" + "NJLQSEEFBTDJRYDXKIXGVOBQUSL\n" + "MEONVFJEFKTUDZKPNGFZZJGVCHVEB\n" + "VFXYEWSBYQJTWFAICT\n" + "EOBGFVSOGHJBH\n" + "MQQSMWQK\n" + "HLOKZCDPNVTIWLEPBNJEEANPLELTAPNHBTJQ\n" + "XLFWHOI\n" + "IZFLTKXAYYWSELSY\n" + "LRNAEGMLUCVEMBQPL\n" + "CNORPULYJAOTZYKFQNQMDTSCRGXQZYGDTPOHSQVSILKRAIFOXKEZRDZQNRU\n" + "GSFTXYVTIIYTSWGLG\n" + "HEHKDSWSDZAQGXULRWXYWIVJQGXCOIIJGBWENWGMWWOTTFYOJNRGZ\n" + "ZOOBEOHYH\n" + "FTAKEZVVHYOIMGNKNHJNIWDOPQA\n" + "SJR\n" + "FUPPUXXEIUJXNAONEEGNRHNXYWHKRGFYMSFYGBMABZYRZZHZPOXNJXA\n" + "UQMYPJYXNOZDEHFSTZDWZVWSX\n" + "JZVGWUOYUPPFZ\n" + "HHCAOCAIWXM\n" + "RZXWLBFWPWNSITSPWJNBTIATOKHXKYUCBRQCGNRMMKBCCXIUGNZCCHJ\n" + "UFA\n" + "HCSSETIDVGLDEKRROPMZZYHG\n" + "JVAJG\n" + "HOHZZONMSTEIDMDYJM\n" + "WH\n" + "UEBAFWOQMRHQDFDFXZYWWPWAEMTRVPYWGDAGMESTWREMEJRCTSVBALLVYQTJRDDQF\n" + "GJOIO\n" + "PNYNOXAJUNBBBCTFYPPJXUXMMF\n" + "WUQMSLARIKYCCLZNXDJ\n" + "YB\n" + "DBEQUHQZWSB\n" + "OK\n" + "UNZNCPEFNBQKYHV\n" + "NXKYSEECJQ\n" + "JNXAQHK\n" + "GWHNZCLROTCKQRRCFCRGZILFEUPLOQOXVGHYCDFZKHSXKTPZPJOGUUEF\n" + "KXVZBQKUIVUQEICJDXWDSOGWCMEI\n" + "WXYJINVRMSYMTMBWWI\n" + "HZIMQCZWGMXTZGLJA\n" + "EBDFFBORWLOWJVWXKGVNAYIQKOTHHTBVRFL\n" + "OMQNHKXNM\n" + "UFYXYXZEUSEDGURXM\n" + "BTNLUSOCITXZHYGOCLCNEDBPAKDTKEYGTBNGCLSHFEIGAEOTNDW\n" + "G\n" + "Q\n" + "XTBOXZQTCF\n" + "MXROBAKZWHCKXLKREOMEGMANJNQGSRQ\n" + "LOZICPRWXEXBGTZTUUOKHRTHMYQEAWTBLNTVSWWFZTGZZNTIGVZDCOLOFFTUI\n" + "QSZPKXZSUORWIHBYBNPKCBDWWIEEMEEVXHQJKWLMURAMYLSVWEOBQTYZSWQQAXVCWAZNLDZKQYCAEMYTJ\n" + "HYDESOOQKJEEUAUZKYIKY\n" + "QLKMLZCLWXNWDMKDKQTGWOJHXVFQ\n" + "HWAQHABXRWTVLLVQRTJLQTGRFTYVDSNULWJAKYVQMGSPKLRCFCQKJEZRHULCCKYOXVLLGOKEHBZEWMGHENENIIPBFSBKKADOIPMEYKKEMSDOHSTQYUATDFTVBMROJKE\n" + "PJXDFFVNJACVMYDXTAPGDBQMDIYNM\n" + "WVWS\n" + "PAHNGCPTSKEBGGJDTTVFPAF\n" + "NLFQ\n" + "SUUKTALIRDTNXENTNPXBPWYUYASERZUF\n" + "QEXQTQTVDBRMMLVYBOKWZZJZXYBIRHVW\n" + "CBOHLDGPGJH\n" + "IF\n" + "ABAYULLMFHXQCZIGLTOLAPKYE\n" + "NFPDMAGHASUWEMPPSHZLXJLCLHVVGIQVRZHUPPMDOQKCVADBLYKROIWJCHFIZ\n" + "MITGUGZ\n" + "GIQLWTMDNMXCVBRIHXSUTSQOBATHXTBBU\n" + "VAQBCUSZWNRYQO\n" + "HDAEQAAK\n" + "FEXODZIBJSXU\n" + "ZVO\n" + "U\n" + "W\n" + "VRCDPAEIWKFCSTYGDCTGQSBZ\n" + "IJWMRIQCQVRRHGBTFDDDO\n" + "MX\n" + "XVLHBXJSOUAWMYO\n" + "YUNSCRZUATVH\n" + "JXWIXQIXHFGTKTQBGQTDZXFMWMAHWNWMUPXBDM\n" + "JFZHLOSOSULNFAWQTBWBQERADCVOEAGCHQJLEUNA\n" + "MIH\n" + "GYMRRDVPIOMUPTQLBCIZJIVTELVNIRUDVFPPRRUGOVGAMMIWBDYNM\n" + "PMU\n" + "V\n" + "ILTRVOM\n" + "PFORJR\n" + "WPURWTO\n" + "PJLEKIUPXO\n" + "VQWUC\n" + "IMZKVJKWCACHVDXWMGAXPSRFDV\n" + "EYQKXTRDGAJULGRYWXUSSIZR\n" + "DSNWYPDISGMEYNNYGLOAEMCULBNVZMQUPFERYI\n" + "YGBCADMALTINTHAXIXMWJ\n" + "LBJNDX\n" + "XTZUVAQCBXWARVKOLMICEITJNHYPHDCTJTHEZEJMXFCWJCRPQINJCGVJJEVMR\n" + "JAYMBCJPXAYHQFFMFLELY\n" + "DMPXURXNVHGFGZSUKUYDLCA\n" + "EQG\n" + "VDIXHLWHYWPZHUTIHKIVWEWDSWPJZZQHPHADMKQKOCNYUDV\n" + "QHXZP\n" + "VGNJCYVUUACVPDID\n" + "LLGGLK\n" + "KGHB\n" + "KSASSTBZEVPNNVETBFWEQORBNVSCZVMIVAEACOLBCFFNBRKKVUCHUEQDWR\n" + "IHHXG\n" + "UGDELBR\n" + "ILXCLBZBEQZH\n" + "Y\n" + "DCMZIUADUCCWHKOOVKXIACYWBTSWWCYDWINHTL\n" + "QEHP\n" + "GTBWOYSAAMJKFBYJPA\n" + "LIIXTRTREGONTV\n" + "GYFBQZUMZMXHXT\n" + "BIGF\n" + "QIUTFDUOSIQOVRBPNGSYDHNQ\n" + "EIWCYCAINPZMGMTSIYAHVMPBSYXDNHWGRKGRASGDTXUJBTGQIG\n" + "FUCYJLLRMVQSQMNOGDKVCPRXDVJQFPLVXP\n" + "S\n" + "I\n" + "GRAHBJDNFZQTZIEXTNMFUUBJRIMU\n" + "A\n" + "IXHDGGRBQQ\n" + "C\n" + "Z\n" + "DHHHFTLGSFVEBKIAQXBFBHBE\n" + "VKVL\n" + "MQYIQHTBUKCYWEZBHUTARRYFLAPGVQJKQIJLNIGWRGASQCRZQUZVRFXK\n" + "ITISVHLZZKTO\n" + "BQQN\n" + "USQ\n" + "KDCW\n" + "VJHK\n" + "JFQLTLQABHYZGPRRMTAKKKGVZUKKQZXZCHHTXPBKH\n" + "IOW\n" + "ZRSYJU\n" + "QLCULISYLZQHWINZE\n" + "TPWJAHTIMQHG\n" + "FMWQGS\n" + "J\n" + "CKVPOWIBUGPVSIJBAMMMWUSJXXROLIXWUFFFOGDOBFYNYZEZSKSWLDZFYIYHFVQNXSTDQ\n" + "GCVDFNM\n" + "ZL\n" + "XPXILYGXIDCFPSIMNVQMWTKFV\n" + "MHS\n" + "JWCAIKLHFDVVPDPR\n" + "VIGQFTOEFOOTL\n" + "RTH\n" + "VABHIEEBDS\n" + "NYXBVNVRRXNJ\n" + "HAEUONDNTVVTHLYXLIANJUUHBEYWUOZTXHAVL\n" + "KGIUROHFINGHDONUOOSVYTSJUIREYKKVDWKU\n" + "ODFHVAHQEIFLZHGXCWRWGBVOH\n" + "LS\n" + "XZWYXCBUUERNVJBNKQZOCVIICJCZZSD\n" + "CLMFS\n" + "NWBKXLZONKC\n" + "UEWHNBXSALZSSGPPBGBZWSHHGUCPSNDTLMFR\n" + "THVKU\n" + "PBBIDK\n" + "KHADIIN\n" + "HOPOLBAG\n" + "SRZXQZ\n" + "PPKZHAMLTBHWVXEQCCZBWAQYJCGPPFGAIRAANSMGQP\n" + "NYEHHNHPIEEFBLGHMYHFDSCUW\n" + "CHWGMZFWRPMVVXDLMFQOPYTCREUCXA\n" + "BVUCGFBQSBQNELFAYLGAHEPBXPSFKUHTNYQGEMWBLIIKKJHHYEXMDLTKJMRWHCOQHADGNEYAASLGXQUWEZ\n" + "EXBYSMMKVCPVDGLQOPLDPMEJEEPBLLJNRIQC\n" + "LEVZAA\n" + "GDKTECIRKOYPYPEUTGKUFEVDTFRDAANHIFBUHSMJS\n" + "UIGZGPXOJUHVRXAKWQJIMGWQCXWKSGJVVKB\n" + "ONINVJQWQLPHHC\n" + "P\n" + "XSAXFKRSK\n" + "EBCB\n" + "UW\n" + "MNVVOWWUKKZBGFBTNWNXB\n" + "LMISOCHFPVQNBRX\n" + "QBOQHOYCXJYSAACTVFNWRTAJHHUUESJOXNCSSYUAP\n" + "MHDDAZPYJRGRGPS\n" + "KUABSL\n" + "AYFLFBEXAOMN\n" + "GGFHTEL\n" + "UICDHJUNUZNAMVS\n" + "JIOUIMY\n" + "ZDTLHZAJ\n" + "O\n" + "EHZBFMOMHTRPWCSJACPOEWDHFORXEXXAQRXSRFMBCGOEDGFJIGBQZOUNW\n" + "WFZXVOTIR\n" + "M\n" + "AIZDPVMMAIBPXUDZQMMMWGOKIQNFSXJZWFRNRFMMORHIBLEXKU\n" + "JGJGEDNFBNSEAPZLHPTPJARVLAVSCWEWUIFIGKZNNXNVZBTFMYPT\n" + "ICSLQKLOTFXWTHIQZICSERWNKT\n" + "CUHGNGFXEXUVINDRFENIDZQSXSQCONLWNIPYPBWDHCSHTONERHJFLBFZPJPDJDIDEAWTXWDKUYLDJSVTIHUP\n" + "WALMCBK\n" + "YQSFQ\n" + "DLRKGMHEGTMGFZQNGJQTBEPFTFKEKXUSOTFVTWWDJBKVWYSUURQOVFYCBBWCQYSGXZMNURXCMMDEWYPKNF\n" + "TJTZSEUBVDXKJPVSRXSUJBAKSSPGQUUOGKSRYBNUTSFCZSADKMCPMUWU\n" + "WWUTG\n" + "KQTCYIGBG\n" + "DERFWFFDNHVXHBHCRRXAFKKEJBVIOYZVLBKIYQDHTIMUFFVBPNCFVVZV\n" + "EDMOZYZOUIDFAVVTQJ\n" + "OFRUPXVBOKMCJUKZWVRFCWIGD\n" + "BMNTUPH\n" + "ELQMGMQIAQYOTWFYZWFKVYWJAIHFRMVEBCZSEUSTZIYHSOQH\n" + "YUWTDRZATJNES\n" + "WCNKVBREYOAHIZVTJALMSZTUKGWNWNFQVLXWCGN\n" + "DKBI\n" + "PNKMFRXEYGDFRPSYCULYNNBHZZAQNWWUOIY\n" + "WAJIDZZQYDPVMLDPOKRJTWFOALN\n" + "LPQCNYAMRVZC\n" + "DPZLHPNNFGTUOIDPUJM\n" + "HFKUAWMYCQQJD\n" + "XCBQLYE\n" + "INCGXMJ\n" + "LSNZNSBJFQEAIO\n" + "VYMTYEINVDNUKZXXWTU\n" + "NVTWMURC\n" + "OZZRRODQNFYZ\n" + "UALSWKOIHHZGMI\n" + "PSNBLQZGNZAXYAGXCKFGZJQDPORLPNCPKS\n" + "WUPXRHSAZNWTJDDGNLESSOD\n" + "NFFWMGVLWREACY\n" + "YUDTTHWSGYEWWVDZIUFMGVYDLQUQWLWJNNLH\n" + "NEAMGEJZUE\n" + "OTIILKF\n" + "KY\n" + "KWKTKGWYDLE\n" + "FYESHIOCAKQ\n" + "IAAJ\n" + "BRZLWZ\n" + "PAQZTDQECDPWZZSSZFAYZBWGYIDPYOQR\n" + "FQAWT\n" + "URPTGIMYDMGBYBVLZUGJPYPWTVRJVFHOXJAXBEKSEXLNTIBTPLPPLANV\n" + "ZEQDGUJSCMNDDDJYVUYKJHVSGGSPXLWUZRTIOITQUEJXKJMWVHSEVNLLVW\n" + "COXMGQLXEVBMK\n" + "YTNLCCOAV\n" + "NXEGH\n" + "FRAFQRA\n" + "GVPCSPY\n" + "QGKHMJKILOA\n" + "TKMMRDMLQKIIGCXJISTZ\n" + "GUOLCJZCDCKIBDSQF\n" + "OTSTASNITZPBLWGOTZMKNZHPIFMHPM\n" + "XLYBGARCKEGKVOQQDMHKTGAFIWFVWVKFHWFTBQBWSBATG\n" + "RRWBGOALIKDYILODGWTQQOVXQTCRZTJXMBXDICRMRDRSWIHVCLZKMUYUVQXGFLPSGRORGNYQ\n" + "WQKIEJBO\n" + "TTEXXVXLNGUKMCKYZOMWRIJJGJULUDHCMVMMCISEFPXFMLCPTFRVZUOQTGFWINKZSJK\n" + "JR\n" + "QCFKDZMWAKHPGJSLZDMUEGMMQQME\n" + "RGXHCG\n" + "PMVNARGBQRIDASCECGTLC\n" + "RPEL\n" + "ZGYLLLZFCASEVIVCNYJQEAVXYZKA\n" + "J\n" + "QPMFLMRHKQ\n" + "KRSMZXOVVPSVNAIGKPWRZOPBYNLAIJBAFCGOUFTKPFJZAHCPDXOESBJBDEZP\n" + "XAOVPWLJJHIJOQABB\n" + "HJRQRECZYIJBBTDSUSTIDKKU\n" + "ZSPX\n" + "IMKFZYEW\n" + "KMLV\n" + "PPHUPYMEFZRFQFTUPMAIJQYJEWVFOARH\n" + "RMBY\n" + "WBLOWHHZSPRTBCLWSYIHJULVSX\n" + "LTLFGS\n" + "WPLPFAXAKNBHRBVQVZJKHCMVTFZMDLJQSVFUWSBJQMFMHYGCGYNFIUBMAGLEQZ\n" + "JCAZMNLUHJJO\n" + "T\n" + "AUPHLHQXVRT\n" + "TUDELJLONPVW\n" + "QLCIETGUJK\n" + "CLJCKCAF\n" + "ZPVAVJFHPHUVDFUDSO\n" + "MFRFNCOXREU\n" + "OYRHJNR\n" + "D\n" + "AGQOQCOMCZW\n" + "BXZSQRBJNOJXLGGSCPMWTDQELGHCDQKJZDMNZYSDDDUOVTPPQVZZNANWD\n" + "AMHF\n" + "QQ\n" + "CDERFKM\n" + "UVHQVYNTACROYTSWCBOCDGXJXBZCWHFCC\n" + "HWKELNWUEEHZXST\n" + "XZXDSLOEA\n" + "DZV\n" + "RJTXRZTSVTNGHONDUFXTEPHDQPKBKYNYQGWLPZXO\n" + "ZCLHQZVPAQSUJKZMKCQXVZLHMDUJ\n" + "LEERGXFGQSSXKJXAAZGQONFBQABN\n" + "XUUCARSWMTARXDWWGZWGI\n" + "KYXFZINSNOKRCYVQHMMU\n" + "MKXYVIDRFNGDSAFSHMSEHFLV\n" + "IHYONIEGRBZGJVFGTGURITMMQLNUZQ\n" + "EBNVYCTJWWHQJMVMNEQBTLFPGJEAKDGOXTQECMKF\n" + "EANLUJMOPNXVO\n" + "SAVS\n" + "ECMOABEQRPLLAXOWUFOLHTPWEVXOJPAYA\n" + "BZDPWVMHHZXOKTNESLUDPQLEOTGDBFZLMYTAMYUOTVBUQJVRHQSMG\n" + "ECQPKBXVRSSVKUCMN\n" + "BINKMQWRPAJGWFHQUFBHDPTCV\n" + "CZBSPTHWICUIYBGJNFRZGNYYNSXDQYDROBSFHJRJYXERVYQEX\n" + "BVCOYDQIICGTVPZXRAIR\n" + "JPXVKZHRDIQJTFH\n" + "WUYLJXNIQIMJPUIOOOAVOMJ\n" + "VTRPDYUXBYCTZY\n" + "XBW\n" + "KMFEPXDJRSZRARZKCFCNZKDRNMKIMKVDQBVTSFFUBPTSAVYMKJSOGEFR"; private static final AnnotationData[] RANDOM_ANNOTATIONS= new AnnotationData[] { new AnnotationData(507, 230, 1), new AnnotationData(11323, 55, 0), new AnnotationData(12543, 96, 0), new AnnotationData(9964, 112, 2), new AnnotationData(579, 137, 1), new AnnotationData(15508, 198, 2), new AnnotationData(3356, 93, 1), new AnnotationData(5225, 6, 2), new AnnotationData(11802, 284, 2), new AnnotationData(7848, 21, 2), new AnnotationData(10495, 145, 1), new AnnotationData(1535, 292, 0), new AnnotationData(12764, 271, 0), new AnnotationData(15459, 123, 0), new AnnotationData(16169, 257, 2), new AnnotationData(13281, 341, 1), new AnnotationData(19166, 120, 1), new AnnotationData(9609, 233, 1), new AnnotationData(3722, 340, 0), new AnnotationData(19716, 275, 1), new AnnotationData(13248, 250, 0), new AnnotationData(6448, 211, 2), new AnnotationData(8842, 148, 1), new AnnotationData(11547, 196, 2), new AnnotationData(18927, 170, 0), new AnnotationData(8090, 297, 1), new AnnotationData(13277, 35, 0), new AnnotationData(19728, 273, 2), new AnnotationData(1588, 66, 0), new AnnotationData(18918, 229, 0), new AnnotationData(9612, 77, 0), new AnnotationData(18190, 76, 1), new AnnotationData(10394, 172, 2), new AnnotationData(12487, 231, 2), new AnnotationData(10682, 54, 2), new AnnotationData(3282, 301, 2), new AnnotationData(12463, 60, 1), new AnnotationData(4559, 1, 1), new AnnotationData(6410, 220, 2), new AnnotationData(8130, 204, 2), new AnnotationData(18661, 254, 0), new AnnotationData(2642, 96, 1), new AnnotationData(13073, 278, 2), new AnnotationData(19146, 4, 2), new AnnotationData(2522, 85, 2), new AnnotationData(12263, 125, 2), new AnnotationData(2604, 302, 1), new AnnotationData(7486, 47, 2), new AnnotationData(1145, 228, 1), new AnnotationData(17901, 71, 2), new AnnotationData(4136, 138, 0), new AnnotationData(19645, 78, 1), new AnnotationData(6926, 291, 2), new AnnotationData(16744, 182, 0), new AnnotationData(15026, 190, 2), new AnnotationData(3117, 149, 0), new AnnotationData(4617, 256, 1), new AnnotationData(14922, 322, 2), new AnnotationData(19220, 256, 0), new AnnotationData(13670, 30, 1), new AnnotationData(12068, 238, 0), new AnnotationData(5376, 268, 1), new AnnotationData(5979, 180, 1), new AnnotationData(7452, 138, 2), new AnnotationData(1470, 227, 0), new AnnotationData(14450, 76, 1), new AnnotationData(13798, 338, 2), new AnnotationData(8151, 301, 2), new AnnotationData(12707, 183, 1), new AnnotationData(9916, 291, 2), new AnnotationData(9158, 69, 1), new AnnotationData(11105, 220, 1), new AnnotationData(16739, 179, 0), new AnnotationData(11748, 0, 1), new AnnotationData(5507, 173, 2), new AnnotationData(3268, 52, 1), new AnnotationData(11149, 322, 1), new AnnotationData(757, 63, 1), new AnnotationData(6172, 261, 2), new AnnotationData(8939, 122, 0), new AnnotationData(11583, 276, 0), new AnnotationData(4199, 7, 1), new AnnotationData(4116, 67, 1), new AnnotationData(4743, 198, 1), new AnnotationData(13967, 262, 1), new AnnotationData(8108, 204, 2), new AnnotationData(8661, 100, 2), new AnnotationData(2235, 136, 2), new AnnotationData(9681, 67, 0), new AnnotationData(15860, 207, 0), new AnnotationData(2866, 285, 2), new AnnotationData(1394, 243, 0), new AnnotationData(13853, 272, 0), new AnnotationData(18326, 240, 2), new AnnotationData(3562, 272, 2), new AnnotationData(16451, 45, 1), new AnnotationData(12428, 25, 0), new AnnotationData(18576, 347, 0), new AnnotationData(10099, 311, 1), new AnnotationData(10561, 318, 0), new AnnotationData(17486, 184, 2), new AnnotationData(18452, 111, 2), new AnnotationData(17302, 197, 0), new AnnotationData(11999, 11, 2), new AnnotationData(16035, 125, 2), new AnnotationData(5473, 7, 0), new AnnotationData(2245, 33, 1), new AnnotationData(17191, 281, 2), new AnnotationData(7895, 244, 1), new AnnotationData(7730, 20, 0), new AnnotationData(14552, 308, 2), new AnnotationData(4749, 343, 1), new AnnotationData(7267, 78, 1), new AnnotationData(11701, 129, 0), new AnnotationData(5887, 101, 1), new AnnotationData(4906, 63, 0), new AnnotationData(20054, 54, 0), new AnnotationData(18436, 64, 2), new AnnotationData(18117, 192, 1), new AnnotationData(18539, 251, 2), new AnnotationData(4710, 135, 2), new AnnotationData(13974, 330, 2), new AnnotationData(17034, 10, 0), new AnnotationData(4382, 296, 0), new AnnotationData(11551, 271, 2), new AnnotationData(16006, 119, 0), new AnnotationData(15193, 308, 0), new AnnotationData(16057, 82, 1), new AnnotationData(4085, 40, 2), new AnnotationData(20603, 96, 0), new AnnotationData(4603, 216, 2), new AnnotationData(6648, 62, 2), new AnnotationData(13682, 157, 1), new AnnotationData(460, 268, 2), new AnnotationData(10741, 118, 0), new AnnotationData(14373, 130, 1), new AnnotationData(4450, 46, 1), new AnnotationData(7694, 27, 1), new AnnotationData(20185, 79, 0), new AnnotationData(8849, 234, 0), new AnnotationData(13354, 302, 1), new AnnotationData(9838, 141, 0), new AnnotationData(13007, 202, 0), new AnnotationData(5011, 194, 0), new AnnotationData(1612, 282, 0), new AnnotationData(14987, 232, 2), new AnnotationData(8592, 145, 2), new AnnotationData(11226, 89, 0), new AnnotationData(4175, 105, 2), new AnnotationData(20119, 278, 2), new AnnotationData(10674, 96, 1), new AnnotationData(19096, 70, 0), new AnnotationData(10820, 260, 0), new AnnotationData(1490, 33, 2), new AnnotationData(9710, 246, 0), new AnnotationData(4774, 262, 1), new AnnotationData(9509, 184, 2), new AnnotationData(9580, 94, 0), new AnnotationData(10250, 274, 1), new AnnotationData(11795, 72, 2), new AnnotationData(9086, 124, 2), new AnnotationData(3144, 256, 1), new AnnotationData(3078, 3, 0), new AnnotationData(16129, 4, 0), new AnnotationData(13782, 2, 1), new AnnotationData(14056, 267, 1), new AnnotationData(15460, 32, 0), new AnnotationData(16158, 271, 1), new AnnotationData(14797, 202, 2), new AnnotationData(7654, 108, 2), new AnnotationData(17232, 11, 1), new AnnotationData(5936, 69, 2), new AnnotationData(12156, 224, 2), new AnnotationData(9376, 243, 1), new AnnotationData(10375, 155, 1), new AnnotationData(7524, 270, 1), new AnnotationData(19415, 86, 0), new AnnotationData(15004, 0, 1), new AnnotationData(3241, 44, 0), new AnnotationData(5870, 147, 1), new AnnotationData(11908, 84, 1), new AnnotationData(10962, 135, 0), new AnnotationData(16480, 232, 2), new AnnotationData(9087, 256, 1), new AnnotationData(9177, 29, 1), new AnnotationData(1361, 232, 0), new AnnotationData(18433, 128, 0), new AnnotationData(13207, 183, 1), new AnnotationData(6067, 236, 1), new AnnotationData(9325, 33, 1), new AnnotationData(15416, 326, 1), new AnnotationData(7642, 69, 1), new AnnotationData(15250, 67, 0), new AnnotationData(4193, 191, 0), new AnnotationData(6492, 143, 1), new AnnotationData(5780, 325, 1), new AnnotationData(1004, 254, 2), new AnnotationData(9125, 278, 0), new AnnotationData(775, 170, 1), new AnnotationData(394, 174, 2), new AnnotationData(4758, 245, 0), new AnnotationData(1512, 59, 0), new AnnotationData(16855, 237, 0), new AnnotationData(2427, 291, 2), new AnnotationData(8298, 126, 1), new AnnotationData(1359, 112, 2), new AnnotationData(19885, 164, 2), new AnnotationData(15405, 121, 0), new AnnotationData(19041, 269, 2), new AnnotationData(1549, 27, 2), new AnnotationData(14797, 95, 2), new AnnotationData(4266, 315, 2), new AnnotationData(12285, 250, 0), new AnnotationData(7023, 322, 0), new AnnotationData(34, 54, 1), new AnnotationData(16318, 183, 0), new AnnotationData(11181, 112, 0), new AnnotationData(12135, 9, 2), new AnnotationData(3483, 191, 2), new AnnotationData(7828, 233, 2), new AnnotationData(14974, 44, 1), new AnnotationData(6178, 142, 0), new AnnotationData(13803, 217, 1), new AnnotationData(4305, 53, 1), new AnnotationData(19931, 322, 1), new AnnotationData(18458, 125, 2), new AnnotationData(2383, 87, 1), new AnnotationData(11321, 139, 0), new AnnotationData(18220, 141, 1), new AnnotationData(8807, 43, 1), new AnnotationData(9557, 281, 1), new AnnotationData(3605, 38, 2), new AnnotationData(17498, 37, 0), new AnnotationData(10975, 218, 1), new AnnotationData(2965, 10, 2), new AnnotationData(18540, 16, 1), new AnnotationData(6038, 329, 1), new AnnotationData(6993, 90, 0), new AnnotationData(6764, 259, 0), new AnnotationData(6006, 271, 0), new AnnotationData(11150, 21, 2), new AnnotationData(4290, 2, 2), new AnnotationData(14409, 70, 0), new AnnotationData(16235, 115, 0), new AnnotationData(11806, 73, 2), new AnnotationData(12756, 196, 1), new AnnotationData(13812, 298, 0), new AnnotationData(13988, 3, 1), new AnnotationData(3563, 340, 2), new AnnotationData(8846, 91, 0), new AnnotationData(12761, 223, 0), new AnnotationData(18922, 74, 1), new AnnotationData(10392, 239, 1), new AnnotationData(10022, 259, 0), new AnnotationData(12405, 106, 0), new AnnotationData(14903, 156, 1), new AnnotationData(7025, 100, 0), new AnnotationData(6695, 91, 1), new AnnotationData(16475, 160, 2), new AnnotationData(3385, 58, 1), new AnnotationData(14617, 298, 2), new AnnotationData(3306, 277, 2), new AnnotationData(19950, 114, 1), new AnnotationData(19146, 155, 2), new AnnotationData(11723, 270, 1), new AnnotationData(1399, 289, 0), new AnnotationData(13509, 326, 2), new AnnotationData(9680, 130, 1), new AnnotationData(18714, 213, 2), new AnnotationData(15486, 91, 1), new AnnotationData(14865, 302, 2), new AnnotationData(18573, 225, 1), new AnnotationData(20630, 66, 2), new AnnotationData(20088, 265, 2), new AnnotationData(16020, 321, 2), new AnnotationData(20154, 124, 2), new AnnotationData(7117, 42, 1), new AnnotationData(9014, 199, 2), new AnnotationData(6123, 249, 2), new AnnotationData(6344, 323, 1), new AnnotationData(15013, 206, 2), new AnnotationData(1807, 275, 1), new AnnotationData(57, 86, 1), new AnnotationData(17569, 323, 0), new AnnotationData(15800, 255, 1), new AnnotationData(4574, 284, 1), new AnnotationData(12061, 236, 1), new AnnotationData(15026, 342, 0), new AnnotationData(13539, 25, 0), new AnnotationData(6193, 313, 1), new AnnotationData(5976, 170, 1), new AnnotationData(2498, 95, 0), new AnnotationData(9585, 258, 1), new AnnotationData(17557, 23, 0), new AnnotationData(1055, 116, 2), new AnnotationData(9305, 307, 1), new AnnotationData(3352, 185, 0), new AnnotationData(506, 143, 1), new AnnotationData(11455, 226, 1), new AnnotationData(903, 196, 2), new AnnotationData(7310, 84, 0), new AnnotationData(9677, 126, 2), new AnnotationData(12557, 167, 2), new AnnotationData(15338, 27, 1), new AnnotationData(15884, 215, 1), new AnnotationData(7942, 340, 2), new AnnotationData(19590, 251, 2), new AnnotationData(3370, 174, 1), new AnnotationData(14622, 315, 0), new AnnotationData(4790, 265, 1), new AnnotationData(16442, 61, 1), new AnnotationData(10425, 279, 1), new AnnotationData(5193, 219, 1), new AnnotationData(5952, 152, 1), new AnnotationData(2685, 272, 0), new AnnotationData(8373, 33, 2), new AnnotationData(5624, 102, 0), new AnnotationData(17427, 221, 2), new AnnotationData(17151, 331, 2), new AnnotationData(10206, 41, 0), new AnnotationData(17622, 232, 0), new AnnotationData(6605, 131, 1), new AnnotationData(14329, 146, 0), new AnnotationData(11144, 80, 2), new AnnotationData(9455, 103, 0), new AnnotationData(18051, 163, 0), new AnnotationData(5087, 328, 2), new AnnotationData(18506, 116, 1), new AnnotationData(12746, 192, 2), new AnnotationData(13550, 17, 1), new AnnotationData(11022, 39, 1), new AnnotationData(10260, 181, 0), new AnnotationData(18305, 244, 2), new AnnotationData(13407, 348, 0), new AnnotationData(6499, 194, 0), new AnnotationData(11320, 164, 1), new AnnotationData(2114, 135, 1), new AnnotationData(5810, 49, 0), new AnnotationData(18224, 331, 2), new AnnotationData(16850, 172, 1), new AnnotationData(9429, 128, 1), new AnnotationData(8544, 322, 1), new AnnotationData(20207, 54, 2), new AnnotationData(238, 235, 0), new AnnotationData(18490, 242, 2), new AnnotationData(16299, 268, 1), new AnnotationData(3114, 169, 2), new AnnotationData(12041, 150, 2), new AnnotationData(8067, 66, 1), new AnnotationData(16573, 319, 0), new AnnotationData(11436, 81, 0), new AnnotationData(2366, 141, 1), new AnnotationData(10587, 202, 0), new AnnotationData(4877, 125, 2), new AnnotationData(1337, 13, 1), new AnnotationData(10858, 120, 1), new AnnotationData(18017, 194, 1), new AnnotationData(1679, 17, 1), new AnnotationData(10894, 24, 2), new AnnotationData(2270, 178, 1), new AnnotationData(20328, 328, 0), new AnnotationData(12282, 129, 1), new AnnotationData(2674, 168, 2), new AnnotationData(20408, 134, 2), new AnnotationData(9761, 223, 1), new AnnotationData(12424, 212, 2), new AnnotationData(706, 341, 0), new AnnotationData(137, 30, 0), new AnnotationData(11207, 31, 2), new AnnotationData(20090, 289, 1), new AnnotationData(6950, 100, 0), new AnnotationData(5093, 75, 2), new AnnotationData(12545, 236, 2), new AnnotationData(15886, 43, 1), new AnnotationData(18070, 49, 1), new AnnotationData(20155, 11, 1), new AnnotationData(7477, 19, 2), new AnnotationData(610, 69, 1), new AnnotationData(14056, 148, 1), new AnnotationData(476, 217, 2), new AnnotationData(14189, 143, 1), new AnnotationData(3222, 145, 0), new AnnotationData(8499, 325, 1), new AnnotationData(7854, 170, 1), new AnnotationData(15178, 252, 1), new AnnotationData(11936, 318, 0), new AnnotationData(12138, 209, 2), new AnnotationData(10594, 128, 1), new AnnotationData(15703, 223, 1), new AnnotationData(12733, 274, 2), new AnnotationData(20437, 156, 1), new AnnotationData(7673, 317, 1), new AnnotationData(1282, 136, 2), new AnnotationData(20538, 108, 0), new AnnotationData(19384, 218, 2), new AnnotationData(7701, 72, 1), new AnnotationData(8225, 38, 0), new AnnotationData(15373, 170, 1), new AnnotationData(177, 155, 0), new AnnotationData(17321, 261, 0), new AnnotationData(13051, 261, 2), new AnnotationData(16184, 203, 2), new AnnotationData(7109, 200, 0), new AnnotationData(625, 326, 2), new AnnotationData(12610, 126, 1), new AnnotationData(4659, 223, 1), new AnnotationData(1032, 168, 0), new AnnotationData(18393, 145, 2), new AnnotationData(14825, 107, 2), new AnnotationData(4093, 289, 1), new AnnotationData(140, 150, 0), new AnnotationData(6426, 99, 1), new AnnotationData(3685, 186, 0), new AnnotationData(5423, 121, 0), new AnnotationData(1399, 140, 2), new AnnotationData(20619, 190, 2), new AnnotationData(8850, 232, 0), new AnnotationData(6516, 170, 1), new AnnotationData(11227, 133, 1), new AnnotationData(13300, 25, 0), new AnnotationData(14280, 337, 1), new AnnotationData(6748, 142, 1), new AnnotationData(1768, 114, 0), new AnnotationData(8514, 322, 2), new AnnotationData(3284, 212, 1), new AnnotationData(9113, 326, 1), new AnnotationData(4408, 343, 2), new AnnotationData(17098, 187, 1), new AnnotationData(793, 179, 0), new AnnotationData(6599, 296, 0), new AnnotationData(9524, 65, 2), new AnnotationData(12288, 336, 0), new AnnotationData(18500, 48, 0), new AnnotationData(3819, 264, 0), new AnnotationData(3567, 35, 2), new AnnotationData(20119, 121, 1), new AnnotationData(20082, 308, 1), new AnnotationData(2130, 124, 0), new AnnotationData(8278, 271, 0), new AnnotationData(2307, 8, 0), new AnnotationData(8676, 312, 1), new AnnotationData(15894, 312, 2), new AnnotationData(12017, 194, 1), new AnnotationData(1938, 202, 2), new AnnotationData(9054, 340, 0), new AnnotationData(4472, 179, 0), new AnnotationData(15253, 70, 0), new AnnotationData(184, 173, 1), new AnnotationData(11870, 337, 1), new AnnotationData(479, 293, 1), new AnnotationData(5927, 104, 2), new AnnotationData(8316, 237, 1), new AnnotationData(6787, 46, 1), new AnnotationData(14727, 68, 2), new AnnotationData(2547, 134, 1), new AnnotationData(9609, 79, 0), new AnnotationData(8500, 117, 1), new AnnotationData(8768, 4, 2), new AnnotationData(9365, 68, 1), new AnnotationData(2377, 129, 0), new AnnotationData(19153, 147, 2), new AnnotationData(2739, 104, 0), new AnnotationData(11088, 237, 2), new AnnotationData(731, 96, 2), new AnnotationData(14406, 334, 0), new AnnotationData(4525, 109, 1), new AnnotationData(20213, 202, 0), new AnnotationData(16889, 40, 0), new AnnotationData(16698, 275, 2), new AnnotationData(14688, 193, 2), new AnnotationData(5702, 41, 0), new AnnotationData(7150, 192, 2), new AnnotationData(19368, 333, 2), new AnnotationData(18078, 17, 2), new AnnotationData(11240, 67, 2), new AnnotationData(4559, 110, 1), new AnnotationData(16377, 177, 1), new AnnotationData(20203, 122, 1), new AnnotationData(18778, 261, 1), new AnnotationData(1570, 152, 2), new AnnotationData(16818, 57, 0), new AnnotationData(7301, 335, 1), new AnnotationData(9455, 196, 0), new AnnotationData(7679, 166, 0), new AnnotationData(262, 165, 2), new AnnotationData(7004, 0, 2), new AnnotationData(14291, 281, 2), new AnnotationData(7351, 98, 0), new AnnotationData(15261, 324, 2), new AnnotationData(19187, 225, 0), new AnnotationData(8944, 123, 0), new AnnotationData(14867, 214, 1), new AnnotationData(4996, 218, 2), new AnnotationData(15585, 182, 2), new AnnotationData(8042, 23, 0), new AnnotationData(10712, 80, 2), new AnnotationData(9166, 287, 1), new AnnotationData(7388, 114, 1), new AnnotationData(5745, 274, 0), new AnnotationData(2159, 61, 2), new AnnotationData(252, 213, 1), new AnnotationData(3289, 119, 2), new AnnotationData(17838, 30, 1), new AnnotationData(19984, 332, 2), new AnnotationData(12651, 231, 0), new AnnotationData(19455, 172, 1), new AnnotationData(14104, 87, 1), new AnnotationData(13722, 106, 1), new AnnotationData(2758, 131, 1), new AnnotationData(9092, 260, 0), new AnnotationData(15945, 294, 2), new AnnotationData(10977, 60, 1), new AnnotationData(7236, 331, 0), new AnnotationData(4000, 129, 0), new AnnotationData(11, 15, 2), new AnnotationData(13010, 33, 2), new AnnotationData(17772, 98, 1), new AnnotationData(17987, 184, 0), new AnnotationData(18725, 18, 2), new AnnotationData(17933, 239, 2), new AnnotationData(15105, 282, 2), new AnnotationData(2921, 141, 1), new AnnotationData(16003, 344, 2), new AnnotationData(10027, 268, 1), new AnnotationData(17635, 50, 1), new AnnotationData(8332, 348, 0), new AnnotationData(8682, 84, 0), new AnnotationData(5491, 323, 0), new AnnotationData(12156, 39, 1), new AnnotationData(16020, 258, 2), new AnnotationData(12387, 285, 0), new AnnotationData(2672, 172, 2), new AnnotationData(832, 314, 0), new AnnotationData(10665, 296, 2), new AnnotationData(2989, 35, 0), new AnnotationData(15566, 76, 1), new AnnotationData(6284, 319, 2), new AnnotationData(13509, 127, 0), new AnnotationData(10872, 190, 2), new AnnotationData(5336, 98, 1), new AnnotationData(12384, 183, 0), new AnnotationData(9889, 199, 1), new AnnotationData(165, 55, 1), new AnnotationData(3083, 260, 0), new AnnotationData(15205, 72, 0), new AnnotationData(2223, 220, 0), new AnnotationData(16808, 3, 1), new AnnotationData(17064, 7, 1), new AnnotationData(12484, 297, 2), new AnnotationData(13585, 171, 0), new AnnotationData(19371, 296, 1), new AnnotationData(13535, 162, 0), new AnnotationData(20129, 86, 1), new AnnotationData(8253, 337, 1), new AnnotationData(17790, 43, 1), new AnnotationData(6749, 23, 0), new AnnotationData(17260, 187, 2), new AnnotationData(6963, 100, 1), new AnnotationData(8443, 179, 1), new AnnotationData(2420, 221, 2), new AnnotationData(6445, 52, 1), new AnnotationData(19790, 13, 2), new AnnotationData(7262, 17, 1), new AnnotationData(17724, 260, 2), new AnnotationData(15153, 222, 2), new AnnotationData(16029, 268, 0), new AnnotationData(1328, 85, 2), new AnnotationData(18142, 270, 2), new AnnotationData(3654, 338, 0), new AnnotationData(5491, 75, 2), new AnnotationData(4952, 169, 2), new AnnotationData(17864, 186, 1), new AnnotationData(12239, 281, 1), new AnnotationData(4033, 21, 1), new AnnotationData(5345, 35, 1), new AnnotationData(4237, 4, 0), new AnnotationData(2799, 143, 1), new AnnotationData(897, 341, 0), new AnnotationData(17410, 200, 2), new AnnotationData(6657, 203, 0), new AnnotationData(14231, 106, 1), new AnnotationData(11190, 113, 1), new AnnotationData(12474, 280, 2), new AnnotationData(17703, 58, 0), new AnnotationData(19309, 287, 2), new AnnotationData(18632, 52, 2), new AnnotationData(12928, 269, 2), new AnnotationData(12541, 10, 1), new AnnotationData(5523, 114, 1), new AnnotationData(14980, 100, 0), new AnnotationData(10902, 120, 1), new AnnotationData(13145, 36, 1), new AnnotationData(20469, 147, 1), new AnnotationData(2583, 160, 1), new AnnotationData(9702, 198, 1), new AnnotationData(8753, 96, 1), new AnnotationData(2854, 4, 0), new AnnotationData(3881, 185, 1), new AnnotationData(17561, 181, 1), new AnnotationData(16071, 263, 1), new AnnotationData(14216, 31, 1), new AnnotationData(16287, 220, 1), new AnnotationData(1460, 305, 1), new AnnotationData(11832, 135, 2), new AnnotationData(11757, 182, 1), new AnnotationData(15532, 174, 1), new AnnotationData(5245, 235, 1), new AnnotationData(20545, 165, 1), new AnnotationData(12962, 97, 2), new AnnotationData(8406, 162, 0), new AnnotationData(17415, 204, 1), new AnnotationData(19411, 32, 2), new AnnotationData(8409, 152, 2), new AnnotationData(13917, 333, 2), new AnnotationData(3441, 118, 2), new AnnotationData(14431, 217, 0), new AnnotationData(17039, 70, 1), new AnnotationData(11456, 168, 0), new AnnotationData(17733, 291, 2), new AnnotationData(6774, 93, 2), new AnnotationData(13728, 189, 2), new AnnotationData(11746, 152, 0), new AnnotationData(3552, 54, 1), new AnnotationData(17976, 183, 2), new AnnotationData(16536, 277, 2), new AnnotationData(4854, 73, 1), new AnnotationData(8640, 202, 0), new AnnotationData(11940, 330, 1), new AnnotationData(17635, 289, 2), new AnnotationData(17542, 67, 0), new AnnotationData(9819, 27, 1), new AnnotationData(2256, 62, 2), new AnnotationData(5791, 215, 2), new AnnotationData(14661, 29, 1), new AnnotationData(20548, 226, 1), new AnnotationData(13791, 106, 2), new AnnotationData(18771, 250, 1), new AnnotationData(11892, 131, 2), new AnnotationData(16370, 164, 2), new AnnotationData(2820, 334, 2), new AnnotationData(5557, 114, 1), new AnnotationData(10162, 316, 2), new AnnotationData(4821, 26, 1), new AnnotationData(4286, 185, 2), new AnnotationData(6799, 312, 2), new AnnotationData(17571, 319, 2), new AnnotationData(5922, 34, 2), new AnnotationData(15501, 17, 1), new AnnotationData(6924, 320, 0), new AnnotationData(2706, 290, 1), new AnnotationData(4766, 345, 0), new AnnotationData(4641, 316, 1), new AnnotationData(17764, 236, 1), new AnnotationData(7691, 12, 2), new AnnotationData(15270, 255, 1), new AnnotationData(19553, 203, 2), new AnnotationData(13605, 276, 1), new AnnotationData(20040, 206, 0), new AnnotationData(16374, 248, 1), new AnnotationData(16599, 338, 2), new AnnotationData(17547, 13, 2), new AnnotationData(11015, 71, 1), new AnnotationData(1132, 15, 2), new AnnotationData(8657, 328, 1), new AnnotationData(1405, 132, 0), new AnnotationData(12750, 116, 1), new AnnotationData(10263, 59, 1), new AnnotationData(9896, 252, 0), new AnnotationData(20152, 256, 2), new AnnotationData(14356, 30, 1), new AnnotationData(9432, 250, 1), new AnnotationData(15794, 148, 0), new AnnotationData(9463, 40, 2), new AnnotationData(648, 122, 0), new AnnotationData(12017, 27, 0), new AnnotationData(16437, 254, 2), new AnnotationData(2731, 321, 0), new AnnotationData(20421, 233, 1), new AnnotationData(14631, 339, 2), new AnnotationData(8526, 11, 1), new AnnotationData(14868, 218, 2), new AnnotationData(9156, 74, 0), new AnnotationData(12710, 223, 0), new AnnotationData(19298, 113, 0), new AnnotationData(13193, 87, 0), new AnnotationData(14232, 26, 0), new AnnotationData(2634, 52, 1), new AnnotationData(20401, 159, 0), new AnnotationData(16666, 321, 1), new AnnotationData(10593, 261, 1), new AnnotationData(11861, 342, 1), new AnnotationData(17073, 194, 0), new AnnotationData(8159, 150, 0), new AnnotationData(11131, 68, 1), new AnnotationData(7210, 135, 0), new AnnotationData(17912, 308, 2), new AnnotationData(18945, 244, 0), new AnnotationData(10681, 283, 1), new AnnotationData(19913, 264, 2), new AnnotationData(17155, 260, 1), new AnnotationData(19260, 71, 2), new AnnotationData(3142, 137, 2), new AnnotationData(18468, 92, 1), new AnnotationData(10397, 136, 2), new AnnotationData(10234, 218, 1), new AnnotationData(16817, 168, 2), new AnnotationData(17704, 3, 2), new AnnotationData(18710, 121, 2), new AnnotationData(11879, 251, 0), new AnnotationData(15850, 325, 1), new AnnotationData(12972, 99, 1), new AnnotationData(9761, 42, 2), new AnnotationData(16226, 226, 1), new AnnotationData(18423, 108, 1), new AnnotationData(11876, 160, 1), new AnnotationData(13820, 333, 2), new AnnotationData(14249, 297, 1), new AnnotationData(1297, 42, 1), new AnnotationData(1747, 63, 0), new AnnotationData(14431, 18, 2), new AnnotationData(18157, 328, 1), new AnnotationData(11831, 197, 0), new AnnotationData(5009, 168, 1), new AnnotationData(12542, 104, 1), new AnnotationData(13070, 316, 1), new AnnotationData(13173, 37, 1), new AnnotationData(13744, 136, 2), new AnnotationData(14964, 347, 0), new AnnotationData(14231, 25, 0), new AnnotationData(11613, 55, 0), new AnnotationData(5279, 11, 1), new AnnotationData(15427, 332, 1), new AnnotationData(16100, 65, 1), new AnnotationData(15250, 42, 2), new AnnotationData(5283, 197, 0), new AnnotationData(8046, 12, 0), new AnnotationData(484, 72, 1), new AnnotationData(18099, 163, 2), new AnnotationData(15932, 51, 1), new AnnotationData(8315, 1, 2), new AnnotationData(19176, 233, 1), new AnnotationData(3104, 266, 1), new AnnotationData(19768, 244, 0), new AnnotationData(5312, 308, 2), new AnnotationData(3354, 80, 1), new AnnotationData(7899, 278, 0), new AnnotationData(18072, 307, 2), new AnnotationData(18679, 170, 1), new AnnotationData(9683, 11, 1), new AnnotationData(17851, 266, 0), new AnnotationData(12749, 115, 0), new AnnotationData(8662, 102, 1), new AnnotationData(19788, 246, 0), new AnnotationData(16452, 184, 2), new AnnotationData(36, 103, 2), new AnnotationData(9297, 112, 1), new AnnotationData(7466, 63, 1), new AnnotationData(20640, 92, 2), new AnnotationData(14706, 109, 0), new AnnotationData(18678, 185, 0), new AnnotationData(2621, 269, 1), new AnnotationData(11278, 195, 0), new AnnotationData(13695, 85, 1), new AnnotationData(9969, 261, 2), new AnnotationData(16161, 184, 1), new AnnotationData(980, 252, 0), new AnnotationData(16875, 245, 0), new AnnotationData(9517, 125, 2), new AnnotationData(3280, 232, 0), new AnnotationData(8474, 66, 2), new AnnotationData(4239, 217, 2), new AnnotationData(17830, 264, 1), new AnnotationData(13829, 215, 2), new AnnotationData(9003, 36, 1), new AnnotationData(8964, 26, 0), new AnnotationData(18972, 39, 0), new AnnotationData(66, 234, 1), new AnnotationData(5314, 345, 0), new AnnotationData(12207, 84, 0), new AnnotationData(6232, 4, 1), new AnnotationData(2422, 39, 0), new AnnotationData(17112, 15, 1), new AnnotationData(19809, 315, 1), new AnnotationData(7343, 312, 2), new AnnotationData(6224, 134, 2), new AnnotationData(16788, 113, 1), new AnnotationData(9654, 334, 1), new AnnotationData(19611, 260, 1), new AnnotationData(16241, 56, 1), new AnnotationData(8140, 267, 0), new AnnotationData(16417, 142, 0), new AnnotationData(16331, 194, 0), new AnnotationData(20352, 44, 2), new AnnotationData(6477, 116, 1), new AnnotationData(11115, 228, 1), new AnnotationData(9387, 200, 2), new AnnotationData(18207, 141, 2), new AnnotationData(17578, 349, 0), new AnnotationData(11019, 217, 1), new AnnotationData(9321, 317, 1) }; private static final class AnnotationData { public final int offset; public final int length; public int annotationNumber; public Annotation annotation; public Position position; public AnnotationData(int offset, int length, int annotationNumber) { this.offset= offset; this.length= length; this.annotationNumber= annotationNumber; } } private Document fDocument; private AnnotationModel fAnnotationModel; private AnnotationModel fInnerModel1; private AnnotationModel fInnerModel2; @Before public void setUp() throws Exception { fDocument= new Document(RANDOM_CONTENT); fAnnotationModel= new AnnotationModel(); fInnerModel1= new AnnotationModel(); fAnnotationModel.addAnnotationModel("model1", fInnerModel1); fInnerModel2= new AnnotationModel(); fAnnotationModel.addAnnotationModel("model2", fInnerModel2); fAnnotationModel.connect(fDocument); } @After public void tearDown() throws Exception { fAnnotationModel.disconnect(fDocument); fDocument= null; fAnnotationModel= null; fInnerModel1= null; fInnerModel2= null; } private IAnnotationModel getModel(int number) { switch (number) { case 0: return fAnnotationModel; case 1: return fInnerModel1; case 2: return fInnerModel2; default: break; } return null; } private void assertRemove(ArrayList<AnnotationData> added) { AnnotationData first= added.remove(0); IAnnotationModel model= getModel(first.annotationNumber); assertTrue(model.getPosition(first.annotation) == first.position); model.removeAnnotation(first.annotation); assertTrue(model.getPosition(first.annotation) == null); } private void assertAdd(AnnotationData data, ArrayList<AnnotationData> added) { Annotation annotation= new Annotation(false); Position position= new Position(data.offset, data.length); IAnnotationModel model= getModel(data.annotationNumber); model.addAnnotation(annotation, position); assertTrue(model.getPosition(annotation) == position); data.annotation= annotation; data.position= position; added.add(data); } private void assertExist(ArrayList<AnnotationData> added) { for (int i= 0, size= added.size(); i < size; i++) { AnnotationData data= added.get(i); IAnnotationModel model= getModel(data.annotationNumber); assertTrue(model.getPosition(data.annotation) == data.position); } ArrayList<Annotation> annotations= getAllAnnotations(); assertEquals(added.size(), annotations.size()); for (int i= 0, size= annotations.size(); i < size; i++) { Annotation annotation= annotations.get(i); AnnotationData data= getAnnotationData(added, annotation); assertNotNull(data); assertTrue(fAnnotationModel.getPosition(annotation) == data.position); } } private void assertExistNew(ArrayList<AnnotationData> added) { for (int i= 0, size= added.size(); i < size; i++) { AnnotationData data= added.get(i); IAnnotationModel model= getModel(data.annotationNumber); assertTrue(model.getPosition(data.annotation) == data.position); } ArrayList<Annotation> annotations= getAllAnnotationsNew(); assertEquals(added.size(), annotations.size()); for (int i= 0, size= annotations.size(); i < size; i++) { Annotation annotation= annotations.get(i); AnnotationData data= getAnnotationData(added, annotation); assertNotNull(data); assertTrue(fAnnotationModel.getPosition(annotation) == data.position); } } private AnnotationData getAnnotationData(ArrayList<AnnotationData> datas, Annotation annotation) { for (int i= 0, size= datas.size(); i < size; i++) { AnnotationData data= datas.get(i); if (data.annotation == annotation) return data; } return null; } private ArrayList<Annotation> getAllAnnotations() { ArrayList<Annotation> result= new ArrayList<>(); Iterator<Annotation> iterator= fAnnotationModel.getAnnotationIterator(); while (iterator.hasNext()) { result.add(iterator.next()); } return result; } private ArrayList<Annotation> getAllAnnotationsNew() { ArrayList<Annotation> result= new ArrayList<>(); Iterator<Annotation> iterator= fAnnotationModel.getAnnotationIterator(0, fDocument.getLength(), true, true); while (iterator.hasNext()) { result.add(iterator.next()); } return result; } @Test public void testStressTestPlainOld() throws Exception { ArrayList<AnnotationData> added= new ArrayList<>(); int i= 0; while (i < 20) { AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExist(added); i++; } while (i < RANDOM_ANNOTATIONS.length) { assertRemove(added); AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExist(added); i++; } while (added.size() > 0) { assertRemove(added); assertExist(added); } } @Test public void testStressTestPlainNew() throws Exception { ArrayList<AnnotationData> added= new ArrayList<>(); int i= 0; while (i < 20) { AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExistNew(added); i++; } while (i < RANDOM_ANNOTATIONS.length) { assertRemove(added); AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExistNew(added); i++; } while (added.size() > 0) { assertRemove(added); assertExistNew(added); } } @Test public void testStressTestMoveOld() throws Exception { ArrayList<AnnotationData> added= new ArrayList<>(); int i= 0; while (i < 20) { AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExist(added); i++; } Random ran= new Random(4711); while (i < RANDOM_ANNOTATIONS.length) { assertRemove(added); fDocument.replace(ran.nextInt(fDocument.getLength() - 1), 0, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExist(added); i++; } while (added.size() > 0) { assertRemove(added); assertExist(added); } } @Test public void testStressTestMoveNew() throws Exception { ArrayList<AnnotationData> added= new ArrayList<>(); int i= 0; while (i < 20) { AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExistNew(added); i++; } Random ran= new Random(4711); while (i < RANDOM_ANNOTATIONS.length) { assertRemove(added); fDocument.replace(ran.nextInt(fDocument.getLength() - 1), 0, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); AnnotationData data= RANDOM_ANNOTATIONS[i]; assertAdd(data, added); assertExistNew(added); i++; } while (added.size() > 0) { assertRemove(added); assertExist(added); } } }