WordProLWP7џџџџ.7YЦЄ1Word Pro Text File/DFB‰ЄAїР@PPPPP-PPP @Avi ZivЫ m7EЃш7д I@@@ @ ŠSmartMasterH@ASMH @FAvi ZivH@AAZH @GIBM UserH@AIUH@ ‹Alan HartmanH@AAHXP Рp@@ ŒAlan Hartman@EAHџџџџX@@@q РpcPP`@@q РpcPP` Р @ˆIBM User@EIUџџџџX@@@q РpcPP`@@q РpcPP` Р @GAvi Ziv@EAZџџџџX@@@q РpcPP`@@q РpcPP` Р@œUNIVERSAL_SMARTMASTER_EDITOR@ESMџџџџX@@@q РpcPP`@@q РpcPP` Р@›UNIVERSAL_ALL_OTHERS_EDITOR@FOTRџџџџX@@@q РpcPP`@@q РpcPP`”BС@QCB 2PP Рp Й”x q„QdIМ”рСпC“Tяp= М”ТСA!@BЮЬ?Bp= М” Ф3 п@BgfфBp= М”jСaC3 B43Bp= Й”Д СšA&PHPHЙ”їХ–Lяff•P?B7‰C У”іЧ']7‰ђџМ” qТ@Tдp= Й”„ СxAšQdHHЙ”šС„AДQdHHqа Й” СlBїIdHQН”y qМpЛ”9 Сн Р?PQP6PH(С”eР Л”‰С~APHBgf PHB™™(Л”С‰AУPHB™™PHBgf (У”ŒС‚AзAkаУ”‚ qŒAyХ”ТwpEџx Ч” n;С ЏA@P@P@@@ РP@@@P Р@@@PpP@@@PpШ”єq@LџџHЦ”ѓ Р@џ@џ@џРРd.Ф” Т‡p@@@P Л”нСкB97Х”}Ф- ?@EџЧ”є:Цq‰P@P@@@ РP@@@P Р@@@PpP@@@ Р€Ф”‡Ц| @@@P Ш”СєA@EФџџH @FAuthorsШ”9С-A?@EФџџH @FAddressМ”пФ р@PъPPъPХ” s-EџxPЧ”9С nCqP@P@@@ РP@@@P Р@@@ РP@@@ Р€Ф”№СlC|@@@Ф”lq№@@@@P Ш”(!С$A-@EФџџH@ ‹Default TextШ”?С9xE$џџHЧ”q9СCєP@P@@@ РP@@@P Р@@@ РP@@@ РЩ”@С:Cx@ @@P@Щ”PЦxq@@@P@Щ”:С'A@@@ @@P@Щ”qТPp@@@P@Щ”'С%A:@@@@P@А”>H@@ М”a С!Aj@F33?p= К”d СрCБAшJ™™B™™Й”cС 3AlC33?HZ2У”Юљі ЮЬјџZAУ”љСg‹ ЮЬјџўџ AУ”gС $DљH$aУ” $ С%AgAyУ”%С]A $AzУ”]СзA%AHHPHAУ”з СŒA]AyZ(Й”–ФїIB™™эFъ253Bѓ(F53JЭЬ[Й”lСcEffBffЙ” 3С&AcIрtB™™Й”&СДA 3Bсz$Bтz*П”qcP`Rшј@П”c Сxpp(”&Z”(”$О”f РР”d ЧыыыыыыыыH@РdZ”Z” Z” Z” Z”Ž” РpH@P€Z” Э”Э”Ž” РpH@P€Ž” РpH@P€Ž” РpH@P€Ž” РpH@P€Э”Э”Э”Э”Э”Э”Э”Z”Z”Z”(”(”Љ” /”!РР(”"(”#И” (”%(”'Z)БZ*9Z+EZ,2 Z”-СfZ”.СcZ”/СdZ”0СeZ”1С 7Z3 Z4Z”5СѓZ6‰Z”7С?Z8qZ”9СzZ”:СюZ”;СяЭ”Э”Э”Б”??X@P`@@P`@@Pp@P`Р@@H€x``Р@@H€x``PЉ”Ž”C Рq@@P€Ќ”@УџџџК”р СиAd@AшЛ”~ q‰PHPHPHPH(М”“СрCEBЫЬтBp= К”Фqи@AшJ™™B™™Л”У'СAЧB™™B™™B™™B™™R™™B™™B™™B™™Н”М#СyC2 @H€x@H€x@H€x@H€x`М”!СТAa@Bсz$Bp= К”Б СdxAшXиPЈН”2  СМx@Pp@Pp@Pp@Pp`М”3 СjC Fh§Ap= Ь”ZСRAu@@@@QYЬ”zСux@@@QyЬ”RСLAZ@@@@QQЬ”uСZAz@@@@QtЪ”ю Р@Х@Х@ХР Ы”я Р@@@PppPХ”wРDEџJџџB33B33Ч” Џ7q n@P@P@@@ РP@@@P Р@@@ Р€X@@@PpЩ”#С OA@@@@P@Л”к СвAн%Р@p@ Х”-Ц }Eџx$ Х” ?Ф},@EџxPЧ”‰ТєpР@@@PpФ”|С№C‡@@@P Ш”СA!@E„џџHШ”-С(A9@EџџHШ”$!С!A(@EРџџH@ ‹Default TextЩ”xС@CP@ @@P@Щ”%С#A'@@@@P@Щ”С#A#@@ @@P@Х”,С ?@AEџj33 Щ”"q !@@ @@P@Т” 7Р@-@<@БPc@P Рc@P Рc@P К”иСФAр@AшjˆэЛ”Ч СУAШBff4&”Y p`@x@&”y p`@x@Ь”LСFAR@@@@QK&”Q p`@x@&”t p`@x@Х”С,Cw@@@RџџB33B33Щ” OС !A#@@ @@P@Л”в СЭAкТff,Ш”!СA$@@€@€@€PЩ”#СA%@@@@P@Щ” !С"A O@@ @@P@Л”ШСЧAЭBffbff,Ь”FqL@@@@QE&”K p`@x@Л”Э СШAвBffbffТ€џџB€џџB€џџB€џџ&”E p`@x@Й”IФ–’Šš0Kъ253B—™B53EB§џцЙ”’ СIA›Šš0Kъ253B—™B53EC•™ЪЙ”›С’E(ЬЬтFъ253B—™B53EBš™fУ”'Ъі)z@aЙ”(С›F*33?HТzPQУ”)Ъ'ЌGtaЙ”*Щ(œ33?HТЌGГB3ѓ^Й”œЩ*ž33?HЧоzЮѕUЏЙ”žЩœ33?HЧш‘юѕUЏЙ”аž43чЮЬWЬЬFCЬЬu У”Ъ)33CE33rУ”ЪоzŠaУ”Ъш‘ЊaУ”Ъ23=aЙ”Щ33?HЧ23(IНУ”Тt< faЙ”Тs33?HЧ< Њ(IНМ”EТ“p@Dрp= Ё”˜H$›” СDADxQ›”E С@QD”s)СD@@EBodytB2PP@EBody‘@pBVЉF/”‘Fw уOAT@i(A@JH‡`AБAuP@CPageI–AuСxz9РiпAfР”uˆ СIACAV@@ ‹Default PageQA@JˆIџ‹XA‘ Р@CPageРH@@‘Default Page Styleh$@@ ‹Default TextIxAрA~AyAc`iAfAdAe``$ ”–.СЁ Жd@Q‘ Р,@@FStoryЁzЖa›AњAmŽ”t Рq@@P€”Б?ŽС #AмyU@@ ŒDefault FrameQ A@IQџ›XAЦA‘P@DFrameРH@@’Default Frame Styleh$@@ ‹Default TextIДAФAУAМAc`@YТAfAdAePA]” :eСWBуq‘@i" A"@IQ€QPD P@DFrameL ;БxX$@@ ‹Default TextJїqнAy Р@PqрСXRіŽ”T ФЗ‘xpA@P€Z”GС(г”(Сy)в”q(A Z” СŒ”‹oСArA ТїZ2y–@BAŒCCTˆestingD f‰olklore™ and how to validate itAŒCB SSEnd-”ŒС•РRQ–y@PPA‹A‹””JСDU Сœ[2y–@BA•C™Experiments and resultsA•BSSEnd-”• Ф† ŒРR˜Q–y@PPA”A””гЧУ` Тˆ S y–@BD: F† ŠCoverageF† 4Ж of test suites for Projection 2 in first experimentD SSEnd-”† "ФШ•РS‹ I–y@PPEгг-”Ш#Хп† РSЭI–y@PPEУУ”ЃЄЧL rQ•RPS y–@BFпFNFК Œ: CoverageFКFпE ofFN2Д test suites for Projection 1 in second experimentD SSEnd-”К#СэBN РSНI–y@PPEЃЃ-”N#ХКп РSSI–y@PPEЃЃ-”п#ХNШ РSфI–y@PPEЃЃ”> СЎAіA Т6S y–@BD: FZ ‹Length ofFZ!Ѓ test suites in second experimentEŠ FbEbSSEnd-”Z"ФbэРS_I–y@PPE> > ”h2{С_СU@@’Default Graphic/OLEQ" A@IQ XAA_P@DFrameImAБxH@@–Graphic/OLE Frame StyleIlAФyy Р@YjРA]”Š UХ +qT@i" E@ Q J00E+ H@DFrameL” hХ–Бr2 Р@V>  РB-”b#СМBZ РSgI–y@PPE> > ЄЎСD> ТmPъBx^A–@BThe experimentCsG showEed, ‹ in both ˆcases,C Gthat /Бthe coverage of the long tests was better than Šthat of "Єthe short tests, despite the fact Gthat the cost of the long tests in the first experiment wasœ lower. This confirms the ŠacceptedzП testing folklore that long tests are better than short tests, aќnd that combining several requirements and diverging from Ca+­ shortest path can increase the quality of Da FtestC CsFuiteC. SSEndЄЛOСФAКA ТЌRС–@BAМC ŒA. Aharon,AМCАП D. Goodman, M. Levinger, Y. Lichtenstein, Y. Malka, C. Metzger,џ M. Molcho, and G. Shurek. Test program generation for functionaєl verification of PowerPC processors in IBM. In ‚X4ЖProceedings of the 32nd Design Automation Conferenceœ, pages 279-285, June 1995.SSEnd-”М!СХBb РRПQ–y@PPAЛAЛЄФСЭAЛA СЬZС–@BAХCŠA.M. AhiAХCŠП, G.D. Burroughs, A.B. Gore, S.W. LaMar, C.R. Linand, and A.L. Wџieman. Design verification of the HP9000 series 700 PA-RISC workЮstations. ‚X™Hewlett-Packard Journal–, 14(8), August 1992.SSEnd-”Х СЮAМРRШQ–y@PPAФAФ”ЭЕСжAФA СеZС–@BAЮC ‹B. BeizerAЮC*Ў. The Pentium bug, an industry watershed. ‚XŸTesting Techniques Newsletter"Ѓ, On-line Edition, September 1995.SSEnd-”Ю СзAХРRбQ–y@PPAЭAЭ”ж‡СпAЭA СоZС–@BAзC ‹B. BeizerAзCF. ‚XSoftware Testing TechniquesŸ. Von Nostrand Reinhold, 1990.SSEnd-”з ФЮРRкQ–y@PPAжAжЄпФ)жA ТRС–@BF M. BenjaminFš, D. Geist, A. Hartman, ˆG. Mas , R. SmeetsD, ’and Y. Wolfsthal1Е. A study in coverage-driven test generation. In ‚X4ЖProceedings of the 36th Design Automation Conference , June 1999.SSEnd-”!ФJзРSI–y@PPAпAпЄ)7ФќпA ТLKС–@D—@ @ @ РFJ ‹D.L. DillFJ]П, A.J. Drexler, A.J. Hu, and C. Han Yang. Protocol Verification сas a Hardware Design Aid. In ‚X Proceedings ‚XUПof IEEE International Conference on Computer Design: VLSI in Comзputers and Processors—. pages 522-525, 1992.SSEnd-”J#Хє РSOI–y@PPE))Єќ Чм) ТўRС–@BFє L. FournierFє|П, A. Koyfman, and M. Levinger. Developing an architecture validaџtion suite - an application to the PowerPC architecture. In ‚РX4ЖProceedings of the 36th Design Automation Conference , June 1999.SSEnd-”є#Х;J РSљI–y@PPEќќ”мчЧќ Т=RС–@BF;ŠD. GeistF;~П, M. Farkas, A. Landver, Y. Lichtenstein, S. Ur, and Y. Wolfsthaџl. Coverage directed generation using symbolic techniques. In ‚ТX–Proceedings of FMCADˆ. 1996.SSEnd-”;#СрBє РS@I–y@PPEммЄСшDм ТRС–@BAрC R. GrinwaldAрCzП, E. Harel, M. Orgad, S. Ur, and A. Ziv. User defined coverage -ў a tool supported methodology for design verification. In ‚X4ЖProceedings of the 35th Design Automation Conferenceœ, pages 158-163, June 1998.SSEnd-”р"СщB; РRуQ–y@PPEЄшСёD С№ZС–@BAщC A. HosseiniAщCmП, D. Mavroidis, and P. Konas. Code generation and analysis for tяhe functional verification of microporcessors‰. In ‚X4ЖProceedings of the 33rd Design Automation Conferenceœ, pages 305-310, June 1996.SSEnd-”щ СђAрРRьQ–y@PPAшAш”ёШФLшA СљZС–@BAђC ‹B. MarickAђCF. ‚XcПThe Craft of Software Testing, Subsystem Testing Including Objecхt-Based and Object-Oriented testing—. Prentice-Hall, 1995.SSEnd-”ђ СnAщРRѕQ–y@PPAёAё”LˆСvAёA СzZС–@BAnC”K. L. McMillan. ‚X™Symbolic Model CheckingD. AnCKluwer Academic Press, 1993.SSEnd-”n!ФbђРRqQ–y@PPELL”vнСњDL СxZС–@BFbGS. UrFbTП, and Y. Yadin. Microarchitecture coverage directed generation oиf test programs. In ‚X4ЖProceedings of the 36th Design Automation Conference , June 1999.SSEnd-”b!СћAnРSgI–y@PPAvAv”њqvA RAJRС–@BAћC ‹VhdlcoverAћCVП: How thoroughly have you simulated your vhdl code? http://www.vиeda.co.uk/vhdlcov.htmlB.SSEnd-”ћrb РRўQ–y@PPAњAњ ” ;-Х’qd@R :Р,@@ŠStory’W I>mŒ” #С AБyU@@Default FooterXA@BQџ›JаACA P@EFooterСzA@@@“Default Footer Styleh$@a„AрAAyA` @YAfAdAeaXQ $SыыыыŒ”WTСOB :q‘@i A@BPRаA_AOP@EFooterIHA #AZIšyy` @YрСXQŒRиж ”H*С8AByd@QW Р @@FStory8ABYIAIAm‹” q #yU@@Default HeaderXA@BQџ›JPаA #AмP@EHeaderСuA@@@“Default Header Styleh$@a„AрA‰AyA` @YAfAdAeaXQ‚Sыыыы‹”ORqWy‘@i A@BPRPаAWAIP@EHeaderIBA ARJq‰y` @YрСXQ‚SЎбd7 ”B*СHAЅyd@QO Р @@FStoryHAЅYKAKAm”›0С Т&С–@C‚HH‰AbstractTPAlnAlCSEnd”KРPAmTяТ AB@ASSEnd/”d С–BфpР @”mфwqkР@ ‹Default TextP@@@@Y@@’Default Text Style@@@pE СюAя@xt  nDѓAєA@x@@@PP@@@ А”r Р@@@a ”IРPAmTяТ AH@ASSEnd” IGТ p У‚{ ;B,­Short Vs. Long - Size Does Make a DifferenceSSEnd”‚WФw +Р@DTitleP@@@@Y@P@@@pEРAm@CˆјџџO‡є}РqA# Р@@@ ” pdХ q I@Z8Tяі(C ;B–Alan Hartman, ˆShmuel  Ur, EAviC DZivSSEnd”8JС+A;Р @FAuthorsP@@@@Y@P@@@pEРAm@CшњџџJ‡С9A:” qDХ r p@a;Tя= C ;B IBM Haifa Research LaboratoryHcSEnd”;CС8A<Р @FAddress`@@@Y@P@@@pE СюAя@A<@C§џџџ<”<@С;A=Р@EAdressp@@Y@P@@@pE СюAя@A=@Cџџџџ<”=DСР@EAddresp@@Y@P@@@pE СюAя@A8@CПџџџС n-” rXХ s q@a;Tя…C ;B"ЃMATAM - Advanced Technology Center J Haifa, 31905SSEnd” s)Х t r@a;TяТ C ;BGIsraelSSEnd” tRХ3 s@a;TяТ C ;BŠE-mail: C{Ÿ hartman, ur, ziv }@il.ibm.comSSEnd”3 Х> tAY;TяТ C ;ASSEnd”>r3AY;TяТ C ;ASSEnd”&\С"A*Р@Heading 2 No nump@ @Y@P@@@pE СюAя@CDCпљџџТ} С' Р@@@ ”D_Х2U Р @ ˆHeading 2P@ @@ @Y@P@@@pEРAm@CˆјџџI№AB q(Bq Р@@@QЇ$ A!›>ъЌG‰–In this paper we describe an investigation of a part of testing folklore: that long tests are more likely to find bugs than short ones. In the experiments we used formal traversal tools to generate tests that cover all transitions of a projection of an abstract FSM model of two processor units. We compared a suite of short tests, each of which covers a single new transition by a shortest path, to a suite of longer tests that combine several new transitions and do not necessarily use shortest paths. The results of the experiments show that long tests achieve better coverage on other projections of the state machine. Moreover, the cost of test suites consisting of long tests, measured in total length in cycles or generation cost, is lower than the cost of suites built of short testsSEnd”>TС=B  Р@ ŒAbstract textP@ @@ @Y@P@@@pEРAm@CЩњџџJ r}q?A:”!.С"A H [2y–@B IntroductionH cSEnd”2]Х(D Р @ ˆHeading 1P@ @@ @Y@P@@@pEРAm@C˜јџџХq q(BP Р@@@QЇ”Ї/СЃA:Р@ŽLegal NumberingIЅ@ OСP ”Ѕ'СBAЁyd@Тl@FStoryBAЁYІAІAmЄІTРSmСЅ@DŒ@@@Px@PT‚@@@PxE.Œ@@@Px@PT‚@@@PxE.Œ@@@Px@PT‚@@@PxE.Œ@@@Px@PT‚@@@PxE.Œ@@@Px@PT‚@@@P?xE.Œ@@@P?x@PT‚@@@PxE.Œ@@@Px@PT‚@@@PџxE.Œ@@@Pџx@PT‚@@@QџpE.Œ@@@Qџp@P QSSEndЄ"ЏС]A!A Т|RmPъB№(МA–@BjПFunctional verification comprises a large portion of the effort ьin designing processors and complex ASICs A'CE[1]A'CpП. The investment in expert time and computer resources is huge, ђand so is the cost of delivering faulty productsC A1CE[3]A1C"Є. The verification process begins Fwith†П a verification plan (VP), which consists of a set of testing reџquirements. Each requirement is a specific event or scenario thaШt needCs$І to be covered during verification. CT-Џests that cover the testing requirements are Gthen  written or automatically ?Пgenerated. These tests are simulated on the design and checked С‰to veri‰fy thatnП they fulfilled the testing requirement they were written agains№t. This process is current industrial practiceD, Geven ,Ўwhere random program test generators (e.g., A9CE[1]A9CD, AACE[2]AACD, AICF[10]AIC[П) are used to implement large portions of the verification plan,н and coverage tools (e.g., AQCE[9]AQCD, AYCF[14]AYC5Ж) are used to check coverage of testing requirements.SSEndЄ]˜СnA"A Т’RmС–@C‚H HGThe ‚H H Žeasiest way‚H HG to ‚H HFful‚H HFfil‚H HDl‚H H3Ж all the testing requirements is to write a set of ‚H H‰simple‚H H0Г tests, one for each requirement. The tests are ‚H H‰often ‚H H‹written ‚H HFso ‚H Hžthat each test covers its a‚H H6Йssigned requirement in the simplest and shortest way. ‚H HPПAnother method, which requires more planning and thought, is to гwrite the tests ‚H HEso‚H H1Д that each test covers several requirements. The ‚H H Žfirst alter‚H H’native leads to‚H H Œ a large ‚H H test suite of‚H H  simple tests‚H H(Ћ, while the second alternative leads to ‚H H a smaller ‚H Hˆsuite‚H Hš of more complex tests.‚H HD ‚H HDT‚H H’esting folklore‚H Hœ which is widely accepted‚H HVП in the hardware verification and software testing communities, йstates that suites of ‚H H‹complex ‚H Hžlong tests are better than ‚H HGthe ‚H H˜suites consisting of ‚H H‹simpler ‚H H short tests ™H HAbD‚H HF[4]™H HAbD‚H HE, ™H HG™‚H HG[11]™H HG™‚H HD.H cSEndЄnsСoA]H amPъB№(МA–@BœThe intuition behind this EfolGkloreF is FthatC Cs‰imple s Œhort tests™ are composed mostly of+­ identical initialization and completion paDrt“s, and therefore ,Ўmuch of the execution repeats previous testsD.  ŽBy contrast,C ˆtests with multiple requirements  move between Gtheir requirements  Ђwithout necessarily returning to“ an initial stateC,0В and use longer and less traveled paths between ˆthese 1Гrequirements. The result is that long tests have Da better chance Dofˆ reachEing‘ interesting paErtsC Dof Ž the design EwhiDchž have not been tested beforeE. AŠ furtherC ˜intuitive explanation йПis that the simplest test created for a specific requirement usuџally creates the same scenario that has been considered by the dџesigner. Long tests, on the other hand, tend to reach the requirлements in a more complex ˆmannerC  ‹which may)Ћ not have been considered by the designer , and thus Fmay Ghave Da “better chance of Šexposingˆ a bug.SSEndW”b?Ф™YРi–y(@@@PA]A]P@”ParaRef beizer-book^C}@@W”™?ФbРi–y(@@@PA]A]P@™ParaRef marick-bookš‹@@ЄoeФRnA ТšRmPъBыЧA–@BTПWhile the intuition behind this folklore is clear, to the best oжf our knowledge, it Ehas‰ never been formally  validated.  A possible  reason for thDis• is the difficulty Dof‰ comparEing%Ї the quality of different test suitesD. &ЈThe two natural candidates for measure™s of test suite quality/Б are the number of bugs found by the test suiteC,G and Fthe —amount of confidence —provided by the suite6И in the correctness of the design. Unfortunately, the number of bugs is impossible to measure, \Пand it is even more difficult to find a quantitative objective mЩeasure of A OconfidenСceП . One possible measure for the quality of a test suite is џhow well it covers testing requirements against which it was notџ designed. The intuition behind this measure is that covering moТre A OunintendСedA O requireџments means that the test suite probes the design deeper and betџter. This measure is especially valuable when the unintended reqшuirements are derived from bug models FE[7]FB.SSEndЄR&Ф|oA Q;RЙRmС–@BœIn this paper we describe Šseveral  ŒexperimentCsDП we performed to compare test suites based on short and long tesЦts, GusingG the "I OunintendЮed requirementsA K  measure. The ’methodology usedF in Feach?П experiment is to divide the testing requirements into two setsСD, E+G and EЂœ, generate two test suitesD, EѕC Fand E ‘, each of whichˆ coverCsG the Cr equirement EsetC EїD, Fthen/Б compare the coverage of the two suites on the  requirementF setC EЗD. CI’n our experimentCs#Ѕ, we used an abstract FSM model of Da mПunit of a processor. Guided by architectural considerations, we яcreated several sets of testing requirements ‘using differentQП projections of the FSM on small sets of state variables. Our teгsting requirementG setsG wereC Fall ‰reachabDle’ transitions on ˜each of the different ‰project ions of the abstract FSM modelC. SSEndЄ|ГСqDR ТАRmPъB–™uA–@BEWe  ‹performedWП the experiment on two units of two microprocessors and used twoй traversal tools, CFSM FNE[8]FN‰ and ‚XˆGotchaC F‘E[5]F‘3Е. In both experiments the short tests consisted of Ca.А shortest path from an initial state via some —representative of an [Пuncovered transition to a final state. In the first experiment tнhe long tests consisted of Ca’ shortest path fDroПm an initial state via several uncovered transitions to a final џstate, while in the second experiment the long tests did not useУ Ca>П shortest path from the uncovered transition to a final state.SSEnd”_JСмAhyU@ @GEquationQ" E@ ˆQџ›J00AhAWP@DFrameIeAБxH@@“Equation Frame Styleh$@@ ‹Default TextIcAdAнAyA`@YaAfAdAedЬL+@@DOЕUg”+RХŠ ЂqT@i" A@I€QXEЂŠ H@DFrameL*_ФœdР@URaФЬL+@R)”*|ХЃ,q–@R+Р @ @ŒGraphic,ЏUЁ” H@D.tex„SА!дš№4ЁKЭ8KЭTimes New Roman?A ԘLЭ;PP<`@F.texf& СIHŽ”U СhA xpA@P€”ЂRХ+ѕqT@i" A@I€QXEѕ+H@DFrameLЁ_ФždР@URaФЬL+@R)”Ё|ХіЃq–@RЂР @ @ŒGraphicЃ,Uє*H@D.tex„S xвš№4ЁаXЭh`ЭTimes New Roman?A ФcЭ PP `@F.texf& СIH”ѕRХЂ qT@i" A@I€QXE ЂH@DFrameLє_ФdР@URaФЬL+@R)”є|ХЁіq–@RѕР @ @ŒGraphicіЃUŸЁH@D.tex„SаЊдš№4Ё8fЭ˜OЭTimes New Roman?A ФxlЭPP`@F.tex33 СОIH” RХѕїqT@i" A@I€QXEїѕH@DFrameLŸ_ФdР@URaФЬL+@R)”Ÿ|ХјЁq–@R Р @ @ŒGraphicЁіUієH@D.tex„S еš№4ЁpoЭˆjЭTimes New Roman?A Ф`vЭPP`@F.texf& СыIHW”'5С1Рi–y(@@@PA"A"P@ ParaRef mbtg#CЧ@@W”1;С9A'Рi–y(@@@PA"A"P@ParaRef pentium-Cѓ@@W”98СAA1Рi–y(@@@PA"A"P@ ParaRef mbtg5C@@W”A6СIA9Рi–y(@@@PA"A"P @ ‹ParaRef hp=C9@@W”I6СQAAРi–y(@@@PA"A"P @ ‹ParaRef tgECS@@W”Q9СYAIРi–y(@@@PA"A"P@ ŽParaRef cometMCg@@W”Y=СbAQРi–y(@@@PA"A"P@’ParaRef vhdlcoverUCu@@W”8ХN™ Рi–y(@@@PAoAoP @ ‘ParaRef avs“@@”їRХ ЗqT@i" A@I€QXEЗ H@DFrameLі_Ф(dР@URaФЬL+@R')”і|ХИјq–@RїР @ @ŒGraphicјЁUЖŸH@D.tex„S`Aжš№4ЁXyЭ@sЭTimes New Roman?A ФxЭ PP `@F.texf& СIHZ”HZ”O(”iZ”J(g& )”& JХј q–@R Р @ @ŒGraphic  RјР@C.lchX@G.lchџџџ СPIАH)”јLХ! & q–@RїР @ @ŒGraphicЪ U! & H@C.lchX@G.lchџџџ СPIАH)”! LХ‹ јq–@R Р @ @ŒGraphic‹ ЪU” јH@C.lchX@G.lchџџџ СPIАH)”” LХЗ ‹ q–@RŠ Р @ @ŒGraphicЗ ‹ U*! H@C.lchX@G.lchџџџ СPIАH)”ЖwrИq–@RЗР @ @ŒGraphicИј ТіH@D.tex„S€зš№4Ёp‚Э`aЭTimes New Roman?A Ф№ˆЭ PP `@F.texf& СIHZ”IСё@”hФ`ёР @Šex2 costb@”`ХTh Р @‰ex2 lenZ@”TХP` Р @‰ex2 covN@”PСrBT Р@ˆmurphyJ@”rХхP Р @‰rulebasen@”хФОrР @Šexp2 covп@”ОХЮх Р @Šex1 cov1К@”ЮХŒ О Р @‰ex1 lenШ@”Œ ХhЮ Р @‰ex1 cov† @”hХAŒ Р @‰cdg-expb@”AХh Р@Fcfsm;@”ХњA Р@ˆgotcha@”њСџB Р@Eavsє@”џСіBњ Р @ Švhdlcoverћ@”іСэAџР @ Œmarick-bookђ@”эСфAіР@Ctgщ@”фСлAэР@Fcometр@”лСвAфР @ Œbeizer-bookз@”вСЩAлР @ˆpentiumЮ@”ЩСРAвР@ChpХ@”РС™AЩР@EmbtgМ@”™СAРР@experiment sec•@”q™Р@background secŒЭYmZN ” aС>Р@Figure headingP@@@@Y@P@@@pEРAm@CˆјџџO‡q Рq-A Р@@@RЬ”+hС*A8Р @GFootnoteP@ @@ @Y@P@@@pE СюAя@Am@q№A nA,AѓA-A"x@@@PP@@@Q.”*\С&A+Р@Heading 1 No nump@ @Y@P@@@pE СюAя@C2CпљџџТ} С% Р@@@ Ž”V СuAuxpA@P€Z”)С'Z”LZPЬЭZŽ”W СжAжxpA@P€Ž”X СAЦxpA@P€Э\БЭ[uЭ^жЭ_ЦЭ`ЯЭaбЭbдZ”KZQb(Ru(SуЉMђЄ(e–(fфИ”cР(hЖ(”jЭ]мЭ Э # ”V)ХOqd@Тl@ŠStoryOWWWm” UС‘BїqT@i" E@ Q J00Eї :H@DFrameL& hСIBБr2 Р@Vг3 РBљŒ”ILСCСu@i A@A XRаAOACP@EFooterIMA #ALIšyy` @YСXQŒ‹”CKqIyu@i A@A XRPаAIA #P@EHeaderIGA AFI„y‰y` @YСXQ‚ ”Ё'СЅA–yd@Тl@FStoryЅA–YЂAЂAm ” 'Т& С–@Т @ŠStory& BW% % m”š Ф™ЖCВ=”?СдСX@ @ ŠFnCellStyleQ`H@@@ˆPP0@D :hP@EFnCell%Снyй”мЄСБA_yU@@Default Drop CapQ A@IQџ›XA AжP @FDropCapI}AБxH@@•Default Drop Cap Styleh$@@ ‹Default TextI&AрAнAyA С!AfAdAeaX@DЌzb%p@”Ц‚qЯyX@@ ‹Default CellQAA@@@ˆRЏ@0@AЯAБP@CCellРH@@—Default Table Cell Styleh$@ @ ‰Table TextI 3AрAЭAМA С 7Ay”ЗPТї СT@i" A@I€QXEуїH@DFrameLЖ_Ф*dР@URaФЬL+@R)Ѕ”3СŽx@ ŒCrossRefDiv@™000131a4c659004431a4c659ЄМСhA‹HZmPъB–™uA–@B›The verification process ‘begins with the‰ specif Œication of&Ј a set of events or scenarios that we  Ђwish to verify. These events areП known as the testing requirements. After testing requirements aџre specified, tests that cover these requirements are generatedСC.C EThe’ results of the Gtest  executions Eand+­ the behavior of the design during the testCs’ are checked to  verify that#Ѕ the required events or scenarios oCciПcurred. A question that is often debated in the software testingы and design verification communities, is ˆhow to’ generate tests Gwhich!Ђ cover the testing requirements. SSEndЄr|С‹AqA ТкRmPъBЫЬ:A–@B:МThe rest of the paper is organized as follows. In section AwCC2AwC, we describe the folklore  Œconcerningœ test length and a method Dby&Ј which it can be verified. In Section ACC3ACAП, we describe the experiments and discuss their results. SectionУ A‡CC4A‡C– concludes the paper.SSEnd”ї С’yŒ@Ѕ”˜3С—x@ ŒCrossRefDiv@™000131a4c659004431a4c659ЄŽФ”HZmPъBZFA–@BHПThis section contains a description of our experiments and theirЪ resultsD. чПIn the first experiment, we compared suites of short tests to suџites of long tests that cover several requirements in each test.џ In the second experiment, we compared suites of short tests toщ suites of long tests that do not take Ca%І shortest path to cover requirements.SSEndЄUйС”D+ ТRmPъB№(МA–@BDIn“ our experiments Šwe used Пformal traversal tools @to deal with these issues. A formal tџest generator generates abstract tests which are paths through aџ finite state machine model of the unit under test. These abstraџct tests were not executed against the simulation engine, but weџre assumed to execute exactly as designed on the abstract model.џ The sets of test requirements were formulated as sets of transiџtions in the FSM model, and thus the measurement of coverage wasџ a straightforward task in this abstract context. We used two foџrmal traversal tools that were developed at the IBM Haifa Researнch laboratory, namely CFSM F(E[8]F(‰ and ‚XˆGotchaC F0E[5]F0WП, in the experiments. We used the tools for the automatic generaйtion of tests and simplše Perl scripts for analyžzing the suites to determine?” the coverage of the A OunintendСedA O testingЯ requirements.SSEnd”œ С›y•@Ѕ”‹ 4ТŠ p@ ŒCrossRefDiv@™000131a4c659004431a4c659”У‚Чњг СŠ[ y–@BD: FШ ŽTotal lengthFШ2Д of long and short test suites in first experimentDїSSEndЄ`^Чг‹QGRJRmPъB–™uA–@BFŽ ŠFigure 1ПŽ Ў shows the coverage of the two suites generated for Projџection 2 on all four projections. The figure shows that the suitџe with the long tests covers the three other projections much beџtter than the suite with short tests. The same results were obseџrved for the test suites for the other three projections. Exceptџ for one case where the short suite for projection 4 covered proјjection 1 slightly better than the long suite, in all Gother.А cases the long suite achieved better coverageЁ of the unintended requirementsB.SSEnd”ˆ  Т‡ s† Ѕ”Э4ТЬp@ ŒCrossRefDiv@™000131a4c659004431a4c659ЄњЧBУ СДZmС–@ПOne of the disadvantages of long tests is that they are hardџer to generate and take more time to execute. While this is trueџ when considering a single long test against a single short testџ, the total generation time and execution time of the whole suitШe needCs1Г to be considered when test suites are compared. AЎCŠFigure 2AЎCП compares the total length of the short and long test suites in џcycles. The figure shows that total length of the long suites isУ Gappro ximately half— the total length of Fthe  corresponding short suites. Th is shows that” test suites that Euse9Л long tests not only have better quality, they also take Fless” time to execute. )ЋThis probably follows from the savings inC Gtest Ÿinitialization and completion  instructionsC )Ћin the suite with fewer, but longer testsB.SSEnd”їUХ  qT@i" C@ @Q J00E  H@DFrameLјhС’BБr2 Р@VУ3 РBљ”ЬС5РcЪ РPЅ”ф4Туp@ ŒCrossRefDiv@™000131a4c659004431a4c659ЄL СсDЃ Т{RmPъEJИ–@BFВŠFigure 4FВЁ plots the total length of the FlongG BFS ‰suites Fand  ‹the long  random test‚X@ Рˆ suite`Пs for projection 1 as a function of the extension parameter. Theф total length of the short test ‚X@ РGsuite5Й is the value when the extension parameter equals 1. ‚X@ Р&ЊUnlike the first experiment, when the ‚X@ Р‰suite‚X@ Р5Й based on long tests was much smaller than the short ‚X@ Р‰suite‚X@ Р , here the ‚X@ Р suite length ‰grows‚X@ РWП with the extension parameter for the random tests, and thereforйe, the price of better L ‰unintenCdŽed requirementsF ‚X@ Р coverage is longer test ‚X@ РŠsuites‚X@ РD. ŠFor the Glong ˆBFS ‚X@ РGsuiteнП, the cost drops a little bit for low values of the extension paџrameter, and afterwards begins to grow slowly. The reason for thџe cost difference between the experiments is the following. In tсhe first experiment the long ‚X@ РGtests‚П consists of several uncovered requirements, and therefore, the џtotal number of tests is much smaller than the short tests, whicЦh ‚X@ РПsaves5 on the initialization costs. In the second experiment,џ on the other hand, the long path taken, especially in the randoџm tests, has a small contribution on the coverage of the target џprojection. Therefore, the number of tests does not change, and џthe length of the suite increases because of the longer paths.SSEndЄrЋЧЃ6 ТsRmPъB%\A–@BFnŠFigure 3Fn1Е shows the coverage of all the projections by the‚X@ РП suiteЈs generated for projection 1, with extension parameterџ of 30. The figure shows that there is no significant differenceџ between the coverage of the short tests and the BFS tests, and џthat the long random tests are a little bit better than both. Thџe improvement in the long random tests over short tests is signiџficantly lower than the improvement of long tests with several rєequirements. We observed the same type of results DinE ‚X@ РˆsuitesMП generated for the other projections and with different extensioЮn parameters.SSEnd”P ТOsN” UХїŠ qT@i" E@ Q J00EŠ їH@DFrameL! hС›BБr2 Р@VЃ“РBљЅ”S4ТRp@ ŒCrossRefDiv@™000131a4c659004431a4c659Ѕ”Н4ТМp@ ŒCrossRefDiv@™000131a4c659004431a4c659Ѕ”_4Т^p@ ŒCrossRefDiv@™000131a4c659004431a4c659”6 Т5sbЅ”g4Тfp@ ŒCrossRefDiv@™000131a4c659004431a4c659 ”m*С}Aeyd@Qh Т,@FStory}AeYnAnAmЅ”П3СОx@ ŒCrossRefDiv@™000131a4c659004431a4c659”К-СЛAЙAQћ Т&С–@B ‹ReferencesSSEnd”Ќ ТЋqМ@”\СA Р@ ŒRefernce item`@@ @Y@P@@@pE СюAя@CfC§јџџСA Р@@@QЅ”Ш3СЧx@ ŒCrossRefDiv@™000131a4c659004431a4c659”Ь СЫyХ@Ѕ”б3Саx@ ŒCrossRefDiv@™000131a4c659004431a4c659”е СдyЮ@Ѕ”к3Сйx@ ŒCrossRefDiv@™000131a4c659004431a4c659”о Снyз@Ѕ”4Тp@ ŒCrossRefDiv@™000131a4c659004431a4c659” ТsЅ”O4ТNp@ ŒCrossRefDiv@™000131a4c659004431a4c659”L ТKsJЅ”љ4Тјp@ ŒCrossRefDiv@™000131a4c659004431a4c659”ў Т§sєЅ”@4Т?p@ ŒCrossRefDiv@™000131a4c659004431a4c659”= Т<s;Ѕ”у3Стx@ ŒCrossRefDiv@™000131a4c659004431a4c659” Тqр@Ѕ”ь3Сыx@ ŒCrossRefDiv@™000131a4c659004431a4c659”№ Сяyщ@Ѕ”ѕ3Сєx@ ŒCrossRefDiv@™000131a4c659004431a4c659”љ Сјyђ@Ѕ”q3Сpx@ ŒCrossRefDiv@™000131a4c659004431a4c659”z Сyyn@Ѕ”g4Тfp@ ŒCrossRefDiv@™000131a4c659004431a4c659”x Сw{bЅ”ў3С§x@ ŒCrossRefDiv@™000131a4c659004431a4c659” Тqћ@ ”)ХB ;qd@Тl@ŠStoryB ;Wm ”’)Х ;Oqd@Тl@ŠStory ;OW““m ”8'СAHyd@Тl@FStoryAHY9A9Am ”t)СЊBiqd@Тl@FStoryЊBiWuum”k+СmAoР@ ŒNote Initials`P@Y@Рxql4”wMХf‚ Р @ ‰Table Textp@@Y@P@@@pE СюAя@Am@CЯџџџJ|r}%” +ŒФ‚ Р@‘Outline (Indented)P@@@@Y@(@&ІTraditional Indented Outline Numbering@@@pE СюAя@CfCлљџџС ?С" Р@@@QЃ”"KС A&Р @ ˆHeading 4P@@@@Y@P@@@pE СюAя@CUCљћџџ$С#”U_ХDf Р @ ˆHeading 3P@@@@Y@P@@@pE СюAя@Am@C˜јџџС ЏB}q$A% Р@@@ ”(QХ2 Р@First Line Indentp@@Y@P@@@pE СюAя@Am@CпџџџТ-%”Ѓ,qЇР@ŽDefault OutlineIЁ@ OСP”:4СЇAР@”Engineering NumberingI8@ OРX”| ТsqY@”’ ТŠs™ ”^'СsAUyd@Тl@FStorysAUY_A_Am ”})Х‹uqd@Тl@ŠStory‹uW~~m ”š'Фƒyd@Тl@‰Storyƒ_››m ”‹)Х“}qd@Тl@ŠStory“}WŒŒm”š ТЩs”Й ТљsЗЄq`СrB|@ZmPъB–™uA–@B#ЅThe results of our experiments showDedš that test suites based ‰on longG testCs+­ cover unintended requirements much better )Ћthan suites of short tests, in most casesкП. Moreover, when we combined several requirement in one test, thџe total length of the suite with long tests was much shorter thaџn the suite with short tests. Overall, the results of the experiмment confirm the folklore Gintui tions which™ we tried to validate. CTdПhey also indicate that combining many requirements in a single tхest is better than using long paths.SSEnd”А ТЈs‘W”N:Х‘ Рi–y(@@@PE||H@ ’ParaRef cfsmO›@@W”‘<СwBN Рi–y(@@@PE||H@”ParaRef gotcha’Љ@@ ”e*СmAMyd@Q_ Т,@FStorymAMYfAfAm ”Ѓ)ХЁ*q–@Т @ŠStoryєЁWЎЎm ”,)Х*З q–@Т @ŠStoryЁ*W44m ”Џ)Х$†qd@Тl@ŠStory*†WААm ”і)ХєЁq–@Т @ŠStoryŸєWm ”Ё)ХŸєq–@Т @ŠStoryіŸWЎЎm ”ј)ХіŸq–@Т @ŠStoryЖіWm ”#'С-A}yd@Тl@FStory-A}Y$A$Am ”Ч)Хѓяqd@Тl@ŠStoryѓяWШШm ”-'С5A#yd@Тl@FStory5A#Y.A.Am ”ѓ)ХЧqd@Тl@ŠStoryЧWєєm ”5'С=A-yd@Тl@FStory=A-Y6A6Am ”)Х9ѓqd@Тl@ŠStory9ѓWm ”='СEA5yd@Тl@FStoryEA5Y>A>Am ”9)ХSqd@Тl@ŠStorySW::m ”E'СMA=yd@Тl@FStoryMA=YFAFAm ”S)Хg9qd@Тl@ŠStoryg9WTTm ”M'СUAEyd@Тl@FStoryUAEYNANAm ”g)ХuSqd@Тl@ŠStoryuSWhhm ”U'С^AMyd@Тl@FStory^AMYVAVAm ”u)Х}gqd@Тl@ŠStory}gWvvm ”)ХVšqd@Тl@ŠStoryVšWm ”“)Х›‹qd@Тl@ŠStory›‹W””m ”И)ХЖіq–@Т @ŠStory$ЖWППm$Н_+GCm–rThe primary basis for the comparison of test suites is in their ability to expose bugs in the design, and secondar%ily on the costs of generating and exјecuting the test suite. There is an obvious tradeoff between these two parameters, but in the world of hardware verification, the accent is on exposing bugs because of the high cost of delivering faulty products. The ideal test suite costs nothing to generate, can be executed in zero time using no computing or human resources, and most importantly, outputs a comprehensive list of all bugs in the unit under test. In the absence of a magic wand to produce the ideal test suite, mortal test engineers compile a list of requirements which they hope will include as many bug locations as possible. The actual location of the bugs is never known - not even after the test has completed. If two test suites cover precisely the same requirements, then there is no way to distinguish between them on the main comparison criterion. If, on the other hand, we are given a comprehensive list of all bugs, then the best way to compare two test suites is to measure the precise number of bugs that they expose. For this reason we propose an  unintended requirements model for test suite comparison. We take two test suites designed to cover the same set of requirements, and then compare their coverage of a different (but reasonable) set of requirements. The two sets of requirements may have some intersection - since we assume that the original test requirements are also trying to approximately cover to the set of all real bug locations - however the results will be more decisive if the two sets of requirements are disjointŒ. Should the coverage of the unintended requirements be similar - we may then turn to secondary criteria for the comparison of test suites. SEnd ” )ХЪBqd@Тl@ŠStoryј& W  m ”‹ )Х” ! q–@Т @ŠStory” ! W“ “ m ”Ъ)Х6  qd@Тl@ŠStory! јWЫЫm ”З )Х,” q–@Т @ŠStory6 ” WП П m$ЙЙКmъ%\–The results of our/ experiments indicate that the longer the tests are,Q the better they are, in the sense of covering  unintended requirements. It logically follows0 that the best verification methodology is to generate a single very long test that covers all the testing requirements in the verification plan. In practice, this methodology is unrealistic for two main reasons: it is much harder to generate long tests and it is much harder to analyze their execution. AŽn interesting open question is to find out what is the correct length to use and how this length should change as the verification progresses.SEnd”.СA2Рa/@ РPj”(С AР @ ˆClickHereP@@@@ Y@Рxm”жjСW@@ ŒDefault TableQHР@@ˆR‚B0PAмAдP @ ‰SuperTableРH@@’Default Table StyleСиAкy)РAз”ЯYСЦAбyX@@Default ColumnQ@H@@@ˆQ€H0@AбAЦP@CCellРX$@@ ‹Default TextСШy”б^СЯAдyX@@’Default Left ColumnQ@H@@@ˆQ€H0@AдAЯP@CCellРX$@@ ‹Default TextСвy”д_СбAyX@@“Default Right ColumnQ@H@@@ˆQ€H0@AжAбP@CCellРX$@@ ‹Default TextСЧy1”bР@“Default Headingsa…i aђh…”ЄqЈAЃ ”O)Х’Vqd@Тl@ŠStory’VWPPm”WFРPAmУVB#ЄThis page intentionally left blank.TPAlnAlCSEnd ”M*СeAGyd@QI Т,@FStoryeAGYNANAm ”G*СMA6yd@QC Т,@FStoryMA6YHAHAmЄЂaРSmСЁ@DŒ@@a§џp@PT‚@@a§џpE.Œ@@aћџp@PT‚@@aћџpE.Œ@@aїџp@PT‚@@aїџpE.Œ@@aяџp@PT‚@@aяџpE.Œ@@aпџp@PT‚@@aпџpE.Œ@@aПџp@PT‚@@aПџpE)Œ@@aџp@PT‚@@aџpE)Œ@@aџўp@PT‚@@aџўpE)‚@@aџ§pE(Œ@@aџ§p@P T‚@@aџ§pB)SSEnd ”B)Х qd@Тl@ŠStory WCCm”% РPAmУ ASSEnd”™ Щ˜šnW”В:rn Рi–y(@@@PEL L H@•ParaRef ex2 lenГt@@ ”}*С#Amyd@Qм Т,@FStory#AmY~A~AmЅŽ-CrossRefBMNamebackground secЄh СяAHZmС–@B”The simplest approCa?Пch is to generate tests for each of the requirements separatelyС”. Moreover, the teZПsts that are generated with this approach are the shortest and sмimplest tests possible. Th5Зere are several advantages to this approach. First, i Œt is straiDgh‰tforwarCd Œ to createC  ‹and track‰ tests ‰when a ‰simple —test is made for each™ requirement. Second, iCtE is  easier to ˆupdate-Џ the test suite due to changes and additions Dto3Е the requirements. Third, it is much easier to trac^Пk bugs that are found with simple tests. Finally, shorter tests рare less likely to mask a bug JПwhich is hidden by the presence of multiple bugs in a single tesЬt scenarioB.SSEnd”к Тбq‡@W”wCСB‘ Рi–y(@@@PArArP@—ParaRef background secsCБ@@W”BС‡AwРi–y(@@@PArArP@—ParaRef experiment sec{CХ@@W”‡CФvРi–y(@@@PArArP@˜ParaRef conclusions secƒCг@@”’ tїŒ@Ѕ—-–˜CrossRefBMNameexperiment secЄbФA Т$RmС–@B!ЃEach experiment was performed on Da CПdifferent unit of a super scalar microprocessor. The first step Хof Feach!Ѓ experiment was to create an abstžract FSM model of the unit. CT—hese abstract models ’had already been'Љ created for previous work reported in AэCE[8]AэCG and AќCF[13]AќCD. CF ‹ormal tra versal tools FwereC Gthen Gused Eto !Ѓexplore the state space of these ˆmodelsD. CS$Іeveral sets of testing requirements Fwere— created for each of Fthe ”state machines. ThEeseˆ sets FwerepП created based on architectural and micro architectural considerђations. In both experiments, these requirements FwereqП all possible transitions on projections of the state machine ovѓer a small set of state variables. The next step EwasЊП to generate tests suites that cover all the transitions in eachџ projection. Note that while the coverage requirement is specifiьed on the projected state machine, the tra=Пversal tools generate the test on the original abstract FSM. EThe“ traversal tools ™generate tests to coverG the ‰entire  ‹intended [Пset of requirements. Finally, we compared the coverage results oнf the different test suites8‘ on the different A OunintendСedA O requireЬments setsB.SSEndЄ+]ЧUН ТјRmPъBx^A–@BETheC I Ounintendбed requirementsI K ’method is still  ‹difficultpП to implement for two reasons. First, because it is hard to geneђrate good tests that cover specific requirementsC.C CE%Їven when random test generators like FЎE[1]FЎ$І are used to generate tests, it may ˆstill PПbe difficult to direct them to a specific requirement. The seconвd difficulty is Ein ˆmeasurEing&Ј which requirements each test covers, ”and in particular,œ the requirements that it ’was not designed Œ to cover. SSEnd” Тs0W”(:Х0Ў Рi–y(@@@PEUUH@ ’ParaRef cfsm$љ@@W”0<СэB( Рi–y(@@@PEUUH@”ParaRef gotcha,@@”› qœA•@ЅŠ &‰ ‹ CrossRefBMName ex1 covЄ‹Х`Y@ZўС–@D‚X Long tests.рП For each test ten uncovered transitions are selected in an arbiџtrary order and a test that traverses the state machine from an џinitial state via the selected transitions in the selection ordeсr to a final state is generated.SSEnd”J Т“ sŽ W”Ž =СЎBA Рi–y(@@@PE``H@•ParaRef ex1 cov C@@”‡  Щ! ˆ † ЅЬ&ЫЭCrossRefBMName ex1 len”B0Х”њ@[Dy–@B’Second experimentSSEnd”5С2BЬ Рa6@ РPЅу'тфCrossRefBMName exp2 cov”{ ТЗsВЄ6VХr@ZўС–@B/БLong BFS tests. The generation of BFS tests is ‰similarQП to random tests, except that after the uncovered transition is гreached, the test  generator 4Жcontinues to look for other uncovered transitions foFr ‚X•Extension Parameter;М transitions in BFS search, before moving to a final state.SSEnd”s ТssnW”n=ХВˆ Рi–y(@@@PErrH@•ParaRef ex2 covoi@@”O Щ" PNЅR&QSCrossRefBMName ex2 covЅМ&ЛНCrossRefBMName ex1 covЅ^&]_CrossRefBMName ex2 len”5 Щ\6bЅf'egCrossRefBMName ex2 cost”nРPAmСm@ASSEndЅО#НПCrossRefBMNamembtg”Ћ tЌМ@” AСA"Р@ENormal`@@@Y@P@@@pE СюAя@Am@"С!”f [ХUw Р @ ŠNumber Listp@@Y@P@@@pE СюAя@Am@CпљџџТ  С ! Р@@@QЃ”С:A.Рa@ РPЅЧ!ЦШCrossRefBMNamehp”Ы qЬAХ@Ѕа&ЯбCrossRefBMName pentium”д qеAЮ@Ѕй*икCrossRefBMName beizer-book”н qоAз@Ѕ%CrossRefBMNamegotcha” vЅN%MOCrossRefBMNamemurphy”K vLJЅј"їљCrossRefBMNameavs”§ vўєЅ?#>@CrossRefBMNamecfsm”< v=;Ѕт$суCrossRefBMNamecomet” tр@Ѕы!ъьCrossRefBMNametg”я q№Aщ@Ѕє*ѓѕCrossRefBMName marick-book”ј qљAђ@Ѕp'oqCrossRefBMName rulebase”y qzAn@Ѕf&egCrossRefBMName cdg-exp”w qxCbЅ§(ќўCrossRefBMName vhdlcover” tћ@”&РPAmУB ParaRef cfsmSSEnd”“(РPAmУ’BParaRef gotchaSSEnd ”'С/A8yd@Тl@FStory/A8YAAmЄ9RРSmС8@DŒ@@aќp@PT‚@@a§џpF.0‚@@aќpE.Œ@@aќp@PT‚@@aќpE.Œ@@aќp@PT‚@@aќpE.Œ@@aќp@PT‚@@aќpE.Œ@@aќp@PT‚@@a?ќpE.Œ@@a?ќp@PT‚@@aќpE.Œ@@aќp@PT‚@@aџќpE.Œ@@aџќp@PT‚@@aџ§pE.Œ@@aџ§p@P QSSEnd ”i)Хtaqd@Тl@ŠStorytaWjjm”u"РPAmУtB‰Figure 4SSEnd”o'СkAїР @ ˆNote Date`P@Y@Рxql4” ‹С +AР@•Outline (Not Indented)P@@@@Y@"@  Left Justified Outline Numbering@@@pE СюAя@A +@CлљџџТ  С O Р@@@QЃ”XСўB( Р @GBullet 2p@@Y@P@@@pE СюAя@Am@CпљџџТ  С" Р@@@Q2”s Чr|Y@”Š Щ‰’™ ”s'С{A^yd@Тl@FStory{A^YtAtAm”_-РPAmС^@B”ParaRef beizer-bookSSEnd”~РPAmУ}BD[4]SSEnd ”ƒ'Фš{yd@Тl@‰Storyš{Y„A„Am”›-РPAmУšB”ParaRef marick-bookSSEnd”ŒРPAmУ‹BE[11]SSEnd”Щ vš”љ ЩЂЙї”Ј ЩЇА‘ ”›)ХЉ“qd@Тl@ŠStoryЉ“Wœœm ”Љ)ХБ›qd@Тl@ŠStoryБ›WЊЊm”fРPAmСe@ASSEnd”ЎРPAmУЃASSEnd”4РPAmУ,ASSEnd ”$)Х,Џqd@Тl@ŠStory,ИW%%m ”†)ХЏwqd@Тl@ŠStoryЏwW‡‡m”А&РPAmУЏB ParaRef mbtgSSEnd”РPAmУіASSEnd”ЎРPAmУЁASSEnd”РPAmУјASSEnd”$&РPAmС#@B ParaRef mbtgSSEnd ”я)ХЧ,qd@Тl@ŠStoryЧ,W№№m”ШРPAmУЧBD[1]SSEnd”.)РPAmС-@BParaRef pentiumSSEnd”єРPAmУѓBD[3]SSEnd”6&РPAmС5@B ParaRef mbtgSSEnd”РPAmУBD[1]SSEnd”>$РPAmС=@B ‹ParaRef hpSSEnd”:РPAmУ9BD[2]SSEnd”F$РPAmСE@B ‹ParaRef tgSSEnd”TРPAmУSBE[10]SSEnd”N'РPAmСM@B ŽParaRef cometSSEnd”hРPAmУgBD[9]SSEnd”V+РPAmСU@B’ParaRef vhdlcoverSSEnd”vРPAmУuBE[14]SSEnd”%РPAmУB ŒParaRef avsSSEnd””РPAmУ“BD[7]SSEnd”ПРPAmУИASSEnd”ўYСїB Р @GBullet 1p@@Y@P@@@pE СюAя@Am@CпљџџТw Тx Р@@@Q5 ”6'СGA3yd@Тl@FStoryGA3Y7A7Am”7 РSmС6@CТHHBŸSSEndЄGаФНяA Т№RmPъBзiA–@BFThus  generating test suites consisCtEing– of longer tests is —generally accepted asЁ superior to generating suites  Œcomprisingš short and simple tests FvE[4]FvD, F…F[11]F… Ђ. While the reasons behind this  ‹piece of %Їfolklore are intuitive and clear, it Ehas‰ never (to the best of our knowledDge’) been formally ›tested. In this paper we  ‹report on"Є two experiments to validate this ‘accepted wisdomˆ. The EaimF of Feach Ž experiment Ewasš to compare test suites  consisting of‰ short ‰simple ”tests with suites Gusingˆ long Šcomplex Gtests.SSEnd” )РPAmУ BParaRef ex1 covSSEnd”“ РPAmУ‹ ASSEnd ”6 )Х‰ Ъqd@Тl@ŠStory‰ З W7 7 m”Ы)РSmУЪB‰Figure @PQSSEnd”П РPAmУЗ ASSEndЄхСЙAЎHZmPъB%\A–@BEOur ‹ results ‰suggest2Д several interesting questions which we intend to  investigate  in future ŠresearchIП. First, we want to check if the order in which requirements areЫ covered Fwith2Дin a test affects the quality of the test. In our ˆfirst @Пexperiment the order of the requirements in a test was selected ТDat„П random. It is interesting to check how the results change if a џspecific order, such as choosing the closest or farthest requireЦment*Ќ, is used. Another interesting question isC: what are the  ‹combined 6Иeffects of the two methods for generating long tests, Gusingœ several requirements and Galso not using the shortest path.SSEnd”2С.A5Рa3@ РP ”/'С3Ayd@Тl@FStory3AY0A0AmZ”aС…a Ui`…Ј ЄcЇ”P&РPAmУOB ParaRef cfsmSSEnd”NРPAmСM@ASSEnd”HРPAmСG@ASSEnd”C*РPAmУBB‘ParaRef rulebaseSSEnd”˜ Щ—™ˆ  ”Г)СюBoqd@Тl@FStoryюBoWДДm”~РPAmС}@ASSEndЅ” qŽ@@CrossRefIsMark@CTrueЄяФGhHZmPъBЎгA–@BžA second approach calls for Fthe (Њgeneration of longer tests, either by co‹Пmbining several requirements together and generating tests that џcover more than one requirements, or by using longer and more coЭmplex tests— for each requirementˆ. The —intuition behind thisŸ is that long tests tend to p+­robe the design better, and thus they have Da better chance  of exposingŸ bugs. Short tests, that use Caˆ shortEest‰ path f!Ѓrom an initial state via the testŸ requirement to a final stateqП, often repeat the same (or similar) initialization and completiѓon sequences. Long tests, on the other hand, use ’less predictable'Љ paths when moving between requirementsŠ, either  from initial‘ states, or to ˜final states, and thusˆ have Da better chance Dofˆ reachEingЋП more interesting places during the testing. Another reason for џusing long tests is that they create complex scenarios that wereэ not anticipated by the designer, and thus Fare cПless likely to repeat scenarios which have already been informalхly tested during the design processB.SSEnd”б Чак‡@ ”Б)ХХЉqd@Тl@ŠStoryХЉWВВm ”{'СƒAsyd@Тl@FStoryƒAsY|A|Am ”Х)ХгБqd@Тl@ŠStoryгБWЦЦmW”v@Ф…‡Рi–y(@@@PEGGH@™ParaRef beizer-bookwл@@ ”г)ХлХqd@Тl@ŠStoryлХWддmЅ”– q—@@CrossRefIsMark@CTrue”<Х6@[Dy–@BˆFirst  ‹experimentTPSpcF‰SEnd”$ Тqќ@W”э:СќB0 Рi–y(@@@PEH@ ParaRef cfsmюC@@W”ќ<ФѓэРi–y(@@@PEH@ParaRef cdg-exp§C@@”ј Т8sЎW”Ў:Х(… Рi–y(@@@PE++H@ ’ParaRef mbtgЏё@@” Щ( ”љ)Хёqd@Тl@ŠStoryёWњњm ”,)Хя$qd@Тl@ŠStoryя$W--m ”)Хљqd@Тl@ŠStoryљWmЅ”‰  sŠ @CrossRefIsMark@CTrueЄ”їЧkB ТhRmPъBПѕA–@BEПIn the second experiment we tried to check the effect of using aЧ longDer“ path instead of Ca‚П shortest path from the uncovered transition to a final state. Tџhe experiment was conducted on an abstract FSM model of the decoФdeCrїП unit of a super scalar microprocessor. As in the first experimeџnt, the testing requirements were all the possible transitions iџn four projections on the state machine over different sets of sћtate variables. We generated the test suites using the ‚XˆGotcha’ traversal tool F5 E[5]F5 ž, which is based on the MurТHHCfš explicit model checker Fˆ E[6]Fˆ CП. For each projection we generated the following three test suitФes.SSEndW”5 ;Фˆ ЎРi–y(@@@PE””H@”ParaRef gotcha6 S@@ЄYХ‹Щ@ZўС–@D‚X ŽShort tests.cП For each test one uncovered transition is selected and a test tхhat traverses the state machine in Ca`П shortest path from an initial state via the selected transitionс to a final state is generated. SSEnd”“  vJŽ ЄЩуФY7A ТBRmPъBщQRA–@B—ПWe generated test suites that cover all the requirements (possibџle transitions) in one projection and checked how the suites covйer the requirements in Fthe AПother projections. The tool we used for generating tests is CFSMУ FE[8]FQП, which is an FSM traversal tool that is based on the SMV symbolгic model checker FAF[12]FAIП. For each projection we generated two tests suites in the folloЪwing way:SSEndW”:ХAѓ Рi–y(@@@PEЩЩH@ ’ParaRef cfsm-@@W”A>ХŽ  Рi–y(@@@PEЩЩH@–ParaRef rulebaseB;@@ ”C)ХS;qd@Тl@ŠStoryS;WDDm”!  v‡  Ѕ”Ы sЬ@CrossRefIsMark@CTrueЅ”т sу@CrossRefIsMark@CTrue”З v{ВЄХ6k@ZўС–@BšПLong random tests. In each test, after the uncovered transition џis reached, the test continues to move randomly for a number of оtransitions, given by the ‚X•Extension Parameter%Ї, and then moves to a final state in Ca shortest path.SSEnd”s vsnW”ˆ <Хn5 Рi–y(@@@PE””H@”ParaRef murphy‰ a@@ ”o)ХГ‰ qd@Тl@ŠStoryГ‰ Wppm”"  ЩсO Ѕ”Q sR@CrossRefIsMark@CTrueЅ”Л sМ@CrossRefIsMark@CTrueЅ”] s^@CrossRefIsMark@CTrue”\ Щ[5ZЅ”e sf@CrossRefIsMark@CTrueЅ”Н qО@@CrossRefIsMark@CTrueЅ”Ц qЧ@@CrossRefIsMark@CTrueЅ”Я qа@@CrossRefIsMark@CTrueЅ”и qй@@CrossRefIsMark@CTrueЅ” s@CrossRefIsMark@CTrueЅ”M sN@CrossRefIsMark@CTrueЅ”ї sј@CrossRefIsMark@CTrueЅ”> s?@CrossRefIsMark@CTrueЅ”с qт@@CrossRefIsMark@CTrueЅ”ъ qы@@CrossRefIsMark@CTrueЅ”ѓ qє@@CrossRefIsMark@CTrueЅ”o qp@@CrossRefIsMark@CTrueЅ”e sf@CrossRefIsMark@CTrueЅ”ќ q§@@CrossRefIsMark@CTrue”(РSmС@BC[ @PRB]SSEnd ”a)ХiSqd@Тl@ŠStoryiSWbbm”j"РPAmУiB‰Figure 3SSEnd”їEСoAўР @ ŠBody Singlep@@Y@P@@@pE СюAя@Am@Cџџџџ<”r ЧfsQ@”‰ СcDŠb@”t0РPAmСs@B—ParaRef background secSSEnd”„1РPAmСƒ@B˜ParaRef conclusions secSSEnd”Ђ Щїљ ”Ї ЩSЈN”œРPAmУ›BD[8]SSEnd”ЊРPAmУЉBD[5]SSEnd”%&РPAmУ$B ParaRef cfsmSSEnd ”w'Ф†§yd@Тl@‰Story†§_xxm”‡-РPAmУ†B”ParaRef marick-bookSSEnd”№)РPAmУяBParaRef cdg-expSSEnd ”3'С6A/yd@Тl@FStory6A/Y4A4Am”№ Тшs…W”…AХЎv Рi–y(@@@PEGGH@™ParaRef marick-book†щ@@ ”‰ )Хo6 qd@Тl@ŠStoryo6 WŠ Š m”7 (РPAmУ6 BParaRef gotchaSSEnd”0"РS+С/@DŒ X@PQSSEndЂ” С{U…U QaT…c Ј;b”— Щ•˜5  ”ю)С§BГqd@Тl@FStory§BГQяAяAm”Д)РPAmУГBParaRef ex2 lenSSEnd”а ЧФб@”ВРPAmУБBB2SSEnd”|0РPAmС{@B—ParaRef experiment secSSEnd”ЦРPAmУХBB3SSEnd ”л)Хщгqd@Тl@ŠStoryщгWммm”дРPAmУгBB4SSEndЄ6С3D Т,RmPъB%\A–@B„ПThe first experiment was designed to check the effects of combinџing several requirements in a single test on the quality of the ЦtestC CsFuite”. The experiment wDas  conducted GusingbП an abstract FSM model of the arithmetic units in the pipeline oфf a super scalar PowerPC processor,Ў (more details on the model can be found in FѓF[13]FѓC)D. CTEhe  four sets of ˜testing requirements wCeDreG the “sets of reachable#Ѕ transitions of four projections ofF theMП FSM over different sets of state variables. The four projectionЯs and the setCsrП of state variables for each projection were chosen based on arcѕhitectural and micro architectural considerations.HcSEnd” Ч$э@ ”)Хqd@Тl@ŠStoryWmW”ѓ<ФќРi–y(@@@PE66H@•ParaRef cdg-expя%@@ ”§'Фwюyd@Тl@‰StorywюYўAўAm ”)Х%qd@Тl@ŠStory%Wm”8 vјЎ ”ё)Хљщqd@Тl@ŠStoryљщWђђm” Щ\0”њРPAmУљBD[8]SSEnd”-(РPAmУ,BParaRef gotchaSSEnd”РPAmУBD[5]SSEnd”kѕХ”@ZўС–@BЏПShort tests. In each test an uncovered transition is selected anџd a test that traverses the state machine from an initial state ёvia the uncovered transition to final state in Ca shortest path is generated.SSEnd”h Т`sˆ  ”S)ХaCqd@Тl@ŠStoryaCWTTm”7гФЩ6HZўС–@D‚X ŽProjection 4…П describes the interdependencies between instructions in the pipџe. The total number of possible transitions in this projection iЦs 84.TPIdt@EPBlt@@@@Q5SSEnd”B Т:sA ”-)Х;%qd@Тl@ŠStory;%W..m ”;)ХC-qd@Тl@ŠStoryC-W<<m”D"РPAmУCB‰Figure 1SSEnd”p)РPAmУoBParaRef ex2 covSSEnd”с Щр" п”[ Щ \Z”bРPAmУaBD[6]SSEnd”f ЧerI@”c t‰b@”ї ЩЄЂѕ”S vЇN”x-РPAmУwB”ParaRef beizer-bookSSEnd”4 РSmС3@CТHHBvSSEnd”ш Щч№… ”щ)Хёлqd@Тl@ŠStoryёлWъъm”Š (РPAmУ‰ BParaRef murphySSEndЂ” СACD…Q sUP…; cB:”я&РPAmСю@B ParaRef cfsmSSEnd”Ф ЧУаw@”мРPAmУлBD[4]SSEndЄ3С5B6@ZўС–@D‚X ŽProjection 1СП describes the utilization of the pipe is. It has a state variaџble for each pipe stage that is set if the stage is occupied. Thџe total number of possible transitions in this projection is 270Т.TPIdt@EPBlt@@@@Q5SSEnd”, Т§sѓ” Чiќ@”РPAmУBD[8]SSEnd ”%)Х-qd@Тl@ŠStory-W&&m”ў)РPAmС§@BParaRef cdg-expSSEnd”РPAmУBE[13]SSEnd”ђРPAmУёBD[1]SSEnd”\ v(”` Щ_hˆ ”TРPAmУSBD[5]SSEnd”6ЦС7A5HZўС–@D‚X ŽProjection 3yП describes the order of the instructions in the pipe. The total њnumber of possible transitions in this projection is 194.TPIdt@EPBlt@@@@Q5SSEnd”: Щ9B”.РPAmУ-BD[8]SSEnd”<РPAmУ;BE[12]SSEnd”р ЩФсп”  v[Š ”e ЧMfQ@”Є Щ.їЂ”ч Щ„шv”ъРPAmУщBE[11]SSEndЂ” qC2…s цQr…B ;bu”• Щ”—Ž ”У СxDФ@Є5С6A3HZўС–@D‚X ŽProjection 2вП describes the dispatching algorithm to the arithmetic units. Itџ has variables corresponding to the types of instructions that aџre dispatched. The total number of possible transitions in this гprojection is 245.SSEnd”§ v,ѓ”i tэ@”&РPAmУ%BE[13]SSEnd”_ Щ: `5 ”9 Щ :A”Ф ЩУрК”M ЧLeI@”. vЄ+”„ vчv…ц Пsх…b Bk_”” Щ“•A”x tУw@”:  v_5 ”  v9”У vФК”L Ч8MA@…П ЯцО…k bph”“ Щ’””8 Ч7L9@…Я  ПЮ…p krБ”’ Щ‘“ѓ”7 Ч8A@…  iЯŒ …r pw ”‘ Ч’ќ@” Ч79@…i B h…w r| #” Ч‘э@” Чђ1@…B iA…| w€м” ЩŽ0”ђ Чё'@… ћB…€ |ƒж”Ž Щ(”ё С*Dђ1@…ћ њ…ƒ €…” ЩŒŽЎ”* tё'@… їћџ…… ƒ‡д”Œ Щ‹……ї юі…‡ …‰б”‹ ЩŠŒv…ю хїэ…‰ ‡‹Я”Š Ч‰‹‡@…х мюф…‹ ‰‘Ц”‰ ЧˆŠ@…м гхл…‘ ‹š”ˆ Ч‡‰w@…г Ъмв…š ‘С™”‡ Щ†ˆ‘…Ъ СгЩ”† Щ…‡N…С šЪР”… Щ„†”„ Щƒ…™”ƒ Ч‚„b@”‚ ЧƒY@” Ч€‚Q@”€ ЧI@” Ч~€A@”~ Ч}9@”} Ч|~1@”| t}'@ ”/С9y‘РPР”8uRу B‘A–@q:С9 ”9СAA/A‘A8 РPP Р РN”: sR@A!;”; С8@”@sНЃD‘A–@qBСA ”AСEA9A‘A@ РPP Р РN”B sН@A‹;”C С@@”Dr`H B‘A–@qFСE ”EСOAAA‘AD РPP Р РN”Fs`@B‹HBHA”%”G СD@ ”OСЁAEA‘A“ РPP Р Р”ˆ q‰CШ”‰ СˆAŠCШ”Š С‰{їZ”Сб”“rЃHB‘A–@q”СON””sЃ@BЃH B6HBBHA””• С“@ ”ЁФOA‘Aљ РPP Р Р ”Њ)СЌBtqd@Тl@FStoryЌBtQЋAЋAm”Ћ% СAmAЊBParaRef ex1 lenSSEnd ”Ќ'ФфЊyd@Тl@‰StoryфЊY­A­Am”­ СAmAЌB‰Figure 2SSEndW”Ў=Х5 Ž Рi–y(@@@PEњњH@ParaRef ex1 lenЊAЌ@@@”Г qДAЎ@”Д СГyЎ@”Ж ТšqЎ@”сBСѕDL  Сј[2y–@BAэC ŒConclusionCsAэBSSEnd-”э!ХZК РR№Q–y@PPAсAсЅ”ю qя@@CrossRefIsMark@CTrueЅя.ю№CrossRefBMNameconclusions secЅ”№3Сяx@ ŒCrossRefDiv@™000131a4c659004431a4c659@”ёТhР@conclusions secэ…”ђТiqёЄѕСіAсHZmPъBx^A–@BCT”his paper describeCs“ two experiments FthatHП confirm that long tests are better than short ones. In the firsЪt experiFmentBП, long tests combined several requirements in a single tests, anФd Ein 'Љthe second one, long tests did not use Ca‘ shortest path FfromŸ the requirement they coveredЁ to the final state of the testqП. In both experiments we checked the coverage of testing requireђments against which no specific test was written.SSEnd”іФ> ѕHZmPъBТ A–@ASSEnd”ї qјAэ@”ј Сїyэ@”љqКPB‘A–@qњСЁN”њqК@@B> HAсP B6$”ћ Сљ@ ”qЁA‘B? РPP Р Р”уJТ : С‘@i" A@ICP `zЗH@DFrameLфБТ Сy Р@PrEСXR ”ф&qЌyd@RуТ(@DStoryqЌ_ююm”ю СAmDфSSEnd”?qњ@ˆ@B‘A–@r@zN”@qњ@@AњPB> HAсP B6”A У?Ё”—H$ЄDРiEa H@H@@P@@P@@РPPpPPРР@P P wюžш7JDQGAOALQPQHATANAYAZAVAUAWAXA\A[A^A_A`AaAbAIAJAKAQARASAM СdAeAfAcAgAhAiAjP@РcpcPaH РdP@QUUH РcpcP@QHРdP@QUUH РcpcP@QH РdP@PРcpcPaH РcpcСH РdP@QUUH РcpcP@QH РcpcСH РdP@PP РcpcСUUH РcpcP@QH РdP@QH РcpcСH РpcPa РcpcСH РcpcС У€€€€xcСH РcpcPa{H РdP@QH РpcP`РcpcP`РcpcP`P РcP`@@˜Times New RomanHWСH @ ”Arial Black H@ŽArial H@ –MS Sans Serif H @ ’WingdingsH@SymbolH@Helv h @@ ЧHGHGx@PGH@@p@ Р@@ С]AAQrys@@›George P. Burdell832882267FA— ЄРiaA@H@@P@@P@@РPPpPPР'@%Єc:\lotus\smasters\wordpro\default.mwph@P P P>@@ŽAbarbanel-VinovH@EAharonH @GLevingerH@ ‹LichtensteinH @FMetzgerH@EMolchoH@EShurekH@BAhiH@BG.DH @ ˆBurroughsH@BA.BH@BS.WH@DLaMarH@BC.RH@ELinandH@BA.LH@EWiemanH@EHP9000H @FPA-RISCH@EBeizerH@BVonH @GNostrandH @GReinholdH@DGeistH @FHartmanH @GFournierH @FKoyfmanH@EFarkasH @FLandverH @ ˆWolfsthalH@DFMCADH @GGrinwaldH@DHarelH@DOrgadH @GHosseiniH @ ˆMavroidisH@DKonasH@EMarickH@ ŒPrentice-HallH @ ˆVhdlcoverH@CvhdlH$@"Ёhttp://www.veda.co.uk/vhdlcov.htmlH@ziv}@vnet.ibm.comH@DYadinH @GRuleBaseH@BrefH@BD.LH@BA.JH @FDrexlerH@AHuH@BHanH @GMcMillanH@EKluwerH@AUrH @FPentiumH@BMasH@ESmeetsH @FhartmanH@AurH@BzivH @ Š@il.ibm.comH@CMurfXAPO\\prservЦ1\prt5bСAœ@ДBW@@Dъ od@@BX@PULetter?ХPRIV@?Рe'''I'z| @џBџџPHџ3Р@@d@PAˆH@@ENe07:@\\prserv1\prt5b @ˆwinspoolP@E1-9999XPDUVerU@P@Original Version @Avi ZivЫ m7EЃш7W`@@ASMH@AAZH@AIUH@AAHoюžш7JQA A Q QAA AAAAAAAAAAAAAAAAAAAA С!A"A#A A$A%A&A'С(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;QAAQ>A?AAAB@@‘Avi Ziv929893067A˜ ўџЅgРъDYЦЄ1:Р.СP@@EH@sHJAIA H‰  JGџQvМ1XA<UџН]й1!@EџЇcў1@ Eџ­eў1B@FџЊр2"@UџЪ&/2!‰ ?/џЩ0/2OFџ{R02UџE72#Eџ{И23FџЫ m7ТdAOIŸ I I. Iы IвIє I I II I I% I§ I I I7 Iv Id Iˆ Iš IR I[ IЕ IЌ I= IО IЧ Iа Iй Iт IB I! I0 I9 IлIK IЩIT I)I] Ij Iw I„ I‘ I IЉ IЕ IС ItIЭ Iк Iч Iѓ P I I I% I1 IIX IЛ HLQLIЈ JSAdIЇIјIИ[IД]Iг[IЅbIbIбbI–`IС[IbIЎbIЛbIЦbIпI%VIрaI&bI?bI‹`IbIcbIXbIcInbIybI„bIbIšbIѕbIz/IпbIъbIм[PcIЪ[I cIбˆIўI’/IпМI0IvIЩIIkI{Iн I'IЁIїI;IЊIрIХIЕI“JHADIOI/IjdIЂP‹IЁIZ9I‰9I#9IОЫIмIпIR I”I# I IЯeIIЗIјIАŸI ITIw I>ŸII…Iў I#eIЉIЩ IQ If IчIzIdIсIФIIЁНIЇŠIIО8I{4I@ŠIЁЫIо IбфIєЖI‰IdIЙI—0IIF IO IcI*cII"IћIЗI№IžIфI} IхIŠIў-Iи,IаIэ.IЬ-I%0IW/IGIqˆI)ЛI4‹IˆяIœIY‰I,IНIЄ I9I!IєIcяIЏфIу ItI_IŸIІI,IФƒI}IIWЗIњКIєрIЋЖIhIэ‰IIБIѕўџЅРнDЫ m7'Hh Р@XXAApZA@HŠџЌ m7 `PAAAAAAH@ @P@AApС x РЦџЌ m7™Oџ‹уm7мРrџII|aI aI+I—IђžIrЫI…фIVЫIšуIЦюI\ГIiФI˜ФIb1IPIЫP2IK2I“2I,8I=I•I2єIdI IЮIвЁIЬIУcIхIжI ЁI§ЫI“.I№I Ip-IАIь IЂTI)IFіI^IBIyIзПIЙPIЦIдіI]IƒIQЖIїIhїII7 IВїIУI IќїIЄIАЬIFјIмdIјIзјI љICљIyљIт4Iˆ8Iц:IбIСIиXIIљaIЕјI1‘IŸСIYI‘‘IѕСIXYIё‘IHТI˜YIQ’I™ТIжYIБ’IыТIZI“I?УIUZIž?I”‹IXОIЛHI[юI?DIIIIxŒIБiI)ОIєсIŸЇIkіIсбIхIъЇIВОI,тI4ЈI.IЅIЮЬIEЄIБfIi`IЏљIЈIЪIIКвIЈIGkID`IхљI.БIћpI‚kI I0œI}ƒI0IˆIФоIoЖIBƒI)`I/њIБIНIьоIsЗI(„I`I њIœЗIc„IхIЂ IпI­ЗIt„Iђ_IдљIлЗIЏ„IЪ IY!I<пIьЗIР„Iа_IžљIИIћ„I!IЊ'IрI"ЙID†IД_IhљIд'Iё(I,рI_ЙI‘†I›_I2љIˆЙIЬ†I)Iщ)ITрI™ЙIн†Iy_IќјIЫЙI‡Iи+I},IЬрI[КIТ‡IX_IЦјI‹КI§‡IIIє‹IсОIn%IC%IДпIЋИIЈ…I<_IјI-$IеИIф…I™"ўџЅ$Р№E‹уm7x!vџ‹уm7Mџ(On7FџхSo7VŽџrYo7R)џrYo7NI=Oџџ}o7A &_џo7&Ц џе™p73@KШK_џе™p7Щ:I7Jџе™p7г8џе™p7 A@ Fџе™p7† Шџе™p7У3‰vџmЭp7Ш^џmЭp7ЪOџmЭp7”Р`@p9J =Aˆћ&џ=r7nh_џ=r7) vџb(r75 Oџb(r7ˆ Oџb(r7kШџb(r7%pxXOџ/r7ВOџ/r75Eџжu7эP NŽџњiv7BMо.H Oџњiv7НџХњiv7ЎMџbсw7яŽџаmz7ЩКџ#ш{7*JlQ EQ ™QH…IdпI/ИI …I_I5јIˆ&INЙI†I]&IЙI2†IмпIцИIі…P_IыїIšZIq“I˜УIhШI5cIRЁIЗMIцQIѓŽI!ЁIЯЫI€юI5I@ˆIЪКI’IrIЃ,IH0Iі0IД1Iп2I?3Ip3IХЈI>цI$ГP№IkєI\ђIPьII*IЏ+IЄрIКIu‡Iр^IЁїI?йI+лIˆIœКIіImлInЃI9ЬI$иIвqI€ IкImБIDIЃ`IfcI™dIфлIŸЃIч[IЋ Iг IЭIтВI9tIЙдI?БI qIР^IWїIВIl›I™ЧI.йIHqI xI9\I‡tITIїIѕлIіВIKtI ^I їIЮ›IШI}xIсдI"IЮI8оIВЕIJ‚I^IУіIžіIыѕI$I‰ѓIњэIмIyГI–xI_^I5іIБI\IќнIOIвxIƒI›IѓIЪЧIс\I­Iџ›IJШIЁ*I|рIмЙI)‡I?^I!єIЪ*IJКIБ‡I КId‡IТ"I$IšИI–…IŒпImИIZ…I ^IwяIсзIшЧIUфI|іI‡нI$фI3яIыIы~IVмIКГIљIpЕIŸIоI„ЕI‚P^IРфIжIюIˆоI`оIрЕI†‚Iр]I­ЫIрIœоI"ЖIд‚IР]IЁI+ЕIЫнIЩэIvнIбЃIЬI'хIEмIЖIТ‚I8гIіфI™яIzгIрщI–ёIтвIьfIzЄIРФIAвIуI‘юIлуIbРI4уI”IагI I“РIіЬI<ПI$іIЁUIGUIмIіIРI˜VI>VIЋIТѓIѕПIvWIWI>IlюIСРITXIњWIoIeтўџЅЪРњE#ш{7іQ АWџ#ш{7їдџ#ш{7+џ#ш{78џ#ш{7$AD$ …G џТ5Э7пO/(YGф&Юй; W][ џТ5Э7Ћ@@(P@ @P@@P @@H PHH PHP @@H PHH PH @@HH PI@ PHHРUџюžш7/@Pr8IRXB* `i%RqDC `J4[IкZI IMПI§РI5]IYfIг“IfŒIъУI6kI0ЎI@ъI1РIзтIЈАIWдIЛъIъАImIђIŒѕIIСIiуIœщI{ѕItI}IfI‰Iё I– IIII IђIЪ3Iђ3I6IбIАIцIHIšЖIВƒP‘IzСIkјI!јI`‘IаСIзїIїIР‘I#ТICїIљіI ’ItТIЏіIџѕI€’IХТIЎѓIGюIр’IУIЬсIОI@“IrУIp‹IУ‹IОIрсIОI#ŒIПI‚‹IЂ“IХУITŒIuПIтIyтIaПIІПIВтIсŽIАбIlхIWєIЧяIвIЧхIXхIœбI‰вIцIЇIъхIляIжѓIююIяIъѓIЩуIQъIэёIОгI&дI–ъI‚ъIдIˆдIыъI–АIkщI@ёI,ёIWщIъIЧёI&гIeёIѕIёI=эI>ѓIзѕI*ѓInэIcѓI+эIГлIŸэI‹ВIьI7ђIУѕI#ђI$сI"юI ьI„МIUсIЕI ˆIЕМIЈГIєњIрњIЬњIИњIЄњIњI|њIhњITњI@њIњIіљIРљIŠљITљIљIшјIЁјIWјI јIУїIyїI/їIхіIWіICєIтфIkЬIНЃIШdIћIћI<ћI^ћIqћI€ћI ћIТћIећIфћIќI%ќIDќI3ISќIuќI†ќIšќIЋќIZIЗќIжќIћќI‚I §I,§I]§IЧIЙ§Iп§I$ўI5ўIFўIXўIЂўIЫўIѓўI)џIdџIˆџI˜џJЅBЬBнBюB B+B:AЉIСIоIіII5JZBЌBкAUIuI‘IЉIСIйIљIJєBB9A-ќџ•ЏРDЫ m7&џ‹уm7џ#ш{7Ў4I\ИIпРJ~ BѓBBC@ПYЦЄ1Т5Э7Н]й1е™p7mЭp7Ы m7юžш7QvМ1Ъ&/2Щ0/2џ}o7{И2Їcў1E72Њр2хSo7ћ#ш{7Ќ m7њiv7b(r7/r7(On7‹уm7=r7rYo7­eў1o7аmz7bсw7жu7{R02ѕ*гЁџ@яЁџ€яЁџ яЁџ яЁџЁџ@яЁџ€яЁџ@яЁ џ@яЁ џ€яЁ џяЁ џ€яЁџ`яЁџяЁџяЋяЋя_Ћя_ЋяЋя_ЋяЋ ЈЋ4ЋhЋЁЋSЋЋЋAЋ„ЋЋ$DЋ%˜Ћ&2Ћ'|Ћ(FЋ)ЎЋ*„Ћ/ЊЋ0ƒЋ1œЋ2uЋ3Ћ4OЋ5tЋ6€Ћ7bЋ8ЌЋ9eЋ:cЋ;Ћ<vЋ=q Д я Д _Ÿ Д ЏŸ Д oŸ Д ˜Ÿ Д / Д _ Д D_ Д 2 Д ˜_ Д 2_ Д |_ Д F_ Д Ў_ Д „_ Д Њ_ Д ƒ_ Д œ_ Д Ў Д Њ Д ƒ Д! v_ Д" _ Д# v Д% œ Д'  Д) O Д+  Д1 t Д2 Ÿ Д6 D ДB ˜ ДH | ДL F ДN „ ДP O_ ДQ € ДS €_ ДT b ДV b_ ДW Ќ ДY Ќ_ ДZ e Д\ e_ Д] c Д_ c_ Д`  Дb _ Дc q Дe q_ Дf 2 Дg Ÿ(мџџArial‡Щ@ _”1(мџџTimes New Roman‡Щ@ _”1Щ@яяяЩ@яŸŸџџЩ@яяя!вPџ яяі*і*Іџџџџџџяяяяяяџџяяяўџqqq№?Short TestsLong Tests [%] Model Coverage  Title і*'.@'Š Œg  t' !@ t' "@~'B@ ˆ' 2 0*'g  Y[сz"0*'яџ8g tLwќtи'ьo @и'ьєю @ №?и'ьєo@т'<+  &ь'€'Short Testsт'<6 $  &ь'€'Long Testsт'<B %  &ь'т'< &  &ь'т'<H ' &ь'т'<L (  &ь'т'< )  &ь'т'<N * &ь'т'< /  &ь'т'<  0  &ь'т'< % 1 &ь'т'< # 2!  &ь'т'< ' 3"  &ь'т'< ) 4P % &ь'т'<1 5 & &ь'т'<Q 6S  &ь'т'<T 7V &ь'т'<W 8Y  &ь'т'<Z 9\  &ь'т'< /  &ь'т'<] :_  &ь'т'<` ;b ' &ь'т'<# <! ( &ь'т'< c =e ) &ь'т'<B % * &ь'т'<f & &ь'т'<N *  &ь'т'<Q 6S  &ь'т'<T 7V &ь'т'<W 8Y  &ь'h)lProjection 1Projection 2Projection 3Projection 4<(Q 'P(-B(џ# OthersV(F(    ž*&Њ)і*э*ы*Short Testsы*Long Testsы*Projection 1ы*36.30%ы*60.37%ы*Projection 2ы*100.00%ы*100.00%ы*Projection 3ы*32.47%ы*54.12%ы*Projection 4ы*64.29%ы*75.00%щ*Titleщ*!Modelщ*"Coverageщ* " [%]щ*%!# Othersщ*%"Total: #ь*№*ю* ІщE:\AVI\CDG\CDG_EXPERIMENT.123!Cross Coverage:B2..Cross Coverage:E2ю* ІE:\AVI\CDG\CDG_EXPERIMENT.123!Cross Coverage:B6..Cross Coverage:E6ю* ІE:\AVI\CDG\CDG_EXPERIMENT.123!Cross Coverage:B7..Cross Coverage:E7я*є*XhhААPА"џџџ\\prserv1\prt5bvBM^'6(h@УУџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУУZ]ZZ]ZZ]ZZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџZ]ZZ]ZZ]ZџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУУZ]ZZ]Z